Voronoi Graph
-
Upload
bree-simon -
Category
Documents
-
view
29 -
download
2
description
Transcript of Voronoi Graph
![Page 1: Voronoi Graph](https://reader036.fdocuments.us/reader036/viewer/2022080917/5681306d550346895d964cb5/html5/thumbnails/1.jpg)
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)
![Page 2: Voronoi Graph](https://reader036.fdocuments.us/reader036/viewer/2022080917/5681306d550346895d964cb5/html5/thumbnails/2.jpg)
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
![Page 3: Voronoi Graph](https://reader036.fdocuments.us/reader036/viewer/2022080917/5681306d550346895d964cb5/html5/thumbnails/3.jpg)
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|
![Page 4: Voronoi Graph](https://reader036.fdocuments.us/reader036/viewer/2022080917/5681306d550346895d964cb5/html5/thumbnails/4.jpg)
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:
![Page 5: Voronoi Graph](https://reader036.fdocuments.us/reader036/viewer/2022080917/5681306d550346895d964cb5/html5/thumbnails/5.jpg)
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
![Page 6: Voronoi Graph](https://reader036.fdocuments.us/reader036/viewer/2022080917/5681306d550346895d964cb5/html5/thumbnails/6.jpg)
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
![Page 7: Voronoi Graph](https://reader036.fdocuments.us/reader036/viewer/2022080917/5681306d550346895d964cb5/html5/thumbnails/7.jpg)
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)
![Page 8: Voronoi Graph](https://reader036.fdocuments.us/reader036/viewer/2022080917/5681306d550346895d964cb5/html5/thumbnails/8.jpg)
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
![Page 9: Voronoi Graph](https://reader036.fdocuments.us/reader036/viewer/2022080917/5681306d550346895d964cb5/html5/thumbnails/9.jpg)
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!
![Page 10: Voronoi Graph](https://reader036.fdocuments.us/reader036/viewer/2022080917/5681306d550346895d964cb5/html5/thumbnails/10.jpg)
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