1 / 55

Graph ( II)

Graph ( II). Shortest path, Minimum spanning tree. GGuy 19-3-2011. Review. DFS (Depth-First-Search) Graph traverse Topological sort BFS (Breadth-First-Search) F inding shortest path. Shortest Path Problem. In a weighted graph G We want to find a path from s to t ,

jud
Télécharger la présentation

Graph ( II)

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. Graph (II) Shortest path, Minimum spanning tree GGuy 19-3-2011

  2. Review DFS (Depth-First-Search) Graph traverse Topological sort BFS (Breadth-First-Search) Finding shortest path

  3. Shortest Path Problem In a weighted graph G We want to find a path from s to t, such that the sum of edge weight is minimum

  4. Shortest Path S 3 2 1 3 T 3 3 1

  5. Shortest Path S 3 2 1 3 T 3 3 1

  6. Algorithms Single source? All pairs? Negative weight edge? Negative cycles?

  7. Dijkstra’s algorithm for-each v, d[v] ← ∞ Q.Insert(s,0) while not Q.Empty() do (u, w) = Q.ExtractMin() if (visited[u]) continue; d[u] ← w for-each v where (u, v) in E Q.Insert(v, d[u] + weightuv)

  8. Dijkstra’s algorithm S 3 2 1 3 T 3 3 1

  9. Dijkstra’s algorithm 0 3 2 1 3 T 3 3 1

  10. Dijkstra’s algorithm 0 3 2 1 3 T 3 2 3 1

  11. Dijkstra’s algorithm 0 3 2 1 3 T 3 2 3 1

  12. Dijkstra’s algorithm 0 3 3 2 1 3 T 3 2 3 1

  13. Dijkstra’s algorithm 0 3 3 2 1 3 T 3 2 3 1

  14. Dijkstra’s algorithm 0 3 3 2 1 3 T 3 2 3 1 3

  15. Dijkstra’s algorithm 0 3 3 2 1 3 T 3 2 3 1 3

  16. Dijkstra’s algorithm 0 3 3 2 1 3 T 3 2 3 1 3

  17. Dijkstra’s algorithm 0 3 3 2 1 3 4 3 2 3 1 3

  18. Dijkstra’s algorithm 0 3 3 2 1 3 4 3 2 3 1 3

  19. Dijkstra’s algorithm 0 3 3 2 1 3 4 3 2 3 1 3

  20. Dijkstra’s algorithm Implement Q using binary heap (priority queue) At most E edges in the heap Time complexity: O(E log (E)) = O(E log (V)) Space complexity: O(V+E)

  21. Bellman Ford for-each v, d[v] ← ∞ d[s] ← 0 Do V-1 times for each edge (u,v) if (d[u] + weightuv< d[v]) d[v] ← d[u] + weightuv

  22. Bellman Ford’s algorithm S 3 2 1 4 T 3 -2 1

  23. Bellman Ford’s algorithm S 3 3 2 1 4 T 3 2 -2 1 4

  24. Bellman Ford’s algorithm S 3 3 2 1 4 2 3 2 -2 1 3

  25. Bellman Ford’s algorithm S 3 3 2 1 4 1 3 2 -2 1 3

  26. Bellman Ford’s algorithm Assume the shortest path from s->t is P0 P1 P2 … Pm-1 where m < |V| and s is fixed In the 1st iteration, d[P1] is shortest In the 2nd iteration, d[P2] is shortest … In the m-1 iteration, d[Pm-1] is shortest

  27. Bellman Ford’s algorithm After |V|-1 iterations, If there exists edge (u,v) where d[u] + weightuv< d[v] Negative cycle!

  28. Bellman Ford’s algorithm Time complexity: O(VE) Space complexity: O(V)

  29. Floyd Warshall’s algorithm for all pairs(i,j), d[i][j] ← ∞ for all edges(u,v), d[u][v] ← weightuv for k=1 to V for i=1 to V for j=1 to V d[i][j] = min(d[i][j], d[i][k]+d[k][j])

  30. Floyd Warshall’s algorithm Assume the shortest path from s->t is P0 P1 P2 … Pm-1 for any s,t For example, 5->3->1->2->4->6 i=1: 5->1->6 i=2: 5->1->2->6 i=3: 5->3->1->2->6 i=4: 5->3->1->2->4->6 i=5: 5->3->1->2->4->6 i=6: 5->3->1->2->4->6 We won’t miss any shortest path!

  31. Floyd Warshall’s algorithm Time complexity: O(V3) Space complexity: O(V2)

  32. Summary

  33. Tree What is a tree? G is connected and acyclic G is connected and |E| = |V| - 1 G is acyclic and |E| = |V| - 1 For any pairs in G, there is a unique path

  34. Spanning Tree 3 2 1 3 3 3 1

  35. Minimum Spanning Tree 3 2 1 3 3 3 1

  36. Kruskal’s algorithm T← empty set of edges Sort the edges in increasing order For each edge e (in increasing order) if T + e does not contain a cycle add e to T

  37. Kruskal’s algorithm How to detect a cycle? Disjoint Set

  38. Kruskal’s algorithm If we choose an edge (u,v) Union(u, v)

  39. Kruskal’s algorithm 3 2 1 2 2 2 1

  40. Kruskal’s algorithm 3 2 1 2 2 2 1

  41. Kruskal’s algorithm 3 2 1 2 2 2 1

  42. Kruskal’s algorithm 3 2 1 2 2 2 1

  43. Kruskal’s algorithm 3 2 1 2 2 2 1

  44. Kruskal’s algorithm 3 2 1 2 2 2 1

  45. Kruskal’s algorithm 3 2 1 2 2 2 1

  46. Kruskal’s algorithm 3 2 1 2 2 2 1

  47. Krustal’s algorithm Sorting: O(E log V) Select edge: O(E) Check union: O(α(V)) Overall: O(E log V + E α(V))

  48. The Red Rule The Red Rule states that for any cycle in G, the largest weight edge will NOT be contained in any Minimum Spanning Tree.

  49. Prim’s algorithm T← node 1 while size of T < V choose a vertex u that is not in V and the cost adding it to V is minimum add u to V

  50. Prim’s algorithm 3 2 1 2 2 2 1

More Related