Title: Universal Facility Location
1Universal Facility Location
Martin Pál Cornell University
2Metric Facility Location
F is a set of facilities. D is a set of
clients. cij is the distance between any i and j
in D ? F. (assume cij satisfies triangle
inequality)
3Problem Statement
1) Allocate capacity ui at each facility i
2) Assign every client to a facility (each
facility i is assigned at most ui clients).
Goal Minimize the sum of allocation and
assignment costs.
4The cost
Cost of facility i is a function fi(.) of demand
allocated.
Allocation cost cf(S) sum of fi(ui) over all i
in F. Assignment cost cs(S) sum of distances
from clients to assigned facilities. Goal
Minimize cf(S) cs(S).
5Special cases
6Related work
Uncapacitated primal-dual 1.52 MYZ02
local search 3? CG99 Soft
capacities primal-dual 2 MYZ03
local search 4? AGK01 Concave cost
reduction to uncapacitated HMM Hard
capacities local search 9? PTW01
7Our result
First approximation algorithm for Universal
FL Generalizes local search algorithms for above
special cases, with the same approx.
guarantees Our analysis 8? approximation (7.88
w. scaling)
CYZ just claimed improved analysis 7?
8Local Search
1) Start with any feasible solution. 2) Improve
solution with local operations. 3) Stop when
there are no remaining operations that lower the
cost.
Well, almost we want to finish in poly-time
Each operation is required to lower cost by a
factor of ? ?/n.
9The add operation
add(s,?) Increase allocation at facility s by
?. Reassign clients optimally.
us
12
Given u(u1,u2 ,..., un), where do we send
clients? Solve a min cost flow.
10The pivot operation
- pivot(s,?) Pick a pivot point s and vector ?.
- For each facility i
- Send -?i units of demand from i to s (if ?ilt0)
- Send ?i units of demand from s to i (if ?igt0)
11The pivot operation
- pivot(s,?) Pick a pivot point s and vector ?.
- For each facility i
- Send -?i units of demand from i to s (if ?ilt0)
- Send ?i units of demand from s to i (if ?igt0)
12Finding good operations
Want operations that decrease cost the
most. Plan Try every s, find the best ? and ?
for add(s,?) and pivot(s,?). Easy to do for add
try all values for ?. Too many possibilities for
? to try them all. How to find the best pivot
operation?
13How to find a good pivot?
Problem find ? to minimize cost(pivot(s,?)).
Solution dynamic programming, just like knapsack.
Consider facilities in any order. Let pd,i be
the min cost way of having d excess demand at the
pivot from the first i facilities.
pd,i1 min? pd-?,igi1(?) p0,n is
the optimum
14Analysis
15Assignment cost
Thm Korupolu et al If no add(s,?) op. improves
a solution S, cs(S) cs(SOPT) cf(SOPT).
16Bounding the allocation cost
Bounding cf(S) Local opt. ? cost(pivot(s,?)) 0
for any s, ?. Every operation gives a bound Si
fi(ui) Si fi(ui ?i) flow cost
lower bound on cf(SOPT)
upper bound on cf(S)
17First attempt
Take current S with some SOPT let di uiOPT -
ui.
2
di lt 0.
2
sources
0
0
1
di gt 0.
0
sinks
2
3
? Reassignment costs may be high.
18Second attempt
Take current S with some SOPT let di uiOPT -
ui.
try swap(d) routing along min cost flow
2
di lt 0.
2
sources
0
0
1
di gt 0.
0
sinks
2
3
? Dont have a swap operation.
19What works
- Take the swap(d) operation, let y be the flow.
- Tile it with pivot operations so that
- each source covered (at least) once
- each sink used at most k times (k4)
- each pivot ships only along flow edges
20What works
Take the swap(d) operation, let y be the flow.
di lt 0.
2
sources
0
0
1
di gt 0.
0
sinks
2
3
Example flow decomposed into two pivot ops.
21The flow y
Fact 2 y is min cost ? acyclic Pf augment along
cycle to remove it
22Covering the tree
sources
sinks
23Subtrees of depth 2
sinks
sources
24Almost done..
Every source closed once Every sink used 112
times (once as root, once as child)
25Nondominating sources
r
s1
s2
s3
sk
...
y(s1,r) y(s2,r) y(s3,r) ... y(sk,r)
26Summing up
Hence the algorithm is a (8?)-approximation. (7.8
8? with scaling)