الگوریتم تپهنوردی: تفاوت میان نسخهها
محتوای حذفشده محتوای افزودهشده
FreshmanBot (بحث | مشارکتها) جز ←الگوریتم تپه نوردی تعمیم یافته: اصلاح فاصله مجازی با استفاده از AWB |
FreshmanBot (بحث | مشارکتها) جز اصلاح فاصله مجازی + اصلاح نویسه با استفاده از AWB |
||
خط ۱:
{{الگوریتم پیمایش درخت}}
'''الگوریتم تپه نوردی''' (Hill climbing) الگوریتمی است که برای یافتن بهترین پاسخ یک مسئله یا برای پیدا کردن پاسخی از مسئله که به اندازهٔ کافی مناسب و بهینه باشد، استفاده
== بررسی الگوریتم تپه نوردی ==
در این جا
برای بررسی الگوریتم تپه نوردی مسئلهٔ زیر را بررسی می کنیم:
- تابع f به هر یک از اعضای [[مجموعهٔ متناهی]] S یک [[عدد حقیقی]] نسبت
همان گونه که گفته شد در این جا فرض بر این است که مقدار تابع f برای چندین عضو مختلف S بیشینه است و هدف ما یافتن تنها یکی از آن هاست. (در غیر این صورت معمولاً الگوریتم تپه نوردی، الگوریتم کار آمدی نیست.)
خط ۱۴:
'''الگوریتم''' :
ابتدا یکی از اعضای مجموعهٔ S را (به صورت تصادفی) انتخاب می کنیم و آن را A می نامیم. سپس در میان اعضایی از S که به A نزدیکند به دنبال پاسخ مناسب تری برای مسئله می گردیم. به بیانی دیگر نلاش می کنیم در میان اعضایی که به A نزدیکند عضوی بیابیم که مقدار تابع f برای آن
بدیهی است که بیشینهٔ نسبی به دست آمده لزوماً پاسخ خواسته شده نیست. ولی اگر الگوریتم گفته شده چندین بار تکرار شود
بدی این الگوریتم این است که در یک تابع که مینیمم ویا ماکزیمم محلی زیادی دارد(مانند تابع Ackley)به راحتی در ان گیر میافتد و قدرت خروج از انجا را ندارد چون این الگوریتم فقط نقاط اطراف خود را میبیند که در لحظه حضور در یک ماکزیمم محلی این احساس را دارد که از همه نقاط بالاتر است در حالی که چنین نیست و ان در یک ماکزیمم محلی اسیر
سورس برنامه تپه نوردی در محیط دو بعدی (که با f سه بعدی
Hill Climbing Algorithm
خط ۵۵:
=== [[مسئله فروشنده دورهگرد|فروشندهٔ دوره گرد]] ===
یک گراف ساده همبند را که یالهای آن وزن دار است، در نظر بگیرید. هدف یافتن مسیری همیلتونی است که در آن مجموع وزن یالها کمینه (یا به اندازهٔ کافی کم) باشد. (مسیر هامیلتونی مسیری است که شامل همهٔ
برای یافتن چنین مسیری
=== [[مسئلهٔ n وزیر]] ===
می خواهیم در یک صفحهٔ n * n شطرنج، n وزیر شطرنج را به
برای یافتن چیدمانی از n وزیر که در آن هیچ دو وزیری یکدیگر را تهدید نمیکنند ابتدا n وزیر را به صورتی تصادفی روی یک صفحهٔ شطرنج n * n قرار می دهیم. (بهتر است این چیدمان به
روش عقبگرد تمامی جوابهای مسئله را تولید کرده، و با صرف نظر کردن از گرههای نا
اگر هدف از [[حل مسئله]] تنها رسیدن به یک جواب باشد، روشهای دیگری وجود دارد که کارایی بهتری دارند. این روشها عموماً از چیدمان تصادفی یا شبهتصادفی (تصادفی هوشمند) برای رسیدن به یک جواب استفاده میکنند. اکثر الگوریتمهای تکاملی و مکاشفهای - مانند [[الگوریتم ژنتیک]] - در این حالت جوابگوی نیازها هستند.
== الگوریتم تپه نوردی تعمیم یافته ==
همانطور که در الگوریتم تپه نوردی بررسی کردیم، این روش جستجوی محلی دارای مشکل قرار گرفتن در بهینگی محلی است. این مشکل تا حدی است که حتی در مورد مسائل
با این حال
حالت از یک محل بهینگی به محل بهینگی دیگر نبود. اما برای گریز از
Procedure HillClimbing
خط ۸۶:
End
در این روش علاوه بر دو تابع Objective و Neighbor ، تابعی با نام Mutate نیز خواهیم داشت که وظیفه این تابع جهش در فضای حالت مسئله خواهد بود. همچنین باید بتوان نقطه بهینگی سراسری را تشخیص داد. به عنوان مثال
1. جهش در فضای حالت کوتاه باشد
2.
جهش کوتاه جهشی است که تعداد
== الگوریتمهای مشابه ==
در بسیاری از موارد یافت بیشینهٔ نسبی یا کمینهٔ نسبی با استفاده از الگوریتم تپه نوردی کارساز نیست. در این گونه موارد از الگوریتمهای کارآمد تری چون simulated annealing استفاده
حالت از یک محل بهینگی به محل بهینگی دیگر نبود. اما برای گریز از
== منابع ==
|