David Luebke 1 10/1/2015 CS 332: Algorithms Topological Sort Minimum Spanning Tree.
Transcript of David Luebke 1 10/1/2015 CS 332: Algorithms Topological Sort Minimum Spanning Tree.
![Page 1: David Luebke 1 10/1/2015 CS 332: Algorithms Topological Sort Minimum Spanning Tree.](https://reader036.fdocuments.net/reader036/viewer/2022070409/56649e745503460f94b757ca/html5/thumbnails/1.jpg)
David Luebke 1 04/21/23
CS 332: Algorithms
Topological Sort
Minimum Spanning Tree
![Page 2: David Luebke 1 10/1/2015 CS 332: Algorithms Topological Sort Minimum Spanning Tree.](https://reader036.fdocuments.net/reader036/viewer/2022070409/56649e745503460f94b757ca/html5/thumbnails/2.jpg)
David Luebke 2 04/21/23
Review: Breadth-First Search
BFS(G, s) {
initialize vertices;
Q = {s}; // Q is a queue (duh); initialize to s
while (Q not empty) {
u = RemoveTop(Q);
for each v u->adj { if (v->color == WHITE)
v->color = GREY;
v->d = u->d + 1;
v->p = u;
Enqueue(Q, v);
}
u->color = BLACK;
}
}
v->p represents parent in tree
v->d represents depth in tree
![Page 3: David Luebke 1 10/1/2015 CS 332: Algorithms Topological Sort Minimum Spanning Tree.](https://reader036.fdocuments.net/reader036/viewer/2022070409/56649e745503460f94b757ca/html5/thumbnails/3.jpg)
David Luebke 3 04/21/23
Review: Depth-First Search
Depth-first search is another strategy for exploring a graph Explore “deeper” in the graph whenever possible Edges are explored out of the most recently
discovered vertex v that still has unexplored edges When all of v’s edges have been explored,
backtrack to the vertex from which v was discovered
![Page 4: David Luebke 1 10/1/2015 CS 332: Algorithms Topological Sort Minimum Spanning Tree.](https://reader036.fdocuments.net/reader036/viewer/2022070409/56649e745503460f94b757ca/html5/thumbnails/4.jpg)
David Luebke 4 04/21/23
Review: DFS Code
DFS(G)
{
for each vertex u G->V {
u->color = WHITE;
}
time = 0;
for each vertex u G->V {
if (u->color == WHITE)
DFS_Visit(u);
}
}
DFS_Visit(u)
{
u->color = GREY;
time = time+1;
u->d = time;
for each v u->Adj[] {
if (v->color == WHITE)
DFS_Visit(v);
}
u->color = BLACK;
time = time+1;
u->f = time;
}
![Page 5: David Luebke 1 10/1/2015 CS 332: Algorithms Topological Sort Minimum Spanning Tree.](https://reader036.fdocuments.net/reader036/viewer/2022070409/56649e745503460f94b757ca/html5/thumbnails/5.jpg)
David Luebke 5 04/21/23
DFS Example
1 | | |
| | |
| |
sourcevertex
d f
![Page 6: David Luebke 1 10/1/2015 CS 332: Algorithms Topological Sort Minimum Spanning Tree.](https://reader036.fdocuments.net/reader036/viewer/2022070409/56649e745503460f94b757ca/html5/thumbnails/6.jpg)
David Luebke 6 04/21/23
DFS Example
1 | | |
| | |
2 | |
sourcevertex
d f
![Page 7: David Luebke 1 10/1/2015 CS 332: Algorithms Topological Sort Minimum Spanning Tree.](https://reader036.fdocuments.net/reader036/viewer/2022070409/56649e745503460f94b757ca/html5/thumbnails/7.jpg)
David Luebke 7 04/21/23
DFS Example
1 | | |
| | 3 |
2 | |
sourcevertex
d f
![Page 8: David Luebke 1 10/1/2015 CS 332: Algorithms Topological Sort Minimum Spanning Tree.](https://reader036.fdocuments.net/reader036/viewer/2022070409/56649e745503460f94b757ca/html5/thumbnails/8.jpg)
David Luebke 8 04/21/23
DFS Example
1 | | |
| | 3 | 4
2 | |
sourcevertex
d f
![Page 9: David Luebke 1 10/1/2015 CS 332: Algorithms Topological Sort Minimum Spanning Tree.](https://reader036.fdocuments.net/reader036/viewer/2022070409/56649e745503460f94b757ca/html5/thumbnails/9.jpg)
David Luebke 9 04/21/23
DFS Example
1 | | |
| 5 | 3 | 4
2 | |
sourcevertex
d f
![Page 10: David Luebke 1 10/1/2015 CS 332: Algorithms Topological Sort Minimum Spanning Tree.](https://reader036.fdocuments.net/reader036/viewer/2022070409/56649e745503460f94b757ca/html5/thumbnails/10.jpg)
David Luebke 10 04/21/23
DFS Example
1 | | |
| 5 | 63 | 4
2 | |
sourcevertex
d f
![Page 11: David Luebke 1 10/1/2015 CS 332: Algorithms Topological Sort Minimum Spanning Tree.](https://reader036.fdocuments.net/reader036/viewer/2022070409/56649e745503460f94b757ca/html5/thumbnails/11.jpg)
David Luebke 11 04/21/23
DFS Example
1 | 8 | |
| 5 | 63 | 4
2 | 7 |
sourcevertex
d f
![Page 12: David Luebke 1 10/1/2015 CS 332: Algorithms Topological Sort Minimum Spanning Tree.](https://reader036.fdocuments.net/reader036/viewer/2022070409/56649e745503460f94b757ca/html5/thumbnails/12.jpg)
David Luebke 12 04/21/23
DFS Example
1 | 8 | |
| 5 | 63 | 4
2 | 7 |
sourcevertex
d f
![Page 13: David Luebke 1 10/1/2015 CS 332: Algorithms Topological Sort Minimum Spanning Tree.](https://reader036.fdocuments.net/reader036/viewer/2022070409/56649e745503460f94b757ca/html5/thumbnails/13.jpg)
David Luebke 13 04/21/23
DFS Example
1 | 8 | |
| 5 | 63 | 4
2 | 7 9 |
sourcevertex
d f
What is the structure of the grey vertices? What do they represent?
![Page 14: David Luebke 1 10/1/2015 CS 332: Algorithms Topological Sort Minimum Spanning Tree.](https://reader036.fdocuments.net/reader036/viewer/2022070409/56649e745503460f94b757ca/html5/thumbnails/14.jpg)
David Luebke 14 04/21/23
DFS Example
1 | 8 | |
| 5 | 63 | 4
2 | 7 9 |10
sourcevertex
d f
![Page 15: David Luebke 1 10/1/2015 CS 332: Algorithms Topological Sort Minimum Spanning Tree.](https://reader036.fdocuments.net/reader036/viewer/2022070409/56649e745503460f94b757ca/html5/thumbnails/15.jpg)
David Luebke 15 04/21/23
DFS Example
1 | 8 |11 |
| 5 | 63 | 4
2 | 7 9 |10
sourcevertex
d f
![Page 16: David Luebke 1 10/1/2015 CS 332: Algorithms Topological Sort Minimum Spanning Tree.](https://reader036.fdocuments.net/reader036/viewer/2022070409/56649e745503460f94b757ca/html5/thumbnails/16.jpg)
David Luebke 16 04/21/23
DFS Example
1 |12 8 |11 |
| 5 | 63 | 4
2 | 7 9 |10
sourcevertex
d f
![Page 17: David Luebke 1 10/1/2015 CS 332: Algorithms Topological Sort Minimum Spanning Tree.](https://reader036.fdocuments.net/reader036/viewer/2022070409/56649e745503460f94b757ca/html5/thumbnails/17.jpg)
David Luebke 17 04/21/23
DFS Example
1 |12 8 |11 13|
| 5 | 63 | 4
2 | 7 9 |10
sourcevertex
d f
![Page 18: David Luebke 1 10/1/2015 CS 332: Algorithms Topological Sort Minimum Spanning Tree.](https://reader036.fdocuments.net/reader036/viewer/2022070409/56649e745503460f94b757ca/html5/thumbnails/18.jpg)
David Luebke 18 04/21/23
DFS Example
1 |12 8 |11 13|
14| 5 | 63 | 4
2 | 7 9 |10
sourcevertex
d f
![Page 19: David Luebke 1 10/1/2015 CS 332: Algorithms Topological Sort Minimum Spanning Tree.](https://reader036.fdocuments.net/reader036/viewer/2022070409/56649e745503460f94b757ca/html5/thumbnails/19.jpg)
David Luebke 19 04/21/23
DFS Example
1 |12 8 |11 13|
14|155 | 63 | 4
2 | 7 9 |10
sourcevertex
d f
![Page 20: David Luebke 1 10/1/2015 CS 332: Algorithms Topological Sort Minimum Spanning Tree.](https://reader036.fdocuments.net/reader036/viewer/2022070409/56649e745503460f94b757ca/html5/thumbnails/20.jpg)
David Luebke 20 04/21/23
DFS Example
1 |12 8 |11 13|16
14|155 | 63 | 4
2 | 7 9 |10
sourcevertex
d f
![Page 21: David Luebke 1 10/1/2015 CS 332: Algorithms Topological Sort Minimum Spanning Tree.](https://reader036.fdocuments.net/reader036/viewer/2022070409/56649e745503460f94b757ca/html5/thumbnails/21.jpg)
David Luebke 21 04/21/23
Review: Depth-First Sort Analysis
Running time: O(V+E) Show by amortized analysis
“Charge” the exploration of edge to the edge: Each loop in DFS_Visit can be attributed to an edge in the
graph Runs once/edge if directed graph, twice if undirected Thus loop will run in O(E) time, algorithm O(V+E)
Considered linear for graph, b/c adj list requires O(V+E) storage
Important to be comfortable with this kind of reasoning and analysis
![Page 22: David Luebke 1 10/1/2015 CS 332: Algorithms Topological Sort Minimum Spanning Tree.](https://reader036.fdocuments.net/reader036/viewer/2022070409/56649e745503460f94b757ca/html5/thumbnails/22.jpg)
David Luebke 22 04/21/23
Review: Kinds of edges
DFS introduces an important distinction among edges in the original graph: Tree edge: encounter new (white) vertex
The tree edges form a spanning forest Can tree edges form cycles? Why or why not?
![Page 23: David Luebke 1 10/1/2015 CS 332: Algorithms Topological Sort Minimum Spanning Tree.](https://reader036.fdocuments.net/reader036/viewer/2022070409/56649e745503460f94b757ca/html5/thumbnails/23.jpg)
David Luebke 23 04/21/23
Review: Kinds of edges
DFS introduces an important distinction among edges in the original graph: Tree edge: encounter new (white) vertex Back edge: from descendent to ancestor
Encounter a grey vertex (grey to grey)
![Page 24: David Luebke 1 10/1/2015 CS 332: Algorithms Topological Sort Minimum Spanning Tree.](https://reader036.fdocuments.net/reader036/viewer/2022070409/56649e745503460f94b757ca/html5/thumbnails/24.jpg)
David Luebke 24 04/21/23
Review: Kinds of edges
DFS introduces an important distinction among edges in the original graph: Tree edge: encounter new (white) vertex Back edge: from descendent to ancestor Forward edge: from ancestor to descendent
Not a tree edge, though From grey node to black node
![Page 25: David Luebke 1 10/1/2015 CS 332: Algorithms Topological Sort Minimum Spanning Tree.](https://reader036.fdocuments.net/reader036/viewer/2022070409/56649e745503460f94b757ca/html5/thumbnails/25.jpg)
David Luebke 25 04/21/23
Review: Kinds of edges
DFS introduces an important distinction among edges in the original graph: Tree edge: encounter new (white) vertex Back edge: from descendent to ancestor Forward edge: from ancestor to descendent Cross edge: between a tree or subtrees
From a grey node to a black node
![Page 26: David Luebke 1 10/1/2015 CS 332: Algorithms Topological Sort Minimum Spanning Tree.](https://reader036.fdocuments.net/reader036/viewer/2022070409/56649e745503460f94b757ca/html5/thumbnails/26.jpg)
David Luebke 26 04/21/23
Review: DFS Example
1 |12 8 |11 13|16
14|155 | 63 | 4
2 | 7 9 |10
sourcevertex
d f
Tree edges Back edges Forward edges Cross edges
![Page 27: David Luebke 1 10/1/2015 CS 332: Algorithms Topological Sort Minimum Spanning Tree.](https://reader036.fdocuments.net/reader036/viewer/2022070409/56649e745503460f94b757ca/html5/thumbnails/27.jpg)
David Luebke 27 04/21/23
Review: Kinds Of Edges
Thm: If G is undirected, a DFS produces only tree and back edges
Thm: An undirected graph is acyclic iff a DFS yields no back edges If acyclic, no back edges If no back edges, acyclic
No back edges implies only tree edges (Why?) Only tree edges implies we have a tree or a forest Which by definition is acyclic
Thus, can run DFS to find cycles
![Page 28: David Luebke 1 10/1/2015 CS 332: Algorithms Topological Sort Minimum Spanning Tree.](https://reader036.fdocuments.net/reader036/viewer/2022070409/56649e745503460f94b757ca/html5/thumbnails/28.jpg)
David Luebke 28 04/21/23
DFS And Cycles
Running time: O(V+E) We can actually determine if cycles exist in
O(V) time: In an undirected acyclic forest, |E| |V| - 1 So count the edges: if ever see |V| distinct edges,
must have seen a back edge along the way Why not just test if |E| <|V| and answer the
question in constant time?
![Page 29: David Luebke 1 10/1/2015 CS 332: Algorithms Topological Sort Minimum Spanning Tree.](https://reader036.fdocuments.net/reader036/viewer/2022070409/56649e745503460f94b757ca/html5/thumbnails/29.jpg)
David Luebke 29 04/21/23
Directed Acyclic Graphs
A directed acyclic graph or DAG is a directed graph with no directed cycles:
![Page 30: David Luebke 1 10/1/2015 CS 332: Algorithms Topological Sort Minimum Spanning Tree.](https://reader036.fdocuments.net/reader036/viewer/2022070409/56649e745503460f94b757ca/html5/thumbnails/30.jpg)
David Luebke 30 04/21/23
DFS and DAGs
Argue that a directed graph G is acyclic iff a DFS of G yields no back edges: Forward: if G is acyclic, will be no back edges
Trivial: a back edge implies a cycle Backward: if no back edges, G is acyclic
Argue contrapositive: G has a cycle a back edge Let v be the vertex on the cycle first discovered, and u be the predecessor
of v on the cycle When v discovered, whole cycle is white Must visit everything reachable from v before returning from DFS-
Visit() So path from uv is greygrey, thus (u, v) is a back edge
![Page 31: David Luebke 1 10/1/2015 CS 332: Algorithms Topological Sort Minimum Spanning Tree.](https://reader036.fdocuments.net/reader036/viewer/2022070409/56649e745503460f94b757ca/html5/thumbnails/31.jpg)
David Luebke 31 04/21/23
Topological Sort
Topological sort of a DAG: Linear ordering of all vertices in graph G such that
vertex u comes before vertex v if edge (u, v) G Real-world example: getting dressed
![Page 32: David Luebke 1 10/1/2015 CS 332: Algorithms Topological Sort Minimum Spanning Tree.](https://reader036.fdocuments.net/reader036/viewer/2022070409/56649e745503460f94b757ca/html5/thumbnails/32.jpg)
David Luebke 32 04/21/23
Getting Dressed
Underwear Socks
ShoesPants
Belt
Shirt
Watch
Tie
Jacket
![Page 33: David Luebke 1 10/1/2015 CS 332: Algorithms Topological Sort Minimum Spanning Tree.](https://reader036.fdocuments.net/reader036/viewer/2022070409/56649e745503460f94b757ca/html5/thumbnails/33.jpg)
David Luebke 33 04/21/23
Getting Dressed
Underwear Socks
ShoesPants
Belt
Shirt
Watch
Tie
Jacket
Socks Underwear Pants Shoes Watch Shirt Belt Tie Jacket
![Page 34: David Luebke 1 10/1/2015 CS 332: Algorithms Topological Sort Minimum Spanning Tree.](https://reader036.fdocuments.net/reader036/viewer/2022070409/56649e745503460f94b757ca/html5/thumbnails/34.jpg)
David Luebke 34 04/21/23
Topological Sort Algorithm
Topological-Sort()
{
Run DFS
When a vertex is finished, output it
Vertices are output in reverse topological order
}
Time: O(V+E) Correctness: Want to prove that
(u,v) G uf > vf
![Page 35: David Luebke 1 10/1/2015 CS 332: Algorithms Topological Sort Minimum Spanning Tree.](https://reader036.fdocuments.net/reader036/viewer/2022070409/56649e745503460f94b757ca/html5/thumbnails/35.jpg)
David Luebke 35 04/21/23
Correctness of Topological Sort
Claim: (u,v) G uf > vf When (u,v) is explored, u is grey
v = grey (u,v) is back edge. Contradiction (Why?) v = white v becomes descendent of u vf < uf
(since must finish v before backtracking and finishing u)
v = black v already finished vf < uf
![Page 36: David Luebke 1 10/1/2015 CS 332: Algorithms Topological Sort Minimum Spanning Tree.](https://reader036.fdocuments.net/reader036/viewer/2022070409/56649e745503460f94b757ca/html5/thumbnails/36.jpg)
David Luebke 36 04/21/23
Minimum Spanning Tree
Problem: given a connected, undirected, weighted graph:
1410
3
6 4
5
2
9
15
8
![Page 37: David Luebke 1 10/1/2015 CS 332: Algorithms Topological Sort Minimum Spanning Tree.](https://reader036.fdocuments.net/reader036/viewer/2022070409/56649e745503460f94b757ca/html5/thumbnails/37.jpg)
David Luebke 37 04/21/23
Minimum Spanning Tree
Problem: given a connected, undirected, weighted graph, find a spanning tree using edges that minimize the total weight
1410
3
6 4
5
2
9
15
8
![Page 38: David Luebke 1 10/1/2015 CS 332: Algorithms Topological Sort Minimum Spanning Tree.](https://reader036.fdocuments.net/reader036/viewer/2022070409/56649e745503460f94b757ca/html5/thumbnails/38.jpg)
David Luebke 38 04/21/23
Minimum Spanning Tree
Which edges form the minimum spanning tree (MST) of the below graph?
H B C
G E D
F
A
1410
3
6 4
5
2
9
15
8
![Page 39: David Luebke 1 10/1/2015 CS 332: Algorithms Topological Sort Minimum Spanning Tree.](https://reader036.fdocuments.net/reader036/viewer/2022070409/56649e745503460f94b757ca/html5/thumbnails/39.jpg)
David Luebke 39 04/21/23
Minimum Spanning Tree
Answer:
H B C
G E D
F
A
1410
3
6 4
5
2
9
15
8
![Page 40: David Luebke 1 10/1/2015 CS 332: Algorithms Topological Sort Minimum Spanning Tree.](https://reader036.fdocuments.net/reader036/viewer/2022070409/56649e745503460f94b757ca/html5/thumbnails/40.jpg)
David Luebke 40 04/21/23
Minimum Spanning Tree
MSTs satisfy the optimal substructure property: an optimal tree is composed of optimal subtrees Let T be an MST of G with an edge (u,v) in the middle Removing (u,v) partitions T into two trees T1 and T2
Claim: T1 is an MST of G1 = (V1,E1), and T2 is an MST of G2 = (V2,E2) (Do V1 and V2 share vertices? Why?)
Proof: w(T) = w(u,v) + w(T1) + w(T2)(There can’t be a better tree than T1 or T2, or T would be suboptimal)
![Page 41: David Luebke 1 10/1/2015 CS 332: Algorithms Topological Sort Minimum Spanning Tree.](https://reader036.fdocuments.net/reader036/viewer/2022070409/56649e745503460f94b757ca/html5/thumbnails/41.jpg)
David Luebke 41 04/21/23
Minimum Spanning Tree
Thm: Let T be MST of G, and let A T be subtree of T Let (u,v) be min-weight edge connecting A to V-A Then (u,v) T
![Page 42: David Luebke 1 10/1/2015 CS 332: Algorithms Topological Sort Minimum Spanning Tree.](https://reader036.fdocuments.net/reader036/viewer/2022070409/56649e745503460f94b757ca/html5/thumbnails/42.jpg)
David Luebke 42 04/21/23
Minimum Spanning Tree
Thm: Let T be MST of G, and let A T be subtree of T Let (u,v) be min-weight edge connecting A to V-A Then (u,v) T
Proof: in book (see Thm 24.1)
![Page 43: David Luebke 1 10/1/2015 CS 332: Algorithms Topological Sort Minimum Spanning Tree.](https://reader036.fdocuments.net/reader036/viewer/2022070409/56649e745503460f94b757ca/html5/thumbnails/43.jpg)
David Luebke 43 04/21/23
Prim’s Algorithm
MST-Prim(G, w, r)
Q = V[G];
for each u Q key[u] = ; key[r] = 0;
p[r] = NULL;
while (Q not empty)
u = ExtractMin(Q);
for each v Adj[u] if (v Q and w(u,v) < key[v]) p[v] = u;
key[v] = w(u,v);
![Page 44: David Luebke 1 10/1/2015 CS 332: Algorithms Topological Sort Minimum Spanning Tree.](https://reader036.fdocuments.net/reader036/viewer/2022070409/56649e745503460f94b757ca/html5/thumbnails/44.jpg)
David Luebke 44 04/21/23
Prim’s Algorithm
MST-Prim(G, w, r)
Q = V[G];
for each u Q key[u] = ; key[r] = 0;
p[r] = NULL;
while (Q not empty)
u = ExtractMin(Q);
for each v Adj[u] if (v Q and w(u,v) < key[v]) p[v] = u;
key[v] = w(u,v);
1410
3
6 45
2
9
15
8
Run on example graph
![Page 45: David Luebke 1 10/1/2015 CS 332: Algorithms Topological Sort Minimum Spanning Tree.](https://reader036.fdocuments.net/reader036/viewer/2022070409/56649e745503460f94b757ca/html5/thumbnails/45.jpg)
David Luebke 45 04/21/23
Prim’s Algorithm
MST-Prim(G, w, r)
Q = V[G];
for each u Q key[u] = ; key[r] = 0;
p[r] = NULL;
while (Q not empty)
u = ExtractMin(Q);
for each v Adj[u] if (v Q and w(u,v) < key[v]) p[v] = u;
key[v] = w(u,v);
What will be the running time?
![Page 46: David Luebke 1 10/1/2015 CS 332: Algorithms Topological Sort Minimum Spanning Tree.](https://reader036.fdocuments.net/reader036/viewer/2022070409/56649e745503460f94b757ca/html5/thumbnails/46.jpg)
David Luebke 46 04/21/23
Prim’s Algorithm
MST-Prim(G, w, r)
Q = V[G];
for each u Q key[u] = ; key[r] = 0;
p[r] = NULL;
while (Q not empty)
u = ExtractMin(Q);
for each v Adj[u] if (v Q and w(u,v) < key[v]) p[v] = u;
key[v] = w(u,v);
What will be the running time?A: Depends on queue binary heap: O(E lg V) Fibonacci heap: O(V lg V + E)
![Page 47: David Luebke 1 10/1/2015 CS 332: Algorithms Topological Sort Minimum Spanning Tree.](https://reader036.fdocuments.net/reader036/viewer/2022070409/56649e745503460f94b757ca/html5/thumbnails/47.jpg)
David Luebke 47 04/21/23
The End