Minimum cost spanning tree

Similar documents
The minimum cost spanning tree problem

Minimum-Spanning-Tree problem. Minimum Spanning Trees (Forests) Minimum-Spanning-Tree problem

Advanced algorithms. topological ordering, minimum spanning tree, Union-Find problem. Jiří Vyskočil, Radek Mařík 2012

Minimum Spanning Trees My T. UF

III Optimal Trees and Branchings

Decreasing a key FIB-HEAP-DECREASE-KEY(,, ) 3.. NIL. 2. error new key is greater than current key 6. CASCADING-CUT(, )

1 Minimum Spanning Trees (MST) b 2 3 a. 10 e h. j m

CS261: Problem Set #2

Chapter 23. Minimum Spanning Trees

Minimum spanning trees

Dijkstra s algorithm for shortest paths when no edges have negative weight.

Algorithms for Minimum Spanning Trees

2.2 Optimal cost spanning trees

CSC 8301 Design & Analysis of Algorithms: Kruskal s and Dijkstra s Algorithms

Week 12: Minimum Spanning trees and Shortest Paths

23.2 Minimum Spanning Trees

Minimum Spanning Trees

Graphs and Network Flows IE411. Lecture 21. Dr. Ted Ralphs

Minimum Spanning Trees

We ve done. Introduction to the greedy method Activity selection problem How to prove that a greedy algorithm works Fractional Knapsack Huffman coding

5 MST and Greedy Algorithms

5 MST and Greedy Algorithms

Greedy Algorithms. At each step in the algorithm, one of several choices can be made.

Polynomial time approximation algorithms

22 Elementary Graph Algorithms. There are two standard ways to represent a

CIS 121 Data Structures and Algorithms Minimum Spanning Trees

CS 6783 (Applied Algorithms) Lecture 5

Recitation 13. Minimum Spanning Trees Announcements. SegmentLab has been released, and is due Friday, November 17. It s worth 135 points.

These are not polished as solutions, but ought to give a correct idea of solutions that work. Note that most problems have multiple good solutions.

CSC 1700 Analysis of Algorithms: Minimum Spanning Tree

What is a minimal spanning tree (MST) and how to find one

Algorithms and Theory of Computation. Lecture 5: Minimum Spanning Tree

Algorithms and Theory of Computation. Lecture 5: Minimum Spanning Tree

Announcements Problem Set 5 is out (today)!

CSE331 Introduction to Algorithms Lecture 15 Minimum Spanning Trees

22 Elementary Graph Algorithms. There are two standard ways to represent a

Problem set 2. Problem 1. Problem 2. Problem 3. CS261, Winter Instructor: Ashish Goel.

Linear programming and duality theory

COMP 355 Advanced Algorithms

Minimum Spanning Trees. Minimum Spanning Trees. Minimum Spanning Trees. Minimum Spanning Trees

Week 11: Minimum Spanning trees

Steiner Trees and Forests

Advanced Algorithms Class Notes for Monday, October 23, 2012 Min Ye, Mingfu Shao, and Bernard Moret

Algorithms and Data Structures: Minimum Spanning Trees (Kruskal) ADS: lecture 16 slide 1

UC Berkeley CS 170: Efficient Algorithms and Intractable Problems Handout 8 Lecturer: David Wagner February 20, Notes 8 for CS 170

Chapter 9. Greedy Technique. Copyright 2007 Pearson Addison-Wesley. All rights reserved.

Minimum-Cost Spanning Tree. Example

managing an evolving set of connected components implementing a Union-Find data structure implementing Kruskal s algorithm

Example. Minimum-Cost Spanning Tree. Edge Selection Greedy Strategies. Edge Selection Greedy Strategies

Greedy Algorithms Part Three

Algorithm Design (8) Graph Algorithms 1/2

Theory of Computing. Lecture 10 MAS 714 Hartmut Klauck

CSE 521: Design and Analysis of Algorithms I

Definition: A graph G = (V, E) is called a tree if G is connected and acyclic. The following theorem captures many important facts about trees.

Network optimization: An overview

CSE 431/531: Analysis of Algorithms. Greedy Algorithms. Lecturer: Shi Li. Department of Computer Science and Engineering University at Buffalo

Elementary Graph Algorithms: Summary. Algorithms. CmSc250 Intro to Algorithms

Undirected Graphs. DSA - lecture 6 - T.U.Cluj-Napoca - M. Joldos 1

Constructive and destructive algorithms

