1 / 40

فصل پنجم روش حریصانه Greedy

فصل پنجم روش حریصانه Greedy. الگوریتم حریصانه ، به ترتیب عناصر را انتخاب کرده ، هر بار آن عنصری را که طبق ملاکی معین ”بهترین“ به نظر می رسد، بدون توجه به انتخاب هایی که قبلا انجام داده یا در آینده انجام خواهد داد، بر می دارد. الگوریتم حریصانه ، غالبا برای حل مسائل بهینه سازی به کار می روند.

jocelin
Download Presentation

فصل پنجم روش حریصانه Greedy

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. فصل پنجم روش حریصانه Greedy

  2. الگوریتم حریصانه ، به ترتیب عناصر را انتخاب کرده ، هر بار آن عنصری را که طبق ملاکی معین ”بهترین“ به نظر می رسد، بدون توجه به انتخاب هایی که قبلا انجام داده یا در آینده انجام خواهد داد، بر می دارد.

  3. الگوریتم حریصانه ، غالبا برای حل مسائل بهینه سازی به کار می روند. • در روش حریصانه ، تقسیم به نمونه های کوچک تر صورت نمی پذیرد.

  4. الگوریتم حریصانه با انجام یک سری انتخاب، که هر یک در لحظه ای خاص ،بهترین به نظر می رسد عمل می کند، یعنی انتخاب در جای خود بهینه است.امید این است که یک حل بهینه سرتاسری یافت شود، ولی همواره چنین نیست. • برای یک الگوریتم مفروض باید تعیین کرد که آیا حل همواره بهینه است یا خیر.

  5. خصوصیات یک الگوریتم حریصانه • نتیجه نهایی مجموعه ای از داده ها است که ممکن است ترتیب آنها نیز اهمیت داشته باشد. • مجموعه جواب به صورت مرحله ای است و در هر مرحله یک مولفه از جواب حاصل می شود. • جواب نهایی باید تابع هدف را بهینه کند(ماکزیمم یا مینیمم) • تصمیم نهایی در مورد انتخاب یا عدم انتخاب توسط روال select جواب قطعی و غیر قابل بازگشت می باشد.

  6. الگوریتم حریصانه ، کار را با یک مجموعه تهی آغاز کرده به ترتیب عناصری به مجموعه اضافه می کند تا این مجموعه حلی برای نمونه ای از یک مسئله را نشان دهد. هر دور تکرار ، شامل مولفه های زیر است:

  7. 1- روال انتخاب(Select)، برای انتخاب مولفه های بعدی جواب از مجموعه انتخاب های ممکن 2- بررسی امکان سنجی(Feasible)، تعیین می کند که آیا مجموعه جدید برای رسیدن به حل،عملی است یا خیر. 3- بررسی راه حل ،(Solution) برای بررسی اینکه مشخص کند در نهایت جواب حاصل شده است یا خیر. 4- یک تابع هدف : هدف بهینه کردن این تابع است.

  8. روش حریصانه • set greedy(c){ • s=Φ; • while(!solution (s) && c!= Φ){ • X=select(c); • c=c-{x}; • if(feasible(s,x)) • s=sU{x} • } • if(solution(s)) • return s; • else return Φ; • }

  9. مسئله خرد کردن پول • می خواهیم باقی پول مشتری را با حداقل تعداد سکه ها پس بدهیم. 50 سنت 25 سنت 10 سنت 5 سنت 1 سنت می خواهیم 57 سنت را پس دهیم. {} مجموعه اولیه

  10. 50 سنت 25 سنت 10 سنت 5 سنت 1 سنت • { } اولیه • {50} امکان پذیر است اما جواب نیست • {50,50} امکان پذیر نیست پس 50 حذف می شود • {50,25} امکان پذیر نیست پس 25 حذف می شود • {50,10} امکان پذیر نیست پس 10 حذف می شود • {50,5} امکان پذیر است اما جواب نیست • {50,5,5} امکان پذیر نیست پس 5 حذف می شود • {50,5,1} امکان پذیر است اما جواب نیست • {50,5,1,1} جواب

  11. آیا این روش همیشه جواب می دهد. مثلا اگر اندازه سکه ها به شکل دیگری بود ممکن است جواب ندهد. • روش حریصانه در مورد هر مسئله ای جواب نمی دهد. بلکه باید اثبات شود.

  12. در حالت کلی دو خاصیت زیر را داشته باشد: 1- خاصیت انتخاب حریصانه از آنجاییکه جواب بهینه سراسری از انتخاب های (حریصانه) بهینه محلی حاصل می شود و الگوریتم حریصانه همیشه بنا به خاصیت خود الگوریتم این عمل انتخاب بهینه محلی را انجام می دهد. البته باید ثابت کنیم که انتخاب حریصانه در هر مرحله در جهت به دست آوردن بهینه سراسری است بنابرین این خاصیت انتخاب بهینه را دارا است. 2- داشتن بهینه زیر ساختاری یک مسئله دارای جواب بهینه است هرگاه هر زیر مسئله آن دازای جواب بهینه باشد و این مسئله باید برای هر مسئله اثبات شود.

  13. 1-4 درخت های پو شای کمینه • فرض کنید طراح شهری می خواهد چند شهر معین را با جاده به هم وصل کند، به قسمی که مردم بتوانند از هر شهر به شهر دیگر بروند. اگر محدودیت بودجه ای در کار باشد ، ممکن است طراح بخواهد این کار را با حداقل مقدار جاده کشی انجام دهد. • برای این مسئله دو الگوریتم حریصانه متفاوت : پریم و کروسکال بررسی می شود.

  14. هر یک از این الگوریتم ها از یک ویژگی بهینه محلی استفاده می کند. • تضمینی وجود ندارد که یک الگوریتم حریصانه همواره حل بهینه بدهد، • ثابت می شود که الگوریتم های کروسکال و پریم همواره درخت های پوشای کمینه را ایجاد می کنند.

  15. 1-1-4الگوریتم پریم • الگوریتم پریم با زیر مجموعه ای تهی از یال های F و زیرمجموعه ای از رئوس Y آغاز می شود، زیرمجموعه حاوی یک راس دلخواه است. به عنوان مقداراولیه، {v1} را به Y می دهیم . نزدیک ترین را س به Y ، راسی در V – Y است که توسط یالی با وزن کمینه به راسی در Y متصل است.

  16. الگوریتم 1-4: الگوریتم پریم void prim ( int n, const number cost[ ] [ ], set_ of_edges & F ) { index i , vnear; number min; edge e; index nearest [1..n-1]; // Viاندیس نزدیک ترین راس به number mindist [1..n-1]; // به راس مجاور انتخاب شده viوزن یال F = Ø ;

  17. for ( i = 0 ; i < n ; i ++) { narest [i] = 0 ; mindist [i] = cost [0] [i] ; } do { min = ∞ ; for ( i = 1 ; i < n ; i ++) if ( 0 ≤ mindist [i] < min ) { min = mindist [i] ; indexmin = i ; } e = edge connecting vertices indexed by near and nearest [ indexmin ] ; F=F U {e} mindist [ indexmin ] = -1 ; for ( i = 1 ; i < n ; i ++) if ( cost [i] [ indexmin ] < mindist [i]) { mindist [i] = cost [i] [ indexmin ] ; nearest [i] = indexmin ; } } while( n-1 times ); }

  18. تحلیل پیچیدگی زمانی در حالت معمول برای ا لگوریتم 1-4(الگوریتم پریم) عمل اصلی: در حلقه do دو حلقهوجود دارد که هر یک (n – 1 ) بار تکرار می شود . اجرایدستورات داخل هر یک از آن ها را می توان به عنوان یک بار اجرای عمل اصل در نظر گرفت. اندازه ورودی: n ، تعداد رئوس. T (n) = 2 ( n – 1) ( n – 1) Єθ ( n²)

  19. مجموعه امید بخش • اگر گراف G=(V,E) یک گراف همبند بدون جهت باشد زیر مجموعه F از E را امید بخش می نامند هرگاه بتوان به آن یال هایی اضافه کرد و یک درخت پوشای مینیمم تشکیل داد. 0 {(5,4),(3,5)} {(2,4)} {(0,1),(2,1),(2,3)} 1 7 2 2 1 4 8 3 5 4 3 6 9 10 5

  20. قضیه • G=(V,E) یک گراف همبند و بدون جهت می باشد. همچنین فرض کنید که F یک زیر مجموعه امید بخش از E است و Y مجموعه رئوس متصل شده توسط یال های موجود در F باشد اگر e یالی با وزن مینیمم باشد که یک راس از Y را به راسی از V-Y متصل می کند آنگاه • F U {e} نیز امید بخش است.

  21. اثبات • فرض کنیم (V,F’) درخت پوشای مینیمم است. • چون F امید بخش است پس : • F F’ • اگر e در F’ باشد بنابراین • F U {e} F’ • بنابراین U {e}F نیز امید بخش است. اثبات تمام است .

  22. اگر e در F’ نباشد . • F’ شامل تمام گره ها است. و e دو گره را دوباره به یکدیگر متصل می کند بنابراین دو گره از دو طریق به یکدیگر متصل شده اند • بنابراین • F’ U {e} • یک دور تشکیل می دهد. بنابراین باید e’ باشد که یک راس از Y را به V-Y متصل کرده باشد. بنابراین می توان با حذف e’ دور را از بین برد.

  23. بنابراین: • F’ U {e}-{e’} • همه راس ها را به هم متصل نموده و دور نیز ندارد پس درخت پوشای مینیمم ایجاد شده است. • چون e یالی با وزن مینیمم است که راسی از Y را V-Y متصل کرده است وزن e باید کوچکتر یا مساوی وزن e’ باشد بنابراین : • F’ U {e}-{e’} • یک درخت پوشای مینیمم است.

  24. پس • ّF U {e} F’ U {e}-{e’} • چون e’ می تواند در F باشد بنابراین F U {e} امید بخش است. • این قضیه نشان می دهد در هر مرحله خاصیت حریصانه وجود دارد. ( بهینه محلی) • در هر مرحله جواب حاصل بهینه ترین جواب است یعنی بهینه سازی زیرساختاری را رعایت کرده است.

  25. اثبات • الگوریتم پریم یک درخت پوشای مینیمم را تولید می کند. • باید نشان دهیم که مجموعه F پس از هر بار تکرار حلقه do_while امید بخش است. • اینکار به وضوح با استقرا اثبات می شود. • تهی یک مجموعه امید بخش است. • در هر مرحله یک یال میمنیمم اضافه می شود که با توجه به قضیه نتیجه نیز امید بخش است. • با تکرار ان درخت پوشای مینیمم بدست می آید.

  26. کوله پشتی یک کوله پشتی با وزن مشخص W وجود دارد. عناصری انتخاب کنیم که حداکثر ارزش را داشته باشد. ∑wi < W

  27. روش اول • عنصری که بیشترین ارزش را دارد . • کوله پشتی : 30 • حریصانه : {item1} بهینه: {item2,item3}

  28. روش دوم • عنصری که کمترین وزن را دارد . • کوله پشتی : 30 • حریصانه : {item1,item2} بهینه: {item3}

  29. روش سوم • عنصری که p/w بیشتر باشد • کوله پشتی : 30 • حریصانه : {item1,item3} بهینه: {item2, item3} در حالت صفر و یک ناممکن است.

  30. روش اول • عنصری که p/w بیشتر باشد • کوله پشتی : 30 • حریصانه : {item1,item3,item2/2} بهینه: {item2, item3} کسری از عنصر نیز ممکن است. ∑wi xi < W 0<= xi <=1

  31. کوله پشتی • Void greedy(w,n) • { Sort(p,w); // (pi/wi)>=(pi+1/wi+1) For(i=0;i<n;i++) • X[i]=0; U=w; For(i=0;i<n;i++) { if(w[i]>u) break; x[i]=1; u=u-w[i]; } If(i<n) x[i]=u/w[i]; • }

  32. زمانبندی

  33. مسئله زمانبندی • Void greedy(n,s,f){ • Sort(s,n); • For(i=0;i<n;i++) { x=selection(s); F=F U {X}; } • }

  34. مسئله زمانبندی • Void greedy(n,s,f){ • Sort(s,n); • For(i=0;i<n;i++) { x=selection(s); F=F U {X}; } • } زمان اجرا: زمان مرتب سازی + زمان انتخاب N log n + n بنابراین : N log n

  35. مسئله زمانبندی با مهلت معین

  36. مجموعه امکان پذیر • مجموعه ای که در آن هر یک از کارها در زمان خود اجرا می شوند.

  37. مجموعه امکان پذیر • مجموعه ای که در آن هر یک از کارها در زمان خود اجرا می شوند. مجموعه امکان پذیر است اگر حداقل یک ترتیب امکان پذیر داشته باشد

  38. قضیه • فرض کنید S مجموعه ای از کارها باشد. در این صورت S امکان پذیرخواهد بود اگر و فقط اگر ترتیب به دست آمده از مرتب شدن کارهای S بر اساس مهلت های غیر نزولی امکان پذیر باشد.

  39. فرض کنید S امکان پذیر است. • پس حداقل یک ترتیب امکان پذیر وجود دارد. • فرض کنید : • … X ….. Y …… • مهلت y<x • اگر جای این دو را تعویض کنیم. • … Y …. X …… در این ترتیب Y حتما اجرا می شود چون در زمان زودتر زمانبندی شده است. X نیز اجرا می شود زیرا Y با مهلت کمتر توانسته اجرا شود X که مهلت بیشتری دارد قطعا اجرا می شود. به همین ترتیب می توان بقیه کارها رانیز جابجا کرد تا به لیست اعداد مرتب رسید.

More Related