n-dimensional voronoi diagram - MathOverflow most recent 30 from http://mathoverflow.net2013-05-24T23:29:47Zhttp://mathoverflow.net/feeds/question/49516http://www.creativecommons.org/licenses/by-nc/2.5/rdfhttp://mathoverflow.net/questions/49516/n-dimensional-voronoi-diagramn-dimensional voronoi diagramAlessandro2010-12-15T12:05:24Z2010-12-15T19:15:56Z
<p>Hi, I need to compute the voronoi diagram of a set of points in R^n.
I'm quite unschooled on the topic, could someone point me to the right references so that I can
a) understand the theory behind it
b) implement an actual algorithm to compute it </p>
<p>PS. Googling I found out I need to know about euclidean graphs, but I couldn't find any decent introduction to it. Pointers are appreciated!</p>
http://mathoverflow.net/questions/49516/n-dimensional-voronoi-diagram/49521#49521Answer by Joseph O'Rourke for n-dimensional voronoi diagramJoseph O'Rourke2010-12-15T13:05:16Z2010-12-15T15:06:08Z<p>Often Voronoi diagrams are constructed from their duals, Delaunay triangulations.
The Delaunay triangulation of a point set in $d$ dimensions can be obtained from the convex hull
of a lifting of the points into $d+1$ dimensions. This relationship is explained in many sources,
including <a href="http://cs.smith.edu/~orourke/books/discrete.html" rel="nofollow"><em>The Handbook of Discrete and Computational Geometry</em></a> (Chapters 22, 23).</p>
<p>Implementing this on your own is quite a project, so you might first investigate what is available.
Qhull performs the computations; see <a href="http://www.qhull.org/" rel="nofollow">www.qhull.org</a>.
$d$-dimensional Delaunay triangulation computations are part of <a href="http://www.cgal.org/" rel="nofollow">CGAL</a>, specifically <a href="http://www.cgal.org/Manual/3.2/doc_html/cgal_manual/Convex_hull_d/Chapter_main.html" rel="nofollow">this module</a>.
You could use <a href="http://archive.msri.org/about/computing/docs/polymake/index.html" rel="nofollow">polymake</a> to convert from the Delaunay triangulation to its corresponding Voronoi diagram.
Finally, there are papers written on specific versions of your problem, for example:
"An Explicit Solution for Computing the Euclidean $d$-dimensional Voronoi Diagram of Spheres in a Floating-Point Arithmetic," by Marina Gavrilova, 2003, <a href="http://www.springerlink.com/content/nva8385va1ddaw57/" rel="nofollow">link here</a>.</p>
<p>(Incidentally, "Euclidean graphs" play a relatively minor role in this topic.)</p>
http://mathoverflow.net/questions/49516/n-dimensional-voronoi-diagram/49537#49537Answer by Michael Hardy for n-dimensional voronoi diagramMichael Hardy2010-12-15T15:41:25Z2010-12-15T15:41:25Z<p>I think the "lifting of the points into $d+1$ dimensions" referred to in Joseph O'Rourke's answer means something like this: $(x_1,\dots,x_d) \mapsto (x_1,\dots,x_d,x_1^2+\cdots+x_d^2)$. Then the edges of the convex hull of those points in $d+1$ space connect the images of points that are connected in the Delaunay triangulation.</p>
http://mathoverflow.net/questions/49516/n-dimensional-voronoi-diagram/49553#49553Answer by Grant Izmirlian for n-dimensional voronoi diagramGrant Izmirlian2010-12-15T19:15:56Z2010-12-15T19:15:56Z<p>R (a favorite open source, object oriented interactive statistical package) has what appears to be a suitably fast algorithm, but I've only used it in a problem with 20 some odd points or so. </p>
<p>As the others have mentioned above, the Voronoi tessellation or mosaic is computed using the (dual graph which is the) Delaunay triangulation. The R function 'veronoi.mosaic' in the package 'tripack' calls a FORTRAN routine. If its convenient enough to do it in R then just call the veronoi.mosaic function (details on getting R and getting the tripack package follow). Otherwise, if you'd rather just use the internal FORTRAN subroutine, you can figure out the meaning of the arguments by looking at the veronoi.mosaic function in R (at the point at which the FORTRAN subroutine 'veronoi' is called) and work backwards.</p>
<p>In any case, all of its open source and works like a charm.</p>
<p>getting R:</p>
<p><a href="http://cran.r-project.org/" rel="nofollow">http://cran.r-project.org/</a></p>
<p>the tripack package</p>
<p><a href="http://cran.r-project.org/web/packages/tripack/index.html" rel="nofollow">http://cran.r-project.org/web/packages/tripack/index.html</a></p>
<p>Enjoy!</p>
<p>Best Regards,
Grant Izmirlian</p>