1 / 23

Overview of Single-Source Shortest Paths & All-Pairs Shortest Paths Algorithms

Overview of Single-Source Shortest Paths & All-Pairs Shortest Paths Algorithms. By Mohammad Roohitavaf roohitavaf@gmail.com Professor: Dr. Hasan Naderi Iran University Of Science and Technology 2009. محتوی :. پارامترها و اصطلاحات تقسیم بندی الگوریتم های SSP و ASP

juliet
Download Presentation

Overview of Single-Source Shortest Paths & All-Pairs Shortest Paths Algorithms

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. Overview of Single-Source Shortest Paths &All-Pairs Shortest PathsAlgorithms By Mohammad Roohitavaf roohitavaf@gmail.com Professor: Dr. HasanNaderi Iran University Of Science and Technology 2009

  2. محتوی : • پارامترها و اصطلاحات • تقسیم بندی الگوریتم های SSP و ASP • الگوریتم های SSP : - لیست - توضیح - مقایسه • الگوریتم های ASP : - لیست - توضیح - مقایسه - منابع و مواخذ

  3. پارامترها و اصطلاحات V : تعداد گره (راس) های گراف E : تعداد یال های گراف SSP : single-source shortest paths یک بار اجرایش کوتاه ترین مسیر از یک گره به تمام گره های دیگر را مشخص می کند . ASP: َall-pairs shortest paths یک بار اجرایش کوتاه ترین مسیر از هر گره به تمام گره های دیگر را مشخص می کند . - اجرای یک بار ASP= اجرای V بار SSP

  4. تقسیم بندی الگوریتم های SSP و ASP • SSP: • گراف یال با وزن منفی ندارد • گراف یال با وزن منفی دارد • ASP: • گراف یال با وزن منفی ندارد • گراف یال با وزن منفی دارد

  5. لیست الگوریتم های SSP • گراف یال با وزن منفی ندارد : 1- Dijkestra :O(VlogV + E) 2-Bellman-Ford : O(VE) • گراف یال با وزن منفی دارد : 1-Bellman-Ford : O(VE)

  6. توضیح الگوریتم های SSP Dijkestra : رجوع شود به : Introduction to algorithm صفحه ی 595 http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm

  7. توضیح الگوریتم های SSP(ادامه) Bellman-Ford : مراحل : 1- Initialize Graph 2- relax کردن یال ها 3- چک کردن دور با وزن منفی

  8. توضیح الگوریتم های SSP (ادامه) 1- Initialize Graph : for each vertex v in vertices: if v is source then v.distance := 0 else v.distance := infinity v.predecessor := null

  9. توضیح الگوریتم های SSP (ادامه) 2- relax کردن یال ها : forifrom 1 to size(vertices)-1: for each edge uv in edges: u := uv.source v := uv.destination ifu.distance + uv.weight < v.distance: v.distance := u.distance + uv.weightv.predecessor := u

  10. توضیح الگوریتم های SSP (ادامه) 3- چک کردن دور با وزن منفی : for each edge uv in edges: u := uv.source v := uv.destination ifu.distance + uv.weight < v.distance: error "Graph contains a negative-weight cycle"

  11. توضیح الگوریتم های SSP (ادامه) مثال : دقت شود که در مرحله دو هر یال 4 بار چک می شود لذا 40 شکل لازم است . اشکال زیر چند نمونه هستند . شکل (e) یال هایی که در نهایت کوتاه ترین مسیر را مشخص کرده اند را نشان می دهد

  12. مقایسه ی الگوریتم های SSP • یال با وزن منفی داریم : به ترتیب : Dijkestra[ O(VlogV + E) ] Bellman-Ford [ O(VE) ] • یال با وزن منفی نداریم : به ترتیب : Bellman-Ford [ O(VE) ]

  13. لیست الگوریتم های ASP • گراف یال با وزن منفی ندارد : 1- V بار Dijkestra : O(V2logV + EV) 2- V بار Bellman-Ford : O(V2E) 3- Floyd-Warshall : O(V3) • گراف یال با وزن منفی دارد : 1- Johnson : O(V2loV + EV) 2- V بار Bellman-Ford : O(V2E) 3- Floyd-Warshall : O(V3)

  14. توضیح الگوریتم های ASP Floyd-Warshal : Introduction to algorithm صفحه ی 629 http://en.wikipedia.org/wiki/Floyd-Warshall_algorithm

  15. توضیح الگوریتم های ASP (ادامه) Johnson: مراحل : 1- اضافه کردن یک گره ی جدید به گراف 2- اجرای SSP با الگوریتم Bellman-Ford از گره ی جدید 3- reweight کردن یال ها 4-اجرایSSP با الگوریتم Dijkestraاز هر گره - در واقع Johnson = 1 بار Bellman-Ford + V بارDijkestra

  16. توضیح الگوریتم های ASP (ادامه) توضیح مراحل با یک مثال مثال : گراف اصلی

  17. توضیح الگوریتم های ASP (ادامه) 1 – اضافه کردن یک گره ی جدید به گراف : گره ی جدید را با یال با وزن صفر به تمام گره ها وصل می کنیم

  18. توضیح الگوریتم های ASP (ادامه) 2- اجرای SSP با الگوریتم Bellman-Form از گره ی جدید برای هر راس h(v) ( کوتاه ترین فاصله از گره ی جدید )

  19. توضیح الگوریتم های ASP (ادامه) 3- reweight کردن یال ها : وزن هر یال با فرمول زیر به روز می کنیم w(u,v) = w(u , v) + h(u) – h(v)

  20. توضیح الگوریتم های ASP (ادامه) 4- اجرای SSP از هر گره با الگوریتم Dijkestra: پس از اجرای این مرحله برای هر جفت از راس ها کوتاه ترین مسیر را مشخص کرده ایم . • اما فاصله ها بر اساس وزن های به روز شده اند و کوتاه ترین فاصله های صحیح نیستند . • کوتاه ترین فاصله های صحیح به صورت زیر قابل محاسبه هستند . distance(u,v) = distance(u,v) – h(u) + h(v)

  21. مقایسه ی الگوریتم های ASP • نکته : E<=V2 • گراف یال با وزن منفی ندارد : به ترتیب : V بار Dijkestra : O(v2logv + EV) Floyd-Warshall : O(V3) V بار Bellman-Ford : O(V2E) - البته اگر گراف کامل باشد Johnson و Floy-Warshallاز یک مرتبه هستند : O(v3) زیرا E= V2

  22. مقایسه ی الگوریتم های ASP • نکته : E<=V2 • گراف یال با وزن منفی دارد : به ترتیب: Johnson : O(V2logV+ EV) Floyd-Warshall : O(V3) V بار Bellman-Ford : O(V2E) - البته اگر گراف کامل باشد Johnson و Floy-Warshallاز یک مرتبه هستند : O(v3) زیرا E= V2

  23. منابع و مواخذ • Introduction to Algorithm • wikipedia.org

More Related