Download Approximation Algorithms

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
Introduction to Algorithms
Minimum Spanning Trees
My T. Thai @ UF
Problem
 Find a low cost network connecting a
set of locations
 Any pair of locations are connected
 There is no cycle
 Some applications:
 Communication networks
 Circuit design
…
My T. Thai
mythai@cise.ufl.edu
2
Minimum Spanning Tree (MST) Problem
 Input: Undirected, connected graph G=(V, E),
each edge (u, v)  E has weight w(u, v)
 Output: acyclic subset T  E that connects all
of the vertices with minimum total weight
w(T) = (u,v)T w(u,v)
Bold edges form a
Minimum Spanning
Tree
My T. Thai
mythai@cise.ufl.edu
3
Growing a minimum spanning tree
 Suppose A is a subset of some MST
 Iteratively add safe edge (u,v) s.t. A  {(u,v)} is
still a subset of some MST
 Generic algorithm:
Key problem:
How to find
safe edges?
Note: MST has
|V|-1 edges
My T. Thai
mythai@cise.ufl.edu
4
Some definitions
 A cut (S, V - S) is a partition of vertices into
disjoint sets S and V - S
 An edge crosses the cut (S, V - S) if it has one
end point in S, one end point in V - S
 A cut respects a set A of edges if and only if no edge in A
crosses the cut, e.g. A is the set of bold edges
My T. Thai
mythai@cise.ufl.edu
5
Some definitions
 An edge is a light edge crossing a cut if and
only if its weight is minimum over all edges
crossing the cut, e.g. edge (c, d)
 Observation: Any MST has at least one edge
connect S and V – S => one cross edge is safe
for A
My T. Thai
mythai@cise.ufl.edu
6
Find a safe edge
Proof: Let T be a MST that includes A
 Case 1: (u, v)  T => done.
 Case 2: (u, v) not in T:
 Exist edge (x, y) T cross the cut, (x, y) A
 Removing (x, y) breaks T into two components.
 Adding (u, v) reconnects 2 components
 T´ = T - {(x, y)}  {(u, v)} is a spanning tree
 w(T´) = w(T) - w(x, y) + w(u, v)  w(T) => T’ is a MST => done
My T. Thai
mythai@cise.ufl.edu
7
Corollary
 In GENERIC-MST
 A is a forest containing connected components.
Initially, each component is a single vertex.
 Any safe edge merges two of these components into
one. Each component is a tree.
My T. Thai
mythai@cise.ufl.edu
8
Kruskal’s Algorithm
 Starts with each vertex in its own component
 Repeatedly merges two components into one by
choosing a light edge that connects them (i.e., a
light edge crossing the cut between them)
 Scans the set of edges in monotonically increasing
order by weight.
 Uses a disjoint-set data structure to determine
whether an edge connects vertices in different
components
My T. Thai
mythai@cise.ufl.edu
9
Disjoint-set data structure
 Maintain collection S = {S1, . . . , Sk} of disjoint dynamic
(changing over time) sets
 Each set is identified by a representative, which is some
member of the set
 Operations:
 MAKE-SET(x): make a new set Si = {x}, and add Si to S
 UNION(x, y): if x ∈ Sx , y ∈ Sy, then S ← S − Sx − Sy ∪ {Sx ∪ Sy}

Representative of new set is any member of Sx ∪ Sy, often the
representative of one of Sx and Sy.

Destroys Sx and Sy (since sets must be disjoint).
 FIND-SET(x): return representative of set containing x
 In Kruskal’s Algorithm, each set is a connected component
My T. Thai
mythai@cise.ufl.edu
10
Pseudo code
 Running time: O(E lg V) (
is E is sorted)
 First for loop: |V| MAKE-SETs
 Sort E: O(E lg E) - O(E lg V)
 Second for loop:
(o(E log V) (chapter 21)
My T. Thai
mythai@cise.ufl.edu
11
Example
My T. Thai
mythai@cise.ufl.edu
12
My T. Thai
mythai@cise.ufl.edu
13
Prim’s Algorithm
 Builds one tree, so A
always a tree
 Starts from an
arbitrary “root” r
 At each step, find a
light edge crossing cut
(VA, V − VA), where VA
= vertices that A is
incident on. Add this
edge to A.
My T. Thai
mythai@cise.ufl.edu
14
Prim’s Algorithm
 Uses a priority queue Q to find a light edge
quickly
 Each object in Q is a vertex in V - VA
 Key of v is minimum weight of any edge (u, v),
where u  VA
 Then the vertex returned by Extract-Min is v such
that there exists u  VA and (u, v) is light edge
crossing (VA, V – VA)
 Key of v is  if v is not adjacent to any vertex in
VA
My T. Thai
mythai@cise.ufl.edu
15
Running time: O(E lgV)
 Using binary heaps to
implement Q
 Initialization: O(V)
 Building initial queue : O(V)
 V Extract-Min’s : O(V lgV)
 E Decrease-Key’s : O(E lgV)
Note: Using Fibonacci heaps can
save time of Decrease-Key
operations to constant (chapter
19) => running time: O(E + V
lg V)
My T. Thai
mythai@cise.ufl.edu
16
Example
My T. Thai
mythai@cise.ufl.edu
17
My T. Thai
mythai@cise.ufl.edu
18
Summary
 MST T of connected undirect graph G = (V, E):





Is a subgraph of G
Connected
Has V vertices, |V| -1 edges
There is exactly 1 path between a pair of vertices
Deleting any edge of T disconnects T
 Kruskal’s algorithm connects disjoint sets of
connects vertices until achieve a MST
 Run nearly linear time if E is sorted:
My T. Thai
mythai@cise.ufl.edu
19
Summary
 Prim’s algorithm starts from one vertex and
iteratively add vertex one by one until achieve a
MST
 Faster than Kruskal’s algorithm if the graph is
dense O(E + V lg V) vs O(E lg V)
My T. Thai
mythai@cise.ufl.edu
20