الگوریتم جست وجوی تپه نوردی hill-climbimg

الگوریتم جست وجوی تپه نوردی hill-climbimg
الگوریتم جست وجوی تپه نوردی از ابتدایی ترین تکنیک جست وجوی محلی است. در هر مرحله گره فعلی با بهترین همسایه جایگزین میشود. اگر "تخمین هزینه ابتکاری h" استفاده شود، همسایه ای با کمترین h انتخاب میگردد.
الگوریتم جست وجوی تپه نوردی، حلقه ای است که در جهت افزایش مقدار حرکت میکند (به طرف بالای تپه). وقتی به "قله ای" رسید که هیچ همسایه ای از آن بلندتر نیست، خاتمه می یابد. در این الگوریتم، درخت جست وجو را نگهداری نمیکند، لذا گره داده فعلی فقط باید حالت و مقدار تابع هدف را نگهداری کند. تپه نوردی به همسایه های حالت فعلی نگاه میکند. مثل تلاش برای یافتن قله کوه اورست در مه گرفتگی غلیط، در حالیکه دچار فراموشی هستید.
الگوریتم جست وجوی محلی معمولا از فرموله کردن حالت کامل استفاده میکنند.
تپه نوردی گاهی جست وجوی محلی حریصانه نام دارد، زیرا بدون اینکه قبلا فکر کند به کجا برود، حالت همسایه خوبی را انتخاب میکند. تپه نوردی معمولا به سرعت به سمت جواب پیش می رود زیرا به راحتی میتواند حالت بد را بهبود بخشد.
متاسفانه تپه نوردی به دلایل زیر متوقف میشود:
- ماکزیمم محلی (local maxima). قله ای است که بلندتر از هر یک از همسایه هایش می باشد، اما از ماکزیمم سراسری کوتاهتر است. الگوریتم های تپه نوردی که به مجاورت ماکزیمم محلی میرسند، به طرف بالا و به سمت قله حرکت میکنند، ولی از آن پس متوقف میشوند و به جایی نمیرود.
- برآمدگی ها (ridges). برآمدگی ها منجر به دنباله ای از ماکزیمم های محلی می شوند که عبور از آن برای الگوریتم های حریصانه دشوار است.
- فلات(Plateaux). فلات ناحیه همواری از دورنمای فضای حالت است. فلات میتواند یک ماکزیمم محلی هموار باشد که هیچ خروجی به سمت بالا وجود ندارد، یا یک شانه باشد که از طریق آن میتوان پیشروی کرد. جست وجوی تپه نوردی ممکن است نتواند راه خروج را در فلات پیدا کند و مفقود شود.
در هر یک از این موارد، الگوریتم به نقطه ای میرسد که پیشروی از آن ممکن نیست. هر وقت الگوریتم به یک "ماکزیمم محلی هموار" میرسد که شانه نیست، یک حلقه تکرار بی نهایت بوجود خواهد آمد. یک راه حل متداول، محدود کردن تعداد حرکت های فرعی متداول است.
شکلهای گوناگونی از تپه نوردی اختراع شده اند. تپه نوردی اتفاقی، بطور تصادفی حرکت هایی را به سمت بالای تپه انتخاب میکند. روش تپه نوردی اولین انتخاب، تپه نوردی اتفاقی را به این صورت پیاده سازی میکند که پسین ها را بطور تصادفی تولید میکند تا اینکه یکی از آنها بهتر از حالت فعلی باشد. اگر یک حالت دارای پسین های زیادی باشد این راهبرد مناسب است.
الگوریتم های جست وجوی تپه نوردی که تاکنون شرح دادیم، کامل نیستند، چون در ماکزیمم های محلی متوقف میشوند، با وجود هدف، موفق به یافتن آن نمیشوند. تپه نوردی با شروع مجدد از این ضرب المثل پیروی میکند "اگر موفق نشدید، دوباره و دوباره سعی کنید." این الگوریتم دنباله ای از جست وجوهای تپه نوردی را از "حالت های شروعی" که بطور تصادفی تولید شدند، اجرا میکنند تا هدفی را پیدا کنند. با احتمال نزدیک به 1، این الگوریتم کامل است، زیرا سرانجام حالت هدف را به عنوان حالت شروع تولید میکند.
موفقیت تپه نوردی به شکل "دورنمای فضای حالت" بستگی دارد: اگر تعداد ماکزیمم های محلی و فلات ها کم باشد، "تپه نوردی با شروع مجدد تصادفی" سریعا راه حل خوبی را می یابد.
شبه کد الگوریتم جست وجوی تپه نوردی:
function HILL-CLIMBING (problem) returns a state that is a local maximum
Current <-- MAKE-NODE (problem.INITIAL-STATE)
loop do
neighbor <- - a highest-valued successor of current
if neighbor.VALUE ≤ current.VALUE then return current.SATTE
current <-- neighbor
سلامممنون لطفا منابع رو هم ذکر کنید ممنون