تالار گفتمان مانشت
نکات و خلاصه جست و جوی آگاهانه - نسخه‌ی قابل چاپ

نکات و خلاصه جست و جوی آگاهانه - makalo - 20 بهمن ۱۳۹۱ ۱۰:۴۳ ب.ظ

*جست وجوی اول بهترین(best-first) مثالی از الگوریتم های Tree searchو Graph search است.
نودها برای گسترش، بر اساس یک تابع ارزیابی مثل [tex]f(n)[/tex] انتخاب می شود، یعنی در هرمرحله گره ای که کم ترین مقدار ارزیابی را دارد برای گسترش انتخاب می شود.

*تابع اکتشافی با [tex]H(n)[/tex] نمایش داده می شود.

هزینه تخمینی ارزان ترین مسیر از حالت n تا هدف [tex]H(n)=[/tex]

* اگر n هدف باشد،آنگاه [tex]H(n)=0[/tex] است.

انواع جست وجوی آگاهانه:

) اول- بهترین حریصانه
)جست و جوی [tex][tex]A^{*}[/tex][/tex] (با استفاده از Tree search وgraph search)
)[tex]RBFS[/tex]
)[tex]SMA^{*}[/tex]
)[tex]IDA^{*}[/tex]
)الگوریتم های جست و جوی محلی
)...

جست و جوی اولین بهترین حریصانهGreedy best-first

* نودی را گسترش می دهد که به هدف نزدیک تر است.
*از روش اول-عمق استفاده می کند.
*این روش، گره ها را فقط بر اساس تابع هیورستیک ارزیابی می کند یعنی [tex]f(n)=h(n)[/tex]
*جست و جوی اول بهترین حریصانه، مانند جست و جوی اول عمق ترجیح می دهد که برای رسیدن به هدف یک مسیر را دنبال کند و در صورتی که به بن بست رسید به بالا برگردد،لذا این روش بهینه و کامل نیست.

*چرا بهینه و کامل نیست؟زیرا ممکن است یک مسیر متناهی به سمت پایین شروع کند و هرگز برای بررسی بقیه برنگردد.
*
پیچیدگی مکانی و زمانی آن[tex]O(b^{m})[/tex] که m عمق ماکزیمم فضای حالت است.
*کاهش پیچیدگی به
نوع مسئله و کیفیت تابع هیورستیک بستگی دارد.
*
تفاوت مهم این روش با روش اول عمق آن است که، در بین فرزندان گره جاری، گره ای انتخاب می شود که کوچک ترین مقدار f را داشته باشد.

جست جوی [tex][tex]A^{*}[/tex][/tex]

* معروف ترین فرم جست و جوی اول -بهترین الگوریتم[tex][tex]A^{*}[/tex][/tex] نامیده می شود اگر[tex]\forall h(n)\leq h^{*}(n)[/tex]

*نحوه ارزیابی گره ها:
[tex]f(n)=g(n) h(n)[/tex]

[tex]f(n)[/tex] = هزینه تخمینی ارزان ترین راه حل از طریق نود n
[tex]g(n)[/tex]= هزینه مسیر از نود شروع تا نود n
[tex]h(n)[/tex]= هزینه تخمینی ارزان ترین مسیر از n تا هدف


*اگر تابع هیورستیک شرایط لازم را داشته باشد، جست و جوی [tex][tex]A^{*}[/tex][/tex]
کامل و بهینه است.

پیاده سازی [tex][tex]A^{*}[/tex][/tex] با استفاده از الگوریتم Tree search

*در این مورد [tex][tex]A^{*}[/tex][/tex] زمانی بهینه است که [tex]h(n)[/tex] قابل قبول باشد.

*تابع هیورستیکی در صورتی قابل قبول است که:هرگز هزینه رسیدن به هدف را بیشتر از هزینه واقعی تخمین نزند.

پیاده سازی[tex][tex]A^{*}[/tex][/tex] با استفاده از الگوریتم Graph search

* در چه صورتی تابع هیورستیک سازگار با یکنواست؟ تابع [tex]h(n)[/tex] یکنواست،
اگر [tex]h(n)< C(n,a,n{}') h(n{}')[/tex]

[tex]n{}'[/tex] = با استفاده از عمل a بر روی حالت n تولید شده است.
[tex]C(n,a,n{}')[/tex] =هزینه عمل a را نشان می دهد.

*[tex][tex]A^{*}[/tex][/tex] که با الگوریتم Graph search پیاده سازی می شود، در صورتی بهینه است که [tex]h(n)[/tex] یکنوا باشد.
*اگر[tex]h(n)[/tex] یکنوا باشد، مقادیر[tex]f(n)[/tex] درهر مسیر غیرکاهشی است.

RE: نکات و خلاصه جست و جوی آگاهانه - makalo - 21 بهمن ۱۳۹۱ ۰۸:۳۶ ب.ظ

*خصوصیت غیرکاهشی f ، امکان تعریف و ترسیم کانتورها را فراهم می نماید.

*کانتورها متحدالمرکز بوده و در جست و جو با هزینه یکنواخت در اطراف حالت اولیه، حلقوی اند.

* هرچه [tex]h(n)[/tex] به[tex]h^{*}(n)[/tex] نزدیک تر باشد، کانتورها به سمت حالت هدف کشیده شده و در اطراف مسیر
بهینه، باریک تر می شود.

چه الگوریتمی امکان پذیر است؟الگوریتمی که کامل و بهینه باشد.

*الگوریتم [tex]A^{*}[/tex] امکان پذیر است.

*شروط امکان پذیری:

۱) فاکتور انشعابb باید متناهی باشد.

۲) وزن(هزینه) تمامی لبه های گراف فضای حالت باید مثبت باشد.(یعنی فاقد گذر تهی و وزن منفی باشد.)

۳)شرط [tex]A^{*}[/tex] [tex]\forall h(n)\leq h^{*}(n)[/tex] برای تمامی گره های گراف برقرار باشد.


*اگرخطای تابع هیورستیک از لگاریتم هزینه واقعی بیشتر نباشد، تعداد نودها در جست و جوی [tex]A^{*}[/tex] رشد نمایی ندارد.

[tex]\left | h(n)-h^{*}(n) \right |\leq O(log h^{*}(n))[/tex]

معایب [tex]A^{*}[/tex]

* نمایی بودن زمان

* از آن جایی که [tex]A^{*}[/tex] تمام نودهای تولید شده را در حافظه نگه می دارد، حافظه ی بسیار زیادی مصرف می کند.به همین دلیل در مسائل کاربردی دشوار، قابل استفاده نیست.

** اگرچه الگوریتم [tex]A^{*}[/tex] امکان پذیر است، ولی ممکن است حین برخورد با گره های قبلا ملاقات شده، مسیر بهتری از مسیر اولیه پیدا شود و این امر منجر به اصلاح مسیر خواهد شد،که این اصلاحات سنگین بوده و با استفاده از خاصیت سازگاری این مشکل حل می شود.

* اگر دو نسخه از الگوریتم [tex]A^{*}[/tex] به نام های[tex]A_{1}^{*}[/tex] و[tex]A_{2}^{*}[/tex] برای حل یک مسئله داشته باشیم، به طوری که [tex]\forall n h_{1}(n)\leq h_{2}(n)[/tex] آنگاه [tex]A_{2}^{*}[/tex] آگاه تر از[tex]A_{1}^{*}[/tex] نامیده می شود.