Voronoi Graph
-
Upload
bree-simon -
Category
Documents
-
view
29 -
download
2
description
Transcript of Voronoi Graph
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’)
a
b
c
bc
ac
ab Voronoi region of b
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. eP |e| < |xy|
Voronoi Graph
x
ywa
b
a<b
(at least 2 edges in Voronoi grophwill intersect the “red edge”)
ppw < yp+pw
(pw<px, p closer to w than to x-in Voronoi region on w)
< yp+px = xy
Proof:
Voronoi GraphProof in general case:
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|
p1
p2
p3
x1
x2
x
y
Voronoi GraphTheorem: 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 x3xn
it is equivalent to sorting n numbers
by Master Theorem (for “divide and conquer”):T(n)=2T(n/2)+O(n)
O(n log n)for merging
Mehlhorn (‘88)O( E+ V log V) 2-approximation of Steiner treesG=(V,E,w)S V terminalsfind 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 G2) 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: eTS
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)
Voronoi regions1
1.51.3
0.52
terminals S
v
Voronoi region of v Vor(v)
1
1shortest path conn.these 2 points
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 vVor(s) (s S) we need to know: (s,v) = (v) ( )
- shortest path between s1,s2: for each eE, 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. GraphProblem: find ( )how to find for any node distance to its root?Find (v) for any v!
How to find (v) for any v
A
(auxiliary node)
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)
r(v)
v