+ All Categories
Home > Documents > November 13, 20031 Algorithms and Data Structures Lecture XII Simonas Šaltenis Aalborg University...

November 13, 20031 Algorithms and Data Structures Lecture XII Simonas Šaltenis Aalborg University...

Date post: 18-Jan-2016
Category:
Upload: crystal-carr
View: 216 times
Download: 1 times
Share this document with a friend
24
November 13, 200 3 1 Algorithms and Data Structures Lecture XII Simonas Šaltenis Aalborg University [email protected]
Transcript
Page 1: November 13, 20031 Algorithms and Data Structures Lecture XII Simonas Šaltenis Aalborg University simas@cs.auc.dk.

November 13, 2003

1

Algorithms and Data StructuresLecture XII

Simonas ŠaltenisAalborg [email protected]

Page 2: November 13, 20031 Algorithms and Data Structures Lecture XII Simonas Šaltenis Aalborg University simas@cs.auc.dk.

November 13, 2003

2

This Lecture

Weighted Graphs Minimum Spanning Trees

Greedy Choice Theorem Kruskal’s Algorithm Prim’s Algorithm

Page 3: November 13, 20031 Algorithms and Data Structures Lecture XII Simonas Šaltenis Aalborg University simas@cs.auc.dk.

November 13, 2003

3

Spanning Tree

A spanning tree of G is a subgraph which is a tree contains all vertices of G

How many edges are there in a spanning tree, if there are V vertices?

Page 4: November 13, 20031 Algorithms and Data Structures Lecture XII Simonas Šaltenis Aalborg University simas@cs.auc.dk.

November 13, 2003

4

Minimum Spanning Trees

Undirected, connected graph G = (V,E)

Weight function W: E R (assigning cost or length or other values to edges)

( , )

( ) ( , )u v T

w T w u v

Spanning tree: tree that connects all the vertices

Optimization problem – Minimum spanning tree (MST): tree T that connects all the vertices and minimizes

Page 5: November 13, 20031 Algorithms and Data Structures Lecture XII Simonas Šaltenis Aalborg University simas@cs.auc.dk.

November 13, 2003

5

Optimal Substructure

”Cut and paste” argument If G’ would have a cheaper ST T’, then we

would get a cheaper ST of G: T’ + (u, v)

MST(G) = T

uv

”u+v”

MST(G’) = T – (u,v)

Page 6: November 13, 20031 Algorithms and Data Structures Lecture XII Simonas Šaltenis Aalborg University simas@cs.auc.dk.

November 13, 2003

6

Idea for an Algorithm

We have to make V – 1 choices (edges of the MST) to arrive at the optimization goal

After each choice we have a sub-problem one vertex smaller than the original Dynamic programming algorithm, at each

stage, would consider all possible choices (edges)

If only we could always guess the correct choice – an edge that definitely belongs to an MST

Page 7: November 13, 20031 Algorithms and Data Structures Lecture XII Simonas Šaltenis Aalborg University simas@cs.auc.dk.

November 13, 2003

7

Greedy Choice

Greedy choice property: locally optimal (greedy) choice yields a globally optimal solution

Theorem Let G=(V, E), and let S V and let (u,v) be min-weight edge in G

connecting S to V – S : a light edge crossing a cut

Then (u,v) T – some MST of G

Page 8: November 13, 20031 Algorithms and Data Structures Lecture XII Simonas Šaltenis Aalborg University simas@cs.auc.dk.

November 13, 2003

8

Greedy Choice (2) Proof

Suppose (u,v) is light, but (u,v) any MST look at path from u to v in some MST T Let (x, y) – the first edge on path from u to v in T

that crosses from S to V – S. Swap (x, y) with (u,v) in T.

this improves T – contradiction (T supposed to be an MST)

u v

xy

S V-S

Page 9: November 13, 20031 Algorithms and Data Structures Lecture XII Simonas Šaltenis Aalborg University simas@cs.auc.dk.

November 13, 2003

9

Generic MST Algorithm

Generic-MST(G, w)1 A// Contains edges that belong to a MST2 while A does not form a spanning tree do3 Find an edge (u,v) that is safe for A 4 AA{(u,v)}5 return A