CSE 21 Mathematics for Algorithm and System Analysis

Design and Analysis of Algorithms

Approximation Algorithms: The Primal-Dual Method. My T. Thai

Minimum Spanning Tree (5A) Young Won Lim 5/11/18

Chapter 4. Greedy Algorithms. Slides by Kevin Wayne. Copyright 2005 Pearson-Addison Wesley. All rights reserved.

CS 341: Algorithms. Douglas R. Stinson. David R. Cheriton School of Computer Science University of Waterloo. February 26, 2019

Computer Science & Engineering 423/823 Design and Analysis of Algorithms

2 A Template for Minimum Spanning Tree Algorithms

Undirected Graphs. Hwansoo Han

The minimum spanning tree problem

Graph Algorithms (part 3 of CSC 282),

CSE 431/531: Algorithm Analysis and Design (Spring 2018) Greedy Algorithms. Lecturer: Shi Li

6.1 Minimum Spanning Trees

Minimum Spanning Trees

Minimum Spanning Tree

Notes on Minimum Spanning Trees. Red Rule: Given a cycle containing no red edges, select a maximum uncolored edge on the cycle, and color it red.

K 4 C 5. Figure 4.5: Some well known family of graphs

UNIT 3. Greedy Method. Design and Analysis of Algorithms GENERAL METHOD

Spanning Trees. Lecture 20 CS2110 Spring 2015

CS 5321: Advanced Algorithms Minimum Spanning Trees. Acknowledgement. Minimum Spanning Trees

Graphs and Network Flows ISE 411. Lecture 7. Dr. Ted Ralphs

Representations of Weighted Graphs (as Matrices) Algorithms and Data Structures: Minimum Spanning Trees. Weighted Graphs

Greedy Algorithms. Textbook reading. Chapter 4 Chapter 5. CSci 3110 Greedy Algorithms 1/63

Lecture 7. s.t. e = (u,v) E x u + x v 1 (2) v V x v 0 (3)

Kruskal s MST Algorithm

Minimum Spanning Trees

Lecture 4: Graph Algorithms

Sources for this lecture 2. Shortest paths and minimum spanning trees

Introduction to Optimization

CS 561, Lecture 9. Jared Saia University of New Mexico

Repetition: Primal Dual for Set Cover

COP 4531 Complexity & Analysis of Data Structures & Algorithms

Lecture 19. Broadcast routing

CS599: Convex and Combinatorial Optimization Fall 2013 Lecture 14: Combinatorial Problems as Linear Programs I. Instructor: Shaddin Dughmi

Randomized Graph Algorithms

Chapter 4. Greedy Algorithms. Slides by Kevin Wayne. Copyright 2005 Pearson-Addison Wesley. All rights reserved.

Minimum Spanning Trees

7.3 Spanning trees Spanning trees [ ] 61

Minimum Spanning Trees

Index. stack-based, 400 A* algorithm, 325

Assignment # 4 Selected Solutions

Transcription:

Minimum cost spanning tree Doctoral course Optimization on graphs - Lecture 2.2 Giovanni Righini January 15 th, 2013

Definitions - 1 A graph G = (V,E) is a tree if and only if it is connected and acyclic. Connectivity: for each cut, at least one edge belongs to the tree. Acyclicity: for each cycle, at least one edge does not belong to the tree. Given a G = (V,E) a subset F E is: a forest if it does not contain cycles; a connector if (V,F) is connected; a spanning tree if (V,F) is a tree; a maximal forest if there is no forest containing it.

Definitions - 2 A graph G = (V,E) has a spanning tree if and only if it is connected. Given a connected graph G = (V,E), F is a spanning tree if and only if: F is a maximal forest; F is a minimal connector; F is a forest with F = V 1 edges; F is a connector with F = V 1 edges.

Definitions - 3 Given a graph G = (V,E) with k connected components, every maximal forest in it has V k edges. It forms a spanning tree in each connected component of G. Every maximal forest is also a maximum cardinality forest. Analogously every connector contains a connector of minimum cardinality.

The Minimum Spanning Tree Problem Let G = (V,E) be a connected graph. Let c : E R a cost function. We define F E: c(f) := e F c e Problem (Minimum Spanning Tree Problem). Find a spanning tree of minimum cost in G.

Properties Definition. F is a good forest if it belongs to a minimum cost spanning tree. Theorem. Given a good forest F and given an edge e F, F {e} is a good forest if and only if there is a cut C disjoint from F such that e is the edge with minimum cost in C.

