Abstract
We provide a tight result for a fundamental problem arising from packing disks into a circular container: The critical density of packing disks in a disk is 0.5. This implies that any set of (not necessarily equal) disks of total area \(\delta \le 1/2\) can always be packed into a disk of area 1; on the other hand, for any \(\varepsilon >0\) there are sets of disks of area \(1/2+\varepsilon \) that cannot be packed. The proof uses a careful manual analysis, complemented by a minor automatic part that is based on interval arithmetic. Beyond the basic mathematical importance, our result is also useful as a blackbox lemma for the analysis of recursive packing algorithms.
Similar content being viewed by others
Avoid common mistakes on your manuscript.
1 Introduction
Deciding whether a set of disks can be packed into a given container is a fundamental geometric optimization problem that has attracted considerable attention. Disk packing also has numerous applications in engineering, science, operational research and everyday life, e.g., for the design of digital modulation schemes [23], packaging cylinders [2, 9], bundling tubes or cables [26, 28], the cutting industry [27], or the layout of control panels [2], or radio tower placement [27]. Further applications stem from chemistry [29], foresting [27], and origami design [15].
Like many other packing problems, disk packing is typically quite difficult; what is more, the combinatorial hardness is compounded by the geometric complications of dealing with irrational coordinates that arise when packing circular objects. This is reflected by the limitations of provably optimal results for the optimal value for the smallest sufficient disk container (and hence, the densest such disk packing in a disk container), a problem that was discussed by Kraviz [14] in 1967: Even when the input consists of just 13 unit disks, the optimal value for the densest diskindisk packing was only established in 2003 [8], while the optimal value for 14 unit disks is still unproven. The enormous challenges of establishing densest disk packings are also illustrated by a longstanding open conjecture by Erdős and Oler from 1961 [22] regarding optimal packings of n unit disks into an equilateral triangle, which has only been proven up to \(n=15\). For other examples of mathematical work on densely packing relatively small numbers of identical disks, see [6, 7, 10, 18], and [11, 17, 24] for related experimental work. Many authors have considered heuristics for circle packing problems, see [12, 27] for overviews of numerous heuristics and optimization methods. The best known solutions for packing equal disks into squares, triangles and other shapes are continuously published on Specht’s website http://packomania.com [25].
For the case of packing not necessarily equal disks into a square container, Demaine et al. in 2010 [3] showed that deciding whether a given set of disks can be packed is \(\mathsf {NP}\)hard by using a reduction from 3Partition. This means that there is (probably) no deterministic polynomialtime algorithm that can decide whether a given set of disks can be packed into a given container.
On the other hand, the literature on exact approximation algorithms which actually give performance guarantees is small. Miyazawa et al. [19] devised asymptotic polynomialtime approximation schemes for packing disks into the smallest number of unit square bins. More recently, Hokama et al. [13] developed a boundedspace competitive algorithm for the online version of that problem.
The related problem of packing square objects has also been studied for a long time. The decision problem whether it is possible to pack a given set of squares into the unit square was shown to be strongly \(\mathsf {NP}\)complete by Leung et al. [16], also using a reduction from 3Partition. Already in 1967, Moon and Moser [20] found a sufficient condition. They proved that it is possible to pack a set of squares into the unit square in a shelflike manner if their combined area, the sum of all squares’ areas, does not exceed 1/2. At the same time, 1/2 is the largest upper area bound one can hope for, because two squares larger than the quartersquares shown in Fig. 1 cannot be packed. We call the ratio between the largest combined object area that can always be packed and the area of the container the problem’s critical density, or worstcase density.
The equivalent problem of establishing the critical packing density for disks in a square was posed by Demaine et al. [3] and resolved by Morr et al. [5, 21]. Making use of a recursive procedure for cutting the container into triangular pieces, they proved that the critical packing density of disks in a square is \({\pi }/({3+2\sqrt{2}} )\approx 0.539\).
It is quite natural to consider the analogous question of establishing the critical packing density for disks in a disk. However, the shelfpacking approach of Moon and Moser [20] uses the fact that rectangular shapes of the packed objects fit well into parallel shelves, which is not the case for disks; on the other hand, the split packing method of Morr et al. [5, 21] relies on recursively splitting triangular containers, so it does not work for a circular container that cannot be partitioned into smaller circular pieces.
1.1 Results
We prove that the critical density for packing disks into a disk is 1/2: Any set of not necessarily equal disks with a combined area of not more than 1/2 can be packed into a disk of area 1; this is best possibly, as for any \(\varepsilon >0\) there are instances of total area \(1/2+\varepsilon \) that cannot be packed. See Fig. 2 for the critical configuration.
Our proofs are constructive, so they can also be used as a constantfactor approximation algorithm for the smallestarea container of a given shape in which a given set of disks can be packed. Due to the higher geometric difficulty of fitting together circular objects, the involved methods are considerably more complex than those for square containers. We make up for this difficulty by developing more intricate recursive arguments. Moreover, we rely on computer calculations to prove several important inequalities, making use of interval arithmetic on sufficiently fine subdivisions of bounded spaces spanned by a constant number of real variables. For more details see the proof of Lemma 4.9.
2 Preliminaries
Let \(r_1,\dots ,r_n\) be a set of disks in the plane. Two point sets \(A,B\subset \mathbb {R}^2\) overlap if their interiors have a point in common. A container disk \(\mathcal {C}\) is a disk that must contain disks from \(\{r_1,\dots ,r_n\}\). The original container disk O is the unit disk. Due to recursive calls of our algorithm there may be several container disks that lie nested inside each other. Hence, the largest container disk will be the unit disk O. For simplification, we simultaneously denote by \(r_i\) or \(\mathcal {C}\) the disk with radius \(r_i\) or \(\mathcal {C}\) and its radius. W.l.o.g., we assume \(r_1\ge \ldots \ge r_n\). We pack the disks \(r_1,\dots ,r_n\) by positioning their midpoints inside a container disk such that \(r_i\) lies inside \(\mathcal {C}\) and two disks from \(\{r_1,\dots ,r_n\}\) do not overlap. We call such a positioning a (feasible) disk packing of \(r_1,\dots ,r_n\). Given two sets \(A \subseteq B\subseteq \mathbb {R}^2\), we say that A is a sector of B. Furthermore, we denote the area of a point set A by \(A\).
3 A WorstCase Optimal Algorithm
Theorem 3.1
Every set of disks with total area \({\pi }/{2}\) can be packed into the unit disk O with radius 1. This induces a worstcase optimal packing density of 1/2, i.e., a ratio of 1/2 between the area of the unit disk and the total area to be packed.
The worst case consists of two disks \(D_1,D_2\) with radius 1/2, see Fig. 2a. The total area of these two disks is \({\pi }/{4} + {\pi }/{4} = {\pi }/{2}\), while the smallest disk containing \(D_1,D_2\) has an area of \(\pi \).
In the remainder of Sect. 3, we give a constructive proof for Theorem 3.1. Before we proceed to describe our algorithm in Sect. 3.4, we give some definitions and describe Disk Packing and Ring Packing as two subroutines of our algorithm.
3.1 Preliminaries for the Algorithm
We make use of the following definitions, see Fig. 3. For \(r_{out } \ge r_{in } > 0\) and a container disk \(\mathcal {C}\) such that \(r_{out } \le 2 r_{in }\), we define a ring \(R:=R[r_{out }, r_{in }]\) of \(\mathcal {C}\) as the closure of \(r_{out }\setminus r_{in }\), see Fig. 3. If \(r_{out }>r_{in }>0\), the boundary of R consists of two connected components. The inner boundary is the component that lies closer to m and the outer boundary is the other component. The inner radius and the outer radius of R are the radius of the inner boundary and the radius of outer boundary. Each ring has one of three states \(\{open , closed ,full \}\) indicating whether it is still allowed to pack disks into the ring, the remaining disks are too small to be packed into the ring, and a disk already failed to be packed into the ring, see following section for a formal definition. Initially, each ring is open.
Let r be a disk inside a container disk \(\mathcal {C}\). The two tangents of r are the two rays starting in the midpoint of \(\mathcal {C}\) and touching the boundary of r. We say that a disk lies adjacent to \(r_{\text {out}}\) when the disk is touching the boundary of \(r_{\text {out}}\) from the inside of \(r_{\text {out}}\).
3.2 Disk Packing: A Subroutine
Consider a container disk \(\mathcal {C}\), a (possibly empty) set S of already packed disks that overlap^{Footnote 1} \(\mathcal {C}\), and another disk \(r_i\) to be packed, see Fig. 4.
We pack \(r_i\) into \(\mathcal {C}\) adjacent to the boundary of \(\mathcal {C}\) as follows: Let \(\alpha \) be the maximal polar angle realized by a midpoint of a disk from S. We choose the midpoint of \(r_i\) realizing a smallest possible polar angle \(\beta \ge \alpha \) such that \(r_i\) touches the outer boundary of \(\mathcal {C}\) from the interior of \(\mathcal {C}\) without overlapping another disk from S, see Fig. 4. If \(r_i\) cannot be packed into \(\mathcal {C}\), we say that \(r_i\) does not fit into \(\mathcal {C}\).
Let \(0 < \mathcal {T} \le {1}/{4}\), called threshold. Disk Packing iteratively packs disks in decreasing order into \(\mathcal {C}\) until the current disk \(r_i\) does not fit into \(\mathcal {C}\) or the radius of \(r_{i}\) is smaller than \(\mathcal {T}\).
3.3 Ring Packing: A Subroutine
Consider a ring \(R:= R[r_{out }, r_{in }]\) with inner radius \(r_{in }\) and outer radius \(r_{out }\), a (possibly empty) set S of already packed disks that overlap with R, and another disk \(r_i\) to be packed, see Fig. 5. We pack \(r_i\) into R adjacent to the outer (inner) boundary of R as follows: Let \(\alpha \) be the maximal polar angle realized by a midpoint of a disk from S. We choose the midpoint of \(r_i\) realizing a smallest possible polar angle \(\beta \ge \alpha \) such that \(r_i\) touches the outer (inner) boundary of R from the interior of R without overlapping another disk from S. If \(r_i\) cannot be packed into R, we say that \(r_i\) does not fit into R (adjacent to the outer (inner) boundary).
Ring Packing iteratively packs disks into R, alternating between adjacent to the inner and to the outer boundary. If the current disk \(r_i\) does not fit into R, Ring Packing stops and we declare R to be full. If \(r_{i1}\) and \(r_{i}\) could past each other, i.e., the sum of the diameters of \(r_{i1}\) and \(r_i\) are smaller than the width of R, Ring Packing stops and we declare R to be closed.
3.4 Description of the Algorithm
Our algorithm creates rings. A ring only exists after it is created. We stop packing at any point in time when all disks are packed. Initially, we set \(\mathcal {T} \leftarrow {1}/{4}\). Our algorithm works in five phases during which we permanently update the smallest inner radius \(r_{\min }\) of a created ring:

Phase 1—Recursion Let \(r_i\) be the largest disk not yet packed. If \(r_i,r_{i+1} \ge 0.495\mathcal {C}\), apply Disk Packing to \(r_{i},r_{i+1}\), update \(\mathcal {C}\) as the largest disk that fits into \(\mathcal {C}\) after \(r_i,r_{i+1}\) being packed into \(\mathcal {C}\), \(\mathcal {T}\) as \({\mathcal {C}}/{4}\), and \(r_{\min }\) as \(\mathcal {T}\). Then, recurse on \(\mathcal {C}\), see Fig. 7.

Phase 2—Disk Packing Let r be the radius of \(\mathcal {C}\). If the midpoint m of \(\mathcal {C}\) lies inside a packed disk \(r_j\), let d be the minimal distance of m to the boundary of \(r_j\), see Fig. 7b^{Footnote 2}. Otherwise, we set \(d = 0\). We apply Disk Packing to the container disk \(\mathcal {C}\) with the threshold \(\mathcal {T} \leftarrow ({rd})/{4}\).

