david luebke 1 10/1/2015 cs 332: algorithms topological sort minimum spanning tree

47
David Luebke 1 07/04/22 CS 332: Algorithms Topological Sort Minimum Spanning Tree

Upload: iris-gray

Post on 12-Jan-2016

224 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: David Luebke 1 10/1/2015 CS 332: Algorithms Topological Sort Minimum Spanning Tree

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

David Luebke 47 04/21/23

The End