1 steiner tree algorithms and networks 2014/2015 hans l. bodlaender johan m. m. van rooij

Post on 16-Jan-2016

216 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

1

Steiner Tree

Algorithms and Networks 2014/2015Hans L. Bodlaender

Johan M. M. van Rooij

2

The Steiner Tree Problem

Let G = (V,E) be an undirected graph, and let N µ V be a subset of the terminals.

A Steiner tree is a tree T = (V’,E’) in G connecting all terminals in N V’ µ V, E’ µ E, N µ V’ We use k=|N|.

Streiner tree problem: Given: an undirected graph G = (V,E), a terminal set N µ V, and

an integer t. Question: is there a Steiner tree consisting of at most t edges

in G.

3

My Last Lecture

Steiner Tree. Interesting problem that we have not seen yet.

Introduction Variants / applications NP-Completeness

Polynomial time solvable special cases. Distance network.

Solving Steiner tree with k-terminals in O*(2k)-time. Uses inclusion/exclusion. Algorithm invented by one of our former students.

4

INTRODUCTIONSteiner Tree – Algorithms and Networks

5

Variants and Applications

Applications: Wire routing of VLSI. Customer’s bill for renting communication networks. Other network design and facility location problems.

Some variants: Vertices are points in the plane. Vertex weights / edge weights vs unit weights. Different variants for directed graphs.

6

Steiner Tree is NP-Complete

Steiner Tree is NP-Complete. Membership of NP: certificate is a subset

of the edges. NP-Hard: reduction from Vertex Cover.

Take an instance of Vertex Cover, G=(V,E), integer k.

Build G’=(V’,E’) by subdividing each edge. Set N = set of newly introduced vertices. All edges length 1. Add one superterminal connected to all

vertices. G’ has Steiner Tree with |E|+k edges, if

and only if, G has vertex cover with k vertices.

= terminal

7

POLYNOMIAL-TIME SOLVABLE SPECIAL CASES

Steiner Tree – Algorithms and Networks

8

Special Cases of Steiner Tree

k = 1: trivial. k = 2: shortest path. k = n: minimum spanning tree.

k = c = O(1): constant number of terminals, polynomial-time solvable (next slides).

9

Distance Networks

Distance network D(X) of G=(V,E) (induced by the set X). Take complete graph with vertex set X.

Cost of edge {v,w} in distance network is length shortest path from v to w in G.

Observations: Let W be the set of vertices of degree larger than two for an

optimal Steiner tree T in G with terminal set N. The Steiner tree T consists of a series of shortest paths between

vertices in N [ W. The cost of T equals the cost of the minimum spanning tree in

D(N[W). The cost of the optimal Steiner tree in D(V) equals the cost of T.

10

Steiner Tree with O(1) Terminals

Suppose |N|= k is constant c. Compute distance network D(V). There is a minimum cost Steiner tree in D(V) that contains

at most k – 2 non-terminals. Any Steiner tree that has one that is no longer without non-

terminal vertices of degree 1 and 2. A tree with r leaves and internal vertices of degree at least 3

has at most r – 2 internal vertices.

Polynomial time algorithm for k = O(1) terminals: Enumerate all sets W of at most k – 2 non-terminals in G. For each W, find a minimum spanning tree in the distance

network D(NÈW). Take the best over all these solutions

Takes polynomial time for fixed k = O(1).

11

O*(2K) ALGORITHM BY INCLUSION/EXCLUSION

Steiner Tree – Algorithms and Networks

12

Some background on the algorithm

Algorithm invented by Jesper Nederlof. Just after he finished his Master thesis supervised by Hans (and

a little bit by me). Master thesis on Inclusion/Exclusion algorithms.

13

A Recap: Inclusion/Exclusion Formula

General form of the Inclusion/Exclusion formula:

Let N be a collection of objects (anything). Let 1,2, ...,n be a series of requirements on objects. Finally, let for a subset W µ {1,2,...,n}, N(W) be the number

of objects in N that do not satisfy the requirements in W.

Then, the number of objects X that satisfy all requirements is:

},...,2,1{

|| )()1(nW

W WNX

14

The Inclusion/Exclusion formula:Alternative proofs

Various ways to prove the formula.1. See the formula as a branching algorithm branching on a

requirement: required = optional – forbidden

2. If an object satisfies all requirements, it is counted in N(Æ).If an object does not satisfy all requirements, say all but those in a set W’, then it is counted in all W µ W’ With a +1 if W is even, and a -1 if W is odd. W’ has equally many even as odd subsets: total contribution is 0.

},...,2,1{

|| )()1(nW

W WNX

15

Using the Inclusion/Exclusion Formula for Steiner Tree (problematic version)

One possible approach: Objects: trees in the graph G. Requirements: contain every terminal.

Then we need to compute 2k times the number of trees in a subgraph of G. For each W µ N, compute trees in G[V\W].

However, counting trees is difficult: Hard to keep track of which vertices are already in the tree.

Compare to Hamiltonian Cycle: We want something that looks like a walk, so that we do not

need to remember where we have been.

},...,2,1{

|| )()1(nW

W WNX

16

Branching Walks

Definition: Branching walk in G=(V,E) is a tuple (T,Á): Ordered tree T. Mapping Á from nodes of T to nodes of G, s.t. for any edge {u,v}

in the tree T we have that {Á(u),Á(v)} 2 E.

The length of a branching walk is the number of edges in T. When r is the root of T, we say that the branching walk

starts in Á(r) 2 V. For any n 2 T, we say that the branching walk visits all

vertices Á(n) 2 V.

Some examples on the blackboard...

17

Branching Walks and Steiner Tree

Definition: Branching walk in G=(V,E) is a tuple (T,Á): Ordered tree T. Mapping Á from nodes of T to nodes of G, s.t. for any edge

{u,v} in the tree T we have that {Á(u),Á(v)} 2 E.

Lemma: Let s 2 N a terminal. There exists a Steiner tree T in G with at most c edges, if and only if, there exists a branching walk of length at most c starting in s visiting all terminals N.

18

Using the Inclusion/Exclusion Formula for Steiner Tree

Approach: Objects: branching walks from

some s 2 N of length c in the graph G. Requirements: contain every terminal in N\{s}.

We need to compute 2k-1 times the number of branching walks of length c in a subgraph of G. For each W µ N\{s}, compute branching walks from s in G[V\

W].

Next: how do we count branching walks? Dynamic programming (similar to ordinary walks).

},...,2,1{

|| )()1(nW

W WNX

19

Counting Branching Walks

Let BW(v,j) be the number of branching walks of length j starting in v in G[W].

BW(v,0) = 1 for any vertex v.

BW(v,j) = u2(N(v)ÅW) j1 + j2 = j-1 BW(u,j1) BW(v,j2)

j2 = 0 covers the case where we do not branch / split up and walk to vertex u.

Otherwise, a subtree of size j1 is created from neighbour u, while a new tree of size j2 is added starting in v.This splits off one branch, and can be repeated to split of more branches.

We can compute BW(v,j) for j = 0,1,2,....,t. All in polynomial time.

20

Putting It All Together

Algorithm: Choose any s 2 N. For t = 1, 2, …

Use the inclusion/exclusion formula to count the number of branching walks from s of length t visiting all terminals N.

This results in 2k-1 times counting branching walks from s of length c in G[V\W].

If this number is non-zero: stop the algorithm and output that the smallest Steiner tree has size t.

},...,2,1{

|| )()1(nW

W WNX

21

THAT’S ALL FOLKS…Steiner Tree – Algorithms and Networks

top related