ad greedy algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس-...

188
وش حریصانه ر رضوی سید ناصر[email protected] ۱۳۹۵

Upload: others

Post on 14-Aug-2021

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

روش حریصانه[email protected]سید ناصر رضوی

۱۳۹۵

Page 2: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

مطالبفهرست

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

2

معرفی

پولباقیماندهمسئله

کمینهپوشایدرختپریمالگوریتم

کروسکالالگوریتم

تک مبدأمسیرکوتاه تریندایکستراالگوریتم

کارهازمانبندی

فشرده سازیهافمنالگوریتم

Page 3: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

معرفی

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

3

کنشروعتهیجوابمجموعهیکبا.ایده[حریصانهانتخاب]کنانتخابراعنصربهترینباقیماندهعناصربینازبارهر[سنجیامکانبررسی]کناضافهجوابمجموعهبهامکانصورتدرراشدهانتخابعنصرکنتکراررافوقمراحلصورتاینغیردروبرگردانراآناست،راه حلیکبیانگرجوابمجموعهاگر

[حلراهبررسی]

بهینه سازیمسائل.اصلیکاربرد

داردرسمیاثباتیکبهنیاز.بهینگی!؟می شودمنجرسراسریبهینهراه حلیکبه،محلیبهینهانتخاب هایازدنباله ایآیا

Page 4: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

مسئله باقیمانده پول 4

Page 5: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

پولباقیماندهمسئله

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

5

سکه هاتعدادحداقلباسنت۳6دادنپس.۱مثال

صندوقدرموجودسکه های.

[جوابمجموعه].شدهانتخابسکه های

0: مجموع

Page 6: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

پولباقیماندهمسئله

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

6

سکه هاتعدادحداقلباسنت۳6دادنپس.۱مثال

صندوقدرموجودسکه های.

[جوابمجموعه].شدهانتخابسکه های

25: مجموع

Page 7: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

پولباقیماندهمسئله

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

7

سکه هاتعدادحداقلباسنت۳6دادنپس.۱مثال

صندوقدرموجودسکه های.

[جوابمجموعه].شدهانتخابسکه های

35: مجموع

Page 8: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

پولباقیماندهمسئله

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

8

35: مجموع

سکه هاتعدادحداقلباسنت۳6دادنپس.۱مثال

صندوقدرموجودسکه های.

[جوابمجموعه].شدهانتخابسکه های

Page 9: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

پولباقیماندهمسئله

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

9

35: مجموع

سکه هاتعدادحداقلباسنت۳6دادنپس.۱مثال

صندوقدرموجودسکه های.

[جوابمجموعه].شدهانتخابسکه های

Page 10: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

پولباقیماندهمسئله

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

10

36: مجموع

راه حل بهینه

سکه هاتعدادحداقلباسنت۳6دادنپس.۱مثال

صندوقدرموجودسکه های.

[جوابمجموعه].شدهانتخابسکه های

Page 11: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

پولباقیماندهمسئله

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

11

سکه هاتعدادحداقلباسنت۱6دادنپس.2مثال

صندوقدرموجودسکه های.

شدهانتخابسکه های.

[جوابمجموعه]

0: مجموع

سنت12

Page 12: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

پولباقیماندهمسئله

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

12

12: مجموع

سکه هاتعدادحداقلباسنت۱6دادنپس.2مثال

صندوقدرموجودسکه های.

شدهانتخابسکه های.

[جوابمجموعه]

Page 13: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

پولباقیماندهمسئله

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

13

12: مجموع

سکه هاتعدادحداقلباسنت۱6دادنپس.2مثال

صندوقدرموجودسکه های.

شدهانتخابسکه های.

[جوابمجموعه]

Page 14: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

پولباقیماندهمسئله

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

14

12: مجموع

Page 15: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

پولباقیماندهمسئله

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

15

13: مجموع

سکه هاتعدادحداقلباسنت۱6دادنپس.2مثال

صندوقدرموجودسکه های.

شدهانتخابسکه های.

[جوابمجموعه]

Page 16: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

پولباقیماندهمسئله

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

16

14: مجموع

سکه هاتعدادحداقلباسنت۱6دادنپس.2مثال

صندوقدرموجودسکه های.

شدهانتخابسکه های.

[جوابمجموعه]

Page 17: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

پولباقیماندهمسئله

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

17

15: مجموع

سکه هاتعدادحداقلباسنت۱6دادنپس.2مثال

صندوقدرموجودسکه های.

شدهانتخابسکه های.

[جوابمجموعه]

Page 18: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

پولباقیماندهمسئله

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

18

16: مجموعراه حل غیر بهینه

سکه هاتعدادحداقلباسنت۱6دادنپس.2مثال

صندوقدرموجودسکه های.

شدهانتخابسکه های.

[جوابمجموعه]

Page 19: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

حریصانهالگوریتمیکاجزای

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

19

انتخاب.گردداضافهجوابمجموعهبهبایدکهبعدیعنصرانتخاب.استبهینهخودزماندرانتخابهرکهمعنااینبهمی شود؛انجامحریصانهملاکیکاساسبرانتخاب.

امکان سنجی.خیریااستامکان پذیرجواب،مجموعهبهجدیدعنصرکردناضافهآیاکهاینبررسی.

راه حلبررسی.خیریااستراه حلیکبیانگرجدید،جوابمجموعهآیاکهاینبررسی.

Page 20: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

درخت پوشای کمینه 20

Page 21: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

مطالبفهرست

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

21

کمینهپوشایدرخت.معرفیوزن دارگرافواسطحریصانهالگوریتمکروسکالالگوریتمپریمالگوریتم

Page 22: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

کمینهپوشایدرخت

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

22

همبندوجهتبدونگراف.ورودیGهستندمثبتآنیال هایوزنکه.

گرافازپوشادرختیک.تعریفGگرافازدوربدونوهمبندزیرگرافیکGاست.

وزنکمترینباپوشادرختیکیافتن.هدف

4

6

16

24

23

5

10

21

14

11

18

7

9

8

Gگراف

Page 23: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

کمینهپوشایدرخت

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

23

4

6

16

24

23

5

10

21

14

11

18

7

9

8

غیر همبند

همبندوجهتبدونگراف.ورودیGهستندمثبتآنیال هایوزنکه.

گرافازپوشادرختیک.تعریفGگرافازدوربدونوهمبندزیرگرافیکGاست.

وزنکمترینباپوشادرختیکیافتن.هدف

Page 24: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

کمینهپوشایدرخت

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

24

4

6

16

24

23

5

10

21

14

11

18

7

9

8

دارای دور

همبندوجهتبدونگراف.ورودیGهستندمثبتآنیال هایوزنکه.

گرافازپوشادرختیک.تعریفGگرافازدوربدونوهمبندزیرگرافیکGاست.

وزنکمترینباپوشادرختیکیافتن.هدف

Page 25: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

کمینهپوشایدرخت

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

25

4

6

16

24

23

5

10

21

14

11

18

7

9

8

50یک درخت پوشا با وزن

همبندوجهتبدونگراف.ورودیGهستندمثبتآنیال هایوزنکه.

گرافازپوشادرختیک.تعریفGگرافازدوربدونوهمبندزیرگرافیکGاست.

وزنکمترینباپوشادرختیکیافتن.هدف

Page 26: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

کمینهپوشایدرخت26

یمسیرهابرایکمینهپوشایدرخت.سیاتلشهردردوچرخه سواری

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

Page 27: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

کمینهپوشایدرخت27

فیتصادگرافیکبرایکمینهپوشایدرخت.

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

Page 28: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

کمینهپوشایدرخت28

یشآرابیانگرکمینهپوشایدرختتیپوسبافتیکدرسلول هاهسته.سرطانمورددرپژوهشبرای

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

Page 29: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

کاربردها

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

29

کمینهپوشایدرختکاربردهایازبرخی.(جاده ایکابلی،کامپیوتری،الکتریکی،ارتباطی،)شبکهطراحی(دوره گردفروشنده)کاملپی-انمسائلبرایتقریبیالگوریتم هایماهواره ایوهواییتصاویردرراه هاشبکهیافتنبلادرنگصورتبهچهرهتشخیص...

Page 30: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

وزن دارواسط گراف 30

Page 31: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

وزن داریالواسط

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

31

وزن داریالکلاسواسط.

Edge implements Comparable<Edge>public class

v-wEdge(int v, int w, double weight)یال وزن دار ایجاد

either()intانتهاییبرگرداندن یکی از نقاط

other(int v)intنقطه انتهایی دیگربرگرداندن

compareTo(Edge that)intرمقایسه این یال با یک یال دیگ

weight()doubleبرگرداندن وزن یال

toString()Stringاینمایش یال به صورت رشته

v wweight

Page 32: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

جاواپیاده سازی:وزن داریال

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

32

public class Edge implements Comparable<Edge>

{

private final int v, w;

private final double weight;

}

public Edge(int v, int w, double weight)

{

this.v = v;

this.w = w;

this.weight = weight;

}

public int either()

{ return v; }

public int compareTo(Edge that)

{

if (this.weight < that.weight) return -1;

else if (this.weight > that.weight) return +1;

else return 0;

}

سازنده

یکی از رئوس

رأس دیگر

ر مقایسه دو یال بمبنای وزن آن ها

public int other(int vertex)

{

if (vertex == v) return w;

else return v;

}

Page 33: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

وزن دارگرافواسط33

EdgeWeightedGraphpublic class

EdgeWeightedGraph(int V)رأسVگراف تهی با ایجاد یک

EdgeWeightedGraph(In in)ایجاد یک گراف از جریان ورودی

addEdge(Edge e)voidبه گرافeافزودن یال

<vadj(int v)Iterable<Edgeبرگرداندن یال های متلاقی با رأس

<edges()Iterable<Edgeهمه یال های گرافبرگرداندن

V()intرئوسبرگرداندن تعداد

E()intبرگرداندن تعداد یال ها

toString()Stringهنمایش گراف وزن دار به صورت یک رشت

.موازی مجاز استیال های داشتن طوقه و پیاده سازی، در این . قرارداد۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

Page 34: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

همسایگیلیستپیاده سازی:وزن دارگراف

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

34

می شوندذخیرهلیستیکدرآنبامتلاقییال هایرأس،هرازایبه.

Page 35: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

جاواپیاده سازی:وزن دارگراف

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

35

public class EdgeWeightedGraph

{

private final int V;

private final Bag<Edge>[] adj;

}

public EdgeWeightedGraph(int V)

{

this.V = V;

adj = (Bag<Edge>[]) new Bag[V];

for (int v = 0; v < V; v++)

adj[v] = new Bag<Edge>();

}

public void addEdge(Edge e)

{

int v = e.either(), w = e.other(v);

adj[v].add(e);

adj[w].add(e);

}

public Iterable<Edge> adj(int v)

{ return adj[v]; }

سازنده

هر اضافه کردن یال بهدو لیست همسایگی

Page 36: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

کمینهپوشایدرختواسط36

MSTpublic class

MST(EdgeWeightedGraphسازنده G)

<edges()Iterable<Edgeهبرگرداندن یال های درخت پوشای کمین

weight()doubleوزن درخت پوشای کمینهبرگرداندن

MSTیالهای

(سیاه)

سایر یالها(خاکستری)

% java MST tinyEWG.txt

0-7 0.16

1-7 0.19

0-2 0.26

2-3 0.17

5-7 0.28

4-5 0.35

6-2 0.40

1.81

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

Page 37: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

کمینهپوشایدرختواسط37

MSTpublic class

MST(EdgeWeightedGraphسازنده G)

<edges()Iterable<Edgeهبرگرداندن یال های درخت پوشای کمین

weight()doubleوزن درخت پوشای کمینهبرگرداندن

% java MST tinyEWG.txt

0-7 0.16

1-7 0.19

0-2 0.26

2-3 0.17

5-7 0.28

4-5 0.35

6-2 0.40

1.81

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

Public static void main(String[] args)

{

In in = new In(args[0]);

EdgeWeightedGraph G = new EdgeWeightedGraph(in);

MST mst = new MST(G);

for (Edge e : mst.edges())

StdOut.println(e);

StdOut.printf(“%.2f\n”, mst.weight());

}

Page 38: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

الگوریتم حریصانه 38

Page 39: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

برشویژگی

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

39

کنندهسادهفرضیات.متفاوتندیال هاوزن.،استهمبندگراف.

استفردبهمنحصروداردوجودکمینهپوشایدرخت.نتیجه.

75

4

13

8

9

12

14

20

16

10

1 3

26

ا وزن هیچ دو یالی بستیکدیگر برابر نی