Generic-MST(G, w)1 A// Contains edges that belong to a MST2 while A does not form a spanning tree do3 Find an edge (u,v) that is safe for A 4 AA{(u,v)}5 return A

Safe edge – edge that does not destroy A’s property

MoreSpecific-MST(G, w)1 A// Contains edges that belong to a MST2 while A does not form a spanning tree do3.1 Make a cut (S, V-S) of G that respects A 3.2 Take the min-weight edge (u,v) connecting S to V-S

4 AA{(u,v)}5 return A

MoreSpecific-MST(G, w)1 A// Contains edges that belong to a MST2 while A does not form a spanning tree do3.1 Make a cut (S, V-S) of G that respects A 3.2 Take the min-weight edge (u,v) connecting S to V-S

4 AA{(u,v)}5 return A

Page 10: November 13, 20031 Algorithms and Data Structures Lecture XII Simonas Šaltenis Aalborg University simas@cs.auc.dk.

November 13, 2003

10

Pseudocode assumptions Graph ADT with an operation

V():VertexSet E(): EdgeSet w(u:Vertex, v:Vertex):int – returns a weight of

(u,v) A looping construct “for each v V ”, where V

is of a type VertexSet, and v is of a type Vertex

Vertex ADT with operations: adjacent():VertexSet key():int and setkey(k:int) parent():Vertex and setparent(p:Vertex)

Page 11: November 13, 20031 Algorithms and Data Structures Lecture XII Simonas Šaltenis Aalborg University simas@cs.auc.dk.

November 13, 2003

11

Prim-Jarnik Algorithm

Vertex based algorithm Grows one tree T, one vertex at a

time A set A covering the portion of T

already computed Label the vertices v outside of the set

A with v.key() – the minimum weigth of an edge connecting v to a vertex in A, v.key() = , if no such edge exists

Page 12: November 13, 20031 Algorithms and Data Structures Lecture XII Simonas Šaltenis Aalborg University simas@cs.auc.dk.

November 13, 2003

12

