Voronoi Graph

Document Sample
Voronoi Graph Powered By Docstoc
					               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