Voronoi Graph

Post on 31-Dec-2015

29 views 2 download

description

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. - PowerPoint PPT Presentation

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