11

Page 40: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

برشویژگی

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

40

می کندافراز(غیرتهی)مجموعهدوبهراگرافآنرئوسگراف،ازبرشیک.تعریف.

می کندمتصلدیگرمجموعهازرأسیکبهرامجموعهیکازرأسیک،متقاطعیالیک.تعریف.

داردقرارکمینهپوشایدرختدروزنکمترینبامتقاطعیالبرش،هرازایبه.برشویژگی.

ن یال های متقاطع بیتریرئوس سفید و خاکس

ن باید یال متقاطع با کمترین وزددر درخت پوشای کمینه باش

Page 41: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

درستیاثبات:برشویژگی

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

41

کندمیافراز(غیرتهی)مجموعهدوبهراگرافآنرئوسگرافازبرشیک.تعریف.

کندمیمتصلدیگرمجموعهازرأسیکبهرامجموعهیکازرأسیکمتقاطعیالیک.تعریف.

داردقرارکمینهپوشایدرختدروزنکمترینبامتقاطعیالبرش،هرازایبه.برشویژگی.

کنیدفرض.اثباتeباشدبرشیکدروزنکمترینبامتقاطعیالیک.کنیدفرضeنباشدکمینهپوشایدرختدر.

افزودنeکندمیایجاددوریککمینهپوشایدرختبه.

ماننددیگریالیکدورایندرfباشدمتقاطعیالیکباید.

برداشتنازحاصلدرختfافزودنوeاستپوشادرختیکهمچنان.

وزنکهآنجاازeوزنازfجدیدپوشایدرختایناست،کمتر

.داردکمتریوزن

تناقض!

e

درخت پوشای کمینهنیستeشامل

ینه به درخت پوشای کمeافزودن یک دور ایجاد می کند

f

Page 42: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:حریصانهالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

42

حریصانهالگوریتم.کنشروعهستند،خاکستریهمگیابتدادرکهیال هاییبا.

کنسیاهراآنوزنکمترینبایالوکنپیداسیاهمتقاطعیالبدونبرشیکبارهر.

تاکنتکرارقدرآنرابالاعملV – .شوندسیاهیال1

0-7 0.16

2-3 0.17

1-7 0.19

0-2 0.26

5-7 0.28

1-3 0.29

1-5 0.32

2-7 0.34

4-5 0.35

1-2 0.36

4-7 0.37

0-4 0.38

6-2 0.40

3-6 0.52

6-0 0.58

6-4 0.93

5

4

1

7

0

3

2

6

Page 43: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:حریصانهالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

43

0-2 0.26

1-3 0.29

2-7 0.34

1-2 0.36

6-0 0.58

6-4 0.93

5

4

1

7

0

3

2

6

یال های متقاطع (مرتب شده بر اساس وزن)

MSTدر

یال متقاطع با کمترین وزن

حریصانهالگوریتم.کنشروعهستند،خاکستریهمگیابتدادرکهیال هاییبا.

کنسیاهراآنوزنکمترینبایالوکنپیداسیاهمتقاطعیالبدونبرشیکبارهر.

تاکنتکرارقدرآنرابالاعملV – .شوندسیاهیال1

Page 44: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:حریصانهالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

44

5

4

1

7

0

3

2

6

MST

0-2

حریصانهالگوریتم.کنشروعهستند،خاکستریهمگیابتدادرکهیال هاییبا.

کنسیاهراآنوزنکمترینبایالوکنپیداسیاهمتقاطعیالبدونبرشیکبارهر.

تاکنتکرارقدرآنرابالاعملV – .شوندسیاهیال1

Page 45: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:حریصانهالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

45

5

4

1

7

0

3

2

6

یال متقاطعبا کمترین

5-7 0.28

1-5 0.32

4-5 0.35

یال های متقاطع (مرتب شده بر اساس وزن)

MSTدر

MST

0-2

حریصانهالگوریتم.کنشروعهستند،خاکستریهمگیابتدادرکهیال هاییبا.

کنسیاهراآنوزنکمترینبایالوکنپیداسیاهمتقاطعیالبدونبرشیکبارهر.

تاکنتکرارقدرآنرابالاعملV – .شوندسیاهیال1

Page 46: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:حریصانهالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

46

5

4

1

7

0

3

2

6

MST

0-2 5-7

حریصانهالگوریتم.کنشروعهستند،خاکستریهمگیابتدادرکهیال هاییبا.

کنسیاهراآنوزنکمترینبایالوکنپیداسیاهمتقاطعیالبدونبرشیکبارهر.

تاکنتکرارقدرآنرابالاعملV – .شوندسیاهیال1

Page 47: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:حریصانهالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

47

5

4

1

7

0

3

2

6

MST

0-2 5-7

یال متقاطعبا کمترین

6-2 0.40

3-6 0.52

6-0 0.58

6-4 0.93

یال های متقاطع (مرتب شده بر اساس وزن)

MSTدر

حریصانهالگوریتم.کنشروعهستند،خاکستریهمگیابتدادرکهیال هاییبا.

کنسیاهراآنوزنکمترینبایالوکنپیداسیاهمتقاطعیالبدونبرشیکبارهر.

تاکنتکرارقدرآنرابالاعملV – .شوندسیاهیال1

Page 48: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:حریصانهالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

48

5

4

1

7

0

3

2

6

MST

0-2 5-7 6-2

حریصانهالگوریتم.کنشروعهستند،خاکستریهمگیابتدادرکهیال هاییبا.

کنسیاهراآنوزنکمترینبایالوکنپیداسیاهمتقاطعیالبدونبرشیکبارهر.

تاکنتکرارقدرآنرابالاعملV – .شوندسیاهیال1

Page 49: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:حریصانهالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

49

5

4

1

7

0

3

2

6

MST

0-2 5-7 6-2

0-7 0.16

2-3 0.17

2-7 0.34

4-5 0.35

1-2 0.36

4-7 0.37

3-6 0.52

یال های متقاطع (مرتب شده بر اساس وزن)

MSTدر

یال متقاطعبا کمترین

حریصانهالگوریتم.کنشروعهستند،خاکستریهمگیابتدادرکهیال هاییبا.

کنسیاهراآنوزنکمترینبایالوکنپیداسیاهمتقاطعیالبدونبرشیکبارهر.

تاکنتکرارقدرآنرابالاعملV – .شوندسیاهیال1

Page 50: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:حریصانهالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

50

5

4

1

7

0

3

2

6

MST

0-2 5-7 6-2 0-7

حریصانهالگوریتم.کنشروعهستند،خاکستریهمگیابتدادرکهیال هاییبا.

کنسیاهراآنوزنکمترینبایالوکنپیداسیاهمتقاطعیالبدونبرشیکبارهر.

تاکنتکرارقدرآنرابالاعملV – .شوندسیاهیال1

Page 51: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:حریصانهالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

51

5

4

1

7

0

3

2

6

MST

0-2 5-7 6-2 0-7

یال متقاطعبا کمترین

2-3 0.17

1-7 0.19

1-5 0.32

1-2 0.36

3-6 0.52

یال های متقاطع (مرتب شده بر اساس وزن)

MSTدر

حریصانهالگوریتم.کنشروعهستند،خاکستریهمگیابتدادرکهیال هاییبا.

کنسیاهراآنوزنکمترینبایالوکنپیداسیاهمتقاطعیالبدونبرشیکبارهر.

تاکنتکرارقدرآنرابالاعملV – .شوندسیاهیال1

Page 52: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:حریصانهالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

52

5

4

1

7

0

3

2

6

MST

0-2 5-7 6-2 0-7 2-3

حریصانهالگوریتم.کنشروعهستند،خاکستریهمگیابتدادرکهیال هاییبا.

کنسیاهراآنوزنکمترینبایالوکنپیداسیاهمتقاطعیالبدونبرشیکبارهر.

تاکنتکرارقدرآنرابالاعملV – .شوندسیاهیال1

Page 53: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:حریصانهالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

53

5

4

1

7

0

3

2

6

MST

0-2 5-7 6-2 0-7 2-3

یال متقاطعبا کمترین

1-7 0.19

1-3 0.29

1-5 0.32

4-5 0.35

1-2 0.36

4-7 0.37

0-4 0.38

6-4 0.93

یال های متقاطع (مرتب شده بر اساس وزن)

MSTدر

حریصانهالگوریتم.کنشروعهستند،خاکستریهمگیابتدادرکهیال هاییبا.

کنسیاهراآنوزنکمترینبایالوکنپیداسیاهمتقاطعیالبدونبرشیکبارهر.

تاکنتکرارقدرآنرابالاعملV – .شوندسیاهیال1

Page 54: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:حریصانهالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

54

5

4

1

7

0

3

2

6

MST

0-2 5-7 6-2 0-7 2-3 1-7

حریصانهالگوریتم.کنشروعهستند،خاکستریهمگیابتدادرکهیال هاییبا.

کنسیاهراآنوزنکمترینبایالوکنپیداسیاهمتقاطعیالبدونبرشیکبارهر.

تاکنتکرارقدرآنرابالاعملV – .شوندسیاهیال1

Page 55: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:حریصانهالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

55

5

4

1

7

0

3

2

6

MST

0-2 5-7 6-2 0-7 2-3 1-7

یال متقاطعبا کمترین

4-5 0.35

4-7 0.37

0-4 0.38

6-4 0.93

یال های متقاطع (مرتب شده بر اساس وزن)

MSTدر

حریصانهالگوریتم.کنشروعهستند،خاکستریهمگیابتدادرکهیال هاییبا.

کنسیاهراآنوزنکمترینبایالوکنپیداسیاهمتقاطعیالبدونبرشیکبارهر.

تاکنتکرارقدرآنرابالاعملV – .شوندسیاهیال1

Page 56: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:حریصانهالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

56

5

4

1

7

0

3

2

6

MST

0-2 5-7 6-2 0-7 2-3 1-7 4-5

حریصانهالگوریتم.کنشروعهستند،خاکستریهمگیابتدادرکهیال هاییبا.

کنسیاهراآنوزنکمترینبایالوکنپیداسیاهمتقاطعیالبدونبرشیکبارهر.

تاکنتکرارقدرآنرابالاعملV – .شوندسیاهیال1

Page 57: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

درستیاثبات:حریصانهالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

57

استکمینهپوشایدرختیکحریصانهالگوریتمخروجی.گزاره.

اثبات.(برشویژگیاساسبر)داردتعلقکمینهپوشایدرختبهشودمیسیاهکهیالیهر.ازکمترسیاههاییالتعداداگرV – نظردررابرشی).داردوجودسیاهمتقاطعیالبدونبرشیکباشد،1