Proof - 1 Necessity. Let T be a minimum cost spanning tree containing F {e}. Let C be the (unique) cut disjoint from T \{e}. Consider any edge f C. The edge set T = T \{e} {f} is a spanning tree. Since T is optimal, c(t ) c(t ) and then c e c f. Therefore e is an edge of minimum cost in C. C e f F e T*

Proof - 2 Sufficiency. Let T be a minimum cost spanning tree containing F. Let P the (unique) path in T between the two endpoints of edge e. P must contain at least one edge f C, where C is a cut disjoint from F. Hence T = T \{f} {e} is also a spanning tree. Since c e c f we have c(t ) c(t ). Then T is also a minimum cost spanning tree. Since F {e} is contained in T, it is a good forest. P e C f F T*

A mathematical programming model (A) min z = e E c e x e s.t. e δ(s) x e {0, 1} x e 1 S V (1) e E A cut δ(s) is the subset of edges with one endpoint in S. Constraints 1 impose connectivity. Acyclicity comes for free from cost minimization. Integrality conditions are redundant.

The dual model (A) min z = e E c e x e s.t. x e 1 e δ(s) x e 0 S V e E This linear program has a dual. max w = S V y S s.t. y S c e S V:e δ(s) y S 0 e E S V

Complementary slackness conditions (A) Primal C.S.C.: x e (c e S V:e δ(s) y S) = 0 e E Dual C.S.C.: y S ( e δ(s) x e 1) = 0 S V The initial primal solution x e = 0 e E is primal infeasible (and super-optimal): all connectivity constraints are violated. The corresponding dual solution y S = 0 S V is dual feasible (and sub-optimal).

Another mathematical programming model (B) min z = e E c e x e s.t. e E x e = n 1 (2) e E(S) x e {0, 1} x e S 1 S V (3) e E E(S) is the edge subset of the subgraph induced by S. Constraints 3 impose acyclicity instead of connectivity. Hence we also need constraint 2 to impose connectivity. Integrality conditions are redundant.

The dual model (B) min z = e E c e x e s.t. e E x e = n 1 x e ( S 1) e E(S) x e 0 This linear program has a dual: S V e E max w = S V( S 1)y S +(n 1)y V s.t. y S + y V c e S V:e E(S) y S 0 y V free e E S V

Complementary slackness conditions (B) Primal C.S.C.: x e (c e + y S y V ) = 0 e E. S V:e E(S) Dual C.S.C.: y V ( e E x e (n 1)) = 0. y S ( S 1 e E(S) x e ) = 0 S V. The initial primal solution x e = 0 e E is primal infeasible (and super-optimal): the cardinality constraint is violated. The initial dual solution y S = y V = 0 S V is dual feasible (and sub-optimal).

Algorithms All MSTP algorithms exploit the previous theorem. The idea is to start with an empty (good) forest F and to extend it iteratively with an edge satisfying the theorem requirement, i.e. an edge of minimum cost in a cut C disjoint from F. Different algorithms are obtained by different choices of C. The two most common algorithms are Jarnik (1930), Kruskal (1956), Prim (1957), Dijkstra (1959): C is the cut that separates the connected component including a predefined vertex; Kruskal (1956), Loberman e Weinberger (1957), Prim (1957): C is the cut that separates the two connected components including the endpoints of the minimum cost edge e in a sorted list. Both algorithms can be seen as dual ascent algorithms.

Prim algorithm (1957) begin T := ; z:=0; for v:=1 to n do flag[v]:=0; flag[r]:=1; for v:=1 to n do cost[v]:=c[r, v]; pred[v]:=r; for k:=1 to n 1 do mincost:= ; for v:=1 to n do if (flag[v] = 0) and (cost[v] < mincost) then v:=v; mincost:=cost[v]; T :=T {[pred[v], v]}; z:=z + mincost; flag[v] := 1; for v:=1 to n do if (flag[v] = 0) and (c[v, v] < cost[v]) then pred[v] := v; cost[v]:=c[v, v]; end The complexity is O(n 2 ). With 2-heaps it is possible to obtain O(m + log n). With Fibonacci heaps it is possible to obtain O(m+n log n).

Kruskal algorithm (1956) begin T := ; z:=0; E:=E; Sort E by non-decreasing edge costs; for v:=1 to n do List[v]:={v}; head[v]:=v; card[v]:=1; while T < n 1 do [u, v]:=argmin e E {c e }; E:=E\{[u, v]}; if (head[u] head[v]) then T :=T {[u, v]}; z:=z + c[u, v]; if (card[v] > card[u]) then Swap (u, v); L[u] := L[u] L[v]; card[u] := card[u]+card[v]; for i L[v] do head[i] := head[u]; end

