950 likes | 1.11k Views
Exact Exponential Time Algorithms for Frequency Assignment. F. Havet M. Klazar, Jan Kratochvíl D. Kratsch, M. Liedloff. Graph coloring, Boolean Satisfiability, Traveling Salesperson Problem … All NP-hard. Graph coloring, Boolean Satisfiability, Traveling Salesperson Problem … Heuristics
E N D
Exact Exponential Time Algorithms for Frequency Assignment F. Havet M. Klazar, Jan Kratochvíl D. Kratsch, M. Liedloff
Graph coloring, Boolean Satisfiability, Traveling Salesperson Problem … All NP-hard
Graph coloring, Boolean Satisfiability, Traveling Salesperson Problem … Heuristics Approximation algorithms Fixed Parameter Tractability Exact exponential-time algorithms - O*(cn)
Frequency Assignment Problem • Branching approach – fixed span • Dynamic programming approach
1.1 Branching n n-1 n-2 0
1.1 Branching n n-1 n-2 0
1.1 Branching n T(n) 3T(n-1) n-1 n-2 n-3
1.1 Branching n T(n) 3T(n-1) T(n) 3n n-1 n-2 n-3
1.1 Branching n T(n) 3T(n-1) T(n) 3n T(n) 4T(n-2) T(n) 2n n-1 n-2 n-3
1.1 Branching n T(n) 3T(n-1) T(n) 3n T(n) 4T(n-2) T(n) 2n n-1 n-2 n-3 T(n)aT(n-b) T(n) an/b
2 Frequency Assignment Problem Assigning frequencies (channels) to transmitters while avoiding undesired interference of signals
Channel Assignment Given G, a weight function w on E(G) and a number k, does there exist f: V(G) {0,1,2,…,k} such that uv E(G) |f(u) – f(v)| w(uv)?
L(2,1)-labeling f: V(G) {0,1,2,…,k} uv E(G) |f(u) – f(v)| 2 dG(u,v) = 2 |f(u) – f(v)| 1
L(2,1)-labeling f: V(G) {0,1,2,…,k} uv E(G) |f(u) – f(v)| 2 dG(u,v) = 2 |f(u) – f(v)| 1 L(2,1)(G) = min such k
L(2,1)-labeling 2 2 0 4 3 4 0 1 1
L(2,1)-labeling Roberts 1985 Griggs, Yeh 1993 – NP-complete when k part of input Chang, Kuo 1996 – polynomial for trees Georges, Mauro 1998 – bounds for grids Fiala, Kloks, JK 1999 – NP-c for fixed k 4 Bodlaender, Kloks, Tan, van Leeuwen 2001 – NP-c for planar Liu, Zhu 2003 – cyclic metric Král, Škrekovski 2004 – upper bounds Fiala, Golovach, JK 2005 – NP-c for tree-width 2
3 Branching Algorithm for Fixed k • Pick a vertex and label it in all k+1 ways
3 Branching Algorithm for Fixed k • Pick a vertex and label it in all k+1 ways • Pick a neighbor and label it in all k-1 ways
3 Branching Algorithm for Fixed k • Pick a vertex and label it in all k+1 ways • Pick a neighbor and label it in all k-1 ways • Repeat: Pick an unlabeled vertex with a labeled neighbor and label it in all k-2 ways
3 Branching Algorithm for Fixed k • Pick a vertex and label it in all k+1 ways • Pick a neighbor and label it in all k-1 ways • Repeat: Pick an unlabeled vertex with a labeled neighbor and label it in all k-2 ways Running time O*((k-2)n)
3 Branching Algorithm for k = 4 • Pick a vertex and label it in all 5 ways • Pick a neighbor and label it in all 3 ways • Repeat: Pick an unlabeled vertex with a labeled neighbor and label it in all 2 ways Running time O*(2n)
3 Branching Algorithm for k = 4 • Pick a vertex and label it in all 5 ways • Pick a neighbor and label it in all 3 ways • Repeat: Pick an unlabeled vertex with a labeled neighbor and label it in all 2 ways Running time O*(2n) Theorem: L2,1(G) 4 can be solved in O*(1.32n) time
3 Branching Algorithm for k = 4 Theorem: L2,1(G) 4 can be solved in O*(1.32n) time • Introduction of reduction and branching rules • Careful running time analysis
2 0 4 3 1
2 0 4 3 1 R1 Forced extensions u u 1,2,3 u u
2 0 4 3 1 R1 Forced extensions u u 1,2,3 u 0 4 u 0 2 4
2 0 4 3 1 R1 Forced extensions R2 Free extensions
2 0 4 3 1 R1 Forced extensions R2 Free extensions R3 Cheap extensions
2 0 4 3 1 R1 Forced extensions R2 Free extensions R3 Cheap extensions – dynamic programming 0 4 0 1
2 0 4 3 1 R1 Forced extensions R2 Free extensions R3 Cheap extensions – dynamic programming 0 4 0 1 • 1
2 0 4 3 1 R1 Forced extensions R2 Free extensions R3 Cheap extensions – dynamic programming 0 4 0 1 • 1 3 • 0
2 0 4 3 1 R1 Forced extensions R2 Free extensions R3 Cheap extensions – dynamic programming 0 4 0 1 • 1 3 0 • 0 3 • 2 0 4
2 0 4 3 1 R1 Forced extensions R2 Free extensions R3 Cheap extensions – dynamic programming 0 4 0 1 • 1 3 0 2,4 • 0 3 1 • 2 0 4 1,2
2 0 4 3 1 R1 Forced extensions R2 Free extensions R3 Cheap extensions – dynamic programming 0 4 2 0 4 2 0 1 • 1 3 0 2,4 • 0 3 1 • 2 0 4 1,2
2 0 4 3 1 R1 Forced extensions R2 Free extensions R3 Cheap extensions R4 Extensions with strong constraints – branch along labeling x,y,u(,v) x y u v
2 0 4 3 1 R1 Forced extensions R2 Free extensions R3 Cheap extensions R4 Extensions with strong constraints – branch along labeling x,y,u(,v) R5 Extensions with weak constraints – branch along labeling v,w(,u) w v u
3 Branching Algorithm for k = 4 Running-time analysis
2 0 4 3 1 R1 Forced extensions - constant time per application u u 1,2,3 u u
2 0 4 3 1 R1 Forced extensions R2 Free extensions - constant time per reduction
2 0 4 3 1 R1 Forced extensions R2 Free extensions R3 Cheap extensions – dynamic programming – constant time 0 4 0 1
2 x y 0 4 3 1 u v R4 Extensions with strong constraints – branch along x,y,u(,v)
2 x y 0 4 3 1 u v R4 Extensions with strong constraints – branch along x,y,u(,v) x = y x u
2 x y 0 4 3 1 u v R4 Extensions with strong constraints – branch along x,y,u(,v) x = y – no branching 0 2 4 u
2 x y 0 4 3 1 u v R4 Extensions with strong constraints – branch along x,y,u(,v) 0 x y u v
2 x y 0 4 3 1 u v R4 Extensions with strong constraints – branch along x,y,u(,v) 0 x y 20-3-1-40 40-3-1-40 20-4-2-03 40-2-4-03 20-3-1-42 40-3-1-42 20-4-2-04 40-2-4-02 30-4-2-04 30-2-4-02 30-2-4-03 30-4-2-03 u v