Phase 3—Ring Packing We apply Ring Packing to the ring \(R:= R[r_{out }, r_{in }]\), determined as follows: Let \(r_i\) be the largest disk not yet packed. If there is no open ring inside \(\mathcal {C}\), we create a new open ring \(R[r_{out }, r_{in }] \leftarrow R[r_{\min }, r_{\min }  2r_i]\) and update \(r_{\min } := r_{\min }  2r_i\). Else, let \(R[r_{out }, r_{in }]\) be the open ring with the largest inner radius \(r_{in }\).

Phase 4—Managing Rings Let \(R[r_{out }, r_{in }]\) be the ring filled in Phase 3. Let \(r_i\) be the largest disk not yet packed. If \(r_i\) and \(r_{i+1}\) can pass one another inside \(R[r_{out }, r_{in }]\), i.e., if \(2r_i + 2r_{i+1} \le r_{out }  r_{in }\), we create two new open rings \(R[r_{out }, r_{out }  2r_{i}]\) and \(R[r_{out }  2r_{i}, r_{in }]\).

Phase 5—Continue If there is an open ring, we go to Phase 3. Otherwise, we set \(\mathcal {C}\) as the concentric disk with radius \(r_{\min }\) and go to Phase 2.
4 Analysis of the Algorithm
We start by analyzing the recursion. After that, we provide the remaining analysis of the algorithm.
4.1 Analysis of Phase 1—The Recursion
If \(r_2 \ge 0.495\), Lemma 4.1 allows us to recurse on \(\mathcal {C}\) as required by Phase 1.
Lemma 4.1
If \(r_i,r_{i+1} \ge 0.495\mathcal {C}\), the area of the largest container disk that fits into \(\mathcal {C}\) after packing \(r_i,r_{i+1}\) is at least twice the total area of \(r_{i+2},\dots ,r_n\), see Fig. 8.
Proof
W.l.o.g., assume that the original container disk is the unit disk and \(i = 1\). Lemma 4.2 implies \(r_1+r_2 \le 1\), which means \(r_1,r_2 \le 0.505\), because \(r_2 \ge 0.495\). Furthermore, \(r_1 + r_2\le 1\) implies that we can move (w.l.o.g.) \(r_1,r_2\) into two disks \(D_1,D_2\) with radius 0.505, touching the boundary of \(\mathcal {C}\) and with their midpoints \(m_1,m_2\) on the horizontal diameter of \(\mathcal {C}\), see Fig. 8. This decreases the area of the largest disk that still fits into \(\mathcal {C}\).
Consider the disk \(\overline{\mathcal C}=1/5\) lying adjacent to \(\mathcal {C}\) and with its midpoint \(\overline{m}\) on the vertical diameter \(\ell _1\) of \(\mathcal {C}\). Pythagoras’ Theorem implies that \(m_1\overline{m}=\sqrt{(10.505)^2+(1{1}/{5})^2}\approx 0.94075>0.505+1/5\). Finally, we observe that the area of \(\overline{\mathcal {C}}\) is \(\pi /25=0.04\pi \) which is larger than \(0.06252 > 2({\pi }/{2}  2\cdot 0.495^{2}\pi )\). This means that the area of \(\overline{\mathcal {C}}\) is twice the total area of the remaining disks \(r_3,r_4,r_5,\dots \), concluding the proof.\(\square \)
A technical key ingredient in the proof of Lemma 4.1 is the following lemma:
Lemma 4.2
The area of two disks with radii \(d_1,d_2\) is at least \({\pi }(d_1+d_2)^2/2\).
Proof
W.l.o.g., we assume \(d_1+d_2 = 2\). The function \((1x)^2+(1+x)^2=2+2x^2\) for \(x\in \mathbb {R}\) attains a minimum of 2 at \(x=0\), so \(d_1^2+d_2^2\) for constant \(d_1+d_2\) attains its minimum at \(d_1=d_2\), for a minimum value of \(2d_1^2=(d_1+d_2)^2/2\).\(\square \)
This allows us to assume \(r_2 < 0.495 \mathcal {C}\) during the following analysis.
4.2 Outline of the Remaining Analysis
Once our algorithm stops making recursive calls, i.e., stops applying Phase 1, Phase 1 is never applied again. W.l.o.g., let \(r_1,\dots ,r_n\) be the remaining disks and O the container disk after the final recursion call.
The main idea of the remaining analysis is the following: A sector is a subset of O. We cover the original container disk O by a set of sectors. Let \(r_i\) be a disk packed by Disk Packing into the current container disk \(\mathcal {C}\). We define the cone induced by \(r_i\) as the sector of \(\mathcal {C}\) between the two tangents of \(r_i\). We say that \(\mathcal {C}\) is the radius of the cone.
The potential A of a disk r is defined as its area. Atomic potentials of r are numbers \(A_1,\dots ,A_k \ge 0\) that sum up to A. During the analysis we frequently will assign an atomic potential \(A_i\) of a disk r to a sector S; we say that r charges S by the atomic potential \(A_i\) and we say that \(A_i\) is moved to S. Thus, the sum of the atomic potentials charged by a disk r will be at most the area of the disk r. Let \(A_1,\dots ,A_k\) be the sum of the atomic potentials moved to the sectors \(S_1,\dots , S_k \subset O\). The resulting potential of a sector \(S \subseteq O\) is the sum of the proportionate atomic potentials from \(S_1,\dots ,S_k\), i.e., the sum of all \({S_i \cap S}/{S_i} A_i\) for \(i = 1,\dots ,k\). The (virtual packing) density \(\rho (S)\) of the sector S is defined as the ratio between the potential of S and the area of S. If a sector achieves a density of 1/2, we say that the sector is saturated, otherwise its unsaturated.
Our approach for proving Theorem 3.1 is by induction. In particular, we assume that \(O \setminus \mathcal {C}\) is saturated; we show that each disk \(r_i\) can be packed by our algorithm, as long as \(\mathcal C\) is unsaturated implying that each set of disks with total area of at most \({O}/2\) is packed. For a simplification, we assume for the remainder of the paper that \(\mathcal {C}\) is the unit disk, i.e., \(\mathcal {C} = 1\). We consider the configuration achieved after termination.
Observation 4.3
If there is a ring that is neither full nor closed, all disks are packed.
Thus, we assume that all rings computed by our algorithm are full or closed. In order to avoid that Disk Packing stops due to a disk r not fitting, we consider the cone being not filled by a run of Disk Packing, see Fig. 9. The worst case for this scenario is \(r =1/4\). In order to ensure that even in this case the entire container \(\mathcal {C}\) is saturated, we guarantee that \(\mathcal {C}\) has a density of
4.3 Analysis of Disk Packing
The following lemma is the key ingredient for the analysis of Disk Packing.
Lemma 4.4
Let \(r \in [0.2019 , {1}/{2}]\) be a disk lying adjacent to \(\mathcal {C}\). The cone C induced by r has a density larger than \(\rho \) if \(r \in [{1}/{4}, 0.495]\) and least 1/2 if \(r \in [0.2019, {1}/{2}]\), see Fig. 10.
Proof
Let
for \({1}/{4} \le r \le {1}/{2}\). Thus we have
Solving \(f'(r) = 0\) yields \(r \approx 0.39464\). Furthermore, we have \(f({1}/{4}) \approx 0.57776\), \(f(0.39464) = 0.68902\), \(f({1}/{2}) = 0.5\), and \(f(0.495) \approx 0.56127\). Thus, f restricted to [1/4, 0.495] achieves at 0.495 its global minimum 0.56127. A similar approach implies that f restricted to [0.2019, 1/2] attains its global minimum 1/2 at 1/2.\(\square \)
The following lemma proves that all disks \(r_i \ge {\mathcal {C}}/{4}\) that are in line to be packed into a container disk \(\mathcal {C}\) can indeed be packed into \(\mathcal {C}\).
Lemma 4.5
Let \(C \subset \mathcal {C}\) be an empty cone with midpoint m and radius \(\mathcal {C}\), such that \(\mathcal {C} \setminus C\) is saturated. All disks \(r_i \ge {\mathcal {C}}/{4}\) that are in line to be packed into C by Disk Packing do fit into C.
Proof
Assume that there is a largest disk \(r_k \ge {1}/{4}\) not packed adjacent to \(\mathcal {C}\). Each disk \(r_i\) from \(r_1,\dots ,r_{k1}\) charges the cone induced by \(r_i\) by its entire area \(\pi r_i^2\). Lemma 4.4 implies that each cone has a density of at least 1/2. As \(r_k\) does not fit between \(r_1,r_{k1}\) and adjacent to \(\mathcal {C}\), Lemma 4.4 implies that the sector of \(\mathcal {C}\) that is not covered by a cone induced by \(r_1,\dots ,r_{k1}\) has a area smaller than twice the area of \(r_k\). The sector covered by the union of the cones is saturated, because each cone is saturated. By assumption, \(\mathcal {C}\setminus C\) is saturated. This implies that the total area of \(r_1,\dots ,r_k\), is larger than half of the area of C. This implies that the total input area of is larger than twice the area of the original container. This is a contradiction, concluding the proof.\(\square \)
Corollary 4.6
If \(r_n \ge {1}/{4} \), our algorithm packs all input disks.
Thus, we assume w.l.o.g. \(r_n <{1}/{4}\), implying that our algorithm creates rings.
4.4 Analysis of Ring Packing
For the following definition, see Fig. 11b.
Definition 4.7
A zipper Z is a (maximal) sequence \(\langle r_k,\dots ,r_{\ell } \rangle \) of disks that are packed into a ring R during an application of Ring Packing. The length of Z is defined as \(\ell  k + 1\).
Consider a zipper \(\langle r_k,\dots ,r_{\ell } \rangle \) packed into a ring R. For a simplified presentation, we assume in Sect. 4.4 that the lower tangent of \(r_k\) realizes a polar angle of zero, see Fig. 11.
We refine the potential assignments of zippers as follows. Let \(Z = \langle r_k,\dots ,r_{\ell } \rangle \) be an arbitrary zipper and R the ring into which Z is packed. In order to subdivide R into sectors corresponding to specific parts of the zipper, we consider for each disk \(r_i\) the center ray, which is the ray starting from m and passing the midpoint of \(r_i\). Let \(t_1, t_2\) be two rays starting in m. We say that \(t_1\) lies above \(t_2\) when the polar angle realized by \(t_1\) is at least as large as the polar angle realized by \(t_2\). \(t_1\) is the minimum (maximum) of \(t_1,t_2\) if \(t_1\) does not lie above (below) \(t_2\). Furthermore, the upper tangent (lower tangent) of a disk \(r_i\) is the maximal (minimal) tangent of \(r_i\).
If the zipper Z consists of one disk \(r_k\), the sector S of Z is that part of R between the two tangents to \(r_k\) and S is charged by the entire area of \(r_k\).
Lemma 4.8
The density of the sector S of a zipper of length one is at least 0.77036.
Proof
As the zipper consists of only one disk \(r_k\), \(r_k\) touches both the inner and the outer boundary of R. Hence, the density of S is not increased by assuming that the inner radius of R is equal to the diameter of \(r_k\), see Fig. 11. W.l.o.g., we assume \(r_k = 1\) implying \(r_k = \pi \). Furthermore, the angle of the cone induced by \(r_k\) is equal to \(2 \arcsin ( 1/3)\). The ring induced by \(r_k\) has an area of \(4^{2}\pi  2^{2}\pi = 12\pi \). Thus
Hence, the density of \(R_k\) is at least \(\pi /(12 \arcsin (1/3))\approx 0.77036\).\(\square \)
Assume the zipper \(\langle r_k,\dots ,r_\ell \rangle \) consists of at least two disks. We define the adjacency graph \(G=(\{r_k,\dots ,r_{\ell }\},E)\) as a directed graph as follows: There is an edge \((r_j,r_i)\) if (1) \(r_i \le r_j\) and (2) \(r_i, r_j\) are touching each other, see Fig. 11b.
As Ring Packing packs each disk \(r_i\) with midpoint \(m_i\) such that \(m_i\) realizes a smallest possible polar angle, there is a path \(e_k,\dots ,e_{\ell 1} =: P\) connecting \(r_k\) to \(r_{\ell }\) in the adjacency graph G, see Fig. 11c. \(e_k\) is the start edge of P and \(e_{\ell 1}\) is the end edge of P. The remaining edges of P that are neither the start nor the end edge of G, are middle edges of P. Furthermore, an edge \((r_j,r_{m}) = e_i \in P\) is diagonal if \(r_j,r_{m}\) are touching different boundary components of R. Otherwise, we call \(e_i\) vertical.
We classify the edges \(\{e_i\}\) of the path P by eight different types (T1)–(T8). In particular, we distinguish whether \(e_i\) is a start, middle, or an end edge and whether \(e_i\) is diagonal or vertical. For each potential type of \(e_i\) we give an individual a definition of a sector \(A_i\) belonging to \(e_i\) and the potential assigned to \(A_i\), called the potential of \(e_i\). In particular, let \((r_j,r_{m})=e_i\). We define \(t_{lower }\) as the minimum of the lower tangents of \(r_j,r_{m}\) and \(t_{upper }\) the maximum of the upper tangents of \(r_j,r_{m}\), see Fig. 12a. Furthermore, let \(t_1,t_2\) be the center rays of \(r_j,r_{m}\), such that \(t_1\) does not lie above \(t_2\).
For the case that \(e_i = (r_j,r_{m})\) is a vertical edge, we consider additionally the disk \(r_{p}\) that is packed into R after \(r_j\) and before \(r_{m}\), see Fig. 12f. Let \(t_3\) be the maximum of \(t_2\) and the upper tangent of \(r_{p}\), see Fig. 12.
 (T1):

The sector of \(e_i\): If \(e_i = (r_j,r_{m})\) is a diagonal start edge, the sector of \(e_i\) is that part of R that lies between \(t_{lower }\) and \(t_2\), see Fig. 12b. The potential of \(e_i\): The sector of \(e_i\) is charged by the entire area of \(r_j\) and the half of the area of \(r_{m}\).
 (T2):

The sector of \(e_i\): If \(e_i = (r_j,r_{m})\) is a diagonal middle edge, the sector of \(e_i\) is that part of R that lies between \(t_1\) and \(t_2\), see Fig. 12c. The potential of \(e_i\): The sector of \(e_i\) is charged by the half of the area of \(r_j\) and the half of the area of \(r_m\).
 (T3):

The sector of \(e_i\): If \(e_i = (r_j,r_{m})\) is a diagonal end edge, the sector of \(e_i\) consists of two parts, see Fig. 12d: (1) The first is the part of R that lies between the upper tangent and the center ray of \(r_j\). (2) Let \(R_m\) be the smallest ring enclosing \(r_m\). The second part of the sector is that part of \(R_m\) that lies between the upper tangent of \(r_m\) and the minimum of \(t_1\) and the lower tangent of \(r_m\). The potential of \(e_i\): The sector of \(e_i\) is charged by the half of the area of \(r_j\) and by the entire area of \(r_m\).
 (T4):

The sector of \(e_i\): If \(e_i =(r_j,r_{m})\) is a diagonal start and end edge, see Fig. 12e, the sector of \(e_i\) is the sector of \(e_i\) is the union of two sectors: (1) The first is the part of R that lies between the lower and the upper tangent of \(r_j\). (2) The second is that part of \(R_m\) that lies between the lower and the upper tangent of \(r_m\). The potential of \(e_i\): The sector of \(e_i\) is charged by the entire areas of \(r_j\) and \(r_m\).
 (T5):

The sector of \(e_i\): If \(e_i = (r_j,r_m)\) is a vertical start edge, the sector of \(e_i\) is that part of R that lies between the minimum of the lower tangents of \(r_j,r_p\) and the centre ray of \(r_m\), see Fig. 12g. The potential of \(e_i\): The sector of \(e_i\) is charged by the entire areas of \(r_j\) and \(r_p\) and the half of the area of \(r_m\).
 (T6):

The sector of \(e_i\): If \(e_i = (r_j,r_m)\) is a vertical middle edge, the sector of \(e_i\) is that part of R that lies between the center rays of \(r_j,r_m\), see Fig. 12h. The potential of \(e_i\): The sector of \(e_i\) is charged by the entire area of \(r_p\) and by the halves of the areas of \(r_j\) and \(r_m\).
 (T7):

The sector of \(e_i\): If \(e_i = (r_j,r_m)\) is a vertical end edge, the sector of \(e_i\) consists of two parts, see Fig. 12i: (1) The first is that part of R that lies between the center ray of \(r_j\) and the upper tangent of \(r_p\). (2) Let \(R_m\) be the smallest ring enclosing \(r_m\). The second part of the sector is the part of \(R_m\) that lies between the center ray of \(r_j\) and the upper tangent of \(r_m\). The potential of \(e_i\): The sector of \(e_i\) is charged by the half of the area of \(r_j\) and the entire areas of \(r_p\) and \(r_m\).
 (T8):

The sector of \(e_i\): If \(e_i = (r_j,r_m)\) is a vertical start and end edge, the sector of \(e_i\) is consists of two parts, see Fig. 12j: (1) The first is that part of R that lies between the minimum of the lower tangents of \(r_j,r_p\) and the maximum of the upper tangents \(r_j,r_p\). (2) Let \(R_m\) be the smallest ring enclosing \(r_m\). The second part of the sector is that part of \(R_m\) that lies between the lower and the upper tangent of \(r_m\). The potential of \(e_i\): The sector of \(e_i\) is charged by the entire areas of \(r_j\), \(r_p\), and \(r_m\).
For simplicity, we also call the density of the sector of an edge \(e_i\in P\) the density of \(e_i\). The sector of a zipper is the union of the sectors of the edges of P.
Lemma 4.9
Let \(Z = \langle r_k,\dots ,r_{\ell } \rangle \) be a zipper of length at least two and P a path in the adjacency graph of Z connecting \(r_k\) with \(r_{\ell }\). Each edge \(e_i \in P\) has a density of at least \(\rho \).
Proof
In order to prove the lemma, we apply interval arithmetic. In interval arithmetic, mathematical operations such as addition, multiplication or computing the sine are performed on intervals instead of real numbers. Operations on intervals are defined based on their real counterparts as follows. For two intervals \(A=[a_1,b_1]\), \(B=[a_2,b_2]\) and some binary operation \(\circ \), the result \(A\circ B\) is defined as
In other words, the result of an operation is the smallest interval containing all values \(x \circ y\) for \(x \in A, y \in B\). Unary operations are defined in a similar manner. If the input interval(s) contain values for which the corresponding operation on real numbers is undefined, the result is undefined.
In order to use interval arithmetic for our proof, we consider the cases (T1)–(T8) (as shown in Fig. 12) separately. For each of these cases, we consider the following three or four variables. The first variable is \(\lambda \), the inner radius of the ring; we assume the outer radius to be 1. Additionally, we have two or three variables \(r_1 \ge r_2 \ge r_3\) corresponding to the radii of the disks involved in the case. For each of the cases, it is straightforward to implement an algorithm that computes the density of any configuration (T1)–(T8), given some real values for \(\lambda ,r_1,\ldots ,r_3\). Such an algorithm needs to perform basic arithmetic operations as well as square root and inverse sine computations. Instead of implementing such an algorithm using real numbers, we can also implement it using interval arithmetic. As input, instead of concrete real values, we are given intervals \(I_{\lambda },I_1,I_2,I_3\) for \(\lambda \) and \(r_1,r_2,r_3\). As output, we compute an interval \(I_d\) for the density of any given configuration from (T1)–(T8). We know that \(I_d\) contains all possible density values that an implementation using real numbers can produce given inputs from \(I_{\lambda },I_1,I_2,I_3\). Therefore, if the lower bound of \(I_d\) is above a lower bound of \(b_d:=0.5642\), we know that the density is at least \(b_d\) for all possible values these intervals.
Furthermore, we can bound our variables as follows. We only have to consider the case \({1}/{2} \le \lambda < 1\). For any given value of \(\lambda \), we know that \(r_1 \le ({1\lambda })/{2}\), because otherwise, \(r_1\) would not fit into the ring. Moreover, we can lower bound \(r_2\) by \(({1\lambda 2r_1})/{2}\), because otherwise, \(r_2\) would be the first disk in a new ring; similar statements hold for \(r_3\) in the threedisk cases. This gives us lower and upper bounds for all involved variables. By subdividing the ranges for \(\lambda ,r_1,r_2,r_3\) into sufficiently small intervals, we subdivide the space spanned by \(\lambda ,r_1,r_2,r_3\) into finitely many hypercuboids; these hypercuboids cover the entire space.
We can feed each hypercuboid into the interval arithmetic implementation of each of the configurations (T1)–(T8). If, for a hypercuboid, the result is a density interval with lower bound of at least \(b_d\), we do not have to consider that hypercuboid anymore. Implementing this idea yields an automatic prover^{Footnote 3}, which we can use to prove that the density is at least \(b_d\) for all hypercuboids with \(\lambda \le 0.99\).
The number of hypercuboids that we have to consider in this process is large; therefore, we implemented the approach outlined above using a CUDAcapable GPU in order to perform the computations for individual hypercuboids in a massively parallel fashion. Our implementation of interval arithmetic handles rounding errors arising from the use of limitedprecision floatingpoint arithmetic by using appropriate rounding modes (where available) or error bounds guaranteed by the underlying platform. In this way, we can ensure that the interval resulting from any operation contains all possible results of the corresponding operation on real numbers given values from the input intervals. This ensures soundness of our results in the presence of rounding errors.
Let \(R := R[r_{out }, r_{in }]\) be the ring into which Z is packed. Our prover shows that the density of \(e_i\) is 0.5642, if the ratio of R is at most 0.99. Hence, we assume w.l.o.g. that the ratio of the inner and the outer radius of R is at least 0.99. Furthermore, we assume w.l.o.g. that R has a width of 0.01.
Before we lower bound the density of \(e_i\), we need to define some notations. The midpoint of a ring R is the midpoint of the disk induced by the outer boundary. Let q be a point in R and \(\ell _q\) the ray starting from m and emanating into the direction of q, see Fig. 13. Let \(\overline{q}\) be the intersection point of \(\ell _q\) with the outer boundary of R. Given a ray \(\ell \), called reference axis, the first coordinate of q is the distance between q and \(\overline{q}\). The second coordinate of q is the length of the curve \(\beta \) on the outer boundary between \(\ell \) and \(\ell _q\).
We denote the sector of \(e_i\) by B. Let \(r_j,r_m\) be chosen arbitrarily but fixed. We consider both, the packing of the edge \((r_j,r_m)\) into a ring \(\overline{R} := R[1,0.99]\) and into the ring R. For a clearer presentation, we denote by \(\overline{e}_i=(\overline{r}_j,\overline{r}_m)\) the edge packed into \(\overline{R}\) and by \((r_j,r_m)\) the edge packed into R. Furthermore, let \(\overline{B}\) be the sector of \(\overline{e}_i\). We construct from \(\overline{B} \subset R[1,0.99]\) a sector \(A \subset R\) such that A is a superset of the sector B of \(e_i\). We guarantee \({A}/{B} \le 1.00508\), implying that B has a density of at least \({0.5642}/{1.00508}> 0.56134 > \rho \), because B has a density of at least 0.5642.
Let \(\overline{e}_i\) be of type (T1), see Fig. 14a.
W.l.o.g., we assume that \(r_m\) touches the inner boundary of \(\overline{R}\). Let \(\ell \) be the ray shooting from the midpoint of \(\overline{R}\) into the direction of \(r_m\). We scale and place \(R,r_j,r_m\) so that \(\ell \cap \overline{R}\) is equal to \(\ell \cap R\), see Fig. 14a. Thus, both R and \(\overline{R}\) have the width 1/100. We use \(\ell \) as reference axis for both rings R and \(\overline{R}\). We map each point from the sector of \(\overline{e}_i\) onto the point in R having the same coordinates, see Fig. 14b. Let \(\overline{m}_m, \overline{m}_j\) be the midpoints of \(\overline{r}_m,\overline{r}_j\). By construction, \(\overline{m}_m\) is mapped onto itself. Furthermore, \(\overline{m}_j\) is mapped onto a point that lies farther away from \(\overline{m}_m\) as \(\overline{m}_j\) does, because \(\overline{m}_j\) lies closer to the outer boundary as \(\overline{m}_m\) in the initial configuration.
Let A be the union of all points from R onto which points from the sector of \(e_i\) are mapped, see the blue sector in Fig. 14c. The area \(A\) of A achieves its supremum for \(r_{in }\) approaching 1. Thus, we upper bound \(A \le {\beta }/{100}\), where \(\beta \) is the length of the part of the outer boundary of \(\overline{R}\) inside the sector of \(e_i\). As the outer radius of \(\overline{R}\) is 1, \(\beta \) is also the angle induced by the sector of \(e_i\), see Fig. 14a. Furthermore, the area \(B\) of the unscaled sector B of \(e_i\) is equal to
Thus,
The same approach as used for edges of type (T1) applies to edges of type (T2).
In order to analyze edges of type (T3) and (T4), we need a refined approach. We maintain the first coordinate of q as the distance between q and \(\overline{q}\) and refine the second coordinate as follows: W.l.o.g., let \(\overline{r}_m\) be the disk touching the inner boundary of \(\overline{R}\). Let \(\ell \) be the ray shooting from the midpoint of \(\overline{R}\) into the direction of \(\overline{m}_m\), see Fig. 15. Let \(C_1, C_2\) be the circles having the same midpoint as \(\overline{R}\) such that \(r_m,r_j\) touch \(C_1,C_2\) from the interior. Let \(\alpha _1 \subset C_1,\alpha _2 \subset C_2\) be the circular arcs lying on the boundary of \(\overline{B}\). The second coordinate of q is the sum of the lengths of the parts of \(\alpha _1, \alpha _2\) between \(\ell _q\) and \(\ell \), see the fat red curves in Fig. 15a.
Using the refined definition of coordinates, we apply the approach used for edges of type (T1) and (T2) to that part of \(\overline{B}\) that lies below \(\ell \). Furthermore, we apply the symmetric approach reflected at \(\ell \) to that part of \(\overline{B}\) that lies above \(\ell \). The same argument as used for edges of type (T1) and (T2) implies that the distance between \(\overline{m}_j, \overline{m}_m\) is not decreased.
In order to upper bound the area \(A\) of A, we partition \(\overline{B}\) into three sectors \(S_1,S_2,S_3\), see Fig. 15b. \(S_1\) is that part of \(\overline{B}\) which lies above \(\ell \). \(S_2\) is that part of \(\overline{B}\) which lies above the upper tangent to \(r_m\) and below \(\ell \). \(S_3\) is \(\overline{B}\setminus S_1\cup S_3\). We consider the width d of the pocket left by \(\overline{B}\), see Fig. 15b. Furthermore, let \(A_1,A_2,A_3\) be the images of \(S_1,S_2,S_3\) under mapping points from \(\overline{R}\) onto points from R. The areas \(A_1,A_2,A_3\) of \(A_1,A_2,A_3\) achieve their suprema for \(r_{in }\) approaching 1. In this case the considered part of \(\overline{R}\) deforms to a rectangle whose width is equal to the width of R. Hence, we upper bound \(A_1\) by
where \(\alpha _1\) is the angle induced by \(S_1\), see Fig. 15b. Furthermore, we have
Thus, we upper bound
Using the same approach as used to upper bound \({A_1}/{S_1}\), yields \({A_2}/{S_2} < 1.00508\). Using the same approach as used for edges of type (T1), we obtain \({A_3}/{S_3} \le 1.00508\). This implies \({A}/{B} \le 1.00508\) because \(A = A_1 \cup A_2 \cup A_3\) and \(B = S_1 \cup S_2 \cup S_3\).
If \(e_i = (r_j,r_m)\) of type (T5), we assume w.l.o.g. that the disk \(r_p\) packed between \(r_j\) and \(r_m\) lies adjacent to the inner boundary of R. Otherwise, the area of the sector of \(e_i\) is monotonically decreasing in the ratio of R implying that the sector of \(e_i\) has a density of at least 0.5642. Let \(m_p\) be the midpoint of \(r_p\) and \(\ell \) the ray shooting from the midpoint of R into the direction of the \(m_p\). We apply the same approach as used edges of type (T1) to that part of B which lies above \(\ell \) and the symmetric approach to that part of B which lies below \(\ell \). This yields a lower bound of 0.56134 for the density of \(e_i\). If \(e_i\) is of type (T6), applying the same approach as used for edges of type (T5) yields 0.56134 as a lower bound for the density of \(e_i\). If \(e_i\) is of type (T7) or (T8), applying the same approach as used for edges of type (T3) yields that the density of \(e_i\) is lowerbounded by 0.56134. This concludes the proof.\(\square \)
The proof of Lemma 4.9 is the only computerassisted proof. All remaining proofs are analytic. Combining Lemmas 4.8 and 4.9 yields the following.
Corollary 4.10
Sectors of zippers have a density of at least \(\rho = 0.56064\ldots \)
From Corollary 4.10 we obtain the following:
Corollary 4.11
Let S be that part of a minimal ring which is left after removing its gap and the sectors filled by Disk Packing. Then S has a density of at least \(\rho \).
Ring Packing stops when the sum of the diameters of the current disk \(r_i\) and the disk packed last \(r_{i1}\) is smaller than the width w of the current ring, i.e., if \(2r_{i1} + 2r_i < w\). If \(2r_{i1} + 2r_i < w\), Phase 5 partitions the current ring into two new open rings with widths \(2r_i, w2r_i\). Hence, the sectors of zippers packed by Ring Packing become firmly interlocked without leaving any space between two zippers, see Fig. 16.
The only sectors that we need to care about is the space (below defined as gaps) that is left by Ring Packing due to the second break condition, i.e., the current disk does not fit into the current ring, see the black sectors in Figs. 16 and 17.
In order to analyze the gaps left by Ring Packing, we first need to observe for which rings we need to consider gaps. In particular, we have two break conditions for Ring Packing:

The current disk \(r_i\) does not fit into the current ring R, causing us to close the ring and disregard it for the remainder of the algorithm.

The current and the last disk \(r_{i1}\) packed into R can pass one another, resulting in R to be partitioned into several rings with smaller widths. Thus, we obtain that two computed rings \(R_1,R_2\) either do not overlap or \(R_1\) lies inside \(R_2\). This motivates the following definition.
Definition 4.12
Consider the set of all rings \(R_1,\dots ,R_k\) computed by our algorithm. A ring \(R_i\) is maximal if there is no ring \(R_j\) with \(R_i\subset R_j\). A ring \(R_i\) is minimal if there is no ring \(R_j\) with \(R_i\supset R_j\).
Each ring is partitioned into minimal rings. Thus, we define gaps only for minimal rings, see Fig. 17 and Definition 4.13.
Definition 4.13
Let \(Z = \langle \dots , r_{\ell 1}, r_{\ell } \rangle \) be a zipper of length at least 2 inserted into a minimal ring R. The lid h of R is the ray above the upper tangent u of \(r_{\ell }\) such that h realizes a maximal polar angle while \(h\cap R\) does not intersect an already packed disk \(r_f\) with \(f\le \ell 1\), see Fig. 17. The gap of R is the part of R between the upper tangent u of \(r_{\ell 1}\) and the lid of R which is not covered by sectors of Z, see the whitegray striped sectors in Fig. 17. A unit sector of R is a sector of R that lies between the two tangents of a disk touching the inner and the outer boundary of R, see Fig. 17. The unit area \(U_R\) of R is the area of a unit sector of R.
The lid of a gap lies either inside a cone induced by a disk packed by Disk Packing, see Fig. 17a, or inside the sector of a zipper packed by Ring Packing, see Fig. 17b. This leads to the following observation.
Observation 4.14
Each minimal ring R is covered by the union of cones induced by disks packed by Disk Packing into R, sectors of zippers packed by Ring Packing into R, and the gap of R.
Next, we upper bound the area of the gap of minimal rings.
Lemma 4.15
The gap of a minimal ring R has a area of at most \(1.07024U_R\).
Proof
As we want to upper bound the area of the gap w.r.t. the unit area \(U_R\) of R, w.l.o.g. we make the following assumptions (A1)–(A4), see Fig. 18:

(A1)
The largest disk \(\lambda \) inside R touching h from below, the upper tangent of \(r_{\ell }\) from above, and the inner boundary of R, such that \(\lambda \) does not overlap with any other disks from below, has the same radius as \(r_{\ell }\), see Fig. 18a.

(A2)
The last disk \(r_{\ell }\) packed into R touches the inner boundary of R, see Fig. 18b.

(A3)
The empty pocket A left by the sector of the end edge of the zipper inside R is bounded from below by the lower tangent of \(r_{\ell }\) but not by the upper tangent of \(r_{\ell 1}\), see Fig. 18c.

(A4)
\(r_{out }= 1\), \(r_{in } ={1}/{2}\), see Fig. 18d.
Let B be the sector of R that lies between the two tangents of \(\lambda \), see Fig. 18a. We upper bound the area of the gap of R as \(A + B \le 1.07024 S_1\), as follows.
Let \(\mu \subset R\) be the disk touching the inner and the outer boundary of \(R_1\) and the upper tangent of \(r_{\ell }\) from above, see Fig. 18e. Note that the disk \(\lambda \) was not part of the input but needed for the description of our first simplifying assumption. Thus, \(\lambda \) is not relevant anymore for the following descriptions. Furthermore, let D be the part of the cone induced by \(\mu \) that lies inside R and between the upper and lower tangent of \(\mu \), see Fig. 18e. In the following, we show that \(A  D \le 0.07024U_R\).
The first derivative of \(V_{AD}\) is
Solving \({d( V_{AD}( \lambda ))/}{d\lambda } = 0\) yields \(\lambda \approx 0.196638\). Finally, we observe that \(V_{AD}({1}/{8}) \approx 0.01576\), \(V_{DF}( 0.196638) \approx 0.01756\), \(V_{AD}({1}/{4}) \approx 0.00001\). This implies that \(A  D \le 0.01756 \le 0.07024U_R\), because \(U_R \ge {1}/{4}\). \(\square \)
4.5 Analysis of the Algorithm for the Case \(r_1\le 0.495\)
We show that each computed minimal ring is saturated, see Corollary 4.18. Let \(R_1,\dots ,R_h \subseteq \mathcal {C}\) be the created minimal rings ordered decreasingly w.r.t. their outer radii. The inner boundary of \(R_i\) is the outer boundary of \(R_{i+1}\) for \(i = 1,\dots ,h1\). We show by induction over h that \(R:=R[r_{out }, r_{in }]:=R_h\) is saturated. Thus, we assume that \(R_1,\dots ,R_{h1}\) are saturated, implying that \(\mathcal {C} \setminus r_{out }\) is saturated, where \(r_{out }\) is the outer radius of \(R_h\).
For the remainder of Sect. 4.5, each cone induced by a disk \(r_i\) packed by Disk Packing is charged by the entire area of \(r_i\).
Lemma 4.16
Assume \(r_n <{1}/{4}\). There is at least one disk \(r_k\) packed into R and touching both the inner and the outer boundary of R.
Proof
Assume that our algorithm did not pack a disk with radius smaller than 1/4 adjacent to \(\mathcal {C}\). Let \(r_k\) be the largest disk not packed adjacent to \(\mathcal {C}\).
By Lemma 4.5 we obtain that \(r_k\) is smaller than 1/4. This implies that the area of the sector that is not covered by the cones induced by \(r_1,\dots ,r_{k1}\) is upper bounded by \(\arcsin (1/3)\), see Fig. 19.
For \(i = 1,\dots ,r_{k1}\), the cone induced by \(r_i\) is charged by the entire area of \(r_i\). Lemma 4.4 implies that each cone has a density of at least \(\rho \), because \(r_1,\dots ,r_n \le 0.495\). This implies that the total area of \(r_1,\dots ,r_{k1}\) is greater than
which is a contradiction.\(\square \)
Lemma 4.17
\(R_h\) is saturated.
Proof
Let \(S_1\) be the sector of \(R_h\) that is covered by cones induced by disks packed by Disk Packing or by sectors of zippers packed by Ring Packing. Lemma 4.16 implies that there is a disk \(r_k\) packed into \(R_h\) such that \(r_k\) touches the inner and the outer boundary of \(R_h\). Let \(S_2\) be the sector of \(R_h\) between the lower and the upper tangent of \(r_k\).
We move potentials \(\delta _1, \delta _2\) from \(S_1,S_2\) to a potential variable \(\varDelta \) and guarantee that \(\varDelta \) is at least 1/2 times the area of the gap G of \(R_h\). Finally, we move \(\varDelta \) to G, implying that G is saturated, which in turn implies that \(R_h\) is saturated.
Lemma 4.8 implies that the density of \(S_2\) is at least 0.77036. We move a potential \(\delta _2 := ( 0.77036  \rho ) S_1 > 0.20971U_{R_h}\) from \(S_1\) to \(\varDelta \), implying that \(S_2\) has still a density of \(\rho \).
As Disk Packing only packs disks with a radius of \({\mathcal {C}}/{4}\), combining Lemma 4.4 and Corollary 4.10 yields that \(S_1\) has a density of at least \(\rho \). Lemma 4.15 implies that the area of the gap of \(R_h\) is at most \(1.07024U_R\). The area of \(R_h\) is at least \({2 \pi U_{R_h}}/({2 \arcsin (1/3)})~\mathrm{which~is~larger~than}~9.24441U_{R_h}\). Thus, the area of \(S_1\) is at least \((9.24441  1.07024)U_{R_h} = 8.17417U_{R_h}\). Hence, we move a potential \(\delta _1:=( \rho  {1}/{2})8.17417U_{R_h} > 0.49576U_{R_h}\) to \(\varDelta \).
We have \(\varDelta = \delta _1 + \delta _2 > 0.49576U_{R_h}+ 0.20971U_{R_h}=0.70547\), which is large enough to saturate a sector of area \(V_\varDelta =2\cdot 0.70547U_{R_h}=1.41094U_{R_h}\). As \(G\le 1.07024\), moving \(\varDelta \) to G yields that G is saturated, which implies that \(R_h\) is saturated. This concludes the proof.\(\square \)
Corollary 4.18
Each minimal ring is saturated.
As each ring can be partitioned into minimal rings, we obtain the following.
Corollary 4.19
All rings are saturated.
Combining Lemma 4.5 and Corollary 4.19 yields that all disks are packed.
Lemma 4.20
Our algorithm packs all input disks.
Proof
By induction assumption we know that \(O \setminus \mathcal {C}\) is saturated and Corollary 4.19 implies that all rings inside \(\mathcal {C}\) are also saturated. Let \(\overline{\mathcal {C}}\) be the disk left after removing all rings from \(\mathcal {C}\), implying that \(\overline{\mathcal {C}}\) is empty. Lemma 4.5 implies that a final iteration of Disk Packing to \(\overline{\mathcal {C}}\) yields that all remaining disks are packed into \(\overline{\mathcal {C}}\). This concludes the proof.\(\square \)
4.6 Analysis of the Algorithm for the Case \(0.495 \le r_1 \le {1}/{2}\)
In this section, we show that our algorithm packs all disks if \(0.495 \le r_1 \le {1}/{2}\). Let \(R_1,\dots ,R_{h}\) be the maximal rings ordered decreasingly w.r.t. their outer radii. As \(R_1,\dots ,R_{h}\) are maximal, \(R_1,\dots ,R_{h}\) are also ordered decreasingly w.r.t. their widths, because our algorithm processes the disks \(r_1,\dots ,r_n\) in decreasing order. The inner radius of \(R_i\) is equal to the outer radius of \(R_{i+1}\) for \(i = 1,\dots ,h\). We distinguish whether there is a maximal ring with inner radius smaller than 1/2 or not.
Lemma 4.21
If all inner radii of maximal rings are smaller than or equal to 1/2, all disks are packed.
Proof
Lemma 4.22 implies that the center of a smallest disk inside each minimal ring \(R_{\min }\) that lies inside \(R_1,\dots ,R_h\) lies above the upper tangent of \(r_1\). Hence, each zipper inside \(R_1,\dots , R_h\) has a length if at least two. Thus, Lemma 4.9 implies that all rings of \(R_1,\dots ,R_h\) are saturated. Thus, if there is a disk \(r_i\) that cannot be packed by our overall algorithm, Disk Packing fails to pack \(r_i\). But this is a contradiction to Lemma 4.5 implying that all disks are packed.\(\square \)
We use the following lemma in the proof of Lemma 4.21.
Lemma 4.22
Let \(r_1 \ge 0.495\) placed adjacent to \(\mathcal {C}\). The largest disk r whose midpoint can be placed on a tangent t of \(r_1\) such that \(r_1,r\) do not overlap has a radius of at least 1/4, see Fig. 20.
Proof
W.l.o.g., we assume \(r_1 = 0.495\), because this does not increase the area of the sector between t and \(r_1\). Let \(m_1\) be the midpoint of \(r_1\), \(c_1\) the orthogonal projection of \(m_1\) onto t, and \(c_2\) the intersection point of t with the boundary of \(\mathcal {C}\), see Fig. 20.
Pythagoras’ Theorem implies \(m c_1 = \sqrt{0.505^2  0.495^2} ={1}/{10}\), which yields \(c_1 c_2 = {9}/{10}\). For the sake of contradiction, assume \(c_2m_2 ={1}/{4}\). Another application of Pythagoras’ Theorem implies that \(m_1 m_2\) is equal to \(\sqrt{0.495^2 + 0.65^2} \approx 0.81702 > 0.505 +{1}/{4} = m_1 m_2\) which contradicts the assumption. This concludes the proof.\(\square \)
Hence, we assume w.l.o.g. that there is a maximal ring with inner radius smaller than 1/2. Let \(R_{{M}}\) be the maximal ring with outer radius larger and inner radius \({\lambda _M}\) not larger than 3/4. First, we show that we can move a potential of
from \(R_1,\dots ,R_{{M}}\) to potential function \(\varDelta \) while guaranteeing that \(R_1, \dots ,R_{{M}}\) is saturated, see Corollary 4.26. We distinguish whether \({{M}} = 1\) or \({{M}} > 1\), see Lemmas 4.23 and 4.25.
For the remainder of this section, each disk \(r_i\) packed by Disk Packing in Phase 1 charges the cone induced by \(r_i\) by the entire area of \(r_i\).
Lemma 4.23
Let \(0.495 \le r_1 \le {1}/{2}\) and \({{M}} = 1\). We can move a potential of (1) from \(R_1\) to potential function \(\varDelta \) while guaranteeing that \(R_1\) is saturated.
Proof
Let C be the cone induced by \(r_1\), see Fig. 21. Lemma 4.4 implies that C is saturated. Lemma 4.4 implies that the density of C is lowerbounded by 1/2. Thus, we assume w.l.o.g. that the density of C is 1/2.
In the following, we consider three sectors \(S_1,S_2,S_3 \subset R_1\). We prove that the potentials of \(S_1,S_2,S_3\) can be reduced by certain potentials (denoted by \(\delta _1,\delta _2,\delta _3\)) while still ensuring that a density of 1/2 for \(R_1\). We iteratively remove \(\delta _1,\delta _2,\delta _3\) from \(S_1,S_2,S_3\) and charge it to \(\varDelta \).
As we want to lower bound the potential that we can remove from \(R_1\) while maintaining that \(R_1\) is saturated, we upper bound the sum of the gaps of all minimal rings inside \(R_1\). Thus, we assume w.l.o.g. that \(R_1\) is minimal, because this does not increase the sum of the gaps inside \(R_1\). Lemma 4.15 implies that the gap of \(R_1\) is at most \(1.07024U_{R_1}\).
\(\bullet \) Construction of \(S_1,\delta _1\): Lemma 4.24 implies that there is a disk \(r_k\) packed into \(R_1\) touching the inner and the outer boundary of \(R_1\), see Fig. 21a. Let \(\alpha \) be the angle of the cone induced by \(r_k\). Lemma 4.8 implies that the part \(S_1\) of \(R_1\) that lies between the two tangents of \(r_k\) has a density of at least 0.77036. We remove a potential of \(\delta _1 :=( 0.77036  \rho ) S_1 = 0.20936S_1=0.20936U_{R_1}\) from \(S_1\) and move it to \(\varDelta \). This implies that the density of \(S_1\) is equal to \(\rho \) and that we have saved a potential enough for achieving a density of \(\rho \) for a sector of area \({0.20936}U_{R_1}/\rho \approx 0.37319U_{R_1}\).
\(\bullet \) Construction of \(S_2,\delta _2\): Lemma 4.22 implies that the midpoint of the last disk \(r_{\ell }\) packed into \(R_1\) lies above the upper tangent \(t_u\) of \(r_1\), see Fig. 21a. Combining Lemmas 4.9 and 4.4 implies that the part \(S_2\) of \(R_1\) that lies above the lower tangent of \(r_1\) and below the center ray \(c_{\ell }\) of \(r_{\ell }\) has a density of \(\rho \), see Fig. 21a. The angle of the cone C induced by \(r_1\) is upper bounded by \(\pi \), because \(r_1\le 1/2\). This implies that the angle between the upper tangent and the lower tangent of \(r_1\) in counterclockwise order is lower bounded by \(\pi \), see Fig. 21a. Hence, the area of \(S_2\) is lower bounded by \(\pi U_{R_1}/(2\arcsin (1/3))>4.6222U_{R_1}\). As \(S_2\) has a density of \(\rho \), we move a potential of \(( \rho 1/2)S_2>(\rho 1/2)4.6222U_{R_1} > 0.28033U_{R_1} =: \delta _2\) from \(S_2\) to \(\varDelta \), while ensuring that \(S_2\) is saturated and thus \(R_1\) as well. The value of \(\varDelta \) is at least as large as the potential needed to achieve a density of \(\rho \) for a sector of area \(({0.28033}/{\rho } + 0.37319)S_1 > ({1}/{2} + 0.37319)S_1 = (10.12681)S_1 = 0.87319U_{R_1}\).
\(\bullet \) Construction of \(S_3,\delta _3\): Let \(S_3\) be the sector defined as that part of C that is covered by sectors of the unique^{Footnote 4} zipper inside \(R_1\), see Fig. 21b. We charge \(\varDelta \) by the sum \(\delta _3\) of the potentials moved from disks of the zipper to \(S_3\). Lemma 4.4 implies that removing \(\delta _3\) from \(S_3\) still ensures that C is saturated. As \(\delta _3\) is monotonically increasing with \(r_1\) we assume w.l.o.g. \(r_1=0.495\) for lowerbounding \(\delta _3\).
\(\bullet \) Lowerbounding \(\varDelta := \delta _1 + \delta _2 + \delta _3\): We lower bound the value of \(\varDelta \) in terms of that part A of \(R_1\) that lies between the upper tangent \(t_u\) of \(r_1\) and the lid \(\ell _1\) of \(R_1\), see the blue sector in Fig. 21b. In particular, we lower bound the area \(V_{\varDelta }\) of an arbitrary sector such that \({\varDelta }/{V_{\varDelta }}\ge \rho \). Lemma 4.15 implies that the gap of \(R_1\) has an area of at most \(1.07024U_{R_1}\), implying
Recall that C is the cone induced by \(r_1\). Furthermore, we consider the intersection point \(c=(c_x,c_y)\) of the boundary of \(r_1\) and the inner boundary of \(R_1\), where \(c_x,c_y\) are the coordinates of c, see Fig. 21b. For upperbounding the angle \(\beta \) between the center ray of \(r_1\) and \(\ell _1\) we assume \(r_1=1/2\). As c lies on the boundary of \(r_1\), we have \((c_x1/2)^2+c_y^2=1/4\), which is equivalent to \(c_y^2=c_xc_x^2\Leftrightarrow c_y^2+c_x^2=c_x\) implying \(\sqrt{c_x}=\sqrt{c_y^2+c_x^2}\). Thus, \(mc=\sqrt{c_x}\), implying that \(\beta \) is \(\arccos \sqrt{c_x}\). Furthermore, we obtain from \(mc=\sqrt{c_x}\) that the area of \(R_{1}\) is equal to \(\pi ( 1c_x)\).
We observe that the angle between the center ray of \(r_1\) and the upper tangent of \(r_1\) is
This yields
The angle \(\alpha \) of the cone induced by \(r_k\) is equal to
because \(mc = \sqrt{c_x}\). Hence, we upper bound
We lower bound as follows.
Furthermore, we have \(\sqrt{c_x} \in [{1}/{2}, {3}/{4}]\), because the width of \(R_1\) is lower bounded by 1/4 and upper bounded by 1/2. Thus, \(c_x\in [{1}/{4},0.5625]\). We continue by proving \(f(c_x) \ge 0\). Let
so that \(f(c_x) = f_1(c_x)  f_2(c_x)\). Because x is positive, we have
Furthermore,
is monotonically increasing due to \(c_x<1\). The firstorder derivative of \(f_1(c_x)\) is monotonically decreasing, and the firstorder derivative of \(f_2(c_x)\) is monotonically increasing on \(c_x\in [{1}/{4},0.5625]\). Furthermore, we have
which together with the monotonicity of the derivatives means that \(f_1\) attains its minimum and \(f_2\) attains its maximum on \(c_x \in [1/4,0.5625]\) at either \(c_x =1/4\) or \(c_x = 0.5625\). Therefore, we find that \(\min f(c_x) \ge \min f_1(c_x)  \max f_2(c_x) \approx 0.1215  0.1079 > 0\) implying \(V_{\varDelta }  (c_x/{2}) \arcsin (1/3)\ge 0\) which is equivalent to \(V_{\varDelta } \ge (c_x/2)\arcsin (1/3)=(mc^2/2)\arcsin (1/3) =({\lambda _M^2}/{2})\arcsin (1/3)\). This means that moving the potentials \(\delta _1,\delta _2,\delta _3\) from \(S_1,S_2,S_3\) to \(\varDelta \) yields \(\varDelta \ge \rho \cdot ({\lambda }_{{M}}/{2})\arcsin (1/3) >({\lambda }_{{M}}/4)\arcsin (1/3)\) while maintaining that \(S_1,S_2,S_3\) are saturated, implying that \(R_1\) is saturated. This concludes the proof.\(\square \)
The pocket below \(r_1\) is large enough to ensure that there is at least one disk packed into \(R_{1}\), proven by the following lemma.
Lemma 4.24
For each \(i = 1,\dots ,{{M}}\), there is a disk \(r_k\) packed into \(R_{i}\).
Proof
Assume there is an \(i \in \{ 1,\dots , M \}\) such that there is no disk packed into \(R_i\), i.e., there is a disk \(r_k<1/4\) that did not fit into \(R_i\). First, we consider the case \(i=1\). This implies that all previously packed disks \(r_1,\dots ,r_{k1}\) have radii lower bounded by 1/4. Thus, \(r_1,\dots ,r_{k1}\) are packed by Disk Packing in Phase 1 adjacent to the container disk. Lemma 4.4 implies that the cones induced by \(r_2,\dots ,r_{k1}\) have densities lower bounded by \(\rho \), because \(r_2\le 0.495\). As the cone induced by \(r_1\) has an angle of at most \(\pi \), the union A of the cones induced by \(r_1,\dots ,r_k\), see the gray sector in Fig. 19a, has a density of \(\rho \). As \(r_k <1/4\) does not fit between \(r_{k1}\) and \(r_1\), the angle between the lower tangent of \(r_{k1}\) and the upper tangent of \(r_1\) is smaller than
Hence, the angle of A is larger than \(2\pi  2\arcsin (1/3)\). Thus, the potential moved to A is lower bounded by
This implies that the entire container disk is saturated, which implies that the total area of \(r_1,\dots ,r_n\) is larger than the half of the container disk. A similar argument implies that for each \(i \in \{ 2,\dots ,M \}\) there is a disk packed into \(R_i\). This concludes the proof.\(\square \)
Next, we consider the case \(m >1\), i.e., there are at least two rings with outer radius not smaller than 3/4. Recall that \(\lambda _{{M}}\) is the inner radius of \(R_M\).
Lemma 4.25
Let \({{M}} > 1\). We can remove a potential of \((\lambda _{{M}}^2/{4}) \arcsin (1/3)\) from \(R_1,\dots ,R_{{M}}\) while guaranteeing that \(R_1, \dots ,R_{{M}}\) are saturated.
Proof
As the outer radius of \(R_{{M}}\) is at least as large as 3/4 the union of all rings \(R_1,\dots ,R_M\) covers the ring \(R[1,1/4]\) and lies inside the ring \(R[1,1/2]\). Hence, applying the same approach as used in Lemma 4.23 implies that we can remove a potential of \((\lambda _{{M}}^2/{4})\arcsin (1/3)\) from \(R_1,\dots ,R_m\) while guaranteeing that \(R_1, \dots ,R_{{M}}\) is saturated. This concludes the proof.\(\square \)
Let \(C_\varDelta \) be the cone with apex at m, angular radius of \(\arcsin (1/3)\), and radius \(\lambda _{{M}}\) such that \(C_\varDelta \) touches the upper tangent \(t_1\) of \(r_1\) from below, see Fig. 22b. Combining Lemma 4.23 and Lemma 4.25 yields the following.
Corollary 4.26
We can move a potential of \((\lambda _{{M}}^2/4)\arcsin (1/3)\) from \(R_1,\dots ,R_{{M}}\) to potential function \(\varDelta \), while guaranteeing that \(R_1,\dots ,R_{{M}}\) are saturated.
Corollary 4.26 implies that we can add a potential of \((\lambda _{{M}}^2/4)\arcsin (1/3)\) to \(C_\varDelta \). This yields that \(C_\varDelta \) is saturated, allowing us to show that all the remaining maximal rings \(R_{{{M}}+1}, \dots , R_h\) are also saturated.
Lemma 4.27
The rings \(R_{{{M}}+1}, \dots , R_h\) are saturated.
Proof
The proof is by induction. Assume that the rings \(R_{{{M}}+1},\dots ,R_{h1}\) are saturated. Let \(r_{out }, r_{in }\) be the outer and inner radius of \(R_h\). W.l.o.g., we assume \(r_{out } = 1\). Note that \(R_h\) is the ring with the largest outer radius implying \(r_{out } = \mathcal {C}\) which is already equal to 1 if no recursion is applied. This means that the simplifying assumption \(r_{out }\) only addresses the recursion. First we show that there is a disk packed into \(R_h\). From this we deduce that \(R_h\) is saturated.
\(\bullet \) For the sake of contradiction, assume there is no disk packed into \(R_h\). This means that the disk \(r_{crash }\) that did not fit into \(R_h\), is responsible for the construction of \(R_h\). Thus, all disks packed previously adjacent to \(r_{out }\) have radii of at least 1/2 because \(r_{out }=1\). Hence, the sector A of \(r_{out }\) between the upper tangent \(t_1\) of \(r_1\) and the upper tangent \(t_2\) of the disk placed last adjacent to \(r_{out }\) (see the blue cone in Fig. 22a) is smaller than the cone induced by \(r_{crash }\), see the red cone in Fig. 22a. Lemma 4.4 implies \(r_{crash } < 0.2019r_{out }\). Otherwise, the total area of \(r_1,\dots ,r_n\) would be larger than \(\pi /2\), because the red cone would be saturated in case of \(r_{crash } \ge 0.2019\). This is a contradiction.
Let \(C_2\) be the cone with apex at m, an angle of \(2\arcsin ({0.2019}/{0.7981})\arcsin (1/3)\), and radius \(r_{out }\) such that \(C_2\) touches \(C_{\varDelta }\) from below, see Fig. 22b. Furthermore, let S be that part of \(R_{h}\) that lies above the lower tangent of \(r_1\) and below \(t_2\), see the red cone in Fig. 22c. As \(r_2,r_3,\ldots \le 0.495\), Lemma 4.4 implies that S has a density of at least \(\rho \). As \(r_1\le 1/2\), the cone induced by \(r_1\) has an angle of at most \(\pi \). Furthermore, the angle of A is upper bounded by \(2\arcsin ({0.2019}/({0.5 + 0.2019}))\), because \(r_{crash } \le 0.2019\). This implies that S realizes an angle of at least \(\pi  2\arcsin ({0.2019}/({0.5 + 0.2019}))\). Hence, we move a potential of
from S to \(C_2\), maintaining that S is saturated. Furthermore, \(C_2\) is saturated, because \(C_2\) has an angle of
As the angle of A is upper bounded by \(2 \arcsin (0.2019/0.7019)\), which is smaller than the sum of the angles of \(C_{{\varDelta }}\) and \(C_2\), we obtain that S has a density larger than 1/2. By induction the remaining part of the entire packing container is saturated, so we conclude that the total input area is larger than half of the container area, which is a contradiction.
\(\bullet \) Lemma 4.15 implies that the part G of the gap of \(R_h\) that lies not inside the cone induced by \(r_1\) has an area of at most \(1.07024U_{R_h}\). In the following, we construct three sectors \(S_1,S_2,S_3\) and move certain potentials \(\delta _1,\delta _2,\delta _3\) from \(S_1,S_2,S_3\) to potential function \(\varDelta \). Finally, we show that after moving \(\varDelta \) to G yields that G is saturated.

Construction of \(S_1,\delta _1\): As there is a disk packed into \(R_h\), there is a disk \(r_k\) touching the inner and the outer boundary of \(R_h\), see Fig. 23. Let \(S_1\) be the sector of \(R_h\) between the lower and the upper tangent of \(r_k\), see the red sector in Fig. 23. Lemma 4.8 implies that \(S_1\) has a density of at least 0.77036. Thus, we move a potential of \((0.770361/2)S_1= 0.27036 U_{R_h}\) from \(S_1\) to \(\varDelta \), which still ensures that \(S_1\) is saturated.

Construction of \(S_2,\delta _2\): Let \(S_2\) be the part of \(R_h\) that lies between the lower and the upper tangent of \(r_1\) and which is covered by sectors of disks already packed by disk or Ring Packing, see the blue sector in Fig. 23. Corollary 4.11 implies that \(S_2\) as a density of \(\rho \). As the angle of the cone induced by \(r_1\) is upper bounded by \(\pi \), we obtain
$$S_2 \ge \frac{\pi }{\pi }\pi ( 1 ( 1  r_{in })^2)  1.07024U_{R_h},$$which is lower bounded by \(3.55196U_{R_h}\), because \(r_{in } \le 1/2\). Thus, we move a potential of
$$\begin{aligned} \delta _2 := \biggl ( \rho  \frac{1}{2} \biggr )3.55196U_{R_h} > 0.21542U_{R_h} \end{aligned}$$from \(S_2\) to \(\varDelta \). This yields that \(S_2\) is still saturated.

Construction of \(S_3, \delta \): Let \(S_3\) be the intersection of \(C_{\varDelta }\) and \(R_h\). By construction of \(C_{\varDelta }\), see above Corollary 4.26, we can move a potential of \({U_{R_h}}/{4}\) from \(S_3\) to \(\varDelta \), while ensuring that \(R_h \setminus G\) is saturated.

Lower bounding \(\varDelta \): By the construction of \(\delta _1,\delta _2,\delta _3\), we have \(\varDelta = \delta _1 + \delta _2 + \delta _3 \ge ( 0.27036 + 0.21542 + {1}/{4} )U_{R_h} = 0.73578U_{R_h}\), which is enough to saturate a sector of area \(1.47156U_{R_h}\). As the area of G is upper bounded by \(1.07024U_{R_h}\), moving \(\varDelta \) to G saturates G and thus the entire ring \(R_h\).
As \(R_h\) is saturated, it follows by induction that all rings \(R_{M+1},\dots ,R_h\) are saturated. This concludes the proof.\(\square \)
Combining Lemmas 4.25 and 4.27 implies that all rings created by our algorithm are saturated.
Corollary 4.28
If \(r_1 \le 0.495\), all rings are saturated.
Combining Lemma 4.5 and Corollary 4.28 by the same approach as used in the proof of Lemma 4.20 implies that all disks are packed, concluding the proof of Lemma 4.29.
Lemma 4.29
If \(0.495r_1 \le 1/2\), our algorithm packs all disk into the original container disk.
4.7 Analysis of the Algorithm for the Case \(1/2 < r_1\)
In this section we show that our algorithm packs all disks if \({1}/{2} < r_1\). In particular, we reduce the case \({1}/{2} < r_1\) to the case \(r_1 ={1}/{2}\). Then an application of the same approach as used for the case \(0.495 \le r_1 \le {1}/{2}\) implies that all disks from the input are packed by our algorithm.
We start with some technical definitions. The half disk H is that part of a disk D that lies not to the right of the vertical diameter of D. The midpoint, the radius, and the vertical diameter of H are the midpoint, the radius, and the vertical diameter of D.
Let D be the disk with radius \(1  r_1\) inside \(\mathcal {C}\) such that D and \(r_1\) do not overlap, see Fig. 24. Furthermore, let H by the half disk with radius \(2(1  r_1)\) and its diameter crossing orthogonally the touching point between D and \(r_1\), see the white half disk in Fig. 24.
For the remainder of this section, w.l.o.g., we scale our entire configuration such that D has a fixed radius of 1/2, implying that \(\mathcal {C}\) has a radius of \(1/(2(1r_1))\) and \(r_1\) a new radius of \({r_1}/(2(1r_1))\), see Fig. 24.
Lemma 4.2 implies that the total area of \(r_2,\dots ,r_n\) is smaller than the area of D, i.e., smaller than \(\pi (1  r_1)^2\). Thus, we assume w.l.o.g. that the total area of \(r_2,\dots ,r_n\) is equal to \(\pi (1  r_1)^2\). The area of H is twice the area of D, i.e., twice the area of the remaining disks to be packed. By assumption, \(\mathcal {O} \setminus \mathcal {C}\) is saturated. As the total input area is equal to the area of \(\mathcal {O}\), \(\mathcal {C} \setminus H\) is saturated. First, we consider the case that there is no ring created by our algorithm.
Lemma 4.30
If there is no ring created by our algorithm, all input disks are packed by Disk Packing.
Proof
Let \(r_i \ne r_1\) be an arbitrary disk, packed by Disk Packing and let \(m_i\) its midpoint. Furthermore, let \(\overline{m}\) be the midpoint of H, see Fig. 25.
Let \(\ell _1,\ell _2\) be the two rays starting in \(\overline{m}\) and touching \(r_i\). Furthermore, let S be that part of H that lies between \(\ell _1,\ell _2\), see the red bounded sector in Fig. 25. \(r_i\) moves its entire potential to S. By moving the midpoint \(m_i\) of \(r_i\) into the direction of \(\overline{m}\) while maintaining the radius of \(r_i\), the area of S increases while the area of \(r_i\) stays the same. Lemma 4.4 implies that S has a density of at least \(\rho \). Finally, applying the same approach as used in the proof of Lemma 4.5 implies that all disks are packed.\(\square \)
Thus, we assume w.l.o.g. that there are rings created by our algorithm. Let \(R_1,\dots ,R_{h}\) be the maximal rings ordered decreasingly w.r.t. their outer radii. As \(R_1,\dots ,R_{h}\) are maximal, \(R_1,\dots ,R_{h}\) are also ordered decreasingly w.r.t. their widths, because our algorithm processes the disks \(r_1,\dots ,r_n\) in decreasing order.
Lemma 4.31
If the inner radius of \(R_h\) is greater than 1/2, all input disks are packed by our approach.
Proof
We use the potential assignments used in the proof of Lemma 4.30 and apply the same approach as used in the proof of Lemma 4.21. This concludes the proof.\(\square \)
Hence, we assume w.l.o.g. that the inner radius of \(R_h\) is smaller than 1/2. Let \(R_1,\dots ,R_{{M}}\) be all maximal rings such that the outer radius of \(R_{{M}}\) is not smaller and the inner radius of \(R_{{M}}\) is smaller than 3/4, see Fig. 26b. As \(R_1,\dots ,R_{{M}}\) are ordered decreasingly w.r.t. their widths, each ring of \(R_1,\dots ,R_{{M}}\) has an inner radius not smaller than 1/2. Lemma 4.32 implies that each ring \(R_1,\dots ,R_{{M}}\) contains at least one disk.
Lemma 4.32
Consider a ring R with an inner radius of \(r_1\). Let \(\ell \) be vertical diameter of \(\mathcal {C}\). The largest disk \(\overline{r}\) that can be packed on the same side of \(\ell \) as the midpoint of \(r_1\) has a radius of 1/2, see Fig. 26a.
Proof
Let \(m_1\) be the midpoint of \(r_1\). The width of R is 1/2. Thus, a disk \(\overline{r}:=1/2\) inside R touches both the inner and the outer boundary component of R. We place the midpoint of \(\overline{r}\) on the bisector between m and \(m_1\). Thus, \(\overline{r}\) is touching the boundary of r, because \(\overline{r}\) touches the inner boundary component of R. Finally, \(mm_1 = 1r\) implies that the midpoint of \(\overline{r}\) has a distance of \((1r)/2\) to \(\ell \). This concludes the proof.\(\square \)
Corollary 4.33
For each \(i = 1,\dots ,{{M}}\), there is a disk \(r_k\) packed into \(R_{i}\), see Fig. 26b.
Note that we assumed w.l.o.g. that \(\mathcal {C}\) has a radius of \(1/(1r_1)\). We consider the rings \(\overline{R}_1,\dots ,\overline{R}_m\) lying inside the container corresponding to the case \(r_1=1/2\) such that \(R_i,\overline{R}_i\) have the same width for \(i = 1,\dots ,m\), see Fig. 27. Let \(L_i,\overline{L}_i\) be that parts of \(R_i, \overline{R}_i\) that lie below the horizontal diameters of the container disks and below the lids of \(R_i,\overline{R}_i\), see the red sectors in Fig. 27.
In the following, we show that the area \(\overline{L}_i\) of \(\overline{L}_i\) is not larger than the area \(L_i\) of \(L_i\). Thus, we need a tool for measuring the areas of \(L_i, \overline{L}_i\). Let \(w_i\) be the width of \(R_i,\overline{R}_i\). Let \(r_{in }\) be the inner radius of \(R_i\). Furthermore, let \(C_i, \overline{C}_i\) be the circles with midpoint m and radius \(r_{in } +{w_i}/{2}\) corresponding to the cases \(r_1 >{1}/{2}\) and \(r_1 ={1}/{2}\). Analogously, let \(c_i \overline{c}_i\) be the circles with midpoint m and radius \(r_{in }\) for \(r_1 >1/2\) and \(r_1 ={1}/{2}\). Furthermore, let \(\gamma _i, \overline{\gamma }_i, \mu _i, \overline{\mu }_i\) be those parts of \(C_i,\overline{C}_i, c_i, \overline{c}_i\) that lie inside \(L_i,\overline{L}_i\), see Fig. 28. Finally, let \(r_1, \overline{r}_1\) the circles presenting the inner circle of \(r_1\) for \(r_1 >1/2\) and \(r_1 =1/2\).
The following observation is straightforward:
Observation 4.34
The areas of \(L_i\) and \(\overline{L}_i\) are \(w_i \cdot \gamma _i\) and \(w_i \cdot \overline{\gamma }_i\).
Based on Observation 4.34 we can upper bound the area of \(\overline{L}_i\) by the area of \(L_i\).
Lemma 4.35
The area of \(\overline{L}_i\) is not larger than the area of \(L_i\).
Proof
As \(\overline{L}_i, L_i\) have the same width, Observation 4.34 implies that we have to show that \(\overline{\gamma }_i\) is not longer than \(\gamma _i\).
For simplified calculations, we move \(\mathcal {C}, r_1,\mu _i, \gamma _i\) by \(r_11/2\) to the left, see the transition illustrated in Fig. 29. This does not change the lengths of the circular arcs \(\gamma _i\), but now all \(C_i, c_i,\overline{C}_i, \overline{c}_i, \gamma _i,\overline{\gamma }_i, \mu _i, \overline{\mu }_i\) have the same midpoint m and both versions of \(r_1\) for \(r_1>1/2\) and \(r_1 =1/2\) have the same midpoint \(m_1\), see Fig. 29b.
Let a be the intersection point between \(\overline{\mu }_i\) and \(\overline{r}_1\), see Fig. 30a. Let \(\delta \) be the difference between the radii of \(\overline{c}_i\) and \(\overline{r}_1\). Furthermore, let b be the point within a distance of \(\delta \) to \(m_1\), such that \(m_1\) lies in the interior of the segment between a and b. Let B(m, b) be the bisector between m and b. Furthermore, let d be the intersection point between \(\mu _i\) and \(r_1\) and \(\ell \) the line induced by \(m_1\) and d, see Fig. 30a. By construction, b lies closer to d than c, see zoom (1) in Fig. 30a, implying that d lies on the same side of B(m, b) as b, see zoom (2) in Fig. 30a. Hence, we assume w.l.o.g. that \(\mu _i\) ends on B(m, b).
The angle induced by m, a in d is upper bounded by \(\pi /6\), because the distance between m, d is at least as large as the distance between m, b. This implies that the length of that part \(\beta \) of \(\overline{\mu }_i\) that lies on the opposite side of B(m, b) as b, see the blue curve in Fig. 30b, is upper bounded by
Let \(\alpha \) be the left of the two angles between the horizontal diameter of \(\mathcal {C}\) and the segment between m and d. We have \(\alpha \ge {\pi }/{2}\), because b lies above the horizontal diameter of \(\mathcal {C}\) and to the right of m. We also denote by \(\mu _i, \overline{\mu }_i\) the radii of \(\mu _i, \overline{\mu }_i\). Thus, the length of the circular arc \(\mu _i\) is
This implies that the length of \(\gamma _i\) is lower bounded by \(\alpha \overline{\mu }_i+{\pi \delta }/{2}\).
Let \(\ell _d\) be the ray emanating from m into the direction of d, see Fig. 31. This means the lid of \(\overline{L}_i\) lies on \(\ell _d\). Let \(\zeta \) be that part of \(\overline{\gamma }_i\) that lies on the same side of \(\ell _d\) as a. As the radius of \(\overline{C}_i\) is at most twice the radius of \(\overline{c}_i\), the length of \(\zeta \) is at most twice the length of \(\beta \). This implies that the length of \(\zeta \) is upper bounded by \(1.15472\delta \).
As \(\alpha \ge {\pi }/{2}\), \(\gamma _i\) is at least as large as \({\pi }\delta /2\) plus the length of \(\overline{\gamma }_i \setminus \zeta \). Thus, we obtain that \(\gamma _i\) is not smaller than \(\overline{\gamma }_i\), because \(\zeta \) is smaller than \({\pi }\delta /2\). This concludes the proof.\(\square \)
Let \(C_\varDelta \) be the cone inside H with apex at \(\overline{m}\), angular radius of \(\arcsin (1/3)\), and radius \(r_m\) such that \(C_\varDelta \) touches the vertical diameter of H, see Fig. 32a.
Combining Corollary 4.26 and Lemma 4.35 implies that we can move a potential of \((\lambda _{{M}}^2/{4})\arcsin (1/3)\) from \(R_1,\dots ,R_{{M}}\) to \(C_{\varDelta }\) while guaranteeing that \(R_1,\dots ,R_{{M}}\) are saturated. From this we deduce that the same approach as used in Lemma 4.27 implies that the maximal remaining rings are also saturated, implying that all maximal rings are saturated. As each ring is a subset of a maximal ring, we obtain the following.
Corollary 4.36
All rings are saturated.
Let \(\ell _{{M}}\) be the vertical line touching \(r_1\) from the left and \(H_{{M}}\) that part of the disk container that lies not inside any ring, see Fig. 32b. Furthermore, let \(\overline{H}_{{M}}\) be the corresponding sector for \(r_1 =1/2\). Let \(D_{{M}},\overline{D}_{{M}}\) be the disks induced by \(H_{{M}},\overline{H}_{{M}}\). The half disk \(\overline{H}_{{M}}\) can be obtained by vertically shrinking \(H_{{M}}\). Thus, the same approach as used in the proof of Lemma 4.20 implies that all disks are packed, concluding the proof of Lemma 4.37.
Lemma 4.37
If \({1}/{2} < r_1\), our algorithm packs all disks into the original container disk.
This concludes the entire proof of Theorem 3.1, i.e., every set of disks with a total area no larger than \({\pi }/{2}\) can be packed into the unit disk which is worstcase optimal due to the instance illustrated in Fig. 2a.
5 Hardness
It is straightforward to see that the hardness proof for packing disks into a square can be adapted to packing disks into a disk, as follows.
Theorem 5.1
It is NPhard to decide whether a given set of disks fits into a circular container.
The proof is completely analogous to the one by Demaine et al. [3], who used a reduction from 3Partition. Their proof constructs a disk instance which first forces some symmetrical free “pockets” in the resulting disk packing. The instance’s remaining disks can then be packed into these pockets if and only if the related 3Partition instance has a solution. Similar to their construction, we construct a symmetric triangular pocket by using a set of three identical disks of radius \({\sqrt{3}}/({2+\sqrt{3}})\) that can only be packed into a unit disk by touching each other, see Fig. 33. Analogously to [3], this is further subdivided into a sufficiently large set of identical pockets. The remaining disks encode a 3Partition instance that can be solved if and only if the disks can be partitioned into triples of disks that fit into these pockets.
6 Conclusions
We have established the critical density for packing disks into a disk, based on a number of advanced techniques that are more involved than the ones used for packing squares into a square or disks into a square. Numerous questions remain, in particular the critical density for packing disks of bounded size into a disk or the critical density of packing squares into a disk. These remain for future work; we are optimistic that some of our techniques will be useful.
Notes
The overall algorithm may apply Disk Packing to shrunk container disks that may be overlapped by previously placed disks; see the largest packed disk in Fig. 2b for an example.
It seems that in case of a previously packed disk that covers the midpoint of \(\mathcal {C}\) choosing a value \(d > 0\) is unnecessary but updating d simplifies the presentation of the analysis.
The source code of the prover for Lemma 4.9 is available online: https://github.com/phillipkeldenich/circlepacking
There is only one zipper inside \(R_1\), because we have assumed w.l.o.g. that \(R_1\) is also minimal.
References
Becker, A.T., Fekete, S.P., Keldenich, Ph., Morr, S., Scheffer, Ch.: Packing geometric objects with optimal worstcase density. In: 35th International Symposium on Computational Geometry (Portland 2019). Leibniz Int. Proc. Inform., vol. 129, # 63. LeibnizZent. Inform., Wadern (2019). Video available via https://www.youtube.com/watch?v=QpyjB8c4Ngk
Castillo, I., Kampas, F.J., Pintér, J.D.: Solving circle packing problems by global optimization: numerical results and industrial applications. Eur. J. Oper. Res. 191(3), 786–802 (2008)
Demaine, E.D., Fekete, S.P., Lang, R.J.: Circle packing for origami design is hard. In: 5th International Meeting on Origami in Science, Mathematics and Education (Singapore 2010), pp. 609–626. CRC Press, Boca Raton (2011)
Fekete, S.P., Keldenich, Ph., Scheffer, Ch.: Packing disks into disks with optimal worstcase density. In: 35th International Symposium on Computational Geometry (Portland 2019). Leibniz Int. Proc. Inform., vol. 129, # 35. LeibnizZent. Inform., Wadern (2019)
Fekete, S.P., Morr, S., Scheffer, Ch.: Split packing: algorithms for packing circles with optimal worstcase density. Discrete Comput. Geom. 61(3), 562–594 (2019)
Fodor, F.: The densest packing of 19 congruent circles in a circle. Geom. Dedicata 74(2), 139–145 (1999)
Fodor, F.: The densest packing of 12 congruent circles in a circle. Beiträge Algebra Geom. 41(2), 401–409 (2000)
Fodor, F.: The densest packing of 13 congruent circles in a circle. Beiträge Algebra Geom. 44(2), 431–440 (2003)
Fraser, H.J., George, J.A.: Integrated container loading software for pulp and paper industry. Eur. J. Oper. Res. 77(3), 466–474 (1994)
Goldberg, M.: Packing of 14, 16, 17 and 20 circles in a circle. Math. Mag. 44(3), 134–139 (1971)
Graham, R.L., Lubachevsky, B.D., Nurmela, K.J., Östergård P.R.J.: Dense packings of congruent circles in a circle. Discrete Math. 181(1–3), 139–154 (1998)
Hifi, M., M’hallah, R.: A literature review on circle and sphere packing problems: models and methodologies. Adv. Oper. Res. 2009, # 150624 (2009)
Hokama, P., Miyazawa, F.K., Schouery, R.C.S.: A bounded space algorithm for online circle packing. Inform. Process. Lett. 116(5), 337–342 (2016)
Kravitz, S.: Packing cylinders into cylindrical containers. Math. Mag. 40(2), 65–71 (1967)
Lang, R.J.: A computational algorithm for origami design. In: 12th Annual Symposium on Computational Geometry (Philadelphia 1996), pp. 98–105. ACM, New York (1996)
Leung, J.Y.T., Tam, T.W., Wong, C.S., Young, G.H., Chin, F.Y.L.: Packing squares into a square. J. Parallel Distrib. Comput. 10(3), 271–275 (1990)
Lubachevsky, B.D., Graham, R.L.: Curved hexagonal packings of equal disks in a circle. Discrete Comput. Geom. 18(2), 179–194 (1997)
Melissen, H.: Densest packings of eleven congruent circles in a circle. Geom. Dedicata 50(1), 15–25 (1994)
Miyazawa, F.K., Pedrosa, L.L.C., Schouery, R.C.S., Sviridenko, M., Wakabayashi, Y.: Polynomialtime approximation schemes for circle packing problems. In: 22nd European Symposium on Algorithms (Wrocław 2014). Lecture Notes in Comput. Sci., vol. 8737, pp. 713–724. Springer, Heidelberg (2014)
Moon, J.W., Moser, L.: Some packing and covering theorems. Colloq. Math. 17, 103–110 (1967)
Morr, S.: Split packing: an algorithm for packing circles with optimal worstcase density. In: 28th Annual ACMSIAM Symposium on Discrete Algorithms (Barcelona 2017), pp. 99–109. SIAM, Philadelphia (2017)
Oler, N.: A finite packing problem. Can. Math. Bull. 4, 153–155 (1961)
Peikert, R., Würtz, D., Monagan, M., de Groot, C.: Packing circles in a square: a review and new results. In: System Modelling and Optimization (Zürich 1991). Lect. Notes Control Inf. Sci., vol. 180, pp. 45–54. Springer, Berlin (1992)
Reis, G.E.: Dense packing of equal circles within a circle. Math. Mag. 48, 33–37 (1975)
Specht, E.: Packomania (2015). http://www.packomania.com
Sugihara, K., Sawai, M., Sano, H., Kim, D.S., Kim, D.: Disk packing for the estimation of the size of a wire bundle. Jpn. J. Ind. Appl. Math. 21(3), 259–278 (2004)
Szabó, P.G., Markót, M.Cs., Csendes, T., Specht, E., Casado, L.G., García, I.: New Approaches to Circle Packing in a Square. Springer Optimization and Its Applications, vol. 6. Springer, New York (2007)
Wang, H., Huang, W., Zhang, Q., Xu, D.: An improved algorithm for the packing of unequal circles within a larger containing circle. Eur. J. Oper. Res. 141(2), 440–453 (2002)
Würtz, D., Monagan, M., Peikert, R.: The history of packing circles in a square. Maple Technical Newsletter, 35–42 (1994)
Acknowledgements
We thank Sebastian Morr for joint previous work.
Funding
Open Access funding enabled and organized by Projekt DEAL.
Author information
Authors and Affiliations
Corresponding author
Additional information
Editor in Charge: Kenneth Clarkson
Publisher's Note
Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.
An extended abstract of this paper appeared in the proceedings of 35th International Symposium on Computational Geometry (SoCG 2019) [4]. Furthermore, there is a multimedia contribution [1] illustrating some of the algorithmic concepts presented in this paper. The corresponding video is available at https://www.youtube.com/watch?v=QpyjB8c4Ngk
Rights and permissions
Open Access This article is licensed under a Creative Commons Attribution 4.0 International License, which permits use, sharing, adaptation, distribution and reproduction in any medium or format, as long as you give appropriate credit to the original author(s) and the source, provide a link to the Creative Commons licence, and indicate if changes were made. The images or other third party material in this article are included in the article’s Creative Commons licence, unless indicated otherwise in a credit line to the material. If material is not included in the article’s Creative Commons licence and your intended use is not permitted by statutory regulation or exceeds the permitted use, you will need to obtain permission directly from the copyright holder. To view a copy of this licence, visit http://creativecommons.org/licenses/by/4.0/.
About this article
Cite this article
Fekete, S.P., Keldenich, P. & Scheffer, C. Packing Disks into Disks with Optimal WorstCase Density. Discrete Comput Geom 69, 51–90 (2023). https://doi.org/10.1007/s00454022004228
Received:
Revised:
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s00454022004228