Voronoi Graph

Document Sample

```					               Voronoi Graph
• Voronoi region Vor(p) (p in set S)
– the set of points on the plane that are closer to p
than to any other point in S
• Voronoi Graph VOR(S)
– dual to Voronoi region graph
– two points are adjacent if their Voronoi regions
have common contiguous boundary (segment)
Voronoi Graph
• Voronoi Graph in the rectilinear plane
• Rectilinear distance: p = (x, y); p’=(x’,y’)
ab           Voronoi region of b

b

a
bc

c

ac
Voronoi Graph
Fact: In any cycle the longest edge does not belong
to MST.
Proof: if it is the longest edge in a cycle, it would be
the longest edge in MST.
Claim 1: Voronoi graph contains minimum spanning
tree.
Claim 2: For any x,y S if (x,y) Vor (S), then
x,y MST(S)
Proof:  x,y-path P in Vor(S) s.t.  eP |e| < |xy|
Voronoi Graph
Proof:

(at least 2 edges in Voronoi groph
w                  y   will intersect the “red edge”)
a
p
pw < yp+pw
x       b                 (pw<px, p closer to w than to x
a<b                              -in Voronoi region on w)
< yp+px
= xy
Voronoi Graph
Proof in general case:                 x2
p3   y
p2
p1

x            x1
Let xy intersect Voronoi diagram in points p1,p2,.... pipi+1 will be
in a same Voronoi region (of some point)
pi pi+1  Vor(xi)
Construct x x1 x2 ... xi-1 y
any edge on this path is shorter than xy
|xi xi+1| < |pi y|
Voronoi Graph
Theorem: For n points in the plane MST can be found in
O(n log n)
Claim: Finding Voronoi graph for n points is at least as difficult
as sorting n numbers.
Proof:     if the points are on the same line:

x1     x2       x3                xn
it is equivalent to sorting n numbers

by Master Theorem (for “divide and conquer”):
T(n)=2T(n/2)+O(n)
for merging
O(n log n)
Mehlhorn (‘88)
O( E+ V log V) 2-approximation of Steiner trees
G=(V,E,w)
S  V terminals
find T  G, T  S, w(T)  min.
2-approx. algorithm:
1) Find all shortest paths between any pair of points:
Find GS=(S,E’,w’) , GS is a complete graph
w(s,s’)=w(e)=weight of the shortest path between s and s’ in G
2) Find MST of this graph, replace any edge with paths in G
TS=MST(GS)
3) T’=      pathG(e) (this may not be a tree), last step:
eTS
4) T=MST(T’)
Running time of this algorithm: S (V log V+E) (all shortest path)
(bottle neck) S2+S log S=O(S2) (to find T)
Definition of Voronoi graph in graphs
(not in the plane)
- we’ll be able to get O(V log V+E)
1
1.3
Voronoi regions
2    1.5    0.5     1
shortest path conn.these
1
2 points
terminals S

v
Voronoi region of v Vor(v)

weight = shortest path weight in G
between 2 terminals
- all the weights we find we’ll be in the shortest path
Definition of Voronoi graph in graphs
For any vVor(s) (s  S) we need to know:
 (s,v) =  (v) (  )
- shortest path between s1,s2: for each eE, e=(a,b)
v  r(v) (terminals closest to v)
if r(a)  r(b) (they do not belong to same region)
w’(a,b) =  (a) + w(a,b) +  (v)
if  (a) + w(a,b) +  (v) <  (r(a),r(b)) then
 (r(a),r(b)) =w’(a,b)
as result we’ll find all the edges of Vor. Graph
Problem: find (  )
how to find for any node distance to its root?
Find  (v) for any v!
How to find  (v) for any v
r(v)
(auxiliary node)
v
A

terminals      other nodes
- run Dijkstra (find shortest path to any node)
- any shortest path should go through 1 terminal
(if it goes through some terminal, it belongs to that region)
 (v) =  (A,v)=  (r(v),v)
O(E+V log V)

```
DOCUMENT INFO
Shared By:
Categories:
Tags:
Stats:
 views: 1 posted: 10/9/2012 language: simple pages: 10