(دهندمیتشکیلهمبندمولفهیکآنرئوسکهبگیرید

- Vتعداد یال های سیاه کمتر از هیک برش بدون یال متقاطع سیا1

Page 58: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

کاراپیاده سازی:حریصانهالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

58

استکمینهپوشایدرختیکزیر،الگوریتمخروجی.گزاره.کنشروعهستند،خاکستریهمگیابتدادرکهیال هاییبا.کنسیاهراآنوزنکمترینبایالوکنپیداسیاهمتقاطعیالبدونبرشیکبارهر.تاکنتکرارقدرآنرابالاعملV – .شوندسیاهیال1

شود؟پیداچگونهکمینهوزنبایالباشد؟چگونهبرشانتخاب.کاراپیاده سازی[باشیدمابا]کروسکالالگوریتم.۱مثال[باشیدمابا]پریمالگوریتم.2مثالبرووکاالگوریتم.۳مثال

Page 59: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

؟می شودچهنباشند،متفاوتیال هاهمهوزناگر.س

می کندکاردرستیبههنوزهستند،برابروزندارایکهیال هاییوجودباحریصانهالگوریتم.ج!

(دارداصلاحبهنیازشدهارائهاثبات)

کنندهسادهفرضیاتبرداشتن59

1

3 4

21 2 1.00

1 3 0.50

2 4 1.00

3 4 0.50

1

3 4

21 2 1.00

1 3 0.50

2 4 1.00

3 4 0.50

5

4

1

6

3

2

0

4 5 0.61

4 6 0.62

5 6 0.88

1 5 0.11

2 3 0.35

0 3 0.60

1 6 0.10

0 2 0.22

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

می شود؟چهنباشدهمبندگرافاگر.س

مؤلفههربرایکمینهپوشایدرخت=استکمینهپوشایجنگلیکخروجی.ج.

Page 60: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

الگوریتم کروسکال 60

Page 61: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:کروسکالالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

61

[۱۹۵6کروسکال،].کروسکالالگوریتم

بگیرنظردروزنصعودیترتیببهرایال ها.

درختبهراباقیماندهیالکم وزن ترینTشوددورایجادباعثکاراینانجامآنکهمگرکن؛اضافه.

5

4

1

7

0

3

2

6

0-7 0.16

2-3 0.17

1-7 0.19

0-2 0.26

5-7 0.28

1-3 0.29

1-5 0.32

2-7 0.34

4-5 0.35

1-2 0.36

4-7 0.37

0-4 0.38

6-2 0.40

3-6 0.52

6-0 0.58

6-4 0.93

یال های گراف که بر اساسوزن مرتب شده اند

Page 62: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:کروسکالالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

62

5

4

1

7

0

3

2

6

0-7 0.16

دور ایجاد نمی شود

MSTدر

[۱۹۵6کروسکال،].کروسکالالگوریتم

بگیرنظردروزنصعودیترتیببهرایال ها.

درختبهراباقیماندهیالکم وزن ترینTشوددورایجادباعثکاراینانجامآنکهمگرکن؛اضافه.

Page 63: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:کروسکالالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

63

5

4

1

7

0

3

2

6

0-7 0.16

2-3 0.17

دور ایجاد نمی شودMSTدر

[۱۹۵6کروسکال،].کروسکالالگوریتم

بگیرنظردروزنصعودیترتیببهرایال ها.

درختبهراباقیماندهیالکم وزن ترینTشوددورایجادباعثکاراینانجامآنکهمگرکن؛اضافه.

Page 64: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:کروسکالالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

64

5

4

1

7

0

3

2

6

0-7 0.16

2-3 0.17

1-7 0.19

دور ایجاد نمی شود

MSTدر

[۱۹۵6کروسکال،].کروسکالالگوریتم

بگیرنظردروزنصعودیترتیببهرایال ها.

درختبهراباقیماندهیالکم وزن ترینTشوددورایجادباعثکاراینانجامآنکهمگرکن؛اضافه.

Page 65: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:کروسکالالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

65

5

4

1

7

0

3

2

6

0-7 0.16

2-3 0.17

1-7 0.19

0-2 0.26

دور ایجاد نمی شود

MSTدر

[۱۹۵6کروسکال،].کروسکالالگوریتم

بگیرنظردروزنصعودیترتیببهرایال ها.

درختبهراباقیماندهیالکم وزن ترینTشوددورایجادباعثکاراینانجامآنکهمگرکن؛اضافه.

Page 66: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:کروسکالالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

66

5

4

1

7

0

3

2

6

0-7 0.16

2-3 0.17

1-7 0.19

0-2 0.26

5-7 0.28

دور ایجاد نمی شود

MSTدر

[۱۹۵6کروسکال،].کروسکالالگوریتم

بگیرنظردروزنصعودیترتیببهرایال ها.

درختبهراباقیماندهیالکم وزن ترینTشوددورایجادباعثکاراینانجامآنکهمگرکن؛اضافه.

Page 67: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:کروسکالالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

67

5

4

1

7

0

3

2

6

0-7 0.16

2-3 0.17

1-7 0.19

0-2 0.26

5-7 0.28

1-3 0.29

دور ایجاد می شود

نیستMSTدر

[۱۹۵6کروسکال،].کروسکالالگوریتم

بگیرنظردروزنصعودیترتیببهرایال ها.

درختبهراباقیماندهیالکم وزن ترینTشوددورایجادباعثکاراینانجامآنکهمگرکن؛اضافه.

Page 68: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:کروسکالالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

68

5

4

1

7

0

3

2

6

0-7 0.16

2-3 0.17

1-7 0.19

0-2 0.26

5-7 0.28

1-3 0.29

1-5 0.32

دور ایجاد می شود

نیستMSTدر

[۱۹۵6کروسکال،].کروسکالالگوریتم

بگیرنظردروزنصعودیترتیببهرایال ها.

درختبهراباقیماندهیالکم وزن ترینTشوددورایجادباعثکاراینانجامآنکهمگرکن؛اضافه.

Page 69: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:کروسکالالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

69

5

4

1

7

0

3

2

6

0-7 0.16

2-3 0.17

1-7 0.19

0-2 0.26

5-7 0.28

1-3 0.29

1-5 0.32

2-7 0.34

دور ایجاد می شود

نیستMSTدر

[۱۹۵6کروسکال،].کروسکالالگوریتم

بگیرنظردروزنصعودیترتیببهرایال ها.

درختبهراباقیماندهیالکم وزن ترینTشوددورایجادباعثکاراینانجامآنکهمگرکن؛اضافه.

Page 70: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:کروسکالالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

70

5

4

1

7

0

3

2

6

0-7 0.16

2-3 0.17

1-7 0.19

0-2 0.26

5-7 0.28

1-3 0.29

1-5 0.32

2-7 0.34

MSTدر 0.35 4-5

وددور ایجاد نمی ش

[۱۹۵6کروسکال،].کروسکالالگوریتم

بگیرنظردروزنصعودیترتیببهرایال ها.

درختبهراباقیماندهیالکم وزن ترینTشوددورایجادباعثکاراینانجامآنکهمگرکن؛اضافه.

Page 71: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:کروسکالالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

71

5

4

1

7

0

3

2

6

0-7 0.16

2-3 0.17

1-7 0.19

0-2 0.26

5-7 0.28

1-3 0.29

1-5 0.32

2-7 0.34

4-5 0.35

نیستMSTدر 0.36 1-2

دور ایجاد می شود

[۱۹۵6کروسکال،].کروسکالالگوریتم

بگیرنظردروزنصعودیترتیببهرایال ها.

درختبهراباقیماندهیالکم وزن ترینTشوددورایجادباعثکاراینانجامآنکهمگرکن؛اضافه.

Page 72: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:کروسکالالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

72

5

4

1

7

0

3

2

6

0-7 0.16

2-3 0.17

1-7 0.19

0-2 0.26

5-7 0.28

1-3 0.29

1-5 0.32

2-7 0.34

4-5 0.35

1-2 0.36

نیستMSTدر 0.37 4-7

ددور ایجاد می شو

[۱۹۵6کروسکال،].کروسکالالگوریتم

بگیرنظردروزنصعودیترتیببهرایال ها.

درختبهراباقیماندهیالکم وزن ترینTشوددورایجادباعثکاراینانجامآنکهمگرکن؛اضافه.

Page 73: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:کروسکالالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

73

5

4

1

7

0

3

2

6

0-7 0.16

2-3 0.17

1-7 0.19

0-2 0.26

5-7 0.28

1-3 0.29

1-5 0.32

2-7 0.34

4-5 0.35

1-2 0.36

4-7 0.37

نیستMSTدر 0.38 0-4

ددور ایجاد می شو

[۱۹۵6کروسکال،].کروسکالالگوریتم

بگیرنظردروزنصعودیترتیببهرایال ها.

درختبهراباقیماندهیالکم وزن ترینTشوددورایجادباعثکاراینانجامآنکهمگرکن؛اضافه.

Page 74: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:کروسکالالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

74

5

4

1

7

0

3

2

6

0-7 0.16

2-3 0.17

1-7 0.19

0-2 0.26

5-7 0.28

1-3 0.29

1-5 0.32

2-7 0.34

4-5 0.35

1-2 0.36

4-7 0.37

0-4 0.38

MSTدر 0.40 6-2وددور ایجاد نمی ش

[۱۹۵6کروسکال،].کروسکالالگوریتم

بگیرنظردروزنصعودیترتیببهرایال ها.

درختبهراباقیماندهیالکم وزن ترینTشوددورایجادباعثکاراینانجامآنکهمگرکن؛اضافه.

Page 75: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:کروسکالالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

75

5

4

1

7

0

3

2

6

0-7 0.16

2-3 0.17

1-7 0.19

0-2 0.26

5-7 0.28

1-3 0.29

1-5 0.32

2-7 0.34

4-5 0.35

1-2 0.36

4-7 0.37

0-4 0.38

6-2 0.40

نیستMSTدر 0.52 3-6

ددور ایجاد می شو

[۱۹۵6کروسکال،].کروسکالالگوریتم

بگیرنظردروزنصعودیترتیببهرایال ها.

درختبهراباقیماندهیالکم وزن ترینTشوددورایجادباعثکاراینانجامآنکهمگرکن؛اضافه.

Page 76: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:کروسکالالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

76

5

4

1

7

0

3

2

6

0-7 0.16

2-3 0.17

1-7 0.19

0-2 0.26

5-7 0.28

1-3 0.29

1-5 0.32

2-7 0.34

4-5 0.35

1-2 0.36

4-7 0.37

0-4 0.38

6-2 0.40

3-6 0.52

نیستMSTدر 0.58 6-0ددور ایجاد می شو

[۱۹۵6کروسکال،].کروسکالالگوریتم

بگیرنظردروزنصعودیترتیببهرایال ها.

درختبهراباقیماندهیالکم وزن ترینTشوددورایجادباعثکاراینانجامآنکهمگرکن؛اضافه.

Page 77: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:کروسکالالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

77

5

4

1

7

0

3

2

6

0-7 0.16

2-3 0.17

1-7 0.19

0-2 0.26

5-7 0.28

1-3 0.29

1-5 0.32

2-7 0.34

4-5 0.35

1-2 0.36

4-7 0.37

0-4 0.38

6-2 0.40

3-6 0.52

6-0 0.58

نیستMSTدر 0.93 6-4

ددور ایجاد می شو

[۱۹۵6کروسکال،].کروسکالالگوریتم

بگیرنظردروزنصعودیترتیببهرایال ها.

درختبهراباقیماندهیالکم وزن ترینTشوددورایجادباعثکاراینانجامآنکهمگرکن؛اضافه.

Page 78: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:کروسکالالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

78

5

4

1

7

0

3

2

6

0-7 0.16

2-3 0.17

1-7 0.19

0-2 0.26

5-7 0.28

1-3 0.29

1-5 0.32

2-7 0.34

4-5 0.35

1-2 0.36

4-7 0.37

0-4 0.38

6-2 0.40

3-6 0.52

6-0 0.58

6-4 0.93

هدرخت پوشای کمین

[۱۹۵6کروسکال،].کروسکالالگوریتم

بگیرنظردروزنصعودیترتیببهرایال ها.

درختبهراباقیماندهیالکم وزن ترینTشوددورایجادباعثکاراینانجامآنکهمگرکن؛اضافه.

Page 79: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

نمایشیاجرای:کروسکالالگوریتم79

Page 80: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

سازیپیادهچالش:کروسکالالگوریتم80

یالافزودنآیا.چالشv-wدرختبهT؟می شوددورایجادباعث

سختی؟درجه E + V

V

log V

log* V

1

را اجرا کن،DFSالگوریتم vبا شروع از رأس قابل دسترسی استwبررسی کن آیا رأس

5

4

1

7

0

3

2

6

این یال را به درخت اضافه کن

5

4

1

7

0

3

2

6

افزودن این یال به درخت باعث ایجاد دور می شود

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

!با استفاده از ساختمان داده مجموعه های مجزا

Page 81: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

پیاده سازیچالش:کروسکالالگوریتم81

یالافزودنآیا.چالشv-wدرختبهT؟می شوددورایجادباعث

مجزامجموعه هایدادهساختمانازاستفاده.کاراه حلرادرهمبندمؤلفههرTکننگهداریمجزامجموعهیکدررا.

رأسدواگرvوwیالافزودنآنگاهباشند،مجموعهیکدرv-wمی شوددورایجادباعث.

یالافزودنازپسv-wبهT،رأسدوشاملمجموعه هایvوwکنادغامیکدیگربارا.

v

w

این یال را به درخت اضافه کن

vw

افزودن این یال به درخت باعث ایجاد دور می شود

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

Page 82: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

جاوادرسازیپیاده:کروسکالالگوریتم82 public class KruskalMST

{

private Queue<Edge> mst = new Queue<Edge>();

public KruskalMST (EdgeWeightedGraph G)

{

MinPQ<Edge> pq = new MinPQ<Edge>();

for (Edge e : G.edges())

pq.insert(e);

UF uf = new UF(G.V());

while (!pq.isEmpty() && mst.size() < G.V() - 1)

{

}

}

public Iterable<Edge> edges() { return mst; }

}

Edge e = pq.delMin();

int v = e.either(), w = e.other(v);

if (!uf.connected(v, w))

{

uf.union(v, w);

mst.enqueue(e);

}

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

Page 83: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

اجرازمان:کروسکالالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

83

بامتناسبزمانیدرراکمینهپوشایدرختحالتبدتریندرکروسکالالگوریتم.گزارهE log Eمی کندمحاسبه.

اثبات.

بابرابررشدمرتبهباشند،مرتبقبلازیال هااگر.توجهE log* Vبودخواهد.

زمان هر اجرافراوانیعمل

1Eایجاد صف اولویت

Elog Eحذف کوچکترین

*Vlogاجتماع V

*Elogنبررسی متصل بود V

*logدر دنیای واقعی : یادآوری V <= 5

Page 84: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

الگوریتم پریم 84

Page 85: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:پریمالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

85

[۱۹۵۹پریم،۱۹۵7دیکسترا،۱۹۳0یارنیک].پریمالگوریتم

درختوکنشروعصفررأسباTکنبزرگحریصانهطوربهرا.

درآنرأسیکدقیقاًکهراوزنکمترینبایالمرحله،هردرT،بهاستTکناضافه.

5

4

1

7

0

3

2

6

0-7 0.16

2-3 0.17

1-7 0.19

0-2 0.26

5-7 0.28

1-3 0.29

1-5 0.32

2-7 0.34

4-5 0.35

1-2 0.36

4-7 0.37

0-4 0.38

6-2 0.40

3-6 0.52

6-0 0.58

6-4 0.93

Page 86: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:پریمالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

86

5

4

1

7

0

3

2

6

[۱۹۵۹پریم،۱۹۵7دیکسترا،۱۹۳0یارنیک].پریمالگوریتم

درختوکنشروعصفررأسباTکنبزرگحریصانهطوربهرا.

درآنرأسیکدقیقاًکهراوزنکمترینبایالمرحله،هردرT،بهاستTکناضافه.

Page 87: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:پریمالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

87

5

4

1

7

0

3

2

6

0-7 0.16

0-2 0.26

0-4 0.38

6-0 0.58

یک یال هایی که دقیقااستTرأسشان در

MSTدر

زنیال با کمترین و

[۱۹۵۹پریم،۱۹۵7دیکسترا،۱۹۳0یارنیک].پریمالگوریتم

درختوکنشروعصفررأسباTکنبزرگحریصانهطوربهرا.

درآنرأسیکدقیقاًکهراوزنکمترینبایالمرحله،هردرT،بهاستTکناضافه.

Page 88: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:پریمالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

88

5

4

1

7

0

3

2

6

MSTیال های 0-7

[۱۹۵۹پریم،۱۹۵7دیکسترا،۱۹۳0یارنیک].پریمالگوریتم

درختوکنشروعصفررأسباTکنبزرگحریصانهطوربهرا.

درآنرأسیکدقیقاًکهراوزنکمترینبایالمرحله،هردرT،بهاستTکناضافه.

Page 89: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:پریمالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

89

5

4

1

7

0

3

2

6

یک یال هایی که دقیقااستTرأسشان در

MSTدر

زنیال با کمترین و

MSTیال های 0-7

1-7 0.19

0-2 0.26

5-7 0.28

2-7 0.34

4-7 0.37

0-4 0.38

6-0 0.58

[۱۹۵۹پریم،۱۹۵7دیکسترا،۱۹۳0یارنیک].پریمالگوریتم

درختوکنشروعصفررأسباTکنبزرگحریصانهطوربهرا.

درآنرأسیکدقیقاًکهراوزنکمترینبایالمرحله،هردرT،بهاستTکناضافه.

Page 90: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:پریمالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

90

5

4

1

7

0

3

2

6

MSTیال های 1-7 0-7

[۱۹۵۹پریم،۱۹۵7دیکسترا،۱۹۳0یارنیک].پریمالگوریتم

درختوکنشروعصفررأسباTکنبزرگحریصانهطوربهرا.

درآنرأسیکدقیقاًکهراوزنکمترینبایالمرحله،هردرT،بهاستTکناضافه.

Page 91: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:پریمالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

91

5

4

1

7

0

3

2

6

یک یال هایی که دقیقااستTرأسشان در

MSTدر

زنیال با کمترین و

MSTیال های 1-7 0-7

0-2 0.26

5-7 0.28

1-3 0.29

1-5 0.32

2-7 0.34

1-2 0.36

4-7 0.37

0-4 0.38

6-0 0.58

[۱۹۵۹پریم،۱۹۵7دیکسترا،۱۹۳0یارنیک].پریمالگوریتم

درختوکنشروعصفررأسباTکنبزرگحریصانهطوربهرا.

درآنرأسیکدقیقاًکهراوزنکمترینبایالمرحله،هردرT،بهاستTکناضافه.

Page 92: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:پریمالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

92

5

4

1

7

0

3

2

6

MSTیال های 0-2 1-7 0-7

[۱۹۵۹پریم،۱۹۵7دیکسترا،۱۹۳0یارنیک].پریمالگوریتم

درختوکنشروعصفررأسباTکنبزرگحریصانهطوربهرا.

درآنرأسیکدقیقاًکهراوزنکمترینبایالمرحله،هردرT،بهاستTکناضافه.

Page 93: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:پریمالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

93

5

4

1

7

0

3

2

6

یک یال هایی که دقیقااستTرأسشان در

MSTدر

زنیال با کمترین و

MSTیال های 0-2 1-7 0-7

2-3 0.17

5-7 0.28

1-3 0.29

1-5 0.32

4-7 0.37

0-4 0.38

6-2 0.40

6-0 0.58

[۱۹۵۹پریم،۱۹۵7دیکسترا،۱۹۳0یارنیک].پریمالگوریتم

درختوکنشروعصفررأسباTکنبزرگحریصانهطوربهرا.

درآنرأسیکدقیقاًکهراوزنکمترینبایالمرحله،هردرT،بهاستTکناضافه.

Page 94: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:پریمالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

94

5

4

1

7

0

3

2

6

MSTیال های 2-3 0-2 1-7 0-7

[۱۹۵۹پریم،۱۹۵7دیکسترا،۱۹۳0یارنیک].پریمالگوریتم

درختوکنشروعصفررأسباTکنبزرگحریصانهطوربهرا.

درآنرأسیکدقیقاًکهراوزنکمترینبایالمرحله،هردرT،بهاستTکناضافه.

Page 95: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:پریمالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

95

5

4

1

7

0

3

2

6

یک یال هایی که دقیقااستTرأسشان در

MSTدر

زنیال با کمترین و

MSTیال های 2-3 0-2 1-7 0-7

5-7 0.28

1-5 0.32

4-7 0.37

0-4 0.38

6-2 0.40

3-6 0.52

6-0 0.58

[۱۹۵۹پریم،۱۹۵7دیکسترا،۱۹۳0یارنیک].پریمالگوریتم

درختوکنشروعصفررأسباTکنبزرگحریصانهطوربهرا.

درآنرأسیکدقیقاًکهراوزنکمترینبایالمرحله،هردرT،بهاستTکناضافه.

Page 96: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:پریمالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

96

5

4

1

7

0

3

2

6

MSTیال های 5-7 2-3 0-2 1-7 0-7

[۱۹۵۹پریم،۱۹۵7دیکسترا،۱۹۳0یارنیک].پریمالگوریتم

درختوکنشروعصفررأسباTکنبزرگحریصانهطوربهرا.

درآنرأسیکدقیقاًکهراوزنکمترینبایالمرحله،هردرT،بهاستTکناضافه.

Page 97: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:پریمالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

97

5

4

1

7

0

3

2

6

یک یال هایی که دقیقااستTرأسشان در

MSTدر

یال با کمترین وزن

MSTیال های 5-7 2-3 0-2 1-7 0-7

4-5 0.35

4-7 0.37

0-4 0.38

6-2 0.40

3-6 0.52

6-0 0.58

[۱۹۵۹پریم،۱۹۵7دیکسترا،۱۹۳0یارنیک].پریمالگوریتم

درختوکنشروعصفررأسباTکنبزرگحریصانهطوربهرا.

درآنرأسیکدقیقاًکهراوزنکمترینبایالمرحله،هردرT،بهاستTکناضافه.

Page 98: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:پریمالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

98

5

4

1

7

0

3

2

6

MSTیال های 4-5 5-7 2-3 0-2 1-7 0-7

[۱۹۵۹پریم،۱۹۵7دیکسترا،۱۹۳0یارنیک].پریمالگوریتم

درختوکنشروعصفررأسباTکنبزرگحریصانهطوربهرا.

درآنرأسیکدقیقاًکهراوزنکمترینبایالمرحله،هردرT،بهاستTکناضافه.

Page 99: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:پریمالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

99

5

4

1

7

0

3

2

6

یک یال هایی که دقیقااستTرأسشان در

MSTدر

یال با کمترین وزن

MSTیال های 4-5 5-7 2-3 0-2 1-7 0-7

6-2 0.40

3-6 0.52

6-0 0.58

6-4 0.93

[۱۹۵۹پریم،۱۹۵7دیکسترا،۱۹۳0یارنیک].پریمالگوریتم

درختوکنشروعصفررأسباTکنبزرگحریصانهطوربهرا.

درآنرأسیکدقیقاًکهراوزنکمترینبایالمرحله،هردرT،بهاستTکناضافه.

Page 100: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:پریمالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

100

5

4

1

7

0

3

2

6

MSTیال های 6-2 4-5 5-7 2-3 0-2 1-7 0-7

[۱۹۵۹پریم،۱۹۵7دیکسترا،۱۹۳0یارنیک].پریمالگوریتم

درختوکنشروعصفررأسباTکنبزرگحریصانهطوربهرا.

درآنرأسیکدقیقاًکهراوزنکمترینبایالمرحله،هردرT،بهاستTکناضافه.

Page 101: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:پریمالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

101

5

4

1

7

0

3

2

6

MSTیال های 6-2 4-5 5-7 2-3 0-2 1-7 0-7

درخت پوشای کمینه

[۱۹۵۹پریم،۱۹۵7دیکسترا،۱۹۳0یارنیک].پریمالگوریتم

درختوکنشروعصفررأسباTکنبزرگحریصانهطوربهرا.

درآنرأسیکدقیقاًکهراوزنکمترینبایالمرحله،هردرT،بهاستTکناضافه.

Page 102: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

اجرا:پریمالگوریتم102

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

Page 103: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

درستیاثبات:پریمالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

103

[۱۹۵۹پریم،۱۹۵7دیکسترا،۱۹۳0یارنیک].گزاره

.استکمینهپوشایدرختیکپریمالگوریتمخروجی

محاسبهحریصانهالگوریتمازخاصحالتیکپریمالگوریتم.اثباتMSTاست.کنیدفرضeمی کندمتصلنداردتعلقدرختبهکهدیگررأسیکبهرادرختازرأسیککهباشدیالی.

درخترئوسمجموعه=برش.

نیستسیاهمتقاطعییالهیچ.

ازمتقاطعییالهیچوزنeنیستکمتر.

5

4

1

7

0

3

2

6

به درخت اضافه می شودeیال

Page 104: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

پیاده سازیهایچالش:پریمالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

104

درسرشیکدقیقاًکهوزنکمترینبایالیافتن.چالشTباشد.

سختیدرجه. E

V

log E

log* E

1

5

4

1

7

0

3

2

6

تیال با کمترین وزن اس7-1یال استTکه دقیقا یک سرش در

1-7 0.19

0-2 0.26

5-7 0.28

2-7 0.34

4-7 0.37

0-4 0.38

6-0 0.58

بررسی تمام یال ها

استفاده از یک صف اولویت

Page 105: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

مشتاقپیاده سازی:پریمالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

105

درسرشیکدقیقاًکهوزنکمترینبایالیافتن.چالشTباشد.

بهیالیکوسیلهبهکهرارئوسی.مشتاقراه حلTرأساولویتکهطوریبهکن،نگهداریاولویتصفیکدرهستندمتصلvبرابر.می کندوصلTبهراvکهیالیکوتاه ترینوزنبااسترأسنزدیک ترین(v)یال)راآنبامرتبطیالوحذفصفازرادرختبهe = v-w)کناضافهدرختبه.

