9/10/10 a. smith; based on slides by e. demaine, c. leiserson, s. raskhodnikova, k. wayne adam smith...

27
9/10/10 A. Smith; based on slides by E. Demaine, C. Leiserson, S. Raskhodnikova, K. Wayne Adam Smith Algorithm Design and Analysis LECTURE 8 Greedy Graph Alg’s II Implementing Dijkstra MST

Upload: linette-hopkins

Post on 27-Dec-2015

221 views

Category:

Documents


1 download

TRANSCRIPT

9/10/10A. Smith; based on slides by E. Demaine, C. Leiserson, S. Raskhodnikova, K. Wayne

Adam Smith

Algorithm Design and Analysis

LECTURE 8Greedy Graph Alg’s II• Implementing Dijkstra• MST

A. Smith; based on slides by E. Demaine, C. Leiserson, S. Raskhodnikova, K. Wayne9/10/10

Rough algorithm (Dijkstra)

•Maintain a set of explored nodes S whose shortest path distance d(u) from s to u is known.•Initialize S = { s }, d(s) = 0.

•Repeatedly choose unexplored node v which minimizes

•add v to S, and set d(v) = (v).

,)()(min)(:),(

eudvSuvue

shortest path to some u in explored part, followed by a single edge (u, v)

s

v

u

d(u)

S

(e)

A. Smith; based on slides by E. Demaine, C. Leiserson, S. Raskhodnikova, K. Wayne

Review Question

• Is Dijsktra’s algorithm correct with negative edge weights?

9/10/10

A. Smith; based on slides by E. Demaine, C. Leiserson, S. Raskhodnikova, K. Wayne9/10/10

Proof of Correctness (Greedy Stays Ahead)

Invariant. For each node u S, d(u) is the length of the shortest path from s to u.

Proof: (by induction on |S|)•Base case: |S| = 1 is trivial.•Inductive hypothesis: Assume for |S| = k 1.– Let v be next node added to S, and let (u,v) be the chosen edge.– The shortest s-u path plus (u,v) is an s-v path of length (v).– Consider any s-v path P. We'll see that it's no shorter than (v).– Let (x,y) be the first edge in P that leaves S,

and let P' be the subpath to x.– P + (x,y) has length · d(x)+ (x,y)· (y)· (v)

S

s

y

v

x

P

u

P'

A. Smith; based on slides by E. Demaine, C. Leiserson, S. Raskhodnikova, K. Wayne9/10/10

Implementation

•For unexplored nodes, maintain–Next node to explore = node with minimum (v).–When exploring v, for each edge e = (v,w), update

•Efficient implementation: Maintain a priority queue of unexplored nodes, prioritized by (v).

).()(min)(:),(

eudvSuvue

.)}()( ),( {min )( evww

Priority Queue

A. Smith; based on slides by E. Demaine, C. Leiserson, S. Raskhodnikova, K. Wayne

Priority queues

• Maintain a set of items with priorities (= “keys”)– Example: jobs to be performed

• Operations:– Insert– Increase key– Decrease key– Extract-min: find and remove item with least key

• Common data structure: heap– Time: O(log n) per operation

9/10/10

A. Smith; based on slides by E. Demaine, C. Leiserson, S. Raskhodnikova, K. Wayne9/10/10

Pseudocode for Dijkstra(G, )

d[s] 0for each v Î V – {s}

do d[v] ¥; p[v] ¥S Q V ⊳ Q is a priority queue maintaining V – S,

keyed on [v]while Q ¹

do u EXTRACT-MIN(Q)S S È {u}; d[u] p [u] for each v Î Adjacency-list[u]

do if [v] > [u] + (u, v)then [v] d[u] + (u, v)

explore edges leaving v

Implicit DECREASE-KEY

A. Smith; based on slides by E. Demaine, C. Leiserson, S. Raskhodnikova, K. Wayne9/10/10

Analysis of Dijkstra

degree(u)times

n times

Handshaking Lemma ·m implicit DECREASE-KEY’s.

while Q ¹ do u EXTRACT-MIN(Q)

S S È {u}for each v Î Adj[u]

do if [v] > [u] + w(u, v)then [v] [u] + w(u, v)

† Individual ops are amortized bounds

PQ Operation

ExtractMin

DecreaseKey

Binary heap

log n

log n

Fib heap †

log n

1

Array

n

1Total m log n m + n log nn2

Dijkstra

n

m

d-way Heap

HW3

HW3m log m/n n

A. Smith; based on slides by E. Demaine, C. Leiserson, S. Raskhodnikova, K. Wayne9/15/2008

Minimum spanning tree (MST)

Input: A connected undirected graph G = (V, E) with weight function w : E R.• For now, assume all edge weights are distinct.

Tvu

vuwTw),(

),()( .

Output: A spanning tree T — a tree that connects all vertices — of minimum weight:

9/15/2008A. Smith; based on slides by E. Demaine, C. Leiserson, S. Raskhodnikova, K. Wayne

Example of MST

6 125

14

3

8

10

15

9

7

9/15/2008A. Smith; based on slides by E. Demaine, C. Leiserson, S. Raskhodnikova, K. Wayne

Example of MST

6 125

14

3

8

10

15

9

7

A. Smith; based on slides by E. Demaine, C. Leiserson, S. Raskhodnikova, K. Wayne9/15/2008

Greedy Algorithms for MST•Kruskal's: Start with T = . Consider edges in ascending order of weights. Insert edge e in T unless doing so would create a cycle.

•Reverse-Delete: Start with T = E. Consider edges in descending order of weights. Delete edge e from T unless doing so would disconnect T.

•Prim's: Start with some root node s. Grow a tree T from s outward. At each step, add to T the cheapest edge e with exactly one endpoint in T.

A. Smith; based on slides by E. Demaine, C. Leiserson, S. Raskhodnikova, K. Wayne9/15/2008

Cycles and Cuts

•Cycle: Set of edges the form (a,b),(b,c),(c,d),…,(y,z),(z,a).

•Cut: a subset of nodes S. The corresponding cutset D is the subset of edges with exactly one endpoint in S.

Cycle C = (1,2),(2,3),(3,4),(4,5),(5,6),(6,1)

13

8

2

6

7

4

5

Cut S = { 4, 5, 8 }Cutset D = (5,6), (5,7), (3,4), (3,5), (7,8)

13

8

2

6

7

4

5

S

A. Smith; based on slides by E. Demaine, C. Leiserson, S. Raskhodnikova, K. Wayne9/15/2008

Cycle-Cut Intersection

• Claim. A cycle and a cutset intersect in an even number of edges.

• Proof: A cycle has to leave and enter the cut the same number of times.

S

V - S

C

A. Smith; based on slides by E. Demaine, C. Leiserson, S. Raskhodnikova, K. Wayne9/15/2008

Cut and Cycle Properties

•Cut property. Let S be a subset of nodes. Let e be the min weight edge with exactly one endpoint in S. Then the MST contains e.•Cycle property. Let C be a cycle, and let f be the max weight edge in C. Then the MST does not contain f.

f C

S

e is in the MST

e

f is not in the MST

A. Smith; based on slides by E. Demaine, C. Leiserson, S. Raskhodnikova, K. Wayne9/15/2008

Proof of Cut Property

Cut property: Let S be a subset of nodes. Let e be the min weight edge with exactly one endpoint in S. Then the MST T* contains e.•Proof: (exchange argument)– Suppose e does not belong to T*.– Adding e to T* creates a cycle C in T*.– Edge e is both in the cycle C and in the cutset D corresponding to

S there exists another edge, say f, that is in both C and D.– T' = T* { e } - { f } is also a spanning tree.

– Since ce < cf, cost(T') < cost(T*). Contradiction. ▪

f

T*

e

S

A. Smith; based on slides by E. Demaine, C. Leiserson, S. Raskhodnikova, K. Wayne9/15/2008

Proof of Cycle Property

Cycle property: Let C be a cycle in G. Let f be the max weight edge in C. Then the MST T* does not contain f.

•Proof: (exchange argument)– Suppose f belongs to T*.– Deleting f from T* creates a cut S in T*.– Edge f is both in the cycle C and in the cutset D corresponding to

S there exists another edge, say e, that is in both C and D.– T' = T* { e } - { f } is also a spanning tree.

– Since ce < cf, cost(T') < cost(T*). Contradiction. ▪

f

T*

e

S

A. Smith; based on slides by E. Demaine, C. Leiserson, S. Raskhodnikova, K. Wayne9/15/2008

Greedy Algorithms for MST•Kruskal's: Start with T = . Consider edges in ascending order of weights. Insert edge e in T unless doing so would create a cycle.

•Reverse-Delete: Start with T = E. Consider edges in descending order of weights. Delete edge e from T unless doing so would disconnect T.

•Prim's: Start with some root node s. Grow a tree T from s outward. At each step, add to T the cheapest edge e with exactly one endpoint in T.

A. Smith; based on slides by E. Demaine, C. Leiserson, S. Raskhodnikova, K. Wayne9/15/2008

Prim's Algorithm: Correctness

•Prim's algorithm. [Jarník 1930, Prim 1959]–Apply cut property to S.–When edge weights are

distinct, every edge that isadded must be in the MST

–Thus, Prim’s alg. outputs the MST

S

A. Smith; based on slides by E. Demaine, C. Leiserson, S. Raskhodnikova, K. Wayne9/15/2008

Correctness of Kruskal

• [Kruskal, 1956]: Consider edges

in ascending order of weight.– Case 1: If adding e to T creates a

cycle, discard e according to cycle

property.

– Case 2: Otherwise, insert e = (u, v)

into T according to cut property where

S = set of nodes in u's connected

component.

Case 1

e

v

u

Case 2

eS

A. Smith; based on slides by E. Demaine, C. Leiserson, S. Raskhodnikova, K. Wayne9/15/2008

Review Questions

Let G be a connected undirected graph with distinct edge weights. Answer true or false:

• Let e be the cheapest edge in G. Some MST of G contains e?

• Let e be the most expensive edge in G. No MST of G contains e?

A. Smith; based on slides by E. Demaine, C. Leiserson, S. Raskhodnikova, K. Wayne

Non-distinct edges?

9/15/2008

A. Smith; based on slides by E. Demaine, C. Leiserson, S. Raskhodnikova, K. Wayne9/15/2008

Implementation of Prim(G,w)

IDEA: Maintain V – S as a priority queue Q (as in Dijkstra). Key each vertex in Q with the weight of the least-weight edge connecting it to a vertex in S.Q Vkey[v] ¥ for all v Î V key[s] 0 for some arbitrary s Î Vwhile Q ¹

do u EXTRACT-MIN(Q)for each v Î Adjacency-list[u]

do if v Î Q and w(u, v) < key[v]then key[v] w(u, v) ⊳ DECREASE-KEY

p[v] uAt the end, {(v, p[v])} forms the MST.

A. Smith; based on slides by E. Demaine, C. Leiserson, S. Raskhodnikova, K. Wayne9/15/2008

Handshaking Lemma Q(m) implicit DECREASE-KEY’s.

Q Vkey[v] ¥ for all v Î V key[s] 0 for some arbitrary s Î Vwhile Q ¹

do u EXTRACT-MIN(Q)for each v Î Adj[u]do if v Î Q and w(u, v) < key[v]

then key[v] w(u, v)p[v] u

Analysis of Prim

degree(u)times

n times

Q(n) total

Time: as in Dijkstra

A. Smith; based on slides by E. Demaine, C. Leiserson, S. Raskhodnikova, K. Wayne9/15/2008

Handshaking Lemma Q(m) implicit DECREASE-KEY’s.

while Q ¹ do u EXTRACT-MIN(Q)

for each v Î Adj[u]do if v Î Q and w(u, v) < key[v]

then key[v] w(u, v)p[v] u

Analysis of Prim

degree(u)times

n times

† Individual ops are amortized bounds

PQ Operation

ExtractMin

DecreaseKey

Binary heap

log n

log n

Fib heap †

log n

1

Array

n

1Total m log n m + n log nn2

Prim

n

m

d-way Heap

HW3

HW3m log m/n n

A. Smith; based on slides by E. Demaine, C. Leiserson, S. Raskhodnikova, K. Wayne9/15/2008

Greedy Algorithms for MST•Kruskal's: Start with T = . Consider edges in ascending order of weights. Insert edge e in T unless doing so would create a cycle.

•Reverse-Delete: Start with T = E. Consider edges in descending order of weights. Delete edge e from T unless doing so would disconnect T.

•Prim's: Start with some root node s. Grow a tree T from s outward. At each step, add to T the cheapest edge e with exactly one endpoint in T.

A. Smith; based on slides by E. Demaine, C. Leiserson, S. Raskhodnikova, K. Wayne

Union-Find Data Structures

Operation\ Implementation Array + linked-lists and sizes

Balanced Trees

Find (worst-case) ϴ(1) ϴ(log n)

Union of sets A,B (worst-case)

ϴ(min(|A|,|B|) (could be as large as ϴ(n)

ϴ(log n)

Amortized analysis: k unions and k finds, starting from singletons

ϴ(k log k) ϴ(k log k)

9/15/2008

• With modifications, amortized time for tree structure is O(n Ack(n)), where Ack(n), the Ackerman function grows much more slowly than log n.

• See KT Chapter 4.6