Kruskal algorithm (1956) Sorting the edges requires O(m log n). After sorting the complexity is O(m + n log n) and it can be obtained with linked lists. A list L is associated with each component of the current forest. For each vertex v V, let head(v) be the head of the list L v which v belongs to. Initially head(v):=v and L v :={v} for all vertices. At each iteration: it is necessary to test whether the next edge e = [u, v] in the list would close a cycle or not; if not, the data-structure must be updated.

Kruskal algorithm complexity The test is: head(u) = head(v)? It is executed in constant time at most m times. Hence it requires O(m) overall. When extending the current forest with e = [u, v], the shortest list among L u and L v (detectable in O(1) with an items counter associated with each list) is appended to the longest one (in O(1)). The head of the list is updated: head(u ) := head(v) for every u L u in O(n). No vertex can belong to the shortest list more than log n times, because the size of the shortest list at least doubles every time. Therefore the update operation requires at most O(log n) for each node, i.e. O(n log n) overall.

Boruvka algorithm (1926) It requires that all edge costs are different from each other and it allows for a parallel implementation. F:= ; while ( F < n 1) do For each component K of F Select e := argmin f δ(k) {c f }; F := F {e}; F remains a good forest after each iteration. Let e 1, e 2,...,e k the edges inserted into F with c e1 < c e2 <... < c ek. For each i = 1,...,k, e i is the minimum cost edge leaving F {e 1, e 2,...,e i 1 }, because none of {e 1, e 2,...,e i 1 } leaves component K i. Then F remains a good forest as if the edges would have been inserted sequentially.

Dual greedy algorithm It deletes edges from a connector instead of inserting them into a forest. Definition. A connector is good if it contains at least one minimum cost spanning tree. Theorem. Given a good connector K and an edge e K, K\{e} is a good connector if and only if K contains a cycle C such that e is the maximum cost edge in C. Kruskal (1956): sort the edges and starting from the connector K = E, iteratively delete the maximum cost edge which is not a bridge (i.e. without disconnecting the graph).

More algorithms Dijkstra algorithm (1960): Arbitrarily sort the edges and iteratively insert them into a forest (initially empty). When an edge which forms a cycle C is inserted, delete the maximum cost edge in C. Kalaba algorithm (1960): The same, but starting from an arbitrary spanning tree.

Dual ascent A dual ascent algorithm starts from a pair (x, y) of primal infeasible and dual feasible solutions and it iteratively does the following: Dual iteration: a violated primal constraint is selected; the corresponding dual variable y S is increased as much as possible, until a dual constraint becomes active; it corresponds to a primal variable x e ; Primal iteration: the corresponding primal variable x e enters the basis (is set to 1), repairing the infeasibility of the selected primal constraint. These two steps are repeated until primal feasibility is achieved. A primal solution and a dual solution are kept during the algorithm and they correspond to one another through complementary slackness conditions.

Model A: dual ascent A dual ascent algorithm based on model A iteratively does the following: Dual iteration: a cut (S, S) for which e δ(s) x e = 0, is selected; the corresponding dual variable y S is increased as much as possible, to activate a dual constraint corresponding to a primal variable x e, i.e. to an edge; Primal iteration: the corresponding primal variable x e is set to 1, repairing the infeasibility of the selected connectivity constraint. Dual feasibility requires S V:e δ(s) y S c e e E. Therefore for each node subset S, the maximum value that the corresponding dual variable y S can take is equal to the minimum cost c e among all the edges in the cut δ(s). If the dual iteration selects y S where S has maximum cardinality, Prim algorithm is obtained.

Model B: dual ascent A dual ascent algorithm based on model B iteratively does the following: Dual iteration: the only violated primal constraint is e E x e = n 1; acyclicity constraints are already satisfied, when we start from x = 0, and they always remain satisfied; the corresponding dual variable y V is increased, until a dual constraint becomes active; it corresponds to a primal variable x e ; Primal iteration: the primal variable x e enters the basis in order to decrease the infeasibility of the cardinality constraint; the maximum value x e can take is 1, because of the acyclicity constraint with S = 2; this makes some acyclicity constraints active, hence allowing for some dual variables to enter the basis; this in turn allows to increase y V further on. The primal and the dual solutions always correspond to each other through C.S.C., with the exception of y V ( e E x e (n 1)) = 0, which corresponds to a violated equality constraint in the primal problem. This is equivalent to Kruskal s algorithm.