بامتلاقییال هایهمهگرفتننظردربارااولویتصفv(صورتبهe = v-x)کنرسانیروزبهاگرxبگیرنادیدهراآندارد،قراراولویتصفدر

صورتاینغیردرxکناضافهاولویتصفبهرا

اگرv-xکهباشدیالیکوتاه ترینxاولویت،می کندوصلدرختبهراxبدهافزایشرا

5

4

1

7

0

3

2

6

MSTدر : سیاه

0

1 1-7 0.19

2 0-2 0.26

3 1-3 0.29

4 0-4 0.38

5 5-7 0.28

6 6-0 0.58

7 0-7 0.16

PQدر : قرمز

Page 106: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:پریمالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

106

5

4

1

7

0

3

2

6

0-7 0.16

2-3 0.17

1-7 0.19

0-2 0.26

5-7 0.28

1-3 0.29

1-5 0.32

2-7 0.34

4-5 0.35

1-2 0.36

4-7 0.37

0-4 0.38

6-2 0.40

3-6 0.52

6-0 0.58

6-4 0.93

پریمالگوریتم.درختوکنشروعصفررأسباTکنبزرگحریصانهطوربهرادرآنرأسیکدقیقاکهراوزنکمترینبایالمرحله،هردرT،بهاستTکناضافهآوردندستبهتافوقمراحلتکرارV – یال1

