CS 473 Algorithms I Lecture The Algorithms of
- Slides: 46
CS 473 -Algorithms I Lecture ? The Algorithms of Kruskal and Prim 1
The Algorithms of Kruskal and Prim Both algorithms use a specific rule to: Determine a safe-edge in the Generic MST algoritm. In Kruskal’s algorithm, the set A is a forest The Safe-Edge is always a Least-Weight edge in the graph that connects two distinct components (trees). In Prim’s algorithm, the set A forms a single tree The Safe-Edge is always a Least-Weight edge in the graph that connects the tree to a vertex not in tree. CS 473 Lecture ? 2
Kruskal’s Algorithm • Kruskal’s algorithm is based directly on the Generic-MST • It finds a Safe-Edge to add to the growing forest, by finding an edge (u, v) of Least-Weight of all edges that connect any two trees in the forest • Let C 1 & C 2 denote two trees that are connected by (u, v) v C 1 C 2 u CS 473 Lecture ? 3
Kruskal’s Algorithm • Since (u, v) must be a light-edge connecting C 1 to some other tree, the Corollary implies that (u, v) is a Safe-Edge for C 1. • Kruskal’s algorithm is a greedy algorithm Because at each step it adds to the forest an edge of least possible weight. CS 473 Lecture ? 4
The Execution of Kruskal’s Algorithm (a) 8 b 4 9 h 4 i 7 8 CS 473 d 2 11 a 7 c 14 6 1 e 10 g Lecture ? 2 f 5
The Execution of Kruskal’s Algorithm (b) 8 b 4 9 h 4 i 7 8 CS 473 d 2 11 a 7 c 14 6 1 e 10 g Lecture ? 2 f 6
The Execution of Kruskal’s Algorithm (c) 8 b 4 9 h 4 i 7 8 CS 473 d 2 11 a 7 c 14 6 1 e 10 g Lecture ? 2 f 7
The Execution of Kruskal’s Algorithm (d) 8 b 4 9 h 4 i 7 8 CS 473 d 2 11 a 7 c 14 6 1 e 10 g Lecture ? 2 f 8
The Execution of Kruskal’s Algorithm (e) 8 b 4 9 h 4 i 7 8 CS 473 d 2 11 a 7 c 14 6 1 e 10 g Lecture ? 2 f 9
The Execution of Kruskal’s Algorithm (f) 8 b 4 d 9 2 11 a 7 c 7 8 h 4 i 14 6 1 e 10 g 2 f (g, i) discarded CS 473 Lecture ? 10
The Execution of Kruskal’s Algorithm (g) 8 b 4 9 h 4 i 7 8 CS 473 d 2 11 a 7 c 14 6 1 e 10 g Lecture ? 2 f 11
The Execution of Kruskal’s Algorithm (h) 8 b 4 d 9 2 11 a 7 c 7 8 h 4 i 14 6 1 e 10 g 2 f (h, i) discarded CS 473 Lecture ? 12
The Execution of Kruskal’s Algorithm (i) 8 b 4 9 h 4 i 7 8 CS 473 d 2 11 a 7 c 14 6 1 e 10 g Lecture ? 2 f 13
The Execution of Kruskal’s Algorithm (j) 8 b 4 d 9 2 11 a 7 c 7 8 h 4 i 14 6 1 e 10 g 2 f (b, c) discarded CS 473 Lecture ? 14
The Execution of Kruskal’s Algorithm (k) 8 b 4 9 h 4 i 7 8 CS 473 d 2 11 a 7 c 14 6 1 e 10 g Lecture ? 2 f 15
The Execution of Kruskal’s Algorithm (l) 8 b 4 d 9 2 11 a 7 c 7 8 h 4 i 14 6 1 e 10 g 2 f (e, f) discarded CS 473 Lecture ? 16
The Execution of Kruskal’s Algorithm (m) 8 b 4 d 9 2 11 a 7 c 7 8 h 4 i 14 6 1 e 10 g 2 f (b, h) discarded CS 473 Lecture ? 17
The Execution of Kruskal’s Algorithm (n) 8 b 4 d 9 2 11 a 7 c 7 8 h 4 i 14 6 1 e 10 g 2 f (d, f) discarded CS 473 Lecture ? 18
Kruskal’s Algorithm • Our implementation of Kruskal’s Algorithm uses a Disjoint-Set Data Structure to maintain several disjoint set of elements • Each set contains the vertices of a tree of the current forest CS 473 Lecture ? 19
Kruskal’s Algorithm MST-KRUSKAL (G, ω) A Ø for each vertex v V[G] do MAKE-SET (v) SORT the edges of E by nondecreasing weight ω for each edge (u, v) E in nondecreasing order do if FIND-SET(u) FIND-SET(v) then A A {(u, v)} UNION (u, v) return A end CS 473 Lecture ? 20
Kruskal’s Algorithm • The comparison FIND-SET(u) FIND-SET(v) checks whether the endpoints u & v belong to the same tree • If they do, then the edge (u, v) cannot be added to the tree without creating a cycle, and the edge is discarded • Otherwise, the two vertices belong to different trees, and the edge is added to A CS 473 Lecture ? 21
Running Time of Kruskal’s Algorithm • The running time for a graph G= (V, E) depends on the implementation of the disjoint-set data structure. • Use the Disjoint-Set-Forest implementation with the Union-By-Rank and Path-Compression heuristics. • Since it is the asymptotically fastest implementation known Initialization (first for-loop) takes time O (V) Sorting takes time O (E lg E) time CS 473 Lecture ? 22
Running Time of Kruskal’s Algorithm • There are O (E) operations on the disjoint-set forest which in total take O ( E (E, V) ) time where is the Functional Inverse of Ackerman’s Function • Since (E, V) = O ( lg E) The total running time is O ( E lg E ). CS 473 Lecture ? 23
Prim’s Algorithm • Prim’s algorithm is also a special case of Generic-MST algorithm • The edges in the set A always form a single tree • The tree starts from an arbitrary vertex v and grows until the tree spans all the vertices in V • At each step, a light-edge connecting a vertex in A to a vertex in V-A is added to the tree A • Hence, the Corollary implies that Prim’s algorithm adds safe-edges to A at each step. CS 473 Lecture ? 24
Prim’s Algorithm • This strategy is greedy since The tree is augmented at each step with an edge that contributes the minimum amount possible to the tree’s weight. • The key to implementing Prim’s algorithm efficiently is to make it easy to select a new edge to be added to A • All vertices that are not in the tree reside in a priority queue Q based on a key field. • For each vertex v, key[v] is the minimum weight of any edge connecting v to a vertex in the tree key[v] = if there is no such edge. CS 473 Lecture ? 25
The Execution of Prim’s Algorithm 4* (a) 8 b 4 h 8* 7 c d 9 2 4 i 7 8 CS 473 11 a 6 1 e 14 10 g Lecture ? 2 f 26
The Execution of Prim’s Algorithm (b) 8 b 4 h 8* 7 c d 9 2 4 i 7 8 CS 473 11 a 8* 6 1 e 14 10 g Lecture ? 2 f 27
The Execution of Prim’s Algorithm (c) 8 b 4 11 a h 8 d 9 2 4 i 7 8 CS 473 2* 7 c 7 6 1 e 14 10 g Lecture ? 2 f 4 28
The Execution of Prim’s Algorithm (d) 8 b 4 9 h 7 4 i 7 8 CS 473 d 2 11 a 7 c 7 6 1 e 14 10 g 6 Lecture ? 2 f 4* 29
The Execution of Prim’s Algorithm (e) 8 b 4 9 h 7 4 i 7 8 CS 473 d 2 11 a 7 c 7 6 1 e 10 14 10 g 2* Lecture ? 2 f 30
The Execution of Prim’s Algorithm (f) 8 b 4 9 h 4 i 7 8 CS 473 d 2 11 a 7 c 14 6 1 e 10 g Lecture ? 2 f 31
The Execution of Prim’s Algorithm (g) 8 b 4 9 h 4 i 7 8 CS 473 d 2 11 a 7 c 14 6 1 e 10 g Lecture ? 2 f 32
The Execution of Prim’s Algorithm (h) 8 b 4 9 h 4 i 7 8 CS 473 d 2 11 a 7 c 14 6 1 e 10 g Lecture ? 2 f 33
The Execution of Prim’s Algorithm (i) 8 b 4 9 h 4 i 7 8 CS 473 d 2 11 a 7 c 14 6 1 e 10 g Lecture ? 2 f 34
Prim’s Algorithm V-Q Q u 1 u 2 6 4 u 3 CS 473 Lecture ? 8 v key[v]= [v]=NIL 35
Prim’s Algorithm Vertex u 1 moves from Q to V-Q thru EXTRACT-MIN V-Q i 1 Q 8 u 2 v 6 4 u 3 CS 473 Lecture ? key[v]= 8 [v]= u 1 36
Prim’s Algorithm Vertex u 2 moves from Q to V-Q thru EXTRACT-MIN V-Q u 1 Q 8 u 2 v 6 4 u 3 CS 473 Lecture ? key[v]= 6 [v]= u 2 37
Prim’s Algorithm Vertex u 3 moves from Q to V-Q thru EXTRACT-MIN V-Q u 1 Q 8 6 u 2 v 4 key[v]= 4 [v]= u 3 CS 473 Lecture ? 38
Prim’s Algorithm • For each vertex v we maintain two fields: key [v] : Min. weight of any edge connecting v to a vertex in the tree. key [v] = if there is no such edge [v] : Points to the parent of v in the tree. • During the algorithm, the set A in Generic-MST is maintained as A = { (v, [v] ) : v V - {r} - Q } , where r is a random start vertex. • When the algorithm terminates, the priority queue is empty. The MST A for G is thus A = { (v, [v] ) : v V - {r} } CS 473 Lecture ? 39
Prim’s Algorithm MST-PRIM (G, ω, r) Q V[G] for each u Q do key[u] key[r] 0 [r] NIL BUILD-MIN-HEAP (Q) while Q Ø do u EXTRACT-MIN (Q) for each v Adj [u] do if v Q and ω(u, v) < key[v] then [v] u DECREASE-KEY (Q, v, ω(u, v) ) /* key[v] ω(u, v) */ end CS 473 Lecture ? 40
Prim’s Algorithm • Through the algorithm, the set V - Q contains the vertices in the tree being grown. • u EXTRACT-MIN (Q) identifies a vertex u Q incident on a light edge crossing the cut (V-Q, Q) with the exception of the first iteration, in which u = r • Removing u from the set Q adds it to the set V - Q of vertices in the tree CS 473 Lecture ? 41
Prim’s Algorithm • The inner for-loop updates the key & fields of every vertex v adjacent to u but not in the tree • This updating maintains the invariants key [v] ω ( v, [v] ), and ( v, [v] ) is a light-edge connecting v to the tree CS 473 Lecture ? 42
Running Time of Prim’s Algorithm • The performance of Prim’s algorithm depends on how we implement the priority queue • If Q is implemented as a binary heap Use BUILD-MIN-HEAP procedure to perform the initialization in O (V) time while-loop is executed |V| times each EXTRACT-MIN operation takes O (lg. V) time Therefore, the total time for all calls EXTRACT-MIN is O (V lg V) CS 473 Lecture ? 43
Running Time of Prim’s Algorithm • The inner for-loop is executed O(E) times altogether since the sum of the lengths of all adjacency lists is 2|E| • Within the for-loop The membership test v Q can be implemented in constant time by keeping a bit for each vertex whether or not it is in Q and updating the bit when vertex is removed from Q The assigment key[v] ω(u, v) involves a DECREASE-KEY operation on the heap which can be implemented in O(lg V) time CS 473 Lecture ? 44
Running Time of Prim’s Algorithm • Thus, the total time for Prim’s algorithm is O( V lg. V + E lg. V ) = O ( E lg. V ) • The asymptotic running time of Prim’s algorithm can be improved by using FIBONACCI HEAPS • If |V| elements are organized into a fibonacci heap we can perform: An EXTRACT-MIN operation in O(lg. V) amortized time A DECREASE-KEY operation (line 11) in O(1) amortized time CS 473 Lecture ? 45
Running Time of Prim’s Algorithm The asymptotic running time of Prim’s algorithm can be improved by using FIBONACCI HEAPS If |V| elements are organized into a fibonacci heap we can perform: An EXTRACT-MIN operation in O(lg. V) amortized time A DECREASE-KEY operation in O(1) amortized time Hence, if we use FIBONACCI-HEAP to implement the priority queue Q the running time of Prim’s algorithm improves to: O( E + V lg. V ) CS 473 Lecture ? 46
- Analysis of algorithms lecture notes
- Introduction to algorithms lecture notes
- 01:640:244 lecture notes - lecture 15: plat, idah, farad
- Static single assignment
- K=pv
- Eecs 473
- Cmpsc 473
- Eecs 473
- Characteristics of gases
- Cmpsc 473
- Ley fed del trabajo
- A gas occupies 473 cm3
- Cs 473
- Cs 473
- Eecs 473
- Rounding 75 to the nearest ten
- Cs 473
- Cmpsc 473
- Factors of 473
- Nuvw
- Cs 473
- A gas occupies 473 cm3 at 36°c. find its volume at 94°c
- Uw cse 473
- Bilkent cs473
- Pv= k
- 3 gas laws
- Cs 473
- Cs 473
- Cmpsc 473
- Cmpsc
- Vẽ hình chiếu vuông góc của vật thể sau
- Một số thể thơ truyền thống
- Thế nào là hệ số cao nhất
- Hệ hô hấp
- Tư thế ngồi viết
- Bảng số nguyên tố
- đặc điểm cơ thể của người tối cổ
- Mật thư tọa độ 5x5
- Các châu lục và đại dương trên thế giới
- Tư thế worm breton là gì
- ưu thế lai là gì
- Thẻ vin
- Cái miệng nó xinh thế
- Các châu lục và đại dương trên thế giới
- Từ ngữ thể hiện lòng nhân hậu
- Bổ thể