Model B (Kruskal algorithm): an example 29 13 1 2 3 25 31 17 22 20 35 10 4 5 6 k = 0. x = 0. z = 0. 2 3 5 6 1 4 y V = 0. w = 0. Dual C.S.C.: y V (k (n 1)) = 0(0 5) = 0.

An example: dual iteration 1 29(19) 13(3) 1 2 3 31(21) 25(15) 17(7) 22(12) 20(10) 35(25) 10(0) 4 5 6 k = 0. x = 0. z = 0. 2 3 5 6 1 4 y V = 10. w = 10 5 = 50. Dual C.S.C.: y V (k (n 1)) = 10(0 5) = 50.

An example: primal iteration 1 29(19) 13(3) 1 2 3 31(21) 25(15) 17(7) 22(12) 20(10) 35(25) 10(0) 4 5 6 y 56 = 0 5,6 10 10 k = 1. x 56 = 1. z = 10. 2 3 5 6 1 4 y V = 10. w = 0 1+10 5 = 50. Dual C.S.C.: y V (k (n 1)) = 10(1 5) = 40.

An example: dual iteration 2 29(16) 13(0) 1 2 3 31(18) 25(12) 17(4) 22(9) 20(7) 35(22) 10(0) 4 5 6 y 56 = 3 5,6 10 10 k = 1. x 56 = 1. z = 10. 2 3 5 6 1 4 y V = 13. w = 3 1+13 5 = 62. Dual C.S.C.: y V (k (n 1)) = 13(1 5) = 52.

An example: primal iteration 2 29(16) 13(0) 1 2 3 31(18) 25(12) 17(4) 22(9) 20(7) 35(22) 10(0) 4 5 6 y 23 = 0 2,3 y 56 = 3 5,6 13 13 10 10 k = 2. x 56 = x 23 = 1. z = 23. 2 3 5 6 1 4 y V = 13. w = 3 1 0 1+ +13 5 = 62. Dual C.S.C.: y V (k (n 1)) = 13(2 5) = 39.

An example: dual iteration 3 29(12) 13(0) 1 2 3 25(8) 31(14) 17(0) 22(5) 20(3) 35(18) 10(0) 4 5 6 y 23 = 4 2,3 y 56 = 7 5,6 13 13 10 10 k = 2. x 56 = x 23 = 1. z = 23. 2 3 5 6 1 4 y V = 17. w = 7 1 4 1+ +17 5 = 74. Dual C.S.C.: y V (k (n 1)) = 17(2 5) = 51.

An observation 29(12) 13(0) 1 2 3 25(8) 31(14) 17(0) 22(5) 35(18) 10(0) 4 5 6 k = 3. x 56 = x 23 = x 25 = 1. z = 40. 20(3) Several primal constraints are now active: several dual variables can enter the basis: {2, 5} : x 25 = 1 {2, 3, 5} : x 23 + x 25 = 2 {2, 5, 6} : x 25 + x 56 = 2 {2, 3, 5, 6} : x 23 + x 25 + x 56 = 3 Which dual variable should we choose to enter the basis?

An observation Active dual constraints: [2, 5] : y 25 + y 235 + y 256 + y 2356 + c 25 = y V [2, 3] : y 23 + y 235 + y 2356 + c 23 = y V [5, 6] : y 56 + y 256 + y 2356 + c 56 = y V For each unit increase of y V (providing value 5 in the dual objective), we can keep the dual constraints active with a unit increase of: y 56 and y 23 and y 25 : the cost is 1+1+1=3; y 56 and y 235 : the cost is 1+2=3; y 23 and y 256 : the cost is 1+2=3; y 2356 : the cost is 3. From the viewpoint of the dual active constraints and the dual objective function, all these possibilities are equivalent.

An observation But from the viewpoint of non-active dual constraints, they are not: if we choose y 2356 to enter the basis, no dual constraint corresponding to any other edge in {2, 3, 5, 6} will become active. Edges reduced costs are: c e = c e + S V:e E(S) y S y V. Reduced costs of all edges covered by basic dual variables do not decrease anymore. The dual variable y 2356 dominates the others; its corresponding primal constraint e E({2,3,5,6}) x e 3 dominates those corresponding to the others: i.e., if we do not select more edges in S = {2, 3, 5, 6}, we cannot select more edges in any subset of S.