Page 107: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:پریمالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

107

5

4

1

7

0

3

2

6

پریمالگوریتم.درختوکنشروعصفررأسباTکنبزرگحریصانهطوربهرادرآنرأسیکدقیقاکهراوزنکمترینبایالمرحله،هردرT،بهاستTکناضافهآوردندستبهتافوقمراحلتکرارV – یال1

v edgeTo[] distTo[]

0 - -

Page 108: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:پریمالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

108

5

4

1

7

0

3

2

6

پریمالگوریتم.درختوکنشروعصفررأسباTکنبزرگحریصانهطوربهرادرآنرأسیکدقیقاکهراوزنکمترینبایالمرحله،هردرT،بهاستTکناضافهآوردندستبهتافوقمراحلتکرارV – یال1

v edgeTo[] distTo[]

0 - -

7 0-7 0.16

2 0-2 0.26

4 0-4 0.38

6 6-0 0.58

PQرئوس موجود در

(مرتب بر اساس وزن)

اضافه کنPQرا به 6و 4، 2، 7رئوس

Page 109: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:پریمالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

109

5

4

1

7

0

3

2

6

پریمالگوریتم.درختوکنشروعصفررأسباTکنبزرگحریصانهطوربهرادرآنرأسیکدقیقاکهراوزنکمترینبایالمرحله،هردرT،بهاستTکناضافهآوردندستبهتافوقمراحلتکرارV – یال1

v edgeTo[] distTo[]

0 - -

7 0-7 0.16

2 0-2 0.26

4 0-4 0.38

6 6-0 0.58

MSTیال های 0-7

Page 110: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:پریمالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

110

5

4

1

7

0

3

2

6

پریمالگوریتم.درختوکنشروعصفررأسباTکنبزرگحریصانهطوربهرادرآنرأسیکدقیقاکهراوزنکمترینبایالمرحله،هردرT،بهاستTکناضافهآوردندستبهتافوقمراحلتکرارV – یال1

v edgeTo[] distTo[]

0 - -

7 0-7 0.16

1 1-7 0.19

2 0-2 0.26

5 5-7 0.28

4 0-4 0.38

6 6-0 0.58

MSTیال های 0-7 در حال حاضر یال های کوتاه تریوجود دارد4و 2به رئوس

را به 1رأس PQاضافه کن

را به5رأس PQاضافه کن

Page 111: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:پریمالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

111

5

4

1

7

0

3

2

6

پریمالگوریتم.درختوکنشروعصفررأسباTکنبزرگحریصانهطوربهرادرآنرأسیکدقیقاکهراوزنکمترینبایالمرحله،هردرT،بهاستTکناضافهآوردندستبهتافوقمراحلتکرارV – یال1

v edgeTo[] distTo[]

0 - -

7 0-7 0.16

1 1-7 0.19

2 0-2 0.26

5 5-7 0.28

4 0-4 0.38

6 6-0 0.58

MSTیال های 0-7

Page 112: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:پریمالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

112

5

4

1

7

0

3

2

6

پریمالگوریتم.درختوکنشروعصفررأسباTکنبزرگحریصانهطوربهرادرآنرأسیکدقیقاکهراوزنکمترینبایالمرحله،هردرT،بهاستTکناضافهآوردندستبهتافوقمراحلتکرارV – یال1

v edgeTo[] distTo[]

0 - -

7 0-7 0.16

1 1-7 0.19

2 0-2 0.26

5 5-7 0.28

4 0-4 0.38

6 6-0 0.58

MSTیال های 1-7 0-7

Page 113: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:پریمالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

113

5

4

1

7

0

3

2

6

پریمالگوریتم.درختوکنشروعصفررأسباTکنبزرگحریصانهطوربهرادرآنرأسیکدقیقاکهراوزنکمترینبایالمرحله،هردرT،بهاستTکناضافهآوردندستبهتافوقمراحلتکرارV – یال1

v edgeTo[] distTo[]

0 - -

7 0-7 0.16

1 1-7 0.19

2 0-2 0.26

5 5-7 0.28

3 1-3 0.29

4 0-4 0.38

6 6-0 0.58

MSTیال های 1-7 0-7 در حال حاضر یال های کوتاه تریوجود دارد5و 2به رئوس

را به 3رأس PQاضافه کن

Page 114: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:پریمالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

114

5

4

1

7

0

3

2

6

پریمالگوریتم.درختوکنشروعصفررأسباTکنبزرگحریصانهطوربهرادرآنرأسیکدقیقاکهراوزنکمترینبایالمرحله،هردرT،بهاستTکناضافهآوردندستبهتافوقمراحلتکرارV – یال1

v edgeTo[] distTo[]

0 - -

7 0-7 0.16

1 1-7 0.19

2 0-2 0.26

5 5-7 0.28

3 1-3 0.29

4 0-4 0.38

6 6-0 0.58

MSTیال های 1-7 0-7

Page 115: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:پریمالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

115

5

4

1

7

0

3

2

6

پریمالگوریتم.درختوکنشروعصفررأسباTکنبزرگحریصانهطوربهرادرآنرأسیکدقیقاکهراوزنکمترینبایالمرحله،هردرT،بهاستTکناضافهآوردندستبهتافوقمراحلتکرارV – یال1

v edgeTo[] distTo[]

0 - -

7 0-7 0.16

1 1-7 0.19

2 0-2 0.26

5 5-7 0.28

3 1-3 0.29

4 0-4 0.38

6 6-0 0.58

MSTیال های 0-2 1-7 0-7

Page 116: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:پریمالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

116

5

4

1

7

0

3

2

6

پریمالگوریتم.درختوکنشروعصفررأسباTکنبزرگحریصانهطوربهرادرآنرأسیکدقیقاکهراوزنکمترینبایالمرحله،هردرT،بهاستTکناضافهآوردندستبهتافوقمراحلتکرارV – یال1

v edgeTo[] distTo[]

0 - -

7 0-7 0.16

1 1-7 0.19

2 0-2 0.26

3 1-3 0.29

5 5-7 0.28

4 0-4 0.38

6 6-0 0.58

MSTیال های 0-2 1-7 0-7 اکنون یال های کوتاه تریوجود دارد6و 3به رئوس

0.29را از 3کلید رأس

کاهش بده0.17به

0.58را از 6کلید رأس

کاهش بده0.40به

2-3

6-2

0.17

0.40

Page 117: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:پریمالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

117

5

4

1

7

0

3

2

6

پریمالگوریتم.درختوکنشروعصفررأسباTکنبزرگحریصانهطوربهرادرآنرأسیکدقیقاکهراوزنکمترینبایالمرحله،هردرT،بهاستTکناضافهآوردندستبهتافوقمراحلتکرارV – یال1

v edgeTo[] distTo[]

0 - -

7 0-7 0.16

1 1-7 0.19

2 0-2 0.26

3 2-3 0.17

5 5-7 0.28

4 0-4 0.38

6 6-2 .40

MSTیال های 0-2 1-7 0-7

Page 118: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:پریمالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

118

5

4

1

7

0

3

2

6

پریمالگوریتم.درختوکنشروعصفررأسباTکنبزرگحریصانهطوربهرادرآنرأسیکدقیقاکهراوزنکمترینبایالمرحله،هردرT،بهاستTکناضافهآوردندستبهتافوقمراحلتکرارV – یال1

v edgeTo[] distTo[]

0 - -

7 0-7 0.16

1 1-7 0.19

2 0-2 0.26

3 2-3 0.17

5 5-7 0.28

4 0-4 0.38

6 6-2 0.40

MSTیال های 2-3 0-2 1-7 0-7 در حال حاضر یال کوتاه تریوجود دارد6به رأس

Page 119: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:پریمالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

119

5

4

1

7

0

3

2

6

پریمالگوریتم.درختوکنشروعصفررأسباTکنبزرگحریصانهطوربهرادرآنرأسیکدقیقاکهراوزنکمترینبایالمرحله،هردرT،بهاستTکناضافهآوردندستبهتافوقمراحلتکرارV – یال1

v edgeTo[] distTo[]

0 - -

7 0-7 0.16

1 1-7 0.19

2 0-2 0.26

3 2-3 0.17

5 5-7 0.28

4 0-4 0.38

6 6-2 0.40

MSTیال های 2-3 0-2 1-7 0-7

Page 120: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:پریمالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

120

5

4

1

7

0

3

2

6

پریمالگوریتم.درختوکنشروعصفررأسباTکنبزرگحریصانهطوربهرادرآنرأسیکدقیقاکهراوزنکمترینبایالمرحله،هردرT،بهاستTکناضافهآوردندستبهتافوقمراحلتکرارV – یال1

v edgeTo[] distTo[]

0 - -

7 0-7 0.16

1 1-7 0.19

2 0-2 0.26

3 2-3 0.17

5 5-7 0.28

4 0-4 0.38

6 6-2 0.40

MSTیال های 5-7 2-3 0-2 1-7 0-7

Page 121: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:پریمالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

121

5

4

1

7

0

3

2

6

پریمالگوریتم.درختوکنشروعصفررأسباTکنبزرگحریصانهطوربهرادرآنرأسیکدقیقاکهراوزنکمترینبایالمرحله،هردرT،بهاستTکناضافهآوردندستبهتافوقمراحلتکرارV – یال1

v edgeTo[] distTo[]

0 - -

7 0-7 0.16

1 1-7 0.19

2 0-2 0.26

3 2-3 0.17

5 5-7 0.28

4 0-4 0.38

6 6-2 0.40

MSTیال های 5-7 2-3 0-2 1-7 0-7

0.38را از 4کلید رأس

کاهش بده0.35به

4-5 0.35

اکنون یک یال های کوتاه تروجود دارد4به رأس

Page 122: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:پریمالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

122

5

4

1

7

0

3

2

6

پریمالگوریتم.درختوکنشروعصفررأسباTکنبزرگحریصانهطوربهرادرآنرأسیکدقیقاکهراوزنکمترینبایالمرحله،هردرT،بهاستTکناضافهآوردندستبهتافوقمراحلتکرارV – یال1

v edgeTo[] distTo[]

0 - -

7 0-7 0.16

1 1-7 0.19

2 0-2 0.26

3 2-3 0.17

5 5-7 0.28

4 4-5 0.35

6 6-2 0.40

MSTیال های 5-7 2-3 0-2 1-7 0-7

Page 123: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:پریمالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

123

5

4

1

7

0

3

2

6

پریمالگوریتم.درختوکنشروعصفررأسباTکنبزرگحریصانهطوربهرادرآنرأسیکدقیقاکهراوزنکمترینبایالمرحله،هردرT،بهاستTکناضافهآوردندستبهتافوقمراحلتکرارV – یال1

v edgeTo[] distTo[]

0 - -

7 0-7 0.16

1 1-7 0.19

2 0-2 0.26

3 2-3 0.17

5 5-7 0.28

4 4-5 0.35

6 6-2 0.40

MSTیال های 4-5 5-7 2-3 0-2 1-7 0-7 در حال حاضر یک یال کوتاه تروجود دارد4به رأس

Page 124: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:پریمالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

124

5

4

1

7

0

3

2

6

پریمالگوریتم.درختوکنشروعصفررأسباTکنبزرگحریصانهطوربهرادرآنرأسیکدقیقاکهراوزنکمترینبایالمرحله،هردرT،بهاستTکناضافهآوردندستبهتافوقمراحلتکرارV – یال1

v edgeTo[] distTo[]

0 - -

7 0-7 0.16

1 1-7 0.19

2 0-2 0.26

3 2-3 0.17

5 5-7 0.28

4 4-5 0.35

6 6-2 0.40

MSTیال های 4-5 5-7 2-3 0-2 1-7 0-7

Page 125: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:پریمالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

125

5

4

1

7

0

3

2

6

پریمالگوریتم.درختوکنشروعصفررأسباTکنبزرگحریصانهطوربهرادرآنرأسیکدقیقاکهراوزنکمترینبایالمرحله،هردرT،بهاستTکناضافهآوردندستبهتافوقمراحلتکرارV – یال1

