Special Issue on Robust Geometric Algorithms and their Implementations

The robust implementation of geometric algorithms is highly nontrivial. There are several reasons for this: theoretical algorithms (i.e., algorithms on paper) traditionally assume error-free real computations, at constant time cost per operation, and data in general position. All three assumptions do not hold in the real world (i.e., algorithms on silicon). So implementors face the tasks of (1) controlling the effects of numerical errors, (2) achieving practical and efficient implementations, and (3) enumerating all degenerate possibilities and devising ways to treat them. All three tasks are illustrated by papers in this collection. (1) The paper of Devillers and Guigue addresses the “rounding of polygons”—this problem arises because the choices we make in rounding numbers can have geometric consequences which must be controlled. (2) The paper of Emiris and Karavelas shows how to implement the predicates used in computing Apollonius diagrams efficiently and exactly—this is an issue because such predicates are time critical operations for the algorithm. (3) The paper of Schömer and Wolpert introduces the Jacobi curve technique for detecting tangential intersections—such intersections do not arise under the “data in general position” assumption. In the last decade, we have seen the emergence of the Exact Geometric Computation (EGC) paradigm for achieving robust geometric algorithms. Unlike other approaches to nonrobustness, only the EGC approach can be encoded into a general-purpose software library which programmers can invoke to achieve full robustness for their otherwise normal programs. Today, implementors without special knowledge of robustness techniques can routinely implement efficient and robust algorithms for many problems, just by invoking libraries such as LEDA, CGAL or Core Library. This is no mean achievement: 10 years ago, the construction of any single such program would have been regarded as a challenge. What made this possible is the emergence of new techniques such as filters and effective zero bounds that bridge the gap between theory and practice. Many challenges lie ahead in the development of EGC computation. Three key areas are represented by the current collection of papers: geometric rounding, efficient nonlinear computation, and the Zero Problem. (a) Geometric rounding is addressed by Devillers and Guigue. Although we have techniques for robust and efficient computation of many problems, the computed object may require high precision and often requires different numerical representation than the input numbers. For instance, the computed object may require representations of algebraic numbers. In applications, we would like such numbers to be approximated by floating point numbers. The rounding of numbers becomes complicated when they determine geometric features which must be preserved. Despite the increasingly recognized importance of geometric rounding, there are still few results. In fact, the only problem treated with any depth in the literature is the problem of rounding an arrangement of line segments on the integer grid. So the study of Devillers and Guigue is a welcome contribution to this sparse literature. (b) Nonlinear algebraic computation is a crucial testing ground for robustness techniques because the nonrobustness phenomenon, while bad in linear geometry, becomes much more pronounced in the nonlinear world. The paper of Schömer and Wolpert addresses one of the simplest nonlinear problems in 3-dimensions, viz., arrangement of quadric surfaces. Nonlinearity is also a key issue in the paper of Emiris and Karavelas, albeit in 2-dimensions. (c) The Zero Problem originally arose in logic, and concerns deciding whether a given numerical expression represents 0. Among the many deep open questions here, perhaps the most important case is whether the zeros represented by numerical expressions over the functions exp and log are decidable. The strongest positive result here is from Richardson (1997) who showed that such zeros