optimization trees
TRANSCRIPT
EMIS 8374
Optimal Treesupdated 25 April 2006
slide 2
Minimum Spanning Tree (MST)
• Input– A (simple) graph G = (V,E)– Edge cost cij for each edge e E
• Optimization Problem– Find a minimum-cost spanning tree
• Spanning tree: a set of |V|-1 edges T such that each vertex is incident to at least one edge in T, and T contains no cycles.
slide 3
MST Example: Input
1
32
5 4
3
2
6
75
4
1
slide 4
MST Example: Some Feasible Spanning Trees
1
32
5 4
36
71
1
32
5 42
741
1
32
5 4
3
2
6
5
1
32
5 42
6
71
cost = 14 cost = 16
cost = 16cost = 17
slide 5
MST Example: Optimal Solution
1
32
5 4
3
2
6
1
cost = 12
slide 6
MST Optimality Conditions: Path Optimality
1
32
5 4
3
2
6
75
4
1
c25 > c12
c25 > c15
c24 > c12
c24 > c15
c24 > c45
c34 > c23
c34 > c12
c34 > c15
c34 > c45
slide 7
Path Optimality Condition
• A spanning tree T is a minimum spanning tree if and only for every out-of-tree edge (i,j), cij cuv for every in-tree edge (u,v) on the path from i to j in T .
• This is clearly a necessary condition for a MST. If an out-of-tree edge (i, j) has a lower cost than any in-tree edge (u,v) on the path from i to j in T, then we can improve T by replacing edge (u,v) with edge (i, j).
slide 8
Path Optimality: Necessity
1
32
5 4
3
2
6
5
1
Replacing in-tree edge (2,4) with out-of-tree edge (4,5) would decrease the cost of this tree. Therefore, it cannot be optimal.
slide 9
MST Optimality Conditions: Cut Optimality
1
32
5 4
3
2
6
1
Removing an in-tree edge (u,v) creates a cut in the tree.For any out-of-tree edge (i,j) crossing the cut cij cuv.
75
4
c25 >c12
c24 > c12
c45 > c12
slide 10
Cut Optimality
• Given a spanning tree T, let C[u,v] be the set of edges in the cut formed by removing in-tree edge (u, v) from T.
• A spanning tree T is a MST if and only if every in-tree edge is a minimum cost edge in C[u,v].
slide 11
Cut Optimality: Necessity
1
32
5 4
3
2
6
1
The in-tree edge (2, 4) is not a minimum cost edge in the cut formed by removing it from T.
75
4
If we remove in-tree edge (2, 4), we can restore connectivity by adding out-of-tree edge (4, 5).
slide 12
Cut Optimality: Necessity
1
32
5 4
36
1
54
If we remove in-tree edge (2, 4), we can restore connectivity by adding out-of-tree edge (4, 5).
Since the resulting tree has a lower total cost, the first tree could not have been optimal.
slide 13
Sufficiency of Cut and Path Optimality
• It is easy to see that any MST must satisfy the cut and path optimality conditions.
• If a tree T happens to satisfy these conditions, does that imply that T is a MST?
slide 14
4
5
2
1
Sufficiency of Cut Optimality
3
G 4
5
2
1
3
T*
4
5
2
1
3
TC • Let T* be a MST of G.• Suppose that TC satisfies the cut optimality condition.• Show that TC is also a MST.
slide 15
4
5
2
1
Sufficiency of Cut Optimality
3
T*
4
5
2
1
3
TC
Since T* is a MST, it must satisfy the path optimality condition.So, c25 c24 (and c25 c45).
Since TC satisfies the cut optimality condition, c25 c24 (and c25 c35 ).
This implies c25 = c24.
Replacing (2,4) with (2,5) in T* creates a new MST, T**.
slide 16
4
5
2
1
Sufficiency of Cut Optimality
3
T**
4
5
2
1
3
TC
Since T** is a MST, it must satisfy the path optimality condition.So, c23 c35 (and c23 c25).
Since TC satisfies the cut optimality condition, c23 c35 (and c25 c13 ).
This implies c23 = c35.
Replacing (3,5) with (2,3) in T** creates a new MST, T***.
slide 17
4
5
2
1
Sufficiency of Cut Optimality
3
T***
4
5
2
1
3
TC
Since TC is identical to T***, it is optimal.
This argument can be formalized to apply to the general case and show that any tree that satisfies the cut optimality condition must be optimal.
Thus, cut optimality is a sufficient condition for a tree to be a MST.
slide 18
Kruskal’s Algorithm (Path Optimality)
F := ET := {}Repeat Until |T| = |V| - 1 Begin
Select (i,j) F such that cij = min(cuv: (u,v) F)F := F \ {(i,j)}If T {(i,j)} does not contain a cycle then
T := T {(i,j)}End
Can be implemented in O(|E|+|V| log |V}) time plus the time for sorting the edges.
slide 19
Kruskal’s Algorithm: Example 1
1
42
3 5
3
2
6
75
4
1
slide 20
Testing for Cycles
• Let GT be the subgraph of G induced by the set of edges in T.
• As edges are added to T, the algorithm creates a forest (i.e., a collection of trees).
• Each tree in the forest forms a connected component of GT.
• By keeping track of which component each node is in, we can quickly, and easily determine whether or not adding a new edge to T will create a cycle.
slide 21
Testing for CyclesInitialize component[i] = 0 for all i V.When edge (i,j) is inspected, there are 5 cases to
1. component[i] = component[j] = 0Add (i,j) to T; (i,j) becomes a new component of GT.
2. component[i] = 0, component[j] > 0.Add (i,j) to T; vertex i will go into the same component as j.
3. component[i] > 0, component[j] = 0.Add (i,j) to T; vertex j will go into the same component as i.
4. component[i] > 0, component[j] > 0, component[i] component[j]
Add (i,j) to T; merge components.5. component[i] = component[j] > 0
Adding (i,j) would create a cycle.
slide 22
Kruskal’s Algorithm: Example 2
1
42
3 5
2
2
4
15
3
6
slide 23
Kruskal’s Algorithm: Example 2
1
42
3 5
2
2
4
15
3
6
1
1
2
2
2(2, 3) creates a cycle because vertices 2 and 3 are in the same connected component.
slide 24
Kruskal’s Algorithm: Example 2
1
42
3 5
2
2
4
15
3
6
1
1
2
2
2(2, 4) does not create a cycle because vertices 2 and 4 are in different connected components.
slide 25
Kruskal’s Algorithm: Example 2
1
42
3 5
2
2
4
15
3
6
2
2
2
2
2Merge components 1 and 2.
slide 26
Prim’s Algorithm (Cut Optimality)
Choose any node v in V.S1 := {v}T := {}k := 1Repeat Until |T| = |V| - 1
BeginSelect a minimum cost edge (i,j) in the cut [Sk,V\{Sk}]T := T {(i,j)} If i Sk then Sk+1 := Sk {j}Else If j Sk then Sk+1 := Sk {i}
k := k+1End
Can be implemented in O(|E|+|V| log |V}) time.
slide 27
Prim’s Algorithm
1
42
3 5
2
2
4
15
3
6
S1 = {3}S2 = {1,3}
slide 28
Prim’s Algorithm
1
42
3 5
2
2
4
15
3
6
S3 = {1, 2, 3}S2 = {1,3}
slide 29
Prim’s Algorithm
1
42
3 5
2
2
4
15
3
6
S3 = {1, 2, 3}S4 = {1, 2, 3, 4}
slide 30
Prim’s Algorithm
1
42
3 5
2
2
4
15
3
6
S4 = {1, 2, 3, 4}
S5 = {1, 2, 3, 4, 5}
slide 31
Directed Spanning Tree (DST)
• Input– A network (directed graph) G = (N,A)– Arc cost cij for each edge arc (i,j) A– A designated root node s N
• Optimization Problem– Find a minimum-cost directed-out tree T = (N, A*)
rooted at node s.• Directed-Out Tree: T = (N, A*) contains a unique, directed
path from s to every other node in N (every other node in the tree has in-degree = 1).
slide 32
Is DST a (Pure) Network Flow Problem?
• Suggestion:– Let b(s) = |N| - 1– Let b(i) = -1 for i in N\{s}– Let ij = 0
– Let uij = |N|– Each node gets 1 unit of flow– Total cost of flow is minimized– Arcs carrying flow form a directed spanning tree
slide 33
DST Example
1
32
5 4
10
5
10
1
5
s