v edgeTo[] distTo[]

0 - -

7 0-7 0.16

1 1-7 0.19

2 0-2 0.26

3 2-3 0.17

5 5-7 0.28

4 4-5 0.35

6 6-2 0.40

MSTیال های 6-2 4-5 5-7 2-3 0-2 1-7 0-7

Page 126: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:پریمالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

126

5

4

1

7

0

3

2

6

پریمالگوریتم.درختوکنشروعصفررأسباTکنبزرگحریصانهطوربهرادرآنرأسیکدقیقاکهراوزنکمترینبایالمرحله،هردرT،بهاستTکناضافهآوردندستبهتافوقمراحلتکرارV – یال1

v edgeTo[] distTo[]

0 - -

7 0-7 0.16

1 1-7 0.19

2 0-2 0.26

3 2-3 0.17

5 5-7 0.28

4 4-5 0.35

6 6-2 0.40

MSTیال های 6-2 4-5 5-7 2-3 0-2 1-7 0-7

Page 127: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

اندیس داراولویتصف

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

127

تا0بیناندیسیکاولویتصفدرکلیدهربهN – بدهنسبت1

جدیدعنصریکدرجوکلیدکوچک ترینباعنصرحذف:عملیات

آناندیسکردنمشخصباعنصریککلیدکاهش:جدیدعملیک

IndexMinPQ <Key extends Comparable<Key>>public class

- Nتا 0ایجاد یک صف اولویت اندیس دار با اندیس های 1IndexMinPQ(int N)

keyinsert(int k, Key key)voidبه کلید kنسبت دادن اندیس

,kdecreaseKey(int kکلید مرتبط با اندیس کاهش Key key)void

contains(int k)booleanدر صف اولویت وجود دارد؟kآیا اندیس

delMin()intبا آنتبطحذف عنصر با کوچکترین کلید و برگرداندن اندیس مر

isEmpty()booleanآیا صف اولویت خالی است؟

size()intبرگرداندن تعداد عناصر صف اولویت

Page 128: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

اندیس داراولویتصفپیاده سازی

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

128

پیاده سازی.کدبامشابهکدیباMinPQکنشروع

آرایهسهازپیاده سازیبرایkeys[]،pq[]وqp[]کهگونه ایبهکناستفاده:

Keys[i]اولویتبیانگرiاست

pq[i]مکاندرکهاستکلیدیاندیسبیانگرiداردقرارهرماز

qp[i]اندیسباکلیدمکانبیانگرiاستهرمدر

عملپیاده سازیمنظوربهdecreaseKey(k, key)دستورازswim(qp[k])کناستفاده

i 0 1 2 3 4 5 6 7 8

keys[i] A S O R T I N G -

pq[i] - 0 6 7 2 1 5 4 3

qp[i] 1 5 4 8 7 6 2 3 -

A

N G

O S I T

R

1

2 3

4 5 6 7

8

Page 129: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

پیاده سازی:پریمالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

129

public class PrimMST

{

private boolean[] marked; // true if v on tree

private Edge[] edgeTo; // shortest edge from tree vertex

private double[] distTo; // distTo[w] = edgeTo[w].weight()

private IndexMinPQ<Double> pq; // eligible crossing edges

public PrimMST(EdgeWeightedGraph G)

{

}

marked = new boolean[G.V()];

edgeTo = new Edge[G.V()];

distTo = new double[G.V()];

pq = new IndexMinPQ<Double>(G.V());

for (int v = 0; v < G.V(); v++)

distTo[v] = Double.POSITIVE_INFINITY;

distTo[0] = 0;

pq.insert(0, 0.0);

while (!pq.isEmpty())

visit(G, pq.delMin());

Page 130: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

پیاده سازی:پریمالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

130

public Iterable<Edge> edges() { /* exercise */ }

public double weight() { /* exercise */ }

}

private void visit(EdgeWeightedGraph G, int v)

{

marked[v] = true;

for (Edge e : G.adj(v))

{

int w = e.other(v);

if (marked[w]) continue;

if (e.weight() < distTo[w])

{

edgeTo[w] = e;

distTo[w] = e.weight();

if (pq.contains(w)) pq.decreaseKey(w, distTo[w]);

else pq.insert (w, distTo[w]);

}

}

}

Page 131: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

اجرازمان:پریمالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

131

دارداولویتصفپیاده سازینحوهبهبستگیپریمالگوریتماجرایزمان:

Vدرج،مرتبهVکوچک ترینحذفمرتبه،Eکلیدکاهشمرتبه

زمان اجرا کاهش کلید حذف کوچکترین درج پیاده سازی

V2 1 V 1 آرایه

E log V log V log V log V هرم دودویی

E logE/V V logd V d logd V d logd V طرفهdهرم

E + V log V 1 † log V † 1 † هرم فیبوناچی

جمع بندی.استبهینهشلوغگراف هایبرایآرایهباپیاده سازی.

استترسریعبسیارخلوتگراف هایبرایدودوییهرم.

نداردپیاده سازیارزشامااست،بهترینتئوریدرفیبوناچیهرم.

دههزینه سرشکن ش†

Page 132: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

مسیر تک مبدأکوتاه ترین 132

Page 133: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

وزن دارجهت داریالواسط

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

133

داروزنجهت داریالکلاسواسط.

DirectedEdgepublic class

v -> wDirectedEdge(int v, int w, double weight)یال جهت دار ایجاد

vfrom()intبرگرداندن رأس ابتدایی

wto(int v)intرأس انتهایی برگرداندن

weight()doubleبرگرداندن وزن یال

toString()Stringاینمایش یال به صورت رشته

v wweight

Page 134: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

134

public class DirectedEdge

{

private final int v, w;

private final double weight;

public double weight()

{ return weight; }

}

public DirectedEdge(int v, int w, double weight)

{

this.v = v;

this.w = w;

this.weight = weight;

}

public int from()

{ return v; }

سازنده

داییبرگرداندن رأس ابت

هاییانتبرگرداندن رأس

البرگرداندن وزن ی

public int to()

{ return w; }

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

سازی جاواپیاده:وزن دارجهت داریال

Page 135: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

وزن دارجهت دارگرافواسط135

.موازی مجاز استیال های داشتن طوقه و پیاده سازی در این . قراردادها

EdgeWeightedDigraphpublic class

EdgeWeightedDigraph(int V)رأسVگراف تهی با ایجاد یک

EdgeWeightedDigraph(In in)ایجاد یک گراف از جریان ورودی

addEdge(DirectedEdge e)voidبه گرافeافزودن یال

<vadj(int v)Iterable<DirectedEdgeبرگرداندن یال های خروجی از رأس

<edges()Iterable<DirectedEdgeهمه یال های گرافبرگرداندن

V()intرئوسبرگرداندن تعداد

E()intبرگرداندن تعداد یال ها

toString()Stringهنمایش گراف وزن دار به صورت یک رشت

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

Page 136: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

همسایگیلیستنمایش:وزن دارجهت دارگراف

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

136

Bagاشیای

ارجاع به یک یال جهت دار

Page 137: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

جاواپیاده سازی:وزن دارجهت دارگراف

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

137

public class EdgeWeightedDigraph

{

private final int V;

private final Bag<DirectedEdge>[] adj;

}

public EdgeWeightedDigraph(int V)

{

this.V = V;

adj = (Bag<DirectedEdge>[]) new Bag[V];

for (int v = 0; v < V; v++)

adj[v] = new Bag<DirectedEdge>();

}

public void addEdge(DirectedEdge e)

{

int v = e.from();

adj[v].add(e);

}

public Iterable<DirectedEdge> adj(int v)

{ return adj[v]; }

سازنده

تنها eاضافه کردن یال vبه لیست همسایگی

Page 138: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

مبدأتکمسیرهایکوتاه ترینکلاسواسط

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

138

مبدأرأسازمسیرهاکوتاه ترینیافتن.هدفsدیگررئوستمامبه.

SPpublic class

sSP(EdgeWeightedDigraph G, int s)ز محاسبه کوتاه ترین مسیرها ا

vdistTo(int v)doubleبه sطول کوتاه ترین مسیر از

<vpathTo(int v)Iterable<DirectedEdgeبه sکوتاه ترین مسیر از

hasPathTo(int v)booleanمسیر وجود دارد؟vبه sآیا از

SP sp = new SP(G, s);

for (int v = 0; v < G.V(); v++)

{

StdOut.printf(“%d to %d (%.2f): ”, s, v, sp.distTo(v));

for (DirectedEdge e : sp.pathTo(v))

StdOut.println(e + “ ”);

StdOut.println();

}

Page 139: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

مبدأتکمسیرهایکوتاه ترینکلاسواسط

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

139

مبدأرأسازمسیرهاکوتاه ترینیافتن.هدفsدیگررئوستمامبه.

SPpublic class

sSP(EdgeWeightedDigraph G, int s)ز محاسبه کوتاه ترین مسیرها ا

vdistTo(int v)doubleبه sطول کوتاه ترین مسیر از

<vpathTo(int v)Iterable<DirectedEdgeبه sکوتاه ترین مسیر از

hasPathTo(int v)booleanمسیر وجود دارد؟vبه sآیا از

% java SP tinyEWD.txt 0

0 to 0 (0.00):

0 to 1 (1.05): 0->4 0.38 4->5 0.35 5->1 0.32

0 to 2 (0.26): 0->2 0.26

0 to 3 (0.99): 0->2 0.26 2->7 0.34 7->3 0.39

0 to 4 (0.38): 0->4 0.38

0 to 5 (0.73): 0->4 0.38 4->5 0.35

0 to 6 (1.51): 0->2 0.26 2->7 0.34 7->3 0.39 3->6 0.52

0 to 7 (0.60): 0->2 0.26 2->7 0.34

Page 140: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

مسیرویژگی های کوتاه ترین 140

Page 141: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

مبدأتکمسیرکوتاه ترینمسئلهبرایداده هاساختمان

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

141

رأسازمسیرکوتاه ترینیافتن.هدفsدیگررئوستمامبه.

مسیرکوتاه تریندرختیک.مشاهده(SPT)چرا؟.داردوجود

دادنمایشمی توانآرایهدوازاستفادهبارامسیرکوتاه تریندرخت.نتیجه:distTo[v]=ازمسیرکوتاه ترینطولsبهv.

edgeTo[v]=ازمسیرکوتاه تریندریالآخرینsبهv.

5

4

1

7

3

6

2

0

sمسیر از کوتاه ترین درخت

v distTo[] edgeTo[]

0 0.00 null

1 1.05 5->1

2 0.26 0->2

3 0.97 7->3

5 0.38 0->4

4 0.73 4->5

6 1.49 3->6

7 0.60 2->7

Page 142: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

مبدأتکمسیرکوتاه ترینمسئلهبرایداده هاساختمان

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

142

public double distTo(int v)

{ return distTo[v]; }

public Iterable<DirectedEdge> pathTo(int v)

{

if (!hasPathTo(v)) return null;

Stack<DirectedEdge> path = new Stack<DirectedEdge>();

for (DirectedEdge e = edgeTo[v]; e != null; e = edgeTo[e.from()])

path.push(e);

return path;

}

رأسازمسیرکوتاه ترینیافتن.هدفsدیگررئوستمامبه.

مسیرکوتاه تریندرختیک.مشاهده(SPT)چرا؟.داردوجود

دادنمایشمی توانآرایهدوازاستفادهبارامسیرکوتاه تریندرخت.نتیجه:distTo[v]=ازمسیرکوتاه ترینطولsبهv.

edgeTo[v]=ازمسیرکوتاه تریندریالآخرینsبهv.

Page 143: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

(relaxation)یالراحت سازی

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

143

یالراحت سازیe = v->w.distTo[v]ازفعلیمسیرکوتاه ترینطولبااستبرابرsبهv

distTo[w]ازفعلیمسیرکوتاه ترینطولبااستبرابرsبهw

edgeTo[w]ازفعلیمسیرکوتاه تریندریالآخرینبااستبرابرsبهw

یالاگرv->wرأسبهکوتاه تریمسیرwکند،میایجاد

.کنرسانیروزبهراedgeTo[w]وdistTo[w]مقداردوهر

v->wموفقیت آمیز یال راحت سازی

s

w

v 3.1

7.2

1.3

SPTیال های

4.4

Page 144: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

(relaxation)یالراحت سازی

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

144

private void relax(DirectedEdge e)

