پاورپوینت روش حریصانه (greedy) (pptx) 20 اسلاید
دسته بندی : پاورپوینت
نوع فایل : PowerPoint (.pptx) ( قابل ویرایش و آماده پرینت )
تعداد اسلاید: 20 اسلاید
قسمتی از متن PowerPoint (.pptx) :
greedy method
1
روش حریصانه (greedy)
در هرمرحله از مراحل اجرای الگوریتم باید بخشی از جواب را به دست آوریم.
این روش جزو روشهای بهینه سازی است.
هدف یافتن یک جواب قابل قبول است که تابع هدف یا رابطه ارزش جواب را ماکزیمم یا می نیمم کند و جواب بهینه را ایجاد کند.
greedy method
2
خصوصیات کلی روش حریصانه
الف) نتیجه نهایی الگوریتم حریصانه مجموعه ای از داده ها است که ممکن است ترتیب آنها نیز اهمیت داشته باشد.
ب) جواب نهایی باید تابع هدف را بهینه (ماکزیمم یا می نیمم) نماید.
ج) در روشهای حریصانه آینده نگری وجود ندارد و به وضعیت جاری بیشتر توجه می شود. بنابراین بهینگی در هر مرحله محلی می باشد.عناصر داده را به طور متوالی گرفته و از بین آنها بدون توجه به انتخابهای قبلی یا بعدی بهترین را بر اساس معیارهای خاصی انتخاب می کند.
د) تصمیم در مورد انتخاب یا رد یکی از داده های ورودی به عنوان مولفه از جواب قطعی و غیر قابل برگشت است.
ه) الگوریتم حریصانه مانند برنامه سازی پویا اغلب برای مسائل بهینه سازی به کار می رود با این تفاوت که در برنامه سازی پویا از خاصیت بازگشتی برای تقسیم یک نمونه به نمونه های کوچکتر استفاده می شود, در حالیکه در الگوریتم حریصانه هیچ تقسیمی انجام نمی شود وبرای تولید جواب از دنباله عناصر انتخابی استفاده می شود که هریک از آنها در هر لحظه بهترین انتخاب به نظر می رسد و انتظار می رود که بتوان یک جواب بهینه نهایی را به دست آورد.
greedy method
3
اجزاء الگوریتم حریصانه
الگوریتم حریصانه با یک مجموعه تهی آغاز می شود و عناصر پشت سر هم به این مجموعه اضافه می شوند.
یک روال انتخاب عنصر بعدی را برای اضافه کردن به مجموعه انتخاب می کند. این انتخاب براساس یک معیار حریصانه که به طور محلی بهترین جواب را در هر لحظه انتخاب می کند, شکل می گیرد.
یک بررسی امکان سنجی تعیین می کند که آیا با تکمیل مجموعه جدید امکان دستیابی به جواب برای یک نمونه مسأله وکود دارد یا خیر.
یک بررسی جواب تعیین می کند که آیا مجموعه جدید یک جواب برای نمونه مسأله می باشد یا خیر.
greedy method
4
الگوریتم Dijkstra برای مسأله کوتاهترین مسیرهای تک مبدأیی
هدف: تعیین کوتاهترین مسیرها از یک گره بخصوص به تمام گره های دیگر در یک گراف جهت دار و وزن دار.
v1
v5
v2
v4
v3
1
1
7
4
6
3
5
2
greedy method
5
v1
v5
v2
v4
v3
1
1
7
4
6
3
5
2
v1
v5
v2
v4
v3
1
1
7
4
6
3
5
2
v5 نزدیک ترین گره به v1
v1
v5
v2
v4
v3
1
1
7
4
6
3
5
2
v4 نزدیک ترین گره به v1با استفاده از v5
v1
v5
v2
v4
v3
1
1
7
4
6
3
5
2
v3 نزدیک ترین گره به v1با استفاده از v5 ,v4
v1
v5
v2
v4
v3
1
1
7
4
6
3
5
2
v2 نزدیک ترین گره به v1با استفاده از ,v3 v5 ,v4
greedy method
6
داده ها برای الگوریتم Dijkstra
فرض: مسیری از گره مورد نظر به هریک از گره های دیگر وجود دارد.
مجموعه Y: مجموعه ای شامل گره هایی که تا کنون انتخاب شده اند, که مقدار اولیه آن برابر با گره شروع است.
مجموعه F: شامل یالهایی که انتخاب شده اند که در ابتدا تهی است.
با فرض این که نقطه شروع v1 است:
دو آرایه:
touch[2..n] که touch[i] شاخص گره v در Y است به طوری
که یال
آخرین یال روی کوتاهترین مسیر جاری از v1به vi
است که در آن تنها از گره های موجود در Y به عنوان گره های
میانی استفاده شده است.
length[2..n] که length [i] طول کوتاهترین مسیر جاری از v1به
vi است که در آن تنها از گره های موجود در Y به عنوان گره های
میانی استفاده شده است.
greedy method
7
الگوریتم Dijkstra
مسأله: تعیین کوتاهترین مسیرها از v1 به تمامی گره های یک گراف وزن دار و جهت دار
ورودی: عدد صحیح n2 و یک گراف جهت دار وزن دار متصل شامل n گره که با آرایه w (ماتریس مجاورت) نشان داده شده است.
خروجی: مجموعه یالهای F شامل کوتاهترین مسیرها
greedy method
8
void dijkstra(int n, const number w[][], edges &F)
{ int i,vnear,touch[2..n];
number length[2..n];
edge e;
F=;
for(i=2;i<=n;i++)
{ touch[i]=1;
length[i]=w[1][i];
}
repeat (n-1 times)
{ min=;
for (i=2;i<=n;i++)
if(0<=length[i]