fasl4 - سید محسن هاشمی

Download Report

Transcript fasl4 - سید محسن هاشمی

‫نام مرجع ‪:‬‬
‫هوش مصنوعی‬
‫تهیه کننده ‪:‬‬
‫سید محسن هاشمی‬
‫‪1‬‬
‫هوش مصنوعي‬
‫فصل چهارم‬
‫جست و جوی آگاهانه و اکتشاف‬
‫‪2‬‬
‫جست و جوی آگاهانه و اکتشاف‬
‫متدهای جستجوی آگاهانه‬
‫‪‬بهترين جستجو‬
‫‪‬حريصانه‬
‫‪A*‬‬
‫‪IDA*‬‬
‫‪RBFS‬‬
‫‪ MA* ‬و*‪SMA‬‬
‫‪3‬‬
‫‪‬جستجوی محلی و بهينه سازی‬
‫‪‬تپه نوردی‬
‫‪‬شبيه سازی حرارت‬
‫‪‬پرتو محلی‬
‫‪‬الگوريتمهای ژنتيک‬
‫جست و جوی آگاهانه و اکتشاف‬
‫تعاريف‬
‫تابع هزينه مسير )‪ : g(n‬هزينه مسير از گره اوليه تا گره ‪n‬‬
‫تابع اکتشافی )‪ : h(n‬هزينه تخمينی ارزان ترين مسير از گره ‪ n‬به گره هدف‬
‫تابع بهترين مسير )‪ : h*(n‬ارزان ترين مسير از گره ‪ n‬تا گره هدف‬
‫تابع ارزيابي )‪ : f(n‬هزينه تخمينی ارزان ترين مسير از طريق ‪n‬‬
‫)‪f(n): g(n) + h(n‬‬
‫)‪ : f*(n‬هزينه ارزان ترين مسير از طريق ‪n‬‬
‫)‪f*(n): g(n) + h*(n‬‬
‫‪4‬‬
‫جستجوی آگاهانه‬
‫استراتژي جستجوي آگاهانه از دانش مسئله استفاده مي کند و در انتخاب گره‪ ،‬گرهي را انتخاب‬
‫مي کنند که شانس رسيدن به هدف در آن بيشتر باشد يا به نظر برسد که به هدف نزديك‬
‫تراست ‪.‬‬
‫براي اينكه تخمين بزنيم که گره فرزند چقدر به هدف نزديك تر است از تابع ارزيابي استفاده مي‬
‫کنيم‪ .‬اين تابع هزينه رسيدن به گره هدف را تخمين مي زند و به عبارت ديگر ميزان مفيد بودن گره‬
‫فعلي را باز مي گرداند‪.‬‬
‫تابع ارزيابي را با )‪ f(n‬نشان می دهند‬
‫تابع هیورستیک را با )‪ h(n‬نشان می دهند‬
‫انواع استراتژی های جستجوی آگاهانه‬
‫جستجوی اول بهترین‬
‫جستجوی حافظه محدود‬
‫شده‬
‫‪ )1‬جستجوی حریصانه‬
‫‪ )2‬جستجوی‬
‫*‪A‬‬
‫‪IDA * )1‬‬
‫‪MA * )2‬‬
‫‪SMA * )3‬‬
‫جستجوی محلی‬
‫‪)1‬‬
‫تپه نوردی‬
‫‪)2‬‬
‫سرد و گرم‬
‫‪)3‬‬
‫‪)4‬‬
‫ژنتیک‬
‫پرتو‬
‫جستجوی اول بهترین‬
‫در اين روش در هر مرتبه گره اي که بهترين ارزيابي را داشته باشد ابتدا بسط داده مي شود به‬
‫عبارت ديگر گرهي انتخاب مي شود که تابع ارزيابي بهترين مقدار را براي آن باز گرداند‪.‬‬
‫جستجوی اول بهترین با صف اولویت پیاده سازی می شود ‪.‬‬
‫در جستجوی اول بهترین اگر تابع ارزیابی غير صحیح باشد می تواند باعث گمراه شدن جستجو‬
‫شود ‪.‬‬
‫جزء کلیدی جستجوی اول بهترین تابع هیورستیک ( اکتشافی ) می باشد‬
‫تابع هیورستیک در الگوریتم جستجوی اول بهترین‬
‫جزء کلیدی جستجوی اول بهترین تابع هیورستیک ( اکتشافی ) می باشد‬
‫هزینه تخمینی ارزانترین مسير از حالت‪n‬‬
‫اگر‬
‫‪ n‬هدف باشد داریم ‪:‬‬
‫‪h(n) = 0‬‬
‫تا نود هدف = )‪h(n‬‬
‫یک مثال از تابع هیورستیک‬
‫در یک مسله مسير یابی داریم ‪:‬‬
‫‪B‬‬
‫‪185‬‬
‫‪230‬‬
‫‪A‬‬
‫‪C‬‬
‫‪200‬‬
‫‪350‬‬
‫)‪h(n‬‬
‫‪State‬‬
‫‪185‬‬
‫‪B‬‬
‫‪200‬‬
‫‪C‬‬
‫)‪(Greedy Search‬جستجوی اول بهترین با استراتژی حریصانه‬
‫جستجوي حريصانه يكي از روش هاي جستجوي اول بهترين است در اين روش هدف به حداقل‬
‫رساندن هزينه رسيدن به هدف با استفاده از تابع تخمين ( هیورستیک ) مي باشد در این‬
‫استراتژی گرهي که به هدف نزديكتر است ابتدا بسط داده مي شود‬
‫در جستجوی حریصانه داریم ‪:‬‬
‫)‪f(n) = h(n‬‬
‫مسير یابی با استراتژی حریصانه‬
‫مثال ‪:‬‬
‫‪75‬‬
‫‪B‬‬
‫‪99‬‬
‫‪F‬‬
‫‪80‬‬
‫‪140‬‬
‫‪E‬‬
‫‪S‬‬
‫‪211‬‬
‫‪G‬‬
‫‪118‬‬
‫‪I‬‬
‫‪101‬‬
‫‪H‬‬
‫‪97‬‬
‫‪D‬‬
‫‪111‬‬
‫مسير بدست آمده با جستجوی حریصانه ‪:‬‬
‫‪S-E-F-G = 140 + 99 + 211= 450‬‬
‫‪C‬‬
‫)‪h(n‬‬
‫‪State‬‬
‫‪366‬‬
‫‪S‬‬
‫‪374‬‬
‫‪B‬‬
‫‪329‬‬
‫‪C‬‬
‫‪244‬‬
‫‪D‬‬
‫‪253‬‬
‫‪E‬‬
‫‪178‬‬
‫‪F‬‬
‫‪193‬‬
‫‪I‬‬
‫‪98‬‬
‫‪H‬‬
‫‪0‬‬
‫‪G‬‬
‫مسير یابی با استراتژی حریصانه بهینه نیست‬
‫مثال ‪:‬‬
‫‪99‬‬
‫‪75‬‬
‫‪B‬‬
‫‪F‬‬
‫‪80‬‬
‫‪211‬‬
‫‪E‬‬
‫‪S‬‬
‫‪140‬‬
‫‪G‬‬
‫‪118‬‬
‫‪I‬‬
‫‪101‬‬
‫‪H‬‬
‫‪97‬‬
‫‪D‬‬
‫‪111‬‬
‫مسير بدست آمده با جستجوی حریصانه ‪:‬‬
‫‪S-E-F-G = 140 + 99 + 211= 450‬‬
‫مسير بدست آمده بهینه ‪:‬‬
‫‪S-E-I-H-G = 140 + 80 + 97+101= 418‬‬
‫‪C‬‬
‫)‪h(n‬‬
‫‪State‬‬
‫‪366‬‬
‫‪S‬‬
‫‪374‬‬
‫‪B‬‬
‫‪329‬‬
‫‪C‬‬
‫‪244‬‬
‫‪D‬‬
‫‪253‬‬
‫‪E‬‬
‫‪178‬‬
‫‪F‬‬
‫‪193‬‬
‫‪I‬‬
‫‪98‬‬
‫‪H‬‬
‫‪0‬‬
‫‪G‬‬
: ‫مثال‬
A
2
1
1
B
C
1
1
D
2
3
P
3
3
I 3
1
2
3
2
Q
R
1
2
S
2
J
3
T
F
3
1
K
0
L 3
3
U
1
1
3
E
3
H
1
1
5
1
4
1
G
2
2
V
2
3
1
M
2
N
1
1
3
1
O
2
W
X
Y
1
0
2
3
3
Z
1
: ‫ادامه مثال‬
A
2
1
1B
1
4
C
1
1
1
5
D
E
3
1
J
2

3
K
3

0
‫ویژگی های استراتژی حریصانه‬
‫‪ ) 1‬کامل نیست‬
‫‪ ) 2‬بهینه نیست‬
‫‪ ) 3‬پیچیدگی زمانی‬
‫)‪O(bm‬‬
‫‪ ) 4‬پیچیدگی مکانی‬
‫)‪O(bm‬‬
‫‪ ) 5‬کارآیی این روش به دقت تابع هیورستیک بستگی دارد‬
‫‪ ) 6‬پیچیدگی زمانی و مکانی با انتخاب یک تابع هیورستیک خوب‬
‫کاهش می یابد‪.‬‬
‫حاالت خاص در الگوریتم حریصانه‬
‫اگر *‪ h = h‬آنگاه جستجو کامل ميشود‬
‫اگر *‪ h = h‬آنگاه جستجو بهینه ميشود‬
‫اگر *‪ h = h‬آنگاه پیچیدگی زمانی و مکانی )‪ O(bd‬می شود ‪.‬‬
‫ایراد های استراتژی حریصانه‬
‫ممکن است در یک بن بست گرفتار شود‬
‫‪B‬‬
‫‪S‬‬
‫‪D‬‬
‫‪G‬‬
‫‪C‬‬
‫‪D‬‬
‫مانند جستجوی عمقی مسير را برای رسیدن به هدف دنبال می کند و ممکن است یک‬
‫مسير نامتناهی به پایين را دنبال کند که هیچ وقت به هدف نمی رسد‪.‬‬
‫مثال ‪:‬‬
‫با استفاده از روش حريصانه مسئله زير را حل کنيد‪.‬‬
‫‪4‬‬
‫‪1‬‬
‫‪7.6‬‬
‫‪B‬‬
‫‪C‬‬
‫‪8‬‬
‫‪2‬‬
‫‪A‬‬
‫‪5‬‬
‫‪4‬‬
‫‪3‬‬
‫‪10.4‬‬
‫‪3‬‬
‫‪4‬‬
‫‪2‬‬
‫‪G‬‬
‫‪F‬‬
‫‪E‬‬
‫‪D‬‬
‫‪0‬‬
‫‪3‬‬
‫‪9.6‬‬
‫‪8.9‬‬
‫‪S‬‬
‫‪4‬‬
‫‪11‬‬
‫*‪A‬جستجوی اول بهترین با استراتژی الگوریتم‬
‫روش جستجوی *‪ A‬تلفیقی از روش جستجوی هزینه یکنواخت ( ‪ ) UCS‬و روش جستجوی حریصانه است‪ .‬در‬
‫جستجوی هزینه یکنواخت بر اساس هزینه تا گره فعلی ‪ ،‬کم هزینه ترین گره را انتخاب کرده و گسترش می دهیم‪.‬‬
‫جستجوی هزینه یکنواخت بهینه است ‪ ،‬یعنی جواب بهینه مسئله را پیدا می کند ولی در مقابل بسیاز زمانبر است‪.‬‬
‫جستجوی حریصانه نيز بر اساس هزینه تا مقصد ‪ ،‬کم هزینه ترین گره را برای گسترش انتخاب می کند‪ .‬یافتن جواب با‬
‫استفاده از جستجوی حریصانه به سرعت انجام می گيرد‪ .‬ولی این روش نيز از مشکالتی همچون بهینه نبودن جواب رنج‬
‫می برد‪.‬‬
‫روش جستجوی*‪ ، A‬سرعت روش حریصانه در رسیدن به جواب و بیهنگی روش هزینه یکنواخت در پیدا کردن جواب را‬
‫باهم ترکیب کرده و به جستجوی هدف خود می پردازد‪.‬‬
‫جستجوی اول بهترین با استراتژی الگوریتم *‪A‬‬
‫جستجوی *‪ A‬سعی می کند مجموع هزینه پرداخت شده تا گره فعلی و هزینه باقی مانده از گره فعلی تا هدف را‬
‫مینیمم کند‪ .‬تخمين هزینه باقی مانده تا هدف را هیوریستیک مسئله می گویند‪ .‬طراحی هیوریستیک مسئله در روش‬
‫جستجوی *‪ A‬از اهمیت بسزایی برخوردار است و بهینگی روش *‪ A‬تحت تاثير طراحی هیوریستیک مسئله قرار دارد‪.‬‬
‫هیوریستیک در روش *‪ A‬هرینه قابل پرداخت از نقطه فعلی تا نقطه هدف را تخمين می زند‪ .‬با این توصیف‬
‫هیوریستیک قابل قبول را چنين تعریف می کنیم ‪:‬‬
‫هیوریستیکی قابل قبول است که هزینه تخمینی آن از نقطه فعلی تا نقطه هدف‪ ،‬از هزینه واقعی قابل پرداخت از نقطه‬
‫فعلی تا نقطه هدف کمتر باشد‪ .‬هیوریستیکی که این شرط را برآورده نکند‪ ،‬هیوریستیک غيرقابل قبول می نامند‪.‬‬
‫بعبارت دیگر ‪ :‬یک تابع هیورستیک در صورتی قابل قبول است که هزینه رسیدن به هدف را بیشتر از هزینه واقعی‬
‫تخمين نزند‪.‬‬
‫*‪A‬جستجوی اول بهترین با استراتژی الگوریتم‬
‫در این الگوریتم با ترکيب دو تابع داريم‪:‬‬
‫)‪f(n) = g(n) + h(n‬‬
‫)‪ :g(n‬هزينه مسير از گره آغازين به گره ‪ n‬را به ما ميدهد‪.‬‬
‫)‪ :h(n‬هزينه تخمين زده شده از ارزانترين مسير از ‪ n‬به هدف است‪.‬‬
‫هزينه تخمين زده شده ارزانترين راه حل از طريق ‪f(n) =n‬‬
‫*‪A‬جستجوی اول بهترین با استراتژی الگوریتم‬
‫)‪f(n) = g(n) + h(n‬‬
‫‪n‬هزینه واقعی رسیدن از گره شروع به گره‬
‫به گره هدف ‪ n‬هزینه تقریبی رفتن از گره‬
‫‪200‬‬
‫‪G‬‬
‫‪120‬‬
‫‪250‬‬
‫‪A‬‬
‫‪S‬‬
‫‪300‬‬
‫‪ S‬در گره )‪f(n‬محاسبه تابع‬
‫‪f(n) = 0 + 300 = 300‬‬
‫‪ A‬در گره )‪f(n‬محاسبه تابع‬
‫‪f(n) = 250+ 120 = 370‬‬
‫‪ G‬در گره )‪f(n‬محاسبه تابع‬
‫‪f(n) =( 250+200)+ 0 = 450‬‬
‫مثال ‪ :‬استراتژی * ‪ A‬را روی گراف زیر پیاده سازی کنید و مسيری که توسط‬
‫این الگوریتم تولید می شود را محاسبه کنید ؟‬
‫‪4‬‬
‫‪1‬‬
‫‪A‬‬
‫‪2‬‬
‫‪1‬‬
‫‪2‬‬
‫‪C‬‬
‫‪1‬‬
‫‪F‬‬
‫‪1‬‬
‫‪1‬‬
‫‪1‬‬
‫‪D‬‬
‫‪2‬‬
‫‪3‬‬
‫‪3‬‬
‫‪G‬‬
‫‪0‬‬
‫‪B‬‬
‫‪3‬‬
‫‪3‬‬
‫‪E‬‬
‫‪1‬‬
‫‪2‬‬
‫جواب ‪:‬‬
‫برای هر گره ) ‪ f (n‬را محاسبه کنید البته نیاز‬
‫نیست برای تمام گره ها محاسبه شود‬
‫)‪f(n) = g(n) + h(n‬‬
‫‪1‬‬
‫‪4‬‬
‫‪A‬‬
‫‪2‬‬
‫‪1‬‬
‫‪2‬‬
‫‪C‬‬
‫‪1‬‬
‫‪F‬‬
‫‪1‬‬
‫‪1‬‬
‫چون )‪ f(B‬کوچکتر از )‪ f(C‬هست پس گره‬
‫‪ B‬گسترش می یابد ‪.‬‬
‫‪1‬‬
‫‪D‬‬
‫‪2‬‬
‫‪3‬‬
‫‪3‬‬
‫‪G‬‬
‫‪0‬‬
‫‪B‬‬
‫‪3‬‬
‫‪3‬‬
‫‪E‬‬
‫‪1‬‬
‫‪2‬‬
‫‪f(B) = g(B) + h(B) =1+ 3 = 3‬‬
‫‪f(C) = g(C) + h(C) =4+ 1 = 5‬‬
‫جواب ‪:‬‬
‫‪4‬‬
‫‪1‬‬
‫‪A‬‬
‫‪2‬‬
‫‪1‬‬
‫‪2‬‬
‫‪C‬‬
‫‪1‬‬
‫‪F‬‬
‫‪1‬‬
‫‪1‬‬
‫‪1‬‬
‫‪D‬‬
‫‪2‬‬
‫‪3‬‬
‫‪3‬‬
‫‪G‬‬
‫‪0‬‬
‫‪B‬‬
‫‪3‬‬
‫‪3‬‬
‫‪E‬‬
‫‪1‬‬
‫‪2‬‬
‫‪f(D) = g(D) + h(D) =(1+1) + 3 = 5‬‬
‫‪f(C) = g(C) + h(C) =( 1 + 2 ) + 1 = 4‬‬
‫‪f(E) = g(E) + h(E) =( 1 + 3 ) + 1 = 5‬‬
‫چون )‪ f(C‬کوچکتر از ما بقی هست پس گره ‪ C‬گسترش می یابد ‪.‬‬
‫جواب ‪:‬‬
‫‪4‬‬
‫‪1‬‬
‫‪A‬‬
‫‪2‬‬
‫‪1‬‬
‫‪2‬‬
‫‪C‬‬
‫‪1‬‬
‫‪F‬‬
‫‪1‬‬
‫‪1‬‬
‫‪1‬‬
‫‪D‬‬
‫‪2‬‬
‫‪3‬‬
‫‪3‬‬
‫‪G‬‬
‫‪0‬‬
‫‪B‬‬
‫‪3‬‬
‫‪3‬‬
‫‪E‬‬
‫‪1‬‬
‫‪2‬‬
‫‪f(F) = g(F) + h(F) =(1+2+1) + 1 = 5‬‬
‫‪f(G) = g(G) + h(G) =( 1 + 2 + 3 ) + 0 = 6‬‬
‫چون )‪ f(F‬کوچکتر از )‪ f(G‬هست پس گره ‪ F‬گسترش می یابد ‪.‬‬
‫جواب ‪:‬‬
‫‪4‬‬
‫‪1‬‬
‫‪A‬‬
‫‪2‬‬
‫‪1‬‬
‫‪2‬‬
‫‪C‬‬
‫‪1‬‬
‫‪F‬‬
‫‪1‬‬
‫‪1‬‬
‫‪1‬‬
‫‪D‬‬
‫‪2‬‬
‫‪3‬‬
‫‪3‬‬
‫‪G‬‬
‫‪0‬‬
‫‪B‬‬
‫‪3‬‬
‫‪3‬‬
‫‪E‬‬
‫‪1‬‬
‫‪2‬‬
‫‪f(G) = g(G) + h(G) =( 1 + 2 + 3 ) + 0 = 6‬‬
‫انتخابی دیگر نداریم و به هدف رسیدیم با مسير زیر ‪:‬‬
‫‪ABCFG‬‬
‫البته چند مسير دیگر داریم ‪:‬‬
‫‪ACG‬‬
‫‪ABCG‬‬
‫‪ABEG‬‬
‫هزینه آن ‪ 5‬می شود‬
‫هزینه آن ‪ 7‬می شود‬
‫هزینه آن ‪ 6‬می شود‬
‫هزینه آن ‪ 7‬می شود‬
‫تابع )‪ h(n‬قابل قبول باشد‬
‫*‪ A‬بهینه است به شرط اینکه‬
‫سوال ‪ :‬چرا تابع )‪ h(n‬زیر قابل قبول است ؟‬
‫‪4‬‬
‫‪1‬‬
‫‪A‬‬
‫‪2‬‬
‫‪1‬‬
‫‪2‬‬
‫‪C‬‬
‫‪1‬‬
‫‪F‬‬
‫‪1‬‬
‫‪1‬‬
‫‪1‬‬
‫‪D‬‬
‫‪2‬‬
‫‪3‬‬
‫‪3‬‬
‫‪G‬‬
‫‪0‬‬
‫‪B‬‬
‫‪3‬‬
‫‪3‬‬
‫‪E‬‬
‫‪1‬‬
‫سوال ‪ :‬چرا تابع )‪ h(n‬در مسله مسير یابی قابل قبول است ؟‬
‫‪2‬‬
‫قضیه ‪ :‬ثابت کنید که *‪ A‬با استفاده از الگوریتم ‪ TREE – SEARCH‬بهینه است‬
‫*‪ C‬هزینه واقعی مسير بهینه است‬
‫‪ G2‬یک گره نیمه بهینه است‬
‫‪ G1‬یک گره بهینه است‬
‫‪S‬‬
‫توجه ‪ :‬برای هر گره هدف چه‬
‫بهینه چه نیمه بهینه داریم ‪:‬‬
‫‪h(n)=0‬‬
‫‪n‬‬
‫‪G1‬‬
‫برای گره نیمه بهینه ‪ G2‬داریم ‪:‬‬
‫‪G2‬‬
‫*‪f(G2) = g(G2) + h(G2) = g(G2) +0 > C‬‬
‫‪1‬‬
‫برای گره ‪ n‬که در مسير بهینه قرار دارد داریم ‪:‬‬
‫*‪f(n) = g(n) + h(n) = g(n) +h(n) ≤ C‬‬
‫)‪f(n) ≤ C* < h(G2‬‬
‫این نشان می دهد که ‪ G2‬گسترش نمی یابد بلکه ‪ n‬گسترش می یابد‬
‫توجه ‪ :‬این اثبات در الگوریتم های ‪ GRAPH- SEARCH‬به شکست ميرسد ‪.‬‬
‫>==‬
‫‪,2‬‬
‫‪2‬‬
‫‪1‬‬
‫*‪ A‬نکات مهم الگوریتم‬
‫نکته ‪ :١‬مهمترين شرط برای بهينه بودن الگوريتم *‪ A‬اين است که برای هر گره داشته باشيم‬
‫)‪h(n)≤ h*(n‬‬
‫يعنی تابع اکتشافی هميشه کمتر مساوی مقدار واقعی تخمين بزند )‪ h(n‬هزينه تخميني براي رسيدن از نود ‪ n‬به‬
‫هدف است‬
‫)‪ h(n‬هزينه تخميني براي رسيدن از نود ‪ n‬به هدف است‬
‫)‪ h*(n‬هزينه واقعی براي رسيدن از نود ‪ n‬به هدف است‬
‫*‪ A‬نکات مهم الگوریتم‬
‫نكته ‪ :٢‬اگر *‪ f‬هزينه واقعي مسير بهينه باشد و ‪ h‬قابل قبول باشد ‪ ،‬آنگاه در الگوريتم*‪A‬‬
‫تمام گره هايي را که شرايط *‪ f (n)<f‬را دارند بسط مي يابند‪.‬‬
‫بعبارت دیگر ‪ :‬يعنی هزينه تخمينی هر گره )‪f(n‬در مسير بهينه به سمت جواب همواره از‬
‫هزينه بهينه واقعی کل مسير کمتر است‬
‫*‪ A‬نکات مهم الگوریتم‬
‫نکته ‪ :٣‬اگر برای (جستجو با هزينه ‪n‬ها ‪ h(n)= 0‬باشد جستجو تبديل به جستجوی غير هوشمند خواهد شد‪.‬‬
‫يكسان)‪.‬‬
‫حال اگر )‪ g (n‬برابر با يك باشد جستجو تبديل به جستجوي اول سطح مي شود‪.‬‬
‫نکته ‪ :4‬اگر )‪ h(n)= h*(n‬باشد جستجو ی صورت نمیگيرد و فقط گره های واقع در مسير بهینه بسط داده می‬
‫شوند ‪.‬‬
‫*‪ A‬نکات مهم الگوریتم‬
‫نکته ‪ : 5‬اگر ‪ A1‬و ‪ A2‬دو نسخه از *‪ A‬باشند که که با ‪ h1‬و ‪ h2‬بسط داده می شوند و‬
‫داشته باشیم که )‪ h*(n)>h2(n)>h1(n‬آنگاه الگوریتم ‪ A2‬هوشمند تر از الگوریتم ‪A1‬‬
‫عمل می کند ‪.‬‬
‫در ضمن تعداد گره های که ‪ A2‬بسط می دهد حداقل به تعداد گر ه های ‪ A1‬است ‪.‬‬
‫*‪ A‬نکات مهم الگوریتم‬
‫نکته ‪ : 6‬تابع )‪ h(n‬را یکنوا می گویند اگر رابطه زیر در مورد آن صادق باشد ‪:‬‬
‫)׳ ‪) + h( n‬׳ ‪h(n) < C(n , a , n‬‬
‫‪S‬‬
‫‪n‬‬
‫‪G1‬‬
‫׳‪n‬‬
‫׳) ‪ C(n , a , n‬یعنی׳‪ n‬با استفاده از عمل ‪ a‬از حالت ‪ n‬ساخته شده‬
‫*‪ A‬نکات مهم الگوریتم‬
‫مثال ‪ :‬در گراف زیر تابع )‪ h(n‬یکنوا است زیرا با توجه به رابطه زیر ‪:‬‬
‫) ׳‪) + h( n‬׳‪h(n) < C(n , a , n‬‬
‫‪4‬‬
‫‪1‬‬
‫‪A‬‬
‫‪22‬‬
‫‪2‬‬
‫‪C‬‬
‫‪1‬‬
‫‪F‬‬
‫‪1‬‬
‫‪1‬‬
‫‪B‬‬
‫‪3‬‬
‫‪1‬‬
‫‪D‬‬
‫‪2‬‬
‫‪3‬‬
‫‪3‬‬
‫‪G‬‬
‫‪0‬‬
‫‪1‬‬
‫‪3‬‬
‫‪E‬‬
‫‪1‬‬
‫‪2‬‬
‫‪h(A) < C(A , a , B) +h(B) => 2 < 1 + 3 => 2 < 4 ≡ True‬‬
‫‪h(A) < C(A , a , C) +h(C) => 2 < 4 + 1 => 2 < 5 ≡ True‬‬
‫*‪ A‬نکات مهم الگوریتم‬
‫مثال ‪ :‬ثابت کنید در مسله مسير یابی تابع هیورستیک ‪hSLD‬‬
‫یکنواست؟‬
‫‪y‬‬
‫‪G1‬‬
‫)׳‪ h( n‬׳ ‪n‬‬
‫)‪h(n‬‬
‫‪x‬‬
‫‪n‬‬
‫) ׳‪) + h( n‬׳‪h(n) < C(n , a , n‬‬
‫چون روابط بازگشتی هستند اثبات می شود‬
‫‪ ) >=0‬׳‪h( n‬‬
‫) ׳‪x < y + h( n‬‬
‫*‪ A‬نکات مهم الگوریتم‬
‫مثال ‪ :‬ثابت کنید اگر )‪ h(n‬یکنوا باشد مقادیر )‪ f(n‬در مسير غير کاهش ی قرار دارند ؟‬
‫)‪n g (n‬‬
‫)׳‪C(n , a , n‬‬
‫) ׳ ‪ g(n‬׳ ‪n‬‬
‫‪G1‬‬
‫)׳‪ )= g (n) + C(n , a , n‬׳ ‪g(n‬‬
‫‪1‬‬
‫)׳‪) + h(n‬׳‪h(n )< C(n , a , n‬‬
‫‪2‬‬
‫)‪ ) >g(n) +h(n) = f(n‬׳ ‪) + h(n‬׳‪ ) = g(n) + C(n , a , n‬׳ ‪ ) + h(n‬׳ ‪ )= g(n‬׳ ‪f(n‬‬
‫نکته مهم ‪ :‬خصوصیت غير کاهش ی تابع ‪ f‬این امکان را به ما می دهد که کانتور را تعریف کنیم‬
‫‪2‬‬
‫‪1‬‬
‫*‪ A‬نکات مهم الگوریتم‬
‫سوال ‪ :‬با توجه به گراف زیر موضوع ذیل را بررس ی کنید ‪:‬‬
‫*‪ A‬تمام گره های را که * ‪ f(n) < C‬باشد را بسط می دهد‪.‬‬
‫‪4‬‬
‫‪1‬‬
‫‪A‬‬
‫‪22‬‬
‫‪2‬‬
‫‪C‬‬
‫‪1‬‬
‫‪F‬‬
‫‪1‬‬
‫‪1‬‬
‫‪B‬‬
‫‪3‬‬
‫‪1‬‬
‫‪D‬‬
‫‪2‬‬
‫‪3‬‬
‫‪3‬‬
‫‪G‬‬
‫‪0‬‬
‫‪1‬‬
‫‪3‬‬
‫‪E‬‬
‫‪1‬‬
‫‪2‬‬
‫*‪ A‬نکات تکمیلی الگوریتم‬
‫*‪ A‬تمام گره های را که * ‪ f(n) < C‬باشد را بسط می دهد‬
‫*‪ A‬ممکن است برخی از گره های که روی کانتور * ‪ f(n) = C‬هستند را قبل‬
‫از گره هدف بسط دهد‬
‫*‪ A‬تمام گره های * ‪ f(n) < C‬را بسط می دهد‬
‫*‪ A‬هیچ گره ای را که * ‪ f(n) > C‬را بسط نمی دهد‬
‫هیچ الگوریتمی بهینه دیگری تضمين نمی کند که تعداد گره کمتری نسبت‬
‫به *‪ A‬تولید کنند زیرا اگر الگوریتمی تمام گره های که در محدوده‬
‫* ‪ f(n) < C‬را بسط ندهد با خطر از دست دادن راه حل بهینه مواجه میشود‬
‫*‪ A‬نکات تکمیلی الگوریتم‬
‫توابع هیورستیک که یکنوا نیستند به معادله زیر تبدیل به یکنوا می شوند‬
‫معادله ‪: pathmax‬‬
‫})׳‪)+h(n‬׳‪)= max { f(n) , g(n‬׳‪f(n‬‬
‫پدر‬
‫‪n‬‬
‫فرزند‬
‫‪G1‬‬
‫׳‪n‬‬
‫مثال ‪ :‬تابع هیورستیک غير یکنوای زیر را تبدیل‬
‫به یک تابع هیورستیک یکنوا کنید ؟‬
‫‪4‬‬
‫‪1‬‬
‫‪C‬‬
‫‪1‬‬
‫‪A‬‬
‫‪27‬‬
‫شرط یکنوایی ‪:‬‬
‫) ׳‪ ) + h( n‬׳‪h(n) < C(n , a , n‬‬
‫‪1‬‬
‫‪B‬‬
‫‪4‬‬
‫‪1‬‬
‫‪F‬‬
‫‪1‬‬
‫‪D‬‬
‫‪2‬‬
‫‪1‬‬
‫‪G‬‬
‫‪0‬‬
‫})׳‪)+h(n‬׳‪)= max { f(n) , g(n‬׳‪f(n‬‬
‫*‪ A‬ایرادات اصلی الگوریتم‬
‫تعداد گره های که در کانتور هدف قرار دارد نمایی هستند( تعداد زیاد)‬
‫اثبات می شود اگر رابطه زیر برقرار باشد تعداد گر ه ها در کانتور هدف‬
‫نمایی نیست ‪:‬‬
‫))‪|h(n) –h*(n)| ≤O(log h*(n‬‬
‫متاسفانه در عمل ‪:‬‬
‫‪1‬‬
‫)‪|h(n) –h*(n)| ≈ h*(n‬‬
‫))‪*(n) ≥O(log h*(n‬‬
‫‪h‬‬
‫‪2‬‬
‫))‪|h(n) –h*(n)| ≥O(log h*(n‬‬
‫نتیجه ‪ :‬در نهایت رشد نمایی تعداد گره ها کل حافظه کامپیوتر را اشغال می کند‬
‫‪2‬‬
‫‪1‬‬
‫*‪ A‬ایرادات اصلی الگوریتم‬
‫هم از نظر زمانی و هم از نظر مکانی الگوریتم *‪ A‬مرتبه نمایی دارد ‪.‬‬
‫به علت مصرف زیاد الگوریتم *‪ A‬برای مسائلی با فضای حالت گسترده کاربرد ندارد ‪.‬‬
‫*‪A‬رفع مشکل الگوریتم‬
‫برای رفع مشکل الگوریتم *‪ A‬باید سعی کنیم بر فضای حالت بزرگ غلبه کرد برای این کار سه روش‬
‫داریم ‪:‬‬
‫جستجوی حافظه محدود‬
‫شده‬
‫‪IDA * )1‬‬
‫‪MA * )2‬‬
‫‪SMA * )3‬‬
‫الگوریتم * ‪IDA‬‬
‫ديديم که جستجوي عميق کننده تكراري تكنيكي مفيد براي کاهش مصرف حافظه است‪ .‬حال مي توانيم از‬
‫اين تكنيك استفاده نموده و هر بار يك جستجوي عمقي تا هزينه ‪ f-limit‬را انجام دهیم ‪ .‬اگر هدف پیدا‬
‫نشد مقداری به هزینه ‪ f-limit‬اضافه می کنیم و دوباره جستجو را تکرار می کنیم ‪ .‬البته در این الگوریتم‬
‫بجای عمق از محدودیت هزینه استفاده می کنیم ‪.‬در این الگوریتم مقدار اولیه ‪ f-limit‬را برابر مقدار ‪f‬‬
‫ریشه قرار می دهیم ‪ .‬در هر مرحله گره ای که ‪ f‬آن از ‪ f-limit‬کمتر باشد گسترش می یابد ‪ .‬اگر هدف‬
‫پیدا شد الگوریتم تمام می شود وگرنه کمترین مقدار ‪ f‬گسترش نیافته را درون متغير‪ f-limit‬می ریزیم ‪.‬‬
‫ویژگی های الگوریتم * ‪IDA‬‬
‫هدف در تکراری پیدا می شود که *‪f-limit = C‬‬
‫ثابت میشو د این الگوریتم کامل و بهینه است‬
‫در این الگوریتم در هر مرحله فقط گره های که ‪ f<f-limit‬است گسترش می یابد ‪.‬‬
‫اگر تعداد تکرار زیاد نباشد این الگوریتم از نظر کارآیی مانند * ‪ A‬است ‪.‬‬
‫محدوديت هزينه در هر مرحله به گونه اي انتخاب مي شود که در مراحل قبلي ثابت شده است که جوابي‬
‫با هزينه کمتر از اين مقدار وجود ندارد‪.‬‬
‫ویژگی های الگوریتم * ‪IDA‬‬
‫مي توان هزينه مرحله جديد را برابر با کمتررين هزينره نرودي کره در مرحلره قبلري بسرط داده نشرده‬
‫ق رررار داد از آنج ررا ک رره اي ررن روش ب رره ص ررورت عمق رري اس ررت پ ررس‬
‫پيچي رردگي فض ررايي آن در ب رردترين‬
‫حالت )‪ S (b.d‬است‪ .‬پيچيدگي زماني بستگي به تابع اکتشافي دارد‪.‬‬
‫نقطه ضعف الگوریتم * ‪ : IDA‬نقطه ضعف اصلی این الگوریتم دوباره کاری اضافی است‪.‬‬
‫حل مسله فروشنده دوره گرد با * ‪IDA‬‬
‫در این روش تعداد تکرار زیاد نیست‬
‫در این روش کارآیی مانند * ‪ A‬است ‪.‬‬
‫در این روش در هر تکرار فقط یک گره اضافه می شود ‪.‬‬
‫اگر در * ‪ A‬تعداد ‪ n‬گره گسترش یابد پس * ‪IDA‬‬
‫‪ n‬بار تکرار می شود ‪.‬‬
‫پیچیدگی این روش ‪:‬‬
‫)‪1 + 2 + 3 + … + n = O(n2‬‬
‫الگوریتم بازگشتی ‪RBFS‬‬
‫ساختار آن شبيه جستجوی عمقي بازگشرتي اسرت‪ ،‬امرا بره جرای اينکره دائمرا بره طررف پرايين مسرير‬
‫حرکررت کنررد‪ ،‬مقرردار ‪ f‬مربرروط برره بهترررين مسررير از هررر جررد گررره فعلرری را نگهررداری ميکنررد‪ ،‬اگررر گ رره‬
‫فعلرری از ايررن حررد تجرراوز کنررد‪ ،‬بازگشررتی برره عقررب برميگررردد تررا مسررير ديگررري را انتخرراب کنرد‪ .‬ايررن‬
‫جستجو اگر تابع اکتشافی قابل قبولی داشته باشد‪ ،‬بهينه است‪.‬‬
‫پيچيدگي فضايي آن )‪ O(bd‬است‬
‫تعيررين پيچيرردگی زمررانی آن برره دقررت تررابع اکتشررافی و ميررزان تغييررر بهترررين مسررير در اث رر بسررط گررره هررا‬
‫بستگی دارد‪.‬‬
‫ویژگی های الگوریتم بازگشتی ‪RBFS‬‬
‫‪ RBFS‬تا حدی از *‪ IDA‬کارآمدتر است‪ ،‬اما گره های زيادی توليد ميکند‪.‬‬
‫*‪ IDA‬و ‪ RBFS‬در معرررا افررزايش تررواني پيچيرردگي قرررار دارنررد کرره در جسررتجوی گرافهررا‬
‫مرسرروم اسررت‪ ،‬زيرررا نميتواننررد حالرهررای تکررراری را در غيررر از مسررير فعلرري بررس ر ي کنن رد‪ .‬ل ر ا‪،‬‬
‫ممکن است يک حالت را چندين بار بررس ي کنند‪.‬‬
‫*‪ IDA‬و ‪ RBFS‬از فضررای انرردکي اسررتفاده ميکننررد کرره برره آنهررا آسرريب ميرسرراند‪IDA* .‬‬
‫بين هر تکرار فقط يک عدد را نگهداری ميکند که فعلي هزينره ‪ f‬اسرت‪ RBFS .‬اطالعرات‬
‫بيشتری در حافظه نگهداری ميکند‬
‫مسله مسير یابی در رومانی توسط ‪RBFS‬‬
‫مسله مسير یابی در رومانی توسط ‪RBFS‬‬
‫جستجوی حافظه محدود ساده *‪SMA‬‬
‫*‪ SMA‬بهتررين بررگ را بسرط ميدهرد ترا حافظره پرر شرود‪ .‬در ايرن نقطره بردون از برين برردن گرره هرای‬
‫قبلي نميتواند گره جديدی اضافه کند‬
‫*‪ SMA‬هميشه بدترين گره برگ را ح ف ميکند و سرسس از طريرق گرره فرامروش شرده بره والرد آن‬
‫بر ميگردد‪ .‬پس جد زير درخت فراموش شده‪ ،‬کيفيت بهترين مسير را در آن زير درخت ميداند‬
‫اگر عمق سطحی ترين گره هدف کمتر از حافظه باشد‪ ,‬کامل است‪.‬‬
‫*‪ SMA‬بهترين الگوريتم همه منظوره برای يافتن حلهای بهينه ميباشد‬
‫جستجوی حافظه محدود ساده *‪SMA‬‬
‫اگررر مقرردار ‪ f‬تمررام برگهررا يکسرران باشررد و الگرروريتم يررک گررره را هررم برررای بسررط و هررم برررای ح ر ف‬
‫انتخاب کند‪ SMA* ،‬اين مسئله را با بسط بهترين برگ جديد و ح ف بهترين بررگ قرديمی حرل‬
‫ميکند‬
‫ممکن است *‪ SMA‬مجبور شود دائما بين مجموعره ای از مسريرهای حرل کانديرد تغييرر موضرع‬
‫دهد‪ ،‬در حالی که بخش کوچکی از هر کدام در حافظه جا شود‬
‫محدوديرهای حافظه ممکن است مسئله ها را از نظر زمان محاسباتی‪ ،‬غير قابل حل کند‪.‬‬