{

int v = e.from(), w = e.to();

if (distTo[w] > distTo[v] + e.weight())

{

distTo[w] = distTo[v] + e.weight();

edgeTo[w] = e;

}

}

s

w

v

7.2

1.3

3.1

یالراحت سازیe = v->w.distTo[v]ازفعلیمسیرکوتاه ترینطولبااستبرابرsبهv

distTo[w]ازفعلیمسیرکوتاه ترینطولبااستبرابرsبهw

edgeTo[w]ازفعلیمسیرکوتاه تریندریالآخرینبااستبرابرsبهw

یالاگرv->wرأسبهکوتاه تریمسیرwکند،میایجاد

.کنرسانیروزبهراedgeTo[w]وdistTo[w]مقداردوهر

Page 145: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

مسیرکوتاه ترینبهینگیشرط

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

145

کنیدفرض.گزارهGباشدوزن دارجهت دارگرافیک.

مقادیرصورتایندرdistTo[]ازمسیرهاکوتاه ترینطولبیانگرsاگرفقطواگرهستند:رأسهرازایبهv،مقدارdistTo[v]ازمسیریکطولبیانگرsبهvباشد.

یالهرازایبهe = v->w،باشیمداشته:distTo[w] <= distTo[v] + e.weight()

[لازمشرط].اثباتیالازایبهکنیدفرضe = v->wباشیمداشتهdistTo[w] > distTo[v] + e.weight().

یالصورتایندرeازمسیریsبهwازکوتاه ترآنطولکهمی کندایجادdistTo[w]است.

s

w

v

7.2

1.3

3.1 distTo[v]

distTo[w]

Page 146: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

مسیرکوتاه ترینبهینگیشرط

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

146

کنیدفرض.گزارهGباشدوزن دارجهت دارگرافیک.:اگرفقطواگرهستندsازمسیرهاکوتاه ترینطولبیانگر[]distToمقادیرصورتایندررأسهرازایبهv،مقدارdistTo[v]ازمسیریکطولبیانگرsبهvباشد.یالهرازایبهe = v->w،باشیمداشته:distTo[w] <= distTo[v] + e.weight()

[کافیشرط].اثباتکنیدفرضs = v

0->v

1->…->v

k= wازمسیرکوتاه ترینsبهwآنگاه.باشد:

distTo[vk] <= distTo[v

k-1] + e

k.weight()

distTo[vk-1

] <= distTo[vk-2

] + ek-1

.weight()

...

distTo[v1] <= distTo[v

0] + e

1.weight()

نتیجهدرdistTo[w] = distTo[v

k] <= e

1.weight() + e

1.weight()+ … + e

k.weight()

.استwبهsازکوتاه ترینطولبیانگرdistTo[w]بنابراین

Page 147: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

مسیرکوتاه ترینعمومیالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

147

می کندمحاسبه(وجودصورتدر)رامسیرترینکوتاهدرختعمومیالگوریتم.گزاره.

اثباتطرح.اجرا،طولدرdistTo[v]ازسادهمسیریکطولsبهvاستمقدارموفق،راحت سازیهرdistTo[v]می دهدکاهشرا.مقدارdistTo[v]یابدکاهشمحدودیدفعاتتعدادمی تواندحداکثر.

Generic Algorithm (to compute SPT from s)

Initialize distTo[s] = 0 and distTo[v] = ∞ for all other vertices.

Repeat until optimality conditions are satisfied:

- Relax any edge

Page 148: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

مسیرکوتاه ترینعمومیالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

148

شود؟راحت سازیبایدیالکدام.کاراپیاده سازی

(غیرمنفییال هاوزن)دایکستراالگوریتم.۱مثال(جهت داردورهایبدون)توپولوژیکیمرتب سازیالگوریتم.2مثال

(منفیدوربدون)فورد-بلمنالگوریتم.۳مثال

Generic Algorithm (to compute SPT from s)

Initialize distTo[s] = 0 and distTo[v] = ∞ for all other vertices.

Repeat until optimality conditions are satisfied:

- Relax any edge

Page 149: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

الگوریتم دایکسترا 149

Page 150: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

دایکستراازقولنقلچند150

ادسخر دایکسترا1972جایزه تورینگ

«. فقط کاری را انجام بده که توان انجامش را داری»

.کامپیوترها به عنوان یک ابزار چیزی بیش از یک موج گذرا بر سطح فرهنگ ما خواهند بود» «.هستندی سابقه ب، در تاریخ فرهنگی بشر می کنندذهنی ایجاد چالش های کامپیوترها در ظرفیتی که برای

«. تلقی شودکنی قانون ش؛ بنابراین تدریس آن باید به عنوان نوعی می کنداستفاده از کوبول مغز را تباه »

به عنوان : یرممکن استدر عمل غبوده اند خوب به دانشجویانی که قبلاً در معرض بیسیک برنامه نویسی تدریس » «. بالقوه ذهن آنها چنان فلج شده که دیگر امیدی به بازسازی آن نیستبرنامه نویسان

روش های با استفاده از آیندهبرنامه نویسی زبان ای پی ال . اشتباهی است که به کمال خود رسیده استای پی ال » «. نداخترا به راه خواهد ابرنامه نویسی از خطاهای تازه ای این زبان نسل . گذشته استبرنامه نویسی

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

Page 151: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:دایکستراالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

151

رأستاآنهافاصلهصعودیترتیببهرارئوسsبگیرنظردر.

کنراحت سازیراآنازخروجییال هایتماموکناضافهدرختبهرارأسنزدیک ترین.

1 3

0

7

4 6

2

5

5

8

9

12

7

6

4

20

13

11

9

5

15

3

4

1

s

0->1 5.0

0->4 9.0

0->7 8.0

1->2 12.0

1->3 15.0

1->7 4.0

2->3 3.0

2->6 11.0

3->6 9.0

4->5 4.0

4->6 20.0

4->7 5.0

5->2 1.0

5->6 13.0

7->5 6.0

7->2 7.0

Page 152: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:دایکستراالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

152

1 3

0

7

4 6

2

5

v distTo[] edgeTo[]

0 0.0 -

1

2

3

5

4

6

7

0

رأستاآنهافاصلهصعودیترتیببهرارئوسsبگیرنظردر.

کنراحت سازیراآنازخروجییال هایتماموکناضافهدرختبهرارأسنزدیک ترین.

Page 153: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:دایکستراالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

153

1 3

0

7

4 6

2

5

v distTo[] edgeTo[]

0 0.0 -

1

2

3

5

4

6

7

0

رأستاآنهافاصلهصعودیترتیببهرارئوسsبگیرنظردر.

کنراحت سازیراآنازخروجییال هایتماموکناضافهدرختبهرارأسنزدیک ترین.

Page 154: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:دایکستراالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

154

1 3

0

7

4 6

2

5

5

8

9

0

v distTo[] edgeTo[]

0 0.0 -

1

2

3

5

4

6

7

رأستاآنهافاصلهصعودیترتیببهرارئوسsبگیرنظردر.

کنراحت سازیراآنازخروجییال هایتماموکناضافهدرختبهرارأسنزدیک ترین.

Page 155: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

v distTo[] edgeTo[]

0 0.0 -

1 5.0 0->1

2

3

5

4 9.0 0->4

6

7 8.0 0->7

نمایشیاجرای:دایکستراالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

155

1 3

0

7

4 6

2

5

5

8

9

0

5

9

8

رأستاآنهافاصلهصعودیترتیببهرارئوسsبگیرنظردر.

کنراحت سازیراآنازخروجییال هایتماموکناضافهدرختبهرارأسنزدیک ترین.

Page 156: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:دایکستراالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

156

1 3

0

7

4 6

2

5

v distTo[] edgeTo[]

0 0.0 -

1 5.0 0->1

2

3

5

4 9.0 0->4

6

7 8.0 0->7

5

9

8

رأستاآنهافاصلهصعودیترتیببهرارئوسsبگیرنظردر.

کنراحت سازیراآنازخروجییال هایتماموکناضافهدرختبهرارأسنزدیک ترین.

Page 157: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:دایکستراالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

157

1 3

0

7

4 6

2

5

v distTo[] edgeTo[]

0 0.0 -

1 5.0 0->1

2

3

5

4 9.0 0->4

6

7 8.0 0->7

5

9

8

رأستاآنهافاصلهصعودیترتیببهرارئوسsبگیرنظردر.

کنراحت سازیراآنازخروجییال هایتماموکناضافهدرختبهرارأسنزدیک ترین.

Page 158: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

5

8

نمایشیاجرای:دایکستراالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

158

1 3

0

7

4 6

2

5

12

15

4

v distTo[] edgeTo[]

0 0.0 -

1 5.0 0->1

2

3

5

4 9.0 0->4

6

7 8.0 0->7

9

رأستاآنهافاصلهصعودیترتیببهرارئوسsبگیرنظردر.

کنراحت سازیراآنازخروجییال هایتماموکناضافهدرختبهرارأسنزدیک ترین.

Page 159: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:دایکستراالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

159

1 3

0

7

4 6

2

5

v distTo[] edgeTo[]

0 0.0 -

1 5.0 0->1

2 17.0 1->2

3 20.0 1->3

5

4 9.0 0->4

6

7 8.0 0->7

12

15

4

5

8

20

17

9

رأستاآنهافاصلهصعودیترتیببهرارئوسsبگیرنظردر.

کنراحت سازیراآنازخروجییال هایتماموکناضافهدرختبهرارأسنزدیک ترین.

Page 160: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:دایکستراالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

160

1 3

0

7

4 6

2

5

v distTo[] edgeTo[]

0 0.0 -

1 5.0 0->1

2 17.0 1->2

3 20.0 1->3

5

4 9.0 0->4

6

7 8.0 0->7

9

8

20

17

رأستاآنهافاصلهصعودیترتیببهرارئوسsبگیرنظردر.

کنراحت سازیراآنازخروجییال هایتماموکناضافهدرختبهرارأسنزدیک ترین.

Page 161: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:دایکستراالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

161

1 3

0

7

4 6

2

5

v distTo[] edgeTo[]

0 0.0 -

1 5.0 0->1

2 17.0 1->2

3 20.0 1->3

5

4 9.0 0->4

6

7 8.0 0->7

9

8

20

17

رأستاآنهافاصلهصعودیترتیببهرارئوسsبگیرنظردر.

کنراحت سازیراآنازخروجییال هایتماموکناضافهدرختبهرارأسنزدیک ترین.

Page 162: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:دایکستراالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

162

1 3

0

7

4 6

2

5

v distTo[] edgeTo[]

0 0.0 -

1 5.0 0->1

2 17.0 1->2

3 20.0 1->3

5

4 9.0 0->4

6

7 8.0 0->7

7

6

8 17

∞9

20

رأستاآنهافاصلهصعودیترتیببهرارئوسsبگیرنظردر.

کنراحت سازیراآنازخروجییال هایتماموکناضافهدرختبهرارأسنزدیک ترین.

Page 163: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:دایکستراالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

163

1 3

0

7

4 6

2

5

v distTo[] edgeTo[]

0 0.0 -

1 5.0 0->1

2 15.0 7->2

3 20.0 1->3

5 14.0 7->5

4 9.0 0->4

6

7 8.0 0->7

7

6

8 17 15

∞ 14

∞9

20

رأستاآنهافاصلهصعودیترتیببهرارئوسsبگیرنظردر.

کنراحت سازیراآنازخروجییال هایتماموکناضافهدرختبهرارأسنزدیک ترین.

Page 164: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:دایکستراالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

164

1 3

0

7

4 6

2

5

v distTo[] edgeTo[]

0 0.0 -

1 5.0 0->1

2 15.0 7->2

3 20.0 1->3

5 14.0 7->5

4 9.0 0->4

6

7 8.0 0->7

∞9

20

14

15

رأستاآنهافاصلهصعودیترتیببهرارئوسsبگیرنظردر.

کنراحت سازیراآنازخروجییال هایتماموکناضافهدرختبهرارأسنزدیک ترین.

Page 165: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:دایکستراالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

165

1 3

0

7

4 6

2

5

v distTo[] edgeTo[]

0 0.0 -

1 5.0 0->1

2 15.0 7->2

3 20.0 1->3

5 14.0 7->5

4 9.0 0->4

6

7 8.0 0->7

∞9

20

14

15

رأستاآنهافاصلهصعودیترتیببهرارئوسsبگیرنظردر.

کنراحت سازیراآنازخروجییال هایتماموکناضافهدرختبهرارأسنزدیک ترین.

Page 166: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:دایکستراالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

166

1 3

0

7

4 6

2

5

v distTo[] edgeTo[]

0 0.0 -

