100 likes | 110 Views
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.
E N D
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’) Voronoi region of b ab 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. eP |e| < |xy|
Voronoi Graph Proof: (at least 2 edges in Voronoi groph will intersect the “red edge”) w y a p pw < yp+pw (pw<px, p closer to w than to x -in Voronoi region on w) < yp+px = xy x b a<b
Voronoi Graph Proof 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| x2 p3 y p2 p1 x1 x
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: xn x1 x2 x3 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: 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) 1 Voronoi regions 1.3 2 1.5 0.5 1 shortest path conn.these 2 points 1 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 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. 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)