Generated by GPT-5-mini| Fortune's algorithm | |
|---|---|
![]() Mnbayazit · Public domain · source | |
| Name | Fortune's algorithm |
| Inventor | Steven Fortune |
| Year | 1986 |
| Field | Computational geometry |
| Input | Set of points (sites) |
| Output | Voronoi diagram |
| Complexity | O(n log n) |
Fortune's algorithm is a sweep line method for constructing a planar Voronoi diagram from a finite set of sites. It transforms an input of site coordinates into an arrangement of edges and vertices representing equidistant loci by advancing a horizontal sweep line and maintaining a dynamic beach line, employing events to update structure. The procedure unites ideas from Steven Fortune, Shamos and Hoey, Bentley and Ottmann, Edelsbrunner, and Preparata and Shamos in computational geometry practice.
Fortune's algorithm produces the Voronoi diagram for points by simulating a sweep line that moves across the plane, converting site proximity information into explicit boundaries; it contrasts with methods such as incremental insertion used by Fortune contemporaries and with divide-and-conquer strategies used by Shamos. Emphasized in texts by de Berg, Preparata and Shamos and O'Rourke, the approach reduces degeneracy handling compared to randomized algorithms by using event queues influenced by earlier work of Bentley and Ottmann. The algorithm underpins software projects and libraries like CGAL, Boost (C++) components, and implementations in languages championed by contributors such as Donald Knuth-era practitioners.
The core routine maintains a sweep line L moving from top to bottom; as L passes sites, it generates parabolic arcs on the beach line representing loci closer to those sites than to L. Two event types drive updates: site events (when L encounters a new site) and circle events (when three arcs converge causing an arc to vanish), echoing event-driven paradigms from Bentley and Ottmann sweep frameworks. The algorithm constructs Voronoi vertices at circle event centers, and Voronoi edges as pieces of perpendicular bisectors between sites originally introduced by pioneers like Gauss and used in computational geometry by Voronoi-inspired researchers. Implementation must resolve degeneracies such as collinear points or cocircular configurations, issues also faced in work by Knuth, Edsger Dijkstra, and Donald Michie.
Key data structures include an event priority queue ordered by y-coordinate and x-coordinate tie-breakers, and a balanced binary search tree representing the beach line; these choices mirror structures used in projects influenced by Bentley, Tarjan, and Sedgewick. The priority queue can be implemented with a heap variant popularized by Williams and improved in practical libraries like Boost (C++) and JDK (Java) collections, while the beach line often uses a red–black tree or skip list inspired by Rudolf Bayer and Pugh. Robust implementations must incorporate exact arithmetic or perturbation techniques championed in computational geometry literature by Edelsbrunner and Shewchuk to avoid floating-point robustness issues encountered in software from organizations like NASA and CERN. Memory management and dynamic allocation strategies borrow from systems research by Minsky and Hoare as used in high-performance computing environments at Bell Labs and research groups at MIT.
Fortune's algorithm runs in O(n log n) time and O(n) space for n point sites, matching optimal bounds proven using lower-bound techniques in algorithmic research attributed to Ben-Or and structural arguments by Knuth. Correctness relies on invariants: the beach line correctly partitions influence regions and circle events correspond to genuine Voronoi vertices, a proof style paralleling correctness arguments in classic algorithms by Dijkstra and Hopcroft. Worst-case behavior matches divide-and-conquer alternatives by Shamos and Hoey, while practical performance benefits from locality exploited in implementations used by companies such as Google and Microsoft for spatial indexing tasks.
Voronoi diagrams produced by Fortune's algorithm support applications in robotics path planning linked to work at Carnegie Mellon University, geographic information systems (GIS) influenced by standards from Esri, mesh generation used in finite element analysis in groups at Stanford University, and biological modeling in labs at Harvard University. Variants adapt the sweep to weighted sites (additively or multiplicatively weighted Voronoi diagrams) as studied by Lloyd and later by Aurenhammer, and extend to higher dimensions or to arrangements for line segments and polygonal sites following research by Guibas and Stolfi. Algorithms inspired by Fortune inform centroidal Voronoi tessellations popularized by Lloyd's algorithm and centroidal mesh generation used in computational physics at institutions like Los Alamos National Laboratory.
Steven Fortune published the algorithm in 1986, synthesizing prior sweep-line ideas from Bentley and Ottmann and theoretical foundations from Voronoi-related mathematics. The technique arrived amid a surge of interest in computational geometry catalyzed by conferences organized by ACM SIGGRAPH and Symposium on Computational Geometry participants such as Preparata and Shamos. Subsequent dissemination occurred through graduate curricula at MIT, Stanford University, and Princeton University and was incorporated into major software efforts at Bell Labs and academic toolkits like CGAL. Over time, improvements in robustness, parallelization, and extensions to non-Euclidean metrics were pursued by researchers associated with ETH Zurich, University of Waterloo, and TU München.
Category:Computational geometry algorithms