1 5.0 0->1

2 15.0 7->2

3 20.0 1->3

5 14.0 7->5

4 9.0 0->4

6

7 8.0 0->7

4

20

5

9

8

14

20

15

رأستاآنهافاصلهصعودیترتیببهرارئوسsبگیرنظردر.

کنراحت سازیراآنازخروجییال هایتماموکناضافهدرختبهرارأسنزدیک ترین.

Page 167: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:دایکستراالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

167

1 3

0

7

4 6

2

5

v distTo[] edgeTo[]

0 0.0 -

1 5.0 0->1

2 15.0 7->2

3 20.0 1->3

5 13.0 4->5

4 9.0 0->4

6 29.0 4->6

7 8.0 0->7

4

20

5

9

8

14 13

29

20

15

رأستاآنهافاصلهصعودیترتیببهرارئوسsبگیرنظردر.

کنراحت سازیراآنازخروجییال هایتماموکناضافهدرختبهرارأسنزدیک ترین.

Page 168: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:دایکستراالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

168

1 3

0

7

4 6

2

5

v distTo[] edgeTo[]

0 0.0 -

1 5.0 0->1

2 15.0 7->2

3 20.0 1->3

5 13.0 4->5

4 9.0 0->4

6 29.0 4->6

7 8.0 0->7

20

15

29

13

رأستاآنهافاصلهصعودیترتیببهرارئوسsبگیرنظردر.

کنراحت سازیراآنازخروجییال هایتماموکناضافهدرختبهرارأسنزدیک ترین.

Page 169: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:دایکستراالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

169

1 3

0

7

4 6

2

5

v distTo[] edgeTo[]

0 0.0 -

1 5.0 0->1

2 15.0 7->2

3 20.0 1->3

5 13.0 4->5

4 9.0 0->4

6 29.0 4->6

7 8.0 0->7

20

15

29

13

رأستاآنهافاصلهصعودیترتیببهرارئوسsبگیرنظردر.

کنراحت سازیراآنازخروجییال هایتماموکناضافهدرختبهرارأسنزدیک ترین.

Page 170: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:دایکستراالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

170

1 3

0

7

4 6

2

5

v distTo[] edgeTo[]

0 0.0 -

1 5.0 0->1

2 15.0 7->2

3 20.0 1->3

5 13.0 4->5

4 9.0 0->4

6 29.0 4->6

7 8.0 0->7

13

1

13

29

15

20

رأستاآنهافاصلهصعودیترتیببهرارئوسsبگیرنظردر.

کنراحت سازیراآنازخروجییال هایتماموکناضافهدرختبهرارأسنزدیک ترین.

Page 171: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:دایکستراالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

171

1 3

0

7

4 6

2

5

v distTo[] edgeTo[]

0 0.0 -

1 5.0 0->1

2 14.0 5->2

3 20.0 1->3

5 13.0 4->5

4 9.0 0->4

6 26.0 5->6

7 8.0 0->7

13

1

13

29

15

26

14

20

رأستاآنهافاصلهصعودیترتیببهرارئوسsبگیرنظردر.

کنراحت سازیراآنازخروجییال هایتماموکناضافهدرختبهرارأسنزدیک ترین.

Page 172: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:دایکستراالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

172

1 3

0

7

4 6

2

5

v distTo[] edgeTo[]

0 0.0 -

1 5.0 0->1

2 14.0 5->2

3 20.0 1->3

5 13.0 4->5

4 9.0 0->4

6 26.0 5->6

7 8.0 0->7

20

14

26

رأستاآنهافاصلهصعودیترتیببهرارئوسsبگیرنظردر.

کنراحت سازیراآنازخروجییال هایتماموکناضافهدرختبهرارأسنزدیک ترین.

Page 173: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:دایکستراالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

173

1 3

0

7

4 6

2

5

v distTo[] edgeTo[]

0 0.0 -

1 5.0 0->1

2 14.0 5->2

3 20.0 1->3

5 13.0 4->5

4 9.0 0->4

6 26.0 5->6

7 8.0 0->7

20

14

26

رأستاآنهافاصلهصعودیترتیببهرارئوسsبگیرنظردر.

کنراحت سازیراآنازخروجییال هایتماموکناضافهدرختبهرارأسنزدیک ترین.

Page 174: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:دایکستراالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

174

1 3

0

7

4 6

2

5

v distTo[] edgeTo[]

0 0.0 -

1 5.0 0->1

2 14.0 5->2

3 20.0 1->3

5 13.0 4->5

4 9.0 0->4

6 26.0 5->6

7 8.0 0->7

11

3

26

14

20

رأستاآنهافاصلهصعودیترتیببهرارئوسsبگیرنظردر.

کنراحت سازیراآنازخروجییال هایتماموکناضافهدرختبهرارأسنزدیک ترین.

Page 175: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:دایکستراالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

175

1 3

0

7

4 6

2

5

v distTo[] edgeTo[]

0 0.0 -

1 5.0 0->1

2 14.0 5->2

3 17.0 2->3

5 13.0 4->5

4 9.0 0->4

6 25.0 2->6

7 8.0 0->7

11

3

26

14

20 17

25

رأستاآنهافاصلهصعودیترتیببهرارئوسsبگیرنظردر.

کنراحت سازیراآنازخروجییال هایتماموکناضافهدرختبهرارأسنزدیک ترین.

Page 176: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:دایکستراالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

176

1 3

0

7

4 6

2

5

v distTo[] edgeTo[]

0 0.0 -

1 5.0 0->1

2 14.0 5->2

3 17.0 2->3

5 13.0 4->5

4 9.0 0->4

6 25.0 2->6

7 8.0 0->7

17

25

رأستاآنهافاصلهصعودیترتیببهرارئوسsبگیرنظردر.

کنراحت سازیراآنازخروجییال هایتماموکناضافهدرختبهرارأسنزدیک ترین.

Page 177: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:دایکستراالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

177

1 3

0

7

4 6

2

5

v distTo[] edgeTo[]

0 0.0 -

1 5.0 0->1

2 14.0 5->2

3 17.0 2->3

5 13.0 4->5

4 9.0 0->4

6 25.0 2->6

7 8.0 0->7

17

25

رأستاآنهافاصلهصعودیترتیببهرارئوسsبگیرنظردر.

کنراحت سازیراآنازخروجییال هایتماموکناضافهدرختبهرارأسنزدیک ترین.

Page 178: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:دایکستراالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

178

1 3

0

7

4 6

2

5

v distTo[] edgeTo[]

0 0.0 -

1 5.0 0->1

2 14.0 5->2

3 17.0 2->3

5 13.0 4->5

4 9.0 0->4

6 25.0 2->6

7 8.0 0->7

9

25

17

رأستاآنهافاصلهصعودیترتیببهرارئوسsبگیرنظردر.

کنراحت سازیراآنازخروجییال هایتماموکناضافهدرختبهرارأسنزدیک ترین.

Page 179: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:دایکستراالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

179

1 3

0

7

4 6

2

5

v distTo[] edgeTo[]

0 0.0 -

1 5.0 0->1

2 14.0 5->2

3 17.0 2->3

5 13.0 4->5

4 9.0 0->4

6 25.0 2->6

7 8.0 0->7

25

رأستاآنهافاصلهصعودیترتیببهرارئوسsبگیرنظردر.

کنراحت سازیراآنازخروجییال هایتماموکناضافهدرختبهرارأسنزدیک ترین.

Page 180: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:دایکستراالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

180

1 3

0

7

4 6

2

5

v distTo[] edgeTo[]

0 0.0 -

1 5.0 0->1

2 14.0 5->2

3 17.0 2->3

5 13.0 4->5

4 9.0 0->4

6 25.0 2->6

7 8.0 0->7

25

رأستاآنهافاصلهصعودیترتیببهرارئوسsبگیرنظردر.

کنراحت سازیراآنازخروجییال هایتماموکناضافهدرختبهرارأسنزدیک ترین.

Page 181: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:دایکستراالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

181

1 3

0

7

4 6

2

5

v distTo[] edgeTo[]

0 0.0 -

1 5.0 0->1

2 14.0 5->2

3 17.0 2->3

5 13.0 4->5

4 9.0 0->4

6 25.0 2->6

7 8.0 0->7

رأستاآنهافاصلهصعودیترتیببهرارئوسsبگیرنظردر.

کنراحت سازیراآنازخروجییال هایتماموکناضافهدرختبهرارأسنزدیک ترین.

Page 182: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

نمایشیاجرای:دایکستراالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

182

1 3

0

7

4 6

2

5

v distTo[] edgeTo[]

0 0.0 -

1 5.0 0->1

2 14.0 5->2

3 17.0 2->3

5 13.0 4->5

4 9.0 0->4

6 25.0 2->6

7 8.0 0->7

s

رأستاآنهافاصلهصعودیترتیببهرارئوسsبگیرنظردر.

کنراحت سازیراآنازخروجییال هایتماموکناضافهدرختبهرارأسنزدیک ترین.

Page 183: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

اجرا:دایکستراالگوریتم183

s

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

Page 184: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

درستیاثبات:دایکستراالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

184

بهمحاسرامسیرکوتاه تریندرختمنفی،وزن هایبدونوزن دارجهت دارگرافهردردایکستراالگوریتم.گزاره.می کند

اثبات.یالهرe = v->wًمی شودراحت سازیباریکدقیقا(راحت سازیهنگامدرv)،می شودباعثکه:

زیرا،می ماندبرقرارالگوریتماجرایانتهایتافوقنامساوی:distTo[w]نمی یابدافزایشهرگزdistTo[v]نمی کندتغییربعدبهاینازنیز

بودخواهدبرقرارمسیرهاکوتاه ترینبهینگیشرطالگوریتم،اجرایخاتمهازپسنتیجه،در.

distTo[w] ≤ distTo[v] + e.weight()

Page 185: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

پیاده سازی:دایکستراالگوریتم185

public class DijkstraSP

{

private DirectedEdge[] edgeTo;

private double[] distTo;

private IndexMinPQ<Double> pq;

public DijkstraSP(EdgeWeightedDigraph G, int s)

{

edgeTo = new DirectedEdge[G.V()];

distTo = new double[G.V()];

pq = new IndexMinPQ<Double>(G.V());

for (int v = 0; v < G.V(); v++)

distTo[v] = Double.POSITIVE_INFINITY;

distTo[s] = 0.0;

}

pq.insert(s, 0.0);

while (!pq.isEmpty())

{

int v = pq.delMin();

for (DirectedEdge e : G.adj(v))

relax(e);

}

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

Page 186: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

پیاده سازی:دایکستراالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

186

}

private void relax(DirectedEdge e)

{

int v = e.from(), w = e.to();

if (distTo[w] > distTo[v] + e.weight())

{

distTo[w] = distTo[v] + e.weight();

edgeTo[w] = e;

if (pq.contains(w)) pq.decreaseKey(w, distTo[w]);

else pq.insert (w, distTo[w]);

}

}

Page 187: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

گراف هادرپوشادرختمحاسبه187

؟می رسدنظربهآشنادایکستراالگوریتماستدایکستراالگوریتمهمانپریمالگوریتم.

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

بعدیرأسانتخابمنظوربهشدهاستفادهقانون.اصلیتفاوت(جهتبدونیالیکطریقاز)درختبهرأسنزدیک ترین:پریم

(ارجهت دیالیکطریقاز)مبدأبهرأسنزدیک ترین:دایکسترا

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

Page 188: AD Greedy Algorithms2017/10/05  · راد نولایطساو ۱۳۹۵- یوضر صان دیس- هناصی ح شور- اهمتیروگلا یحا ط 31.راد نزولایسلاکطساو

اجرازمان:دایکستراالگوریتم

۱۳۹۵-سید ناصر رضوی -روش حریصانه -طراحی الگوریتم ها

188

دارداولویتصفپیاده سازیشیوهبهبستگیدایکستراالگوریتماجرایزمان:

Vدرج،مرتبهVترین،کوچکحذفمرتبهEکلیدکاهشمرتبه

زمان اجرا کاهش کلید کوچکترینحذف درج پیاده سازی

V2 1 V 1 آرایه

E log V log V log V log V هرم دودویی

E logE/V V logd V d logd V d logd V طرفهdهرم

E + V log V 1 † log V † 1 † هرم فیبوناچی

جمع بندی.استبهینهشلوغگراف هایبرایآرایهباپیاده سازی.

استسریع تربسیارخلوتگراف هایبرایدودوییهرم.

نداردپیاده سازیارزشامااست،بهترینتئوریدرفیبوناچیهرم.

دههزینه سرشکن ش†