MST-Prim(G,r)01 for each vertex u G.V()02 u.setkey(03 u.setparent(NIL)04 r.setkey(0)05 Q.init(G.V()) // Q is a priority queue ADT06 while not Q.isEmpty()07 u Q.extractMin() // making u part of T08 for each v u.adjacent() do09 if v Q and G.w(u,v) < v.key() then10 v.setkey(G.w(u,v))11 Q.modifyKey(v)12 v.setparent(u)

Prim-Jarnik Algorithm (2)

updating keys

Page 13: November 13, 20031 Algorithms and Data Structures Lecture XII Simonas Šaltenis Aalborg University simas@cs.auc.dk.

November 13, 2003

13

Prim-Jarnik’s Example

Let’s do an example:

H

B C

I

A

D

G

F E

Let’s keep track: What is set A, which vertices are in Q,

what cuts are we making, what are the key values

1

68

4

12

8

3

6

5 3

4 13 9

10

Page 14: November 13, 20031 Algorithms and Data Structures Lecture XII Simonas Šaltenis Aalborg University simas@cs.auc.dk.

November 13, 2003

14

MST-Prim(G,r)01 for each vertex u G.V()02 u.setkey(03 u.setparent(NIL)04 r.setkey(0)05 Q.init(G.V()) // Q is a priority queue ADT06 while not Q.isEmpty()07 u Q.extractMin() // making u part of T08 for each v u.adjacent() do09 if v Q and G.w(u,v) < v.key() then10 v.setkey(G.w(u,v))11 Q.modifyKey(v)12 v.setparent(u)

Implementation issues

Page 15: November 13, 20031 Algorithms and Data Structures Lecture XII Simonas Šaltenis Aalborg University simas@cs.auc.dk.

November 13, 2003

15

Priority Queues A priority queue is an ADT for maintaining a

set S of elements, each with an associated value called key

We need PQ to support the following operations init(S:VertexSet) extractMin():Vertex modifyKey(v:Vertex)

To choose how to implement a PQ, we need to count how many times the operations are performed: init is performed just once and runs in O(n)

Page 16: November 13, 20031 Algorithms and Data Structures Lecture XII Simonas Šaltenis Aalborg University simas@cs.auc.dk.

November 13, 2003

16

Prim-Jarnik’s Running Time

Time = |V|T(extractMin) + O(E)T(modifyKey) Binary heap implementation:

Time = O(V lgV + E lgV) = O(E lgV)

Q T(extractMin)

T(modifyKey) Total

array O(V) O(1) O(V 2)

binary heap

O(lg V) O(lg V) O(E lgV )

Fibonacci heap

O(lg V) O(1) amortized

O(V lgV +E )

Page 17: November 13, 20031 Algorithms and Data Structures Lecture XII Simonas Šaltenis Aalborg University simas@cs.auc.dk.

November 13, 2003

17

Greedy Algorithms

One more algorithm design technique Greedy algorithms can be used to

solve optimization problems, if: There is an optimal substructure We can prove that a greedy choice at

each iteration leads to an optimal solution.

Page 18: November 13, 20031 Algorithms and Data Structures Lecture XII Simonas Šaltenis Aalborg University simas@cs.auc.dk.

November 13, 2003

18

Kruskal's Algorithm

Edge based algorithm Add the edges one at a time, in

increasing weight order The algorithm maintains A – a forest

of trees. An edge is accepted it if connects vertices of distinct trees (the cut respects A)

Page 19: November 13, 20031 Algorithms and Data Structures Lecture XII Simonas Šaltenis Aalborg University simas@cs.auc.dk.

November 13, 2003

19

Disjoint-Set ADT

We need a Disjoint-Set ADT that maintains a partition, i.e., a collection S of disjoint sets. Operations: makeSet(x:Vertex): SetID

S S {{x}} union(x:Vertex, y:Vertex) –

X S.findSet(x) Y S.findSet(y) S S – {X, Y} {X Y}

findSet(x:Vertex): SetID returns unique X S, where x X

Page 20: November 13, 20031 Algorithms and Data Structures Lecture XII Simonas Šaltenis Aalborg University simas@cs.auc.dk.

November 13, 2003

20

Kruskal's Algorithm

The algorithm keeps adding the cheapest edge that connects two trees of the forestMST-Kruskal(G)01 A 02 S.init() // Init disjoint-set ADT03 for each vertex v G.V()04 S.makeSet(v)05 sort the edges of G.E() by non-decreasing G.w(u,v)06 for each edge (u,v) E, in sorted order do07 if S.findSet(u) S.findSet(v) then08 A A {(u,v)}09 S.union(u,v)10 return A

Page 21: November 13, 20031 Algorithms and Data Structures Lecture XII Simonas Šaltenis Aalborg University simas@cs.auc.dk.

November 13, 2003

21

Kruskal’s Example

Let’s do an example:

H

B C

I

A

D

G

F E

Let’s keep track: What is set A, what is a collection S ,

what cuts are we making

1

68

4

12

8

3

6

5 3

4 13 9

10

Page 22: November 13, 20031 Algorithms and Data Structures Lecture XII Simonas Šaltenis Aalborg University simas@cs.auc.dk.

November 13, 2003

22

Disjoint Sets as Lists

Each set – a list of elements identified by the first element, all elements in the list point to the first element

Union – add a smaller list to a larger one FindSet: O(1), Union(u,v): O(min{|C(u)|, |C(v)|})

1 2 3 A B C

4

1 2 3 A B C

4

Page 23: November 13, 20031 Algorithms and Data Structures Lecture XII Simonas Šaltenis Aalborg University simas@cs.auc.dk.

November 13, 2003

23

Kruskal Running Time Initialization O(V) time Sorting the edges (E lg E) = (E lg V) (why?) O(E) calls to FindSet Union costs

Let t(v) be the number of times v is moved to a new cluster

Each time a vertex is moved to a new cluster the size of the cluster containing the vertex at least doubles: t(v) log V

Total time spent doing Union Total time: O(E lg V)

( ) logv V

t v V V

Page 24: November 13, 20031 Algorithms and Data Structures Lecture XII Simonas Šaltenis Aalborg University simas@cs.auc.dk.

November 13, 2003

24

Next Lecture

Shortest Paths in Weighted Graphs


Recommended