<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://en.formulasearchengine.com/index.php?action=history&amp;feed=atom&amp;title=Geometric_separator</id>
	<title>Geometric separator - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://en.formulasearchengine.com/index.php?action=history&amp;feed=atom&amp;title=Geometric_separator"/>
	<link rel="alternate" type="text/html" href="https://en.formulasearchengine.com/index.php?title=Geometric_separator&amp;action=history"/>
	<updated>2026-05-20T19:31:10Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.0-wmf.28</generator>
	<entry>
		<id>https://en.formulasearchengine.com/index.php?title=Geometric_separator&amp;diff=30328&amp;oldid=prev</id>
		<title>en&gt;Erel Segal: /* Separators that are hyperplanes */</title>
		<link rel="alternate" type="text/html" href="https://en.formulasearchengine.com/index.php?title=Geometric_separator&amp;diff=30328&amp;oldid=prev"/>
		<updated>2014-02-02T08:51:07Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Separators that are hyperplanes&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;In [[computational geometry]], a &amp;#039;&amp;#039;&amp;#039;maximum disjoint set (MDS)&amp;#039;&amp;#039;&amp;#039; is a largest set of non-overlapping geometric shapes selected from a given set of candidate shapes.&lt;br /&gt;
&lt;br /&gt;
Finding an MDS is important in applications such as [[automatic label placement]], [[VLSI]] circuit design, and cellular [[frequency division multiplexing]].&lt;br /&gt;
&lt;br /&gt;
Every set of non-overlapping shapes is an [[independent set (graph theory)|independent set]] in the [[intersection graph]] of the shapes. Therefore, the MDS problem is a special case of the [[maximum independent set]] (MIS) problem. Both problems are [[NP complete]], but finding a MDS may be easier than finding a MIS in two respects:&lt;br /&gt;
* For the general MIS problem, the best known exact algorithms are exponential. In some geometric intersection graphs, there are sub-exponential algorithms for finding a MDS.&amp;lt;ref&amp;gt;{{Cite doi|10.1016/0020-0190(87)90206-7}}, {{Cite doi|10.1109/sfcs.1998.743449}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
* The general MIS problem is hard to approximate and doesn&amp;#039;t even have a constant-factor approximation. In some geometric intersection graphs, there are [[polynomial-time approximation scheme]]s for finding a MDS.&lt;br /&gt;
&lt;br /&gt;
The MDS problem can be generalized by assigning a different weight to each shape and searching for a disjoint set with a maximum total weight.&lt;br /&gt;
&lt;br /&gt;
In the following text, MDS(&amp;#039;&amp;#039;C&amp;#039;&amp;#039;) denotes the maximum disjoint set in a set &amp;#039;&amp;#039;C&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
== Greedy algorithms ==&lt;br /&gt;
Given a set &amp;#039;&amp;#039;C&amp;#039;&amp;#039; of shapes, an approximation to MDS(&amp;#039;&amp;#039;C&amp;#039;&amp;#039;) can be found by the following [[greedy algorithm]]:&lt;br /&gt;
&lt;br /&gt;
* INITIALIZATION: Initialize an empty set, &amp;#039;&amp;#039;S&amp;#039;&amp;#039;.&lt;br /&gt;
* SEARCH: For every shape &amp;#039;&amp;#039;x&amp;#039;&amp;#039; in &amp;#039;&amp;#039;C&amp;#039;&amp;#039;:&lt;br /&gt;
*# Calculate &amp;#039;&amp;#039;N(x)&amp;#039;&amp;#039; - the subset of all shapes in &amp;#039;&amp;#039;C&amp;#039;&amp;#039;  that intersect &amp;#039;&amp;#039;x&amp;#039;&amp;#039; (including &amp;#039;&amp;#039;x&amp;#039;&amp;#039; itself). &lt;br /&gt;
*# Calculate the largest indenepdent set in this subset: &amp;#039;&amp;#039;MDS(N(x))&amp;#039;&amp;#039;.&lt;br /&gt;
*# Select an &amp;#039;&amp;#039;x&amp;#039;&amp;#039; such that &amp;#039;&amp;#039;|MDS(N(x))|&amp;#039;&amp;#039; is minimized.&lt;br /&gt;
* Add &amp;#039;&amp;#039;x&amp;#039;&amp;#039; to &amp;#039;&amp;#039;S&amp;#039;&amp;#039;. &lt;br /&gt;
* Remove &amp;#039;&amp;#039;x&amp;#039;&amp;#039; and &amp;#039;&amp;#039;N(x)&amp;#039;&amp;#039; from &amp;#039;&amp;#039;C&amp;#039;&amp;#039;.&lt;br /&gt;
* If there are shapes in &amp;#039;&amp;#039;C&amp;#039;&amp;#039;, go back to Search.&lt;br /&gt;
* END: return the set &amp;#039;&amp;#039;S&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
For every shape &amp;#039;&amp;#039;x&amp;#039;&amp;#039; that we add to &amp;#039;&amp;#039;S&amp;#039;&amp;#039;, we lose the shapes in &amp;#039;&amp;#039;N(x)&amp;#039;&amp;#039;, because they are intersected by &amp;#039;&amp;#039;x&amp;#039;&amp;#039; and thus cannot be added to &amp;#039;&amp;#039;S&amp;#039;&amp;#039; later on. However, some of these shapes themselves intersect each other, and thus in any case it is not possible that they all be in the optimal solution &amp;#039;&amp;#039;MDS(S)&amp;#039;&amp;#039;. The largest subset of shapes that &amp;#039;&amp;#039;can&amp;#039;&amp;#039; all be in the optimal solution is &amp;#039;&amp;#039;MDS(N(x))&amp;#039;&amp;#039;. Therefore, selecting an &amp;#039;&amp;#039;x&amp;#039;&amp;#039; that minimizes &amp;#039;&amp;#039;|MDS(N(x))|&amp;#039;&amp;#039; minimizes the loss from adding &amp;#039;&amp;#039;x&amp;#039;&amp;#039; to &amp;#039;&amp;#039;S&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
In particular, if we can guarantee that there is an &amp;#039;&amp;#039;x&amp;#039;&amp;#039; for which &amp;#039;&amp;#039;|MDS(N(x))|&amp;#039;&amp;#039; is bounded by a constant (say, &amp;#039;&amp;#039;M&amp;#039;&amp;#039;), then this greedy algorithm yields a constant &amp;#039;&amp;#039;M&amp;#039;&amp;#039;-factor approximation, as we can guarantee that:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;|S|\geq\frac{|MDS(C)|}{M}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Such an upper bound &amp;#039;&amp;#039;M&amp;#039;&amp;#039; exists for several interesting cases:&lt;br /&gt;
&lt;br /&gt;
=== 1-dimensional intervals: exact polynomial algorithm  ===&lt;br /&gt;
[[File:IntervalSelection.svg|20px|right]]&lt;br /&gt;
When &amp;#039;&amp;#039;C&amp;#039;&amp;#039; is a set of intervals on a line, &amp;#039;&amp;#039;M&amp;#039;&amp;#039;=1, and thus the greedy algorithm finds the exact MDS. To see this, assume w.l.o.g. that the intervals are vertical, and let &amp;#039;&amp;#039;x&amp;#039;&amp;#039; be the interval with the &amp;#039;&amp;#039;highest bottom endpoint&amp;#039;&amp;#039;. All other intervals intersected by &amp;#039;&amp;#039;x&amp;#039;&amp;#039; must cross its bottom endpoint. Therefore, all intervals in &amp;#039;&amp;#039;N(x)&amp;#039;&amp;#039; intersect each other, and &amp;#039;&amp;#039;MDS(N(x))&amp;#039;&amp;#039; has a size of at most 1 (see figure).&lt;br /&gt;
&lt;br /&gt;
Therefore, in the 1-dimensional case, the MDS can be found exactly in time &amp;#039;&amp;#039;O&amp;#039;&amp;#039;(&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;amp;nbsp;log&amp;amp;nbsp;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;):&amp;lt;ref name=Agarwal1998&amp;gt;{{Cite doi|10.1016/s0925-7721(98)00028-5}}&amp;lt;/ref&amp;gt; &lt;br /&gt;
# Sort the intervals in ascending order of their bottom endpoints (this takes time &amp;#039;&amp;#039;O&amp;#039;&amp;#039;(&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;amp;nbsp;log&amp;amp;nbsp;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;)).&lt;br /&gt;
# Add an interval with the highest bottom endpoint, and delete all intervals intersecting it.&lt;br /&gt;
# Continue until no intervals remain.&lt;br /&gt;
&lt;br /&gt;
This algorithm is analogous to the [[earliest deadline first scheduling]] solution to the [[interval scheduling]] problem.&lt;br /&gt;
&lt;br /&gt;
In contrast to the 1-dimensional case, in 2 or more dimensions the MDS problem becomes NP-complete, and thus has either exact super-polynomial algorithms or approximate polynomial algorithms.&lt;br /&gt;
&lt;br /&gt;
=== Fat shapes: constant-factor approximations  ===&lt;br /&gt;
[[File:IntersectingUnitDisks.svg|40px|right]]&lt;br /&gt;
When &amp;#039;&amp;#039;C&amp;#039;&amp;#039; is a set of unit disks, &amp;#039;&amp;#039;M&amp;#039;&amp;#039;=3,&amp;lt;ref name=Marathe1995&amp;gt;{{Cite doi|10.1002/net.3230250205}}&amp;lt;/ref&amp;gt; because the leftmost disk (the disk whose center has the smallest &amp;#039;&amp;#039;x&amp;#039;&amp;#039; coordinate) intersects at most 3 other disjoint disks (see figure). Therefore the greedy algorithm yields a 3-approximation, i.e., it finds a disjoint set with a size of at least &amp;#039;&amp;#039;MDS(C)&amp;#039;&amp;#039;/3.&lt;br /&gt;
&lt;br /&gt;
Similarly, when &amp;#039;&amp;#039;C&amp;#039;&amp;#039; is a set of axis-parallel unit squares, &amp;#039;&amp;#039;M&amp;#039;&amp;#039;=2.&lt;br /&gt;
&lt;br /&gt;
[[File:IntersectingDisks.svg|50px|right]]&lt;br /&gt;
When &amp;#039;&amp;#039;C&amp;#039;&amp;#039; is a set of arbitrary-size disks, &amp;#039;&amp;#039;M&amp;#039;&amp;#039;=5, because the disk with the smallest radius intersects at most 5 other disjoint disks (see figure).&lt;br /&gt;
&lt;br /&gt;
Similarly, when &amp;#039;&amp;#039;C&amp;#039;&amp;#039; is a set of arbitrary-size axis-parallel squares, &amp;#039;&amp;#039;M&amp;#039;&amp;#039;=4.&lt;br /&gt;
&lt;br /&gt;
Other constants can be calculated for other [[regular polygon]]s.&amp;lt;ref name=Marathe1995 /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Divide-and-conquer algorithms ==&lt;br /&gt;
The most common approach to finding a MDS is divide-and-conquer. A typical algorithm in this approach looks like the following:&lt;br /&gt;
&lt;br /&gt;
# Divide the given set of shapes into two or more subsets, such that the shapes in each subset cannot overlap the shapes in other subsets because of geometric considerations.&lt;br /&gt;
# Recursively find the MDS in each subset separately.&lt;br /&gt;
# Return the union of the MDSs from all subsets.&lt;br /&gt;
&lt;br /&gt;
The main challenge with this approach is to find a geometric way to divide the set into subsets. This may require to discard a small number of shapes that do not fit into any one of the subsets, as explained in the following subsections.&lt;br /&gt;
&lt;br /&gt;
=== Axis-parallel rectangles: Logarithmic-factor approximation ===&lt;br /&gt;
Let &amp;#039;&amp;#039;C&amp;#039;&amp;#039; be a set of &amp;#039;&amp;#039;n&amp;#039;&amp;#039; axis-parallel rectangles in the plane. The following algorithm finds a disjoint set with a size of at least &amp;lt;math&amp;gt;\frac{|MDS(C)|}{\log{n}}&amp;lt;/math&amp;gt; in time &lt;br /&gt;
&amp;lt;math&amp;gt;O(n \log{n})&amp;lt;/math&amp;gt;:&amp;lt;ref name=Agarwal1998 /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* INITIALIZATION: sort the horizontal edges of the given rectangles by their &amp;#039;&amp;#039;y&amp;#039;&amp;#039;-coordinate, and the vertical edges by their &amp;#039;&amp;#039;x&amp;#039;&amp;#039;-coordinate (this step takes time &amp;#039;&amp;#039;O&amp;#039;&amp;#039;(&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;amp;nbsp;log&amp;amp;nbsp;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;)).&lt;br /&gt;
* STOP CONDITION: If there are at most &amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;amp;nbsp;≤&amp;amp;nbsp;2 shapes, compute the MDS directly and return.&lt;br /&gt;
* RECURSIVE PART: &lt;br /&gt;
*# Let &amp;lt;math&amp;gt;x_\mathrm{med}&amp;lt;/math&amp;gt; be the median &amp;#039;&amp;#039;x&amp;#039;&amp;#039;-coordinate.&lt;br /&gt;
*# Partition the input rectangles into three groups according to their relation to the line &amp;lt;math&amp;gt;x=x_\mathrm{med}&amp;lt;/math&amp;gt;: those entirely to its left (&amp;lt;math&amp;gt;R_\mathrm{left}&amp;lt;/math&amp;gt;), those entirely to its right (&amp;lt;math&amp;gt;R_\mathrm{right}&amp;lt;/math&amp;gt;), and those intersected by it (&amp;lt;math&amp;gt;R_\mathrm{int}&amp;lt;/math&amp;gt;). By construction, the cardinalities of &amp;lt;math&amp;gt;R_\mathrm{left}&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;R_\mathrm{right}&amp;lt;/math&amp;gt; are at most &amp;#039;&amp;#039;n&amp;#039;&amp;#039;/2.&lt;br /&gt;
*# Recursively compute an &amp;#039;&amp;#039;approximate&amp;#039;&amp;#039; MDS in &amp;lt;math&amp;gt;R_\mathrm{left}&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;M_\mathrm{left}&amp;lt;/math&amp;gt;) and in &amp;lt;math&amp;gt;R_\mathrm{right}&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;M_\mathrm{right}&amp;lt;/math&amp;gt;), and calculate their union. By construction, the rectangles in &amp;lt;math&amp;gt;M_\mathrm{left}&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;M_\mathrm{right}&amp;lt;/math&amp;gt; are all disjoint, so &amp;lt;math&amp;gt;M_\mathrm{left} \cup M_\mathrm{right}&amp;lt;/math&amp;gt; is a disjoint set.&lt;br /&gt;
*# Compute an &amp;#039;&amp;#039;exact&amp;#039;&amp;#039; MDS in &amp;lt;math&amp;gt;R_\mathrm{int}&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;M_\mathrm{int}&amp;lt;/math&amp;gt;). Since all rectangles in &amp;lt;math&amp;gt;R_\mathrm{int}&amp;lt;/math&amp;gt; intersect a single vertical line &amp;lt;math&amp;gt;x=x_\mathrm{med}&amp;lt;/math&amp;gt;, this computation is equivalent to finding an MDS from a set of intervals, and can be solved exactly in time &amp;#039;&amp;#039;O(n log n)&amp;#039;&amp;#039; (see above).&lt;br /&gt;
* Return either &amp;lt;math&amp;gt;M_\mathrm{left} \cup M_\mathrm{right}&amp;lt;/math&amp;gt; or &amp;lt;math&amp;gt;M_\mathrm{int}&amp;lt;/math&amp;gt; – whichever of them is larger.&lt;br /&gt;
&lt;br /&gt;
It is provable by induction that, at the last step, either &amp;lt;math&amp;gt;M_\mathrm{left} \cup M_\mathrm{right}&amp;lt;/math&amp;gt; or &amp;lt;math&amp;gt;M_\mathrm{int}&amp;lt;/math&amp;gt; have a cardinality of at least &amp;lt;math&amp;gt;\frac{|MDS(C)|}{\log{n}}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The approximation factor has recently been reduced to &amp;lt;math&amp;gt;O(\log{\log{n}})&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt;{{Cite doi|10.1137/1.9781611973068.97}}&amp;lt;/ref&amp;gt; and generalized to the case in which rectangles have different weights.&amp;lt;ref&amp;gt;{{Cite doi|10.1007/978-3-642-22935-0_11}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Axis-parallel rectangles with the same height: 2-approximation ===&lt;br /&gt;
Let &amp;#039;&amp;#039;C&amp;#039;&amp;#039; be a set of &amp;#039;&amp;#039;n&amp;#039;&amp;#039; axis-parallel rectangles in the plane, all with the same height &amp;#039;&amp;#039;H&amp;#039;&amp;#039; but with varying lengths. The following algorithm finds a disjoint set with a size of at least |MDS(&amp;#039;&amp;#039;C&amp;#039;&amp;#039;)|/2 in time &amp;#039;&amp;#039;O&amp;#039;&amp;#039;(&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;amp;nbsp;log&amp;amp;nbsp;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;):&amp;lt;ref name=Agarwal1998 /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Draw &amp;#039;&amp;#039;m&amp;#039;&amp;#039; horizontal lines, such that:&lt;br /&gt;
*# The separation between two lines is strictly more than &amp;#039;&amp;#039;H&amp;#039;&amp;#039;.&lt;br /&gt;
*# Each line intersects at least one rectangle (hence &amp;#039;&amp;#039;m&amp;#039;&amp;#039;&amp;amp;nbsp;≤&amp;amp;nbsp;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;).&lt;br /&gt;
*# Each rectangle is intersected by exactly one line.&lt;br /&gt;
* Since the height of all rectangles is &amp;#039;&amp;#039;H&amp;#039;&amp;#039;, it is not possible that a rectangle is intersected by more than one line. Therefore the lines partition the set of rectangles into &amp;#039;&amp;#039;m&amp;#039;&amp;#039; subsets (&amp;lt;math&amp;gt;R_i,\ldots,R_m&amp;lt;/math&amp;gt;) – each subset includes the rectangles intersected by a single line.&lt;br /&gt;
* For each subset &amp;lt;math&amp;gt;R_i&amp;lt;/math&amp;gt;, compute an exact MDS &amp;lt;math&amp;gt;M_i&amp;lt;/math&amp;gt;  using the one-dimensional greedy algorithm (see above).&lt;br /&gt;
* By construction, the rectangles in (&amp;lt;math&amp;gt;R_i&amp;lt;/math&amp;gt;) can intersect only rectangles in &amp;lt;math&amp;gt;R_{i+1}&amp;lt;/math&amp;gt; or in &amp;lt;math&amp;gt;R_{i-1}&amp;lt;/math&amp;gt;. Therefore, each of the following two unions is a disjoint sets:&lt;br /&gt;
** Union of odd MDSs: &amp;lt;math&amp;gt;M_1 \cup M_3 \cup \cdots &amp;lt;/math&amp;gt; &lt;br /&gt;
** Union of even MDSs: &amp;lt;math&amp;gt;M_2 \cup M_4 \cup \cdots &amp;lt;/math&amp;gt; &lt;br /&gt;
* Return the largest of these two unions. Its size must be at least&amp;amp;nbsp;|MDS|/2.&lt;br /&gt;
&lt;br /&gt;
=== Axis-parallel rectangles with the same height: PTAS ===&lt;br /&gt;
Let &amp;#039;&amp;#039;C&amp;#039;&amp;#039; be a set of &amp;#039;&amp;#039;n&amp;#039;&amp;#039; axis-parallel rectangles in the plane, all with the same height but with varying lengths. There is an algorithm that finds a disjoint set with a size of at least |MDS(&amp;#039;&amp;#039;C&amp;#039;&amp;#039;)|/(1&amp;amp;nbsp;+&amp;amp;nbsp;1/&amp;#039;&amp;#039;k&amp;#039;&amp;#039;) in time &amp;#039;&amp;#039;O&amp;#039;&amp;#039;(&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;lt;sup&amp;gt;2&amp;#039;&amp;#039;k&amp;#039;&amp;#039;&amp;amp;minus;1&amp;lt;/sup&amp;gt;), for every constant &amp;#039;&amp;#039;k&amp;#039;&amp;#039;&amp;amp;nbsp;&amp;gt;&amp;amp;nbsp;1.&amp;lt;ref name=Agarwal1998 /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The algorithm is an improvement of the above-mentioned 2-approximation, by combining [[dynamic programming]] with the shifting technique of.&amp;lt;ref name=HochbaumMaass1985 /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This algorithm can be generalized to &amp;#039;&amp;#039;d&amp;#039;&amp;#039; dimensions. If the labels have the same size in all dimensions except one, it is possible to find a similar approximation by applying [[dynamic programming]] along one of the dimensions. This also reduces the time to n^O(1/e).&amp;lt;ref name=Chan2003 /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Fat objects with identical sizes: PTAS  ===&lt;br /&gt;
Let &amp;#039;&amp;#039;C&amp;#039;&amp;#039; be a set of &amp;#039;&amp;#039;n&amp;#039;&amp;#039; squares or circles of identical size. There is a [[polynomial-time approximation scheme]] for finding an MDS using a simple shifted-grid strategy. It finds a solution within (1&amp;amp;nbsp;&amp;amp;minus;&amp;amp;nbsp;&amp;#039;&amp;#039;e&amp;#039;&amp;#039;) of the maximum in time &amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;lt;sup&amp;gt;&amp;#039;&amp;#039;O&amp;#039;&amp;#039;(1/&amp;#039;&amp;#039;e&amp;#039;&amp;#039;&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;)&amp;lt;/sup&amp;gt; time and linear space.&amp;lt;ref name=HochbaumMaass1985&amp;gt;{{Cite doi|10.1145/2455.214106}}&amp;lt;/ref&amp;gt; The strategy generalizes to any collection of [[fat object]]s of roughly the same size (i.e., when the maximum-to-minimum size ratio is bounded by a constant).&lt;br /&gt;
&lt;br /&gt;
=== Fat objects with arbitrary sizes: PTAS ===&lt;br /&gt;
Let &amp;#039;&amp;#039;C&amp;#039;&amp;#039; be a set of &amp;#039;&amp;#039;n&amp;#039;&amp;#039; [[fat object]]s (e.g. squares or circles) of arbitrary sizes. There is a [[polynomial-time approximation scheme|PTAS]] for finding an MDS based on multi-level grid alignment. It has been discovered by two groups in approximately the same time, and described in two different ways.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Version 1&amp;#039;&amp;#039;&amp;#039; finds a disjoint set with a size of at least (1&amp;amp;nbsp;&amp;amp;minus;&amp;amp;nbsp;1/&amp;#039;&amp;#039;k&amp;#039;&amp;#039;)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&amp;amp;nbsp;&amp;amp;middot;&amp;amp;nbsp;|MDS(&amp;#039;&amp;#039;C&amp;#039;&amp;#039;)| in time &amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;lt;sup&amp;gt;&amp;#039;&amp;#039;O&amp;#039;&amp;#039;(&amp;#039;&amp;#039;k&amp;#039;&amp;#039;&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;)&amp;lt;/sup&amp;gt;, for every constant &amp;#039;&amp;#039;k&amp;#039;&amp;#039;&amp;amp;nbsp;&amp;gt;&amp;amp;nbsp;1:&amp;lt;ref name=Erlebach2005&amp;gt;{{Cite doi|10.1137/s0097539702402676}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Scale the disks so that the smallest disk has diameter 1. Partition the disks to levels, based on the logarithm of their size. I.e., the &amp;#039;&amp;#039;j&amp;#039;&amp;#039;-th level contains all disks with diameter between (&amp;#039;&amp;#039;k&amp;#039;&amp;#039;&amp;amp;nbsp;+&amp;amp;nbsp;1)&amp;lt;sup&amp;gt;&amp;#039;&amp;#039;j&amp;#039;&amp;#039;&amp;lt;/sup&amp;gt; and (&amp;#039;&amp;#039;k&amp;#039;&amp;#039;&amp;amp;nbsp;+&amp;amp;nbsp;1)&amp;lt;sup&amp;gt;&amp;#039;&amp;#039;j&amp;#039;&amp;#039;+1&amp;lt;/sup&amp;gt;, for &amp;#039;&amp;#039;j&amp;#039;&amp;#039;&amp;amp;nbsp;≤&amp;amp;nbsp;0 (the smallest disk is in level 0).&lt;br /&gt;
&lt;br /&gt;
For each level &amp;#039;&amp;#039;j&amp;#039;&amp;#039;, impose a grid on the plane that consists of lines that are (&amp;#039;&amp;#039;k&amp;#039;&amp;#039;&amp;amp;nbsp;+&amp;amp;nbsp;1)&amp;lt;sup&amp;gt;&amp;#039;&amp;#039;j&amp;#039;&amp;#039;+1&amp;lt;/sup&amp;gt; apart from each other. By construction, every disk can intersect at most one horizontal line and one vertical line from its level.&lt;br /&gt;
&lt;br /&gt;
For every &amp;#039;&amp;#039;r&amp;#039;&amp;#039;, &amp;#039;&amp;#039;s&amp;#039;&amp;#039; between 0 and &amp;#039;&amp;#039;k&amp;#039;&amp;#039;, define &amp;#039;&amp;#039;D&amp;#039;&amp;#039;(&amp;#039;&amp;#039;r&amp;#039;&amp;#039;,&amp;#039;&amp;#039;s&amp;#039;&amp;#039;) as the subset of disks that are not intersected by any horizontal line whose index modulo &amp;#039;&amp;#039;k&amp;#039;&amp;#039; is &amp;#039;&amp;#039;r&amp;#039;&amp;#039;, nor by any vertical line whose index modulu &amp;#039;&amp;#039;k&amp;#039;&amp;#039; is &amp;#039;&amp;#039;s&amp;#039;&amp;#039;. By the [[pigeonhole principle]], there is at least one pair &amp;#039;&amp;#039;(r,s)&amp;#039;&amp;#039; such that &amp;lt;math&amp;gt;|\mathrm{MDS}(D(r,s))| \geq (1-\frac{1}{k})^2 \cdot |\mathrm{MDS}|&amp;lt;/math&amp;gt;, i.e., we can find the MDS only in &amp;#039;&amp;#039;D&amp;#039;&amp;#039;(&amp;#039;&amp;#039;r&amp;#039;&amp;#039;,&amp;#039;&amp;#039;s&amp;#039;&amp;#039;) and miss only a small fraction of the disks in the optimal solution:&lt;br /&gt;
&lt;br /&gt;
* For all &amp;#039;&amp;#039;k&amp;#039;&amp;#039;&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; possible values of &amp;#039;&amp;#039;r&amp;#039;&amp;#039;,&amp;#039;&amp;#039;s&amp;#039;&amp;#039; (0&amp;amp;nbsp;≤&amp;amp;nbsp;&amp;#039;&amp;#039;r&amp;#039;&amp;#039;,&amp;#039;&amp;#039;s&amp;#039;&amp;#039;&amp;amp;nbsp;&amp;lt;&amp;amp;nbsp;&amp;#039;&amp;#039;k&amp;#039;&amp;#039;), calculate &amp;#039;&amp;#039;D&amp;#039;&amp;#039;(&amp;#039;&amp;#039;r&amp;#039;&amp;#039;,&amp;#039;&amp;#039;s&amp;#039;&amp;#039;) using [[dynamic programming]].&lt;br /&gt;
* Return the largest of these &amp;#039;&amp;#039;k&amp;#039;&amp;#039;&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; sets.&lt;br /&gt;
&lt;br /&gt;
[[Image:Point quadtree.svg|thumb|200px|A region quadtree with point data]]&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Version 2&amp;#039;&amp;#039;&amp;#039; finds a disjoint set with a size of at least (1&amp;amp;nbsp;&amp;amp;minus;&amp;amp;nbsp;2/&amp;#039;&amp;#039;k&amp;#039;&amp;#039;)&amp;amp;middot;|MDS(&amp;#039;&amp;#039;C&amp;#039;&amp;#039;)| in time &amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;lt;sup&amp;gt;&amp;#039;&amp;#039;O&amp;#039;&amp;#039;(&amp;#039;&amp;#039;k&amp;#039;&amp;#039;)&amp;lt;/sup&amp;gt;, for every constant &amp;#039;&amp;#039;k&amp;#039;&amp;#039;&amp;amp;nbsp;&amp;gt;&amp;amp;nbsp;1.&amp;lt;ref name=Chan2003&amp;gt;{{Cite doi|10.1016/s0196-6774(02)00294-8}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The algorithm uses shifted [[quadtree]]s. The key concept of the algorithm is &amp;#039;&amp;#039;alignment&amp;#039;&amp;#039; to the quadtree grid. An object of size &amp;#039;&amp;#039;r&amp;#039;&amp;#039; is called &amp;#039;&amp;#039;k-aligned&amp;#039;&amp;#039; (where &amp;#039;&amp;#039;k&amp;#039;&amp;#039;&amp;amp;nbsp;≥&amp;amp;nbsp;1 is a constant) if it is inside a quadtree cell of size at most &amp;#039;&amp;#039;kr&amp;#039;&amp;#039; (&amp;#039;&amp;#039;R&amp;#039;&amp;#039;&amp;amp;nbsp;≤&amp;amp;nbsp;&amp;#039;&amp;#039;kr&amp;#039;&amp;#039;).&lt;br /&gt;
&lt;br /&gt;
By definition, a &amp;#039;&amp;#039;k&amp;#039;&amp;#039;-aligned object that intersects the boundary of a quatree cell of size &amp;#039;&amp;#039;R&amp;#039;&amp;#039; must have a size of at least &amp;#039;&amp;#039;R&amp;#039;&amp;#039;/&amp;#039;&amp;#039;k&amp;#039;&amp;#039; (&amp;#039;&amp;#039;r&amp;#039;&amp;#039; &amp;gt; &amp;#039;&amp;#039;R&amp;#039;&amp;#039;/&amp;#039;&amp;#039;k&amp;#039;&amp;#039;). The boundary of a cell of size &amp;#039;&amp;#039;R&amp;#039;&amp;#039; can be covered by 4&amp;#039;&amp;#039;k&amp;#039;&amp;#039; squares of size &amp;#039;&amp;#039;R&amp;#039;&amp;#039;/&amp;#039;&amp;#039;k&amp;#039;&amp;#039;; hence the number of disjoint fat objects intersecting the boundary of that cell is at most 4&amp;#039;&amp;#039;kc&amp;#039;&amp;#039;, where &amp;#039;&amp;#039;c&amp;#039;&amp;#039; is a constant measuring the fatness of the objects.&lt;br /&gt;
&lt;br /&gt;
Therefore, if all objects are fat and &amp;#039;&amp;#039;k&amp;#039;&amp;#039;-aligned, it is possible to find the exact maximum disjoint set in time &amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;lt;sup&amp;gt;&amp;#039;&amp;#039;O&amp;#039;&amp;#039;(&amp;#039;&amp;#039;kc&amp;#039;&amp;#039;)&amp;lt;/sup&amp;gt; using a divide-and-conquer algorithm. Start with a quadtree cell that contains all objects. Then recursively divide it to smaller quadtree cells, find the maximum in each smaller cell, and combine the results to get the maximum in the larger cell. Since the number of disjoint fat objects intersecting the boundary of every quadtree cell is bounded by 4&amp;#039;&amp;#039;kc&amp;#039;&amp;#039;, we can simply &amp;quot;guess&amp;quot; which objects intersect the boundary in the optimal solution, and then apply divide-and-conquer to the objects inside.&lt;br /&gt;
&lt;br /&gt;
If &amp;#039;&amp;#039;almost&amp;#039;&amp;#039; all objects are &amp;#039;&amp;#039;k&amp;#039;&amp;#039;-aligned, we can just discard the objects that are not &amp;#039;&amp;#039;k&amp;#039;&amp;#039;-aligned, and find a maximum disjoint set of the remaining objects in time &amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;lt;sup&amp;gt;&amp;#039;&amp;#039;O&amp;#039;&amp;#039;(&amp;#039;&amp;#039;k&amp;#039;&amp;#039;)&amp;lt;/sup&amp;gt;. This results in a (1&amp;amp;nbsp;&amp;amp;minus;&amp;amp;nbsp;&amp;#039;&amp;#039;e&amp;#039;&amp;#039;) approximation, where e is the fraction of objects that are not &amp;#039;&amp;#039;k&amp;#039;&amp;#039;-aligned.&lt;br /&gt;
&lt;br /&gt;
If most objects are not &amp;#039;&amp;#039;k&amp;#039;&amp;#039;-aligned, we can try to make them &amp;#039;&amp;#039;k&amp;#039;&amp;#039;-aligned by &amp;#039;&amp;#039;shifting&amp;#039;&amp;#039; the grid in multiples of (1/&amp;#039;&amp;#039;k&amp;#039;&amp;#039;,1/&amp;#039;&amp;#039;k&amp;#039;&amp;#039;). First, scale the objects such that they are all contained in the unit square. Then, consider &amp;#039;&amp;#039;k&amp;#039;&amp;#039; shifts of the grid: (0,0), (1/&amp;#039;&amp;#039;k&amp;#039;&amp;#039;,1/&amp;#039;&amp;#039;k&amp;#039;&amp;#039;), (2/&amp;#039;&amp;#039;k&amp;#039;&amp;#039;,2/&amp;#039;&amp;#039;k&amp;#039;&amp;#039;), ..., ((&amp;#039;&amp;#039;k&amp;#039;&amp;#039;&amp;amp;nbsp;&amp;amp;minus;&amp;amp;nbsp;1)/&amp;#039;&amp;#039;k&amp;#039;&amp;#039;,(&amp;#039;&amp;#039;k&amp;#039;&amp;#039;&amp;amp;nbsp;&amp;amp;minus;&amp;amp;nbsp;1)/&amp;#039;&amp;#039;k&amp;#039;&amp;#039;). I.e., for each &amp;#039;&amp;#039;j&amp;#039;&amp;#039; in {0,...,&amp;#039;&amp;#039;k&amp;#039;&amp;#039;&amp;amp;nbsp;&amp;amp;minus;&amp;amp;nbsp;1}, consider a shift of the grid in (j/k,j/k). It is possible to prove that every label will be 2&amp;#039;&amp;#039;k&amp;#039;&amp;#039;-aligned for at least &amp;#039;&amp;#039;k&amp;#039;&amp;#039;&amp;amp;nbsp;&amp;amp;minus;&amp;amp;nbsp;2 values of&amp;amp;nbsp;&amp;#039;&amp;#039;j&amp;#039;&amp;#039;. Now, for every &amp;#039;&amp;#039;j&amp;#039;&amp;#039;, discard the objects that are not &amp;#039;&amp;#039;k&amp;#039;&amp;#039;-aligned in the (&amp;#039;&amp;#039;j&amp;#039;&amp;#039;/&amp;#039;&amp;#039;k&amp;#039;&amp;#039;,&amp;#039;&amp;#039;j&amp;#039;&amp;#039;/&amp;#039;&amp;#039;k&amp;#039;&amp;#039;) shift, and find a maximum disjoint set of the remaining objects. Call that set &amp;#039;&amp;#039;A&amp;#039;&amp;#039;(&amp;#039;&amp;#039;j&amp;#039;&amp;#039;). Call the real maximum disjoint set is&amp;amp;nbsp;&amp;#039;&amp;#039;A&amp;#039;&amp;#039;*. Then:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\sum_{j=0,\ldots,k-1}{|A(j)|} \geq (k-2)|A*|&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Therefore, the largest &amp;#039;&amp;#039;A&amp;#039;&amp;#039;(&amp;#039;&amp;#039;j&amp;#039;&amp;#039;) has a size of at least: (1&amp;amp;nbsp;&amp;amp;minus;&amp;amp;nbsp;2/&amp;#039;&amp;#039;k&amp;#039;&amp;#039;)|&amp;#039;&amp;#039;A&amp;#039;&amp;#039;*|. The return value of the algorithm is the largest &amp;#039;&amp;#039;A&amp;#039;&amp;#039;(&amp;#039;&amp;#039;j&amp;#039;&amp;#039;); the approximation factor is (1&amp;amp;nbsp;&amp;amp;minus;&amp;amp;nbsp;2/&amp;#039;&amp;#039;k&amp;#039;&amp;#039;), and the run time is &amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;lt;sup&amp;gt;&amp;#039;&amp;#039;O&amp;#039;&amp;#039;(&amp;#039;&amp;#039;k&amp;#039;&amp;#039;)&amp;lt;/sup&amp;gt;. We can make the approximation factor as small as we want, so this is a [[polynomial-time approximation scheme|PTAS]].&lt;br /&gt;
&lt;br /&gt;
Both versions can be generalized to &amp;#039;&amp;#039;d&amp;#039;&amp;#039; dimensions (with different approximation ratios) and to the weighted case.&lt;br /&gt;
&lt;br /&gt;
== Geometric separator algorithms ==&lt;br /&gt;
Several divide-and-conquer algorithms are based on a certain [[geometric separator]] theorem. A geometric separator is a line or shape that separates a given set of shapes to two smaller subsets, such that the number of shapes lost during the division is relatively small. This allows both [[polynomial-time approximation scheme|PTAS]]s and sub-exponential exact algorithms, as explained below.&lt;br /&gt;
&lt;br /&gt;
=== Fat objects with arbitrary sizes: PTAS using geometric separators ===&lt;br /&gt;
Let &amp;#039;&amp;#039;C&amp;#039;&amp;#039; be a set of &amp;#039;&amp;#039;n&amp;#039;&amp;#039; [[fat object]]s of arbitrary sizes. The following algorithm finds a disjoint set with a size of at least (1&amp;amp;nbsp;&amp;amp;minus;&amp;amp;nbsp;&amp;#039;&amp;#039;O&amp;#039;&amp;#039;(&amp;amp;radic;&amp;#039;&amp;#039;b&amp;#039;&amp;#039;))&amp;amp;middot;|MDS(&amp;#039;&amp;#039;C&amp;#039;&amp;#039;)| in time &amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;lt;sup&amp;gt;&amp;#039;&amp;#039;O&amp;#039;&amp;#039;(&amp;#039;&amp;#039;b&amp;#039;&amp;#039;)&amp;lt;/sup&amp;gt;, for every constant &amp;#039;&amp;#039;b&amp;#039;&amp;#039;&amp;amp;nbsp;&amp;gt;&amp;amp;nbsp;1.&amp;lt;ref name=Chan2003 /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The algorithm is based on the following geometric separator theorem, which can be proved similarly to [[Geometric separator#Proof|the proof of the existence of geometric separator for disjoint squares]]:&lt;br /&gt;
&lt;br /&gt;
::For every set &amp;#039;&amp;#039;C&amp;#039;&amp;#039; of fat objects, there is a rectangle that partitions &amp;#039;&amp;#039;C&amp;#039;&amp;#039; into three subsets of objects – &amp;#039;&amp;#039;C&amp;lt;sub&amp;gt;inside&amp;lt;/sub&amp;gt;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;C&amp;lt;sub&amp;gt;outside&amp;lt;/sub&amp;gt;&amp;#039;&amp;#039; and &amp;#039;&amp;#039;C&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;boundary&amp;lt;/sub&amp;gt;, such that:&lt;br /&gt;
::* |MDS(&amp;#039;&amp;#039;C&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;inside&amp;lt;/sub&amp;gt;)| ≤ &amp;#039;&amp;#039;a&amp;#039;&amp;#039;|MDS(&amp;#039;&amp;#039;C&amp;#039;&amp;#039;)|&lt;br /&gt;
::* |MDS(&amp;#039;&amp;#039;C&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;outside&amp;lt;/sub&amp;gt;)| ≤ a|MDS(&amp;#039;&amp;#039;C&amp;#039;&amp;#039;)|&lt;br /&gt;
::* |MDS(&amp;#039;&amp;#039;C&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;boundary&amp;lt;/sub&amp;gt;)|  &amp;#039;&amp;#039;c&amp;#039;&amp;#039;&amp;amp;radic;(|MDS(&amp;#039;&amp;#039;C&amp;#039;&amp;#039;)|)&lt;br /&gt;
&lt;br /&gt;
where &amp;#039;&amp;#039;a&amp;#039;&amp;#039; and &amp;#039;&amp;#039;c&amp;#039;&amp;#039; are constants. If we could calculate MDS(&amp;#039;&amp;#039;C&amp;#039;&amp;#039;) exactly, we could make the constant &amp;#039;&amp;#039;a&amp;#039;&amp;#039; as low as 2/3 by a proper selection of the separator rectangle. But since we can only approximate MDS(&amp;#039;&amp;#039;C&amp;#039;&amp;#039;) by a constant factor, the constant &amp;#039;&amp;#039;a&amp;#039;&amp;#039; must be larger. Fortunately, &amp;#039;&amp;#039;a&amp;#039;&amp;#039; remains a constant independent of |&amp;#039;&amp;#039;C&amp;#039;&amp;#039;|.&lt;br /&gt;
&lt;br /&gt;
This separator theorem allows to build the following PTAS:&lt;br /&gt;
&lt;br /&gt;
Select a constant &amp;#039;&amp;#039;b&amp;#039;&amp;#039;. Check all possible combinations of up to &amp;#039;&amp;#039;b&amp;#039;&amp;#039;&amp;amp;nbsp;+&amp;amp;nbsp;1 labels.&lt;br /&gt;
* If |MDS(&amp;#039;&amp;#039;C&amp;#039;&amp;#039;)| has a size of at most &amp;#039;&amp;#039;b&amp;#039;&amp;#039; (i.e. all sets of &amp;#039;&amp;#039;b&amp;#039;&amp;#039;&amp;amp;nbsp;+&amp;amp;nbsp;1 labels are not disjoint) then just return that MDS and exit. This step takes &amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;lt;sup&amp;gt;&amp;#039;&amp;#039;O&amp;#039;&amp;#039;(&amp;#039;&amp;#039;b&amp;#039;&amp;#039;)&amp;lt;/sup&amp;gt; time.&lt;br /&gt;
* Otherwise, use a geometric separator to separate &amp;#039;&amp;#039;C&amp;#039;&amp;#039; to two subsets. Find the approximate MDS in &amp;#039;&amp;#039;C&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;inside&amp;lt;/sub&amp;gt; and &amp;#039;&amp;#039;C&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;outside&amp;lt;/sub&amp;gt; separately, and return their combination as the approximate MDS in &amp;#039;&amp;#039;C&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Let &amp;#039;&amp;#039;E&amp;#039;&amp;#039;(&amp;#039;&amp;#039;m&amp;#039;&amp;#039;) be the error of the above algorithm when the optimal MDS size is MDS(&amp;#039;&amp;#039;C&amp;#039;&amp;#039;)&amp;amp;nbsp;=&amp;amp;nbsp;&amp;#039;&amp;#039;m&amp;#039;&amp;#039;. When &amp;#039;&amp;#039;m&amp;#039;&amp;#039;&amp;amp;nbsp;≤&amp;amp;nbsp;&amp;#039;&amp;#039;b&amp;#039;&amp;#039;, the error is 0 because the maximum disjoint set is calculated exactly; when &amp;#039;&amp;#039;m&amp;#039;&amp;#039;&amp;amp;nbsp;&amp;gt;&amp;amp;nbsp;&amp;#039;&amp;#039;b&amp;#039;&amp;#039;, the error increases by at most &amp;#039;&amp;#039;c&amp;#039;&amp;#039;&amp;amp;radic;&amp;#039;&amp;#039;m&amp;#039;&amp;#039; – the number of labels intersected by the separator. The worst case for the algorithm is when the split in each step is in the maximum possible ratio which is &amp;#039;&amp;#039;a&amp;#039;&amp;#039;:(1&amp;amp;nbsp;&amp;amp;minus;&amp;amp;nbsp;&amp;#039;&amp;#039;a&amp;#039;&amp;#039;). Therefore the error function satisfies the following recurrence relation:&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;math&amp;gt;E(m) = 0\ \ \ \ \text{ if } m\leq b&amp;lt;/math&amp;gt;&lt;br /&gt;
: &amp;lt;math&amp;gt;E(m) = E(a\cdot m) + E((1-a)\cdot m) + c\cdot\sqrt{m} \text{ if } m&amp;gt;b&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The solution to this recurrence is:&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;math&amp;gt;E(m) = (\frac{0}{b}+\frac{c}{\sqrt{b}(\sqrt{a}+\sqrt{1-a}-1)})\cdot m - \frac{c}{\sqrt{a}+\sqrt{1-a}-1}\cdot\sqrt{m}.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
i.e., &amp;lt;math&amp;gt;E(m)=O(m/\sqrt{b})&amp;lt;/math&amp;gt;. We can make the approximation factor as small as we want by a proper selection of &amp;#039;&amp;#039;b&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
This PTAS is more space-efficient than the PTAS based on quadtrees, and can handle a generalization where the objects may slide, but it cannot handle the weighted case.&lt;br /&gt;
&lt;br /&gt;
=== Disks with a bounded size-ratio: exact sub-exponential algorithm ===&lt;br /&gt;
Let &amp;#039;&amp;#039;C&amp;#039;&amp;#039; be a set of &amp;#039;&amp;#039;n&amp;#039;&amp;#039; disks, such that the ratio between the largest radius and the smallest radius is at most &amp;#039;&amp;#039;r&amp;#039;&amp;#039;. The following algorithm finds MDS(&amp;#039;&amp;#039;C&amp;#039;&amp;#039;) exactly in time &amp;lt;math&amp;gt;2^{O(r\cdot \sqrt{n})}&amp;lt;/math&amp;gt;.&amp;lt;ref name=Fu&amp;gt;{{Cite doi|10.1016/j.jcss.2010.05.003}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The algorithm is based on a [[geometric separator#Separators that are width-bounded strips between parallel hyperplanes|width-bounded geometric separator]] on the set &amp;#039;&amp;#039;Q&amp;#039;&amp;#039; of the centers of all disks in &amp;#039;&amp;#039;C&amp;#039;&amp;#039;. This separator theorem allows to build the following exact algorithm:&lt;br /&gt;
* Find a separator line such that at most 2&amp;#039;&amp;#039;n&amp;#039;&amp;#039;/3 centers are to its right (&amp;#039;&amp;#039;C&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;right&amp;lt;/sub&amp;gt;), at most 2&amp;#039;&amp;#039;n&amp;#039;&amp;#039;/3 centers are to its left (&amp;#039;&amp;#039;C&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;left&amp;lt;/sub&amp;gt;), and at most &amp;#039;&amp;#039;O&amp;#039;&amp;#039;(&amp;amp;radic;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;) centers are at a distance of less than &amp;#039;&amp;#039;r&amp;#039;&amp;#039;/2 from the line (&amp;#039;&amp;#039;C&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;int&amp;lt;/sub&amp;gt;). &lt;br /&gt;
* Consider all possible non-overlapping subsets of &amp;#039;&amp;#039;C&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;int&amp;lt;/sub&amp;gt;. There are at most &amp;lt;math&amp;gt;2^{O(r\cdot \sqrt{n})}&amp;lt;/math&amp;gt; such subsets. For each such subset, recursively compute the MDS of &amp;#039;&amp;#039;C&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;left&amp;lt;/sub&amp;gt; and the MDS of &amp;#039;&amp;#039;C&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;right&amp;lt;/sub&amp;gt;, and return the largest combined set.&lt;br /&gt;
&lt;br /&gt;
The run time of this algorithm satisfies the following recurrence relation:&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;math&amp;gt;T(1) = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;math&amp;gt;T(n) = 2^{O(r\cdot \sqrt{n})} T\left(\frac{2n}{3}\right) \text{ if } n&amp;gt;1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The solution to this recurrence is:&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;math&amp;gt;T(n) = 2^{O(r\cdot \sqrt{n})}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Local search algorithms ==&lt;br /&gt;
&lt;br /&gt;
=== Pseudo-disks: a PTAS ===&lt;br /&gt;
Let &amp;#039;&amp;#039;C&amp;#039;&amp;#039; be a set of &amp;#039;&amp;#039;n&amp;#039;&amp;#039; &amp;#039;&amp;#039;pseudo-disks&amp;#039;&amp;#039;, i.e., for every pair of shapes, their boundaries intersect at most twice (i.e. circles or squares).&lt;br /&gt;
&lt;br /&gt;
The following [[local search algorithm]] finds a disjoint set of size at least &amp;lt;math&amp;gt;(1-O(\frac{1}{\sqrt{b}}))\cdot|MDS(C)|&amp;lt;/math&amp;gt; in time &amp;lt;math&amp;gt;O(n^{b+3})&amp;lt;/math&amp;gt;, for every integer constant &amp;lt;math&amp;gt;b\geq 0&amp;lt;/math&amp;gt;:&amp;lt;ref name=ChanHarPeled2012&amp;gt;{{Cite doi|10.1007/s00454-012-9417-5}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
* INITIALIZATION: Initialize an empty set, &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt;.&lt;br /&gt;
* SEARCH: Loop over all the subsets of &amp;lt;math&amp;gt;C-S&amp;lt;/math&amp;gt; whose size is between 1 and &amp;lt;math&amp;gt;b+1&amp;lt;/math&amp;gt;. For each such subset &amp;#039;&amp;#039;X&amp;#039;&amp;#039;:&lt;br /&gt;
** Verify that &amp;#039;&amp;#039;X&amp;#039;&amp;#039; itself is independent (otherwise go to the next subset);&lt;br /&gt;
** Calculate the set &amp;#039;&amp;#039;Y&amp;#039;&amp;#039; of objects in &amp;#039;&amp;#039;S&amp;#039;&amp;#039; that intersect &amp;#039;&amp;#039;X&amp;#039;&amp;#039;. &lt;br /&gt;
** If &amp;lt;math&amp;gt;|Y|&amp;lt;|X|&amp;lt;/math&amp;gt;, then remove &amp;#039;&amp;#039;Y&amp;#039;&amp;#039; from &amp;#039;&amp;#039;S&amp;#039;&amp;#039; and insert &amp;#039;&amp;#039;X&amp;#039;&amp;#039;: &amp;lt;math&amp;gt;S := S-Y+X&amp;lt;/math&amp;gt;.&lt;br /&gt;
* END: return the set &amp;#039;&amp;#039;S&amp;#039;&amp;#039;.&lt;br /&gt;
Every exchange in the search step increases the size of &amp;#039;&amp;#039;S&amp;#039;&amp;#039; by at least 1, and thus can happen at most &amp;#039;&amp;#039;n&amp;#039;&amp;#039; times.&lt;br /&gt;
&lt;br /&gt;
The algorithm is very simple; the difficult part is to prove the approximation ratio.&amp;lt;ref name=ChanHarPeled2012 /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See also.&amp;lt;ref&amp;gt;{{Cite doi|10.1016/j.comgeo.2005.12.001}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linear programming relaxation algorithms ==&lt;br /&gt;
&lt;br /&gt;
=== Pseudo-disks: a PTAS ===&lt;br /&gt;
Let &amp;#039;&amp;#039;C&amp;#039;&amp;#039; be a set of &amp;#039;&amp;#039;n&amp;#039;&amp;#039; pseudo-disks, with [[union complexity]] &amp;#039;&amp;#039;u&amp;#039;&amp;#039; (i.e. there are &amp;#039;&amp;#039;u&amp;#039;&amp;#039; intersection points on the boundary of the union of all disks). Using [[linear programming relaxation]], it is possible to find a disjoint set of size at least &amp;lt;math&amp;gt;\frac{n}{u}\cdot|MDS(C)|&amp;lt;/math&amp;gt;. This is possible either with a randomized algorithm that has a high probability of success and run time &amp;lt;math&amp;gt;O(n^3)&amp;lt;/math&amp;gt;, or a deterministic algorithm with a slower run time (but still polynomial). This algorithm can be generalized to the weighted case.&amp;lt;ref name=ChanHarPeled2012 /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Other classes of shapes for which approximations are known ==&lt;br /&gt;
* Line segments and curves with a bounded number of intersection points.&amp;lt;ref&amp;gt;{{Cite doi|10.1137/1.9781611973082.87}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
{{reflist}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Computational geometry]]&lt;/div&gt;</summary>
		<author><name>en&gt;Erel Segal</name></author>
	</entry>
</feed>