An example: primal iteration 3 29(12) 13(0) 1 2 3 25(8) 31(14) 17(0) 22(5) 35(18) 10(0) 4 5 6 20(3) y 2356 = 0 17 2,3,5,6 17 y 23 = 4 2,3 y 56 = 7 5,6 13 13 10 10 k = 3. x 56 = x 23 = x 25 = 1. z = 40. 2 3 5 6 1 4 y V = 17. w = 7 1 4 1+ +17 5 = 74. Dual C.S.C.: y V (k (n 1)) = 17(3 5) = 34.

An example: dual iteration 4 29(4) 13(0) 1 2 3 25(0) 31(6) 17(0) 22(5) 35(10) 10(0) 4 5 6 20(3) y 2356 = 8 17 2,3,5,6 17 y 23 = 4 2,3 y 56 = 7 5,6 13 13 10 10 k = 3. x 56 = x 23 = x 25 = 1. z = 40. 2 3 5 6 1 4 y V = 25. w = 7 1 4 1 8 3+ +25 5 = 90. Dual C.S.C.: y V (k (n 1)) = 25(3 5) = 50.

An example: primal iteration 4 29(4) 13(0) 1 2 3 25(0) 31(6) 17(0) 22(5) 35(10) 10(0) 4 5 6 20(3) y 2356 = 8 17 2,3,5,6 17 y 23 = 4 2,3 y 56 = 7 5,6 y 14 = 0 1,4 13 13 10 10 25 25 k = 4. x 56 = x 23 = x 25 = x 14 = 1. z = 65. 2 3 5 6 1 4 y V = 25. w = 7 1 4 1 8 3+ 0 1+25 5 = 90. Dual C.S.C.: y V (k (n 1)) = 25(4 5) = 25.

An example: dual iteration 5 29(0) 13(0) 1 2 3 25(0) 31(2) 17(0) 22(5) 35(6) 10(0) 4 5 6 20(3) y 2356 = 12 17 2,3,5,6 17 y 23 = 4 2,3 y 56 = 7 5,6 y 14 = 4 1,4 13 13 10 10 25 25 k = 4. x 56 = x 23 = x 25 = x 14 = 1. z = 65. 2 3 5 6 1 4 y V = 29. w = 7 1 4 1 12 3+ 4 1+29 5 = 94. Dual C.S.C.: y V (k (n 1)) = 29(4 5) = 29.

An example: primal iteration 5 y V = 29 1,2,3,4,5,6 29(0) 13(0) 1 2 3 29 25(0) 31(2) 17(0) 22(5) 35(6) 10(0) 4 5 6 20(3) y 2356 = 12 17 2,3,5,6 17 y 23 = 4 2,3 y 56 = 7 5,6 29 y 14 = 4 1,4 13 13 10 10 25 25 k = 5(feasible!). x 23 = x 56 = x 25 = x 14 = x 12 = 1. z = 94. 2 3 5 6 1 4 y V = 29. w = 7 1 4 1 12 3+ 4 1+29 5 = 94. Dual C.S.C.: y V (k (n 1)) = 29(5 5) = 0.

Dual feasibility requires S V:e E(S) y S + c e y V e E. For each node subset S, the value that the corresponding dual variable y S takes is equal to the difference between the minimum edge cost in the cut δ(s) and the maximum edge cost in the minimum spanning tree of the induced subgraph E(S). Dual optimal solution y 2356 = 12 y V = 29 17 2,3,5,6 17 29 y 23 = 4 2,3 y 56 = 7 5,6 13 13 10 10 1,2,3,4,5,6 29 y 14 = 4 1,4 25 25 2 3 5 6 1 4 y V = 29. w = 7 1 4 1 12 3+ 4 1+29 5 = 94. Dual C.S.C.: y V (k (n 1)) = 29(5 5) = 0.

29(0) 13(0) 1 2 3 25(0) 31(2) 17(0) 35(6) 10(0) 4 5 6 Primal optimal solution 22(5) 20(3) The reduced cost of each edge is the difference between its cost and the largest cost along the (unique) path between its endpoints in the spanning tree. Edges with positive reduced cost do not belong to the minimum cost spanning tree, because there is a cycle in which they have the largest cost. k = 5. x 23 = x 56 = x 25 = x 14 = x 12 = 1. z = 94. Owing to the dual ascent procedure (monotonic increase of y V ), edges are chosen in non-decreasing order according to their costs.