Steiner tree LP x e = 1 if edge e is included in the Steiner tree. Min. e c e x e (primal) s.t. e (S) x e ≥ 1 S V: S T≠ , T\S≠ x e {0, 1}(1) x e ≥ 0 Relax (1) to x e ≥ 0 to get an LP. terminal S
The Steiner tree dual: a combinatorial motivation Let S := {S V: S T≠ , T\S≠ } Think of each set S in S as a region around which a “moat” has to be built. y S = width of this moat {y S } moat packing around terminals. Width of a feasible moat packing is a lower bound on OPT – Weak Duality. Max. S S y S c uv u v S S :e (S) y S ≤ c e e y S ≥ 0 terminal non-terminal
The Steiner tree dual: an economic motivation Let S := {S V: S T≠ , T\S≠ } Each set S in S represents a coalition of terminals. y S = payment that coalition S is willing to make to get itselfconnected Any payment scheme yields a lower bound on OPT – Weak Duality. Max. S S y S c uv u v S S :e (S) y S ≤ c e e y S ≥ 0 terminal non-terminal
Primal-dual algorithm for Steiner tree Let S := {S V: S T≠ , T\S≠ } Max. S S y S (dual) S S :e (S) y S ≤ c e e y S ≥ 0 Min. e c e x e (primal) e (S) x e ≥ 1 S S x e ≥ 0 Build an integer feasible primal solution x and a dual feasible solution y 1.Initialize F = , y S = 0 for all S S. V = minimal violated sets = {S S : S is minimal s.t. (S) F= } 2.While V ≠ –Raise y S uniformly S V until some edge e (S) for some S V goes tight. –F F {e}. Update V. 3.(Reverse delete) Consider edges of F in reverse order, drop e if F\{e} is feasible.
Primal-dual algorithm for Steiner tree in action F = , y S = 0 for all S S c uv u v terminal non-terminal t=0
Primal-dual algorithm for Steiner tree in action V := {S S : S minimal s.t. F (S)= } While V ≠ –Raise y S uniformly S V until some edge e (S) for some S V goes tight. –F F {e}. Update V. c uv u v terminal non-terminal t=1 t=2 edge in F
Primal-dual algorithm for Steiner tree in action c uv u v terminal non-terminal t=3 edge in F V := {S S : S minimal s.t. F (S)= } While V ≠ –Raise y S uniformly S V until some edge e (S) for some S V goes tight. –F F {e}. Update V.
Primal-dual algorithm for Steiner tree in action c uv u v terminal non-terminal t=3 edge in F V := {S S : S minimal s.t. F (S)= } While V ≠ –Raise y S uniformly S V until some edge e (S) for some S V goes tight. –F F {e}. Update V.
Primal-dual algorithm for Steiner tree in action c uv u v terminal non-terminal t=3 edge in F V := {S S : S minimal s.t. F (S)= } While V ≠ –Raise y S uniformly S V until some edge e (S) for some S V goes tight. –F F {e}. Update V.
Primal-dual algorithm for Steiner tree in action c uv u v terminal non-terminal t=4 edge in F V := {S S : S minimal s.t. F (S)= } While V ≠ –Raise y S uniformly S V until some edge e (S) for some S V goes tight. –F F {e}. Update V.
Primal-dual algorithm for Steiner tree in action c uv u v terminal non-terminal t=4 edge in F V := {S S : S minimal s.t. F (S)= } While V ≠ –Raise y S uniformly S V until some edge e (S) for some S V goes tight. –F F {e}. Update V.
Primal-dual algorithm for Steiner tree in action c uv u v terminal non-terminal t=5 edge in F V := {S S : S minimal s.t. F (S)= } While V ≠ –Raise y S uniformly S V until some edge e (S) for some S V goes tight. –F F {e}. Update V.
Primal-dual algorithm for Steiner tree in action Reverse delete: Consider edges of F in reverse insertion order and delete e if F\{e} is feasible c uv u v terminal non-terminal t=5 edge in F
Primal-dual algorithm for Steiner tree in action Reverse delete: Consider edges of F in reverse insertion order and delete e if F\{e} is feasible c uv u v terminal non-terminal t=5 edge in F
Primal-dual algorithm for Steiner tree in action Reverse delete: Consider edges of F in reverse insertion order and delete e if F\{e} is feasible c uv u v terminal non-terminal t=5 edge in F
Primal-dual algorithm for Steiner tree in action Reverse delete: Consider edges of F in reverse insertion order and delete e if F\{e} is feasible c uv u v terminal non-terminal t=5 edge in F
Primal-dual algorithm for Steiner tree in action Final Steiner Tree c uv u v terminal non-terminal t=5 edge in F