## Theory of Combinatorial Algorithms

abstract

We develop algorithms for computing the smallest enclosing ball of a set of $n$ balls in $d$-dimensional space. Unlike previous methods, we explicitly address small cases ($n\leq d+1$), derive the necessary primitive operations and show that they can efficiently be realized with rational arithmetic. An exact implementation (along with a fast \footnote{For $d=3$, a set of $1,000,000$ balls is processed in less than two seconds on a modern PC.} and robust floating-point version) is available as standalone code and as part of the CGAL library. Our algorithms are based on novel insights into the combinatorial structure of the problem. As it turns out, results for smallest enclosing balls of points do not extend as one might expect. For example, we show that Welzl's randomized linear-time algorithm for computing the ball spanned by a set of points fails to work for balls. Consequently, David White's adaptation of the method to the ball case (as the only available implementation so far it is mentioned in many link collections) is incorrect and may crash or, in the better case, produce wrong balls. In solving the small cases we may assume that the ball centers are affinely independent; in this case, the problem is surprisingly well-behaved: via a geometric transformation and suitable generalization, it fits into the combinatorial model of \emph{unique sink orientations} whose rich structure has recently received considerable attention. One consequence is that Welzl's algorithm \emph{does} work for small instances; moreover, there is a wide variety of \emph{pivoting} methods for unique sink orientations which have the potential of being fast in practice even for high dimensions. As a by-product, we show that the problem of finding the smallest enclosing ball of balls is computationally equivalent to the problem Back to the publications page