+ All Categories
Home > Documents > CSE 2331/5331

CSE 2331/5331

Date post: 31-Dec-2015
Category:
Upload: brianna-meyer
View: 44 times
Download: 0 times
Share this document with a friend
Description:
CSE 2331/5331. Topic 11: Basic Graph Alg. RepresentationsUndirected graph Directed graph Topological sort. a. b. c. d. e. f. What Is A Graph. Graph G = (V, E) V: set of nodes E: set of edges. Example: V ={ a, b, c, d, e, f } - PowerPoint PPT Presentation
Popular Tags:
23
CSE 2331 / 5331 CSE 2331/5331 Topic 11: Minimum Spanning Tree
Transcript

CSE 2331 / 5331

CSE 2331/5331

Topic 11:

Minimum Spanning

Tree

Edge-weighted un-directed graph G = (V, E) and edge weight function E.g, road network, where each node is a city, and each

edge is a road, and weight is the length of this road.

CSE 2331 / 5331

3 5ba

f

c

d e

1 1

42

11 2

A Tree

An undirected graph G = (V, E) is a tree if: G is connected, and there is no cycle

Equivalently, an undirected graph G = (V, E) is a tree if: G is connected, and

One key property: Given a tree T on nodes V, if we add any edge to T, it

will create a cycle. That is, contains a cycle for any .

CSE 2331 / 5331

A Spanning Tree

A spanning tree T of an undirected graph G = (V, E) is a tree that includes all vertices V of G

Weight of a spanning tree T:

where is the weight function on edges of G A minimum spanning tree of G

is a spanning tree with smallest weight.

CSE 2331 / 5331

If G is not connected, then no spanningtree exists.

Examples

CSE 2331 / 5331

Is minimum spanning tree unique?

CSE 2331 / 5331

MST

MST for given G may not be unique

Since MST is a spanning tree: # edges : |V| - 1

If the graph is unweighted: All spanning trees have same weight

Key Property of MST

Given a MST of , let be any edge in but not in The following then holds: There is a unique cycle C containing e in . is an edge with largest weight in C.

Sketch of proof: Why unique? If does not have largest weight, let be an edge with

largest weight in C. is a spanning tree of G cannot be MST. Contradiction e must have largest weight in C.

CSE 2331 / 5331

Construct MST

Input: An undirected graph G = (V, E) with weight

Output: A minimum spanning tree MST(G) of G.

CSE 2331 / 5331

A MST T is V-1 number of edges that connect all nodes, with no cycle.

Intuitively, we will choose “safe” edges to incrementally build T

Example

How to choose the first edge that is “safe”, namely, it must be in some MST?

Note, it is some, not all !

CSE 2331 / 5331

Intuition

Intuitively, Incrementally grow a sub-tree connecting a subset of nodes At the beginning of each iteration, is a sub-tree of some MST of G At each iteration, grow to include one more vertex

Such that is still a sub-tree of some MST of G

CSE 2331 / 5331

Input: An undirected graph G = (V, E) with weight

Output: A minimum spanning tree MST(G) of G.

Prim’s MST Algorithm: High-level

: unconnected vertices : vertices connected by current partial tree

CSE 2331 / 5331

Example

Greedy algorithm Break ties arbitrarily

CSE 2331 / 5331

MST Theorem

CSE 2331 / 5331

Key to the correctness of PrimMST algorithm. Invariance:

each time PrimMST() algorithm grows the partial tree (i.e, adds another edge to it), the invariance is that the new tree is still a subtree of some minimum spanning tree of input graph G. Termination:

when all nodes are connected, we obtain a MST of G.

MST Theorem:Let T be a sub-tree of a minimum spanning tree.

If e is a minimum weight edge connecting T to some vertex not in T, then is a subtree of a minimum spanning tree.

Proof of MST Theorem

By the theorem’s hypothesis, T is a subtree of some MST A of G.

If e is not an edge of A, then contains a cycle. Let be this cycle. There must exists some edge from T to a

vertex not in T. Since e is a minimum weight edge from T to vertices not in

T, . Replacing by e gives a new tree such that . . So is also a subtree of some MST. Done.

CSE 2331 / 5331

Naive Implementation of Prim’s MST

Naïve implementation: linear scan all edges to identify min-weight edge at each iteration

Total time complexity:

CSE 2331 / 5331

First Improvement of Implementation

Storing costs at vertices Each unvisted vertex in maintain the smallest weight-

edge to visited vertices

CSE 2331 / 5331

First Improvement: Cost at Vertices

CSE 2331 / 5331

Analysis

Time to update cost at each vertex at each iteration (in the While-loop): Line 6: Lines 8—13:

Total time complexity:

CSE 2331 / 5331

Second Improvement: Efficient Update

Consider Line 6 of previous implementation We spend linear time to identify the vertex with

smallest cost from Can we do better? What operations do we need to support?

extracting the smallest value from a set, updating the cost of some vertices

The cost can only decrease !

CSE 2331 / 5331

Use a min-priority queue!

Second Improvement: Priority Queue

CSE 2331 / 5331

Analysis:

We use min-heap to implement the priority queue The maximum size of Q is V # iterations of While-loop?

V # iterations of each call of the inner for-loop?

Total #times lines 7—10 are executed:

CSE 2331 / 5331

Analysis cont.

Q.insert: Total #: V Total cost:

Q.IsNotEmpty and Q.MinKey: Total #: V Total cost: O(V)

Q.DeleteMin Total #: V Total cost:

CSE 2331 / 5331

Q.DecreaseKey Total #: 2E Total cost: ( lg )𝑂 𝐸 𝑉

Q.Contains and Q.Key Total #: 2E Total cost:

Total time complexity:

Remarks

Prim’s algorithm is a greedy algorithm The choice of the minimum-weight edge at each

iteration One can use even more efficient Priority-Queue

implementation, based on the Fibonacci Heap

There are many possible MST algorithms Another popular one is Kruskal Algorithm, which also

runs in time

CSE 2331 / 5331


Recommended