Paul B. Callahan and S. Rao Kosaraju devised the well-separated pair decomposition (WSPD). They showed that it can be used to solve a variety of distance problems. A WSPD is a partition of the (n choose 2) edges of the complete Euclidean graph into O(n) subsets. Each subset in this partition is represented by two subsets A and B of the point set S, such that:
The WSPD can be used to obtain many optimal algorithms for solving problems such as: closest pair problem, the k-closest pairs problem, the all-nearest neighbors problem, and the approximate minimum spanning tree problem. On this site, we will mainly focus on the details of the WSPD and its application with reguards to constructing spanners.
A sWSPD for P is a partition of the (n choose 2) edges of the complete graph on P into a collection of m well-separated pairs. Given two point sets A and B and a constant 0 < s < 1, we say (A, B) is s-separated if: max{diam(A), diam(B)} ≤ s∗dist(A, B) where dist(A, B)= min(a,b) ∈A×B‖a − b‖.
In the Point-Region quadtree (PR quadtree) each node either has exactly four children or is a leaf. The PR quadtree represents a collection of data points in two dimensions by decomposing the region containing the data points into four equal quadrants, subquadrants, and so on, until no leaf node contains more than a single point.
For the purpose of constructing sWSPD we use a compressed PR quadtree that can be constructed in O(nlogn).
A compressed PR quadtree is a quadtree that has two types of nodes: compressed and uncompressed.
Given a PR quadtree T nodes u and v and given a desired amount of seperation s > 0, let P(u) denote the intersection beteween total set of points and the points within the PR quadtree square i.e the diameter of u. Simmilarly let P(v) denote the intersection beteween total set of points and the points within the PR quadtree square i.e the diameter of v. We can find WSPD for the Tensor product (⊗) of P(u) ⊗ P(v) using the algorithm below.
WSPD(u, v, T, s) { if(∆u = 0 or ∆v = 0) return 0; else if(P(u) and P(v) is s-well separated) return {{u, v}}; else if ∆u < ∆v swap(u, v) else if ∆u ≤ sd(▢u,▢v) F = F ∪{(u,v)} else for each child w of u WSPD(w, v, T, s) }
To prove our the correctness of the algorithm above, we apply 2 major concepts: a lemma and the packing argument (explained below). Using these key concepts, we show that the build time for a WSPD in 2D is O(nlog(n) + n/(s^2)).
In order to get to nodes u and v we needed to go thought their previous nodes which are their parents. This implies that the parent(v) is not well seperated with u.
We know that no node can ever split apart more than s^2 times because we are in a 2D space. Hence, we can just look at each leaf node and how many times each parent directly above it was split. Looking at parent(u) we can observe the following:
Algorithm also uses a packing argument to divide up the nodes of the quadtree into s-WSPD. The number of circles of size Δ that are at k away from a given point is O(k^2/Δ^2) or in our case O(1/s^2)
A circle packing is an arrangement of circles inside a given boundary such that no two overlap and some (or all) of them are mutually tangent. The generalization to spheres is called a sphere packing. Tessellations of regular polygons correspond to particular circle packings (Williams 1979, pp. 35-41). There is a well-developed theory of circle packing in the context of discrete conformal mapping (Stephenson) (Wolfram).
Using these two concepts we have shown that total runtime of O(nlog(n) + n/(s^2)).
A spanner is a small-size graph such that the shortest path distance between any two points is roughly their Euclidean distance.
Definition. A graph G = (S, E) is a ε-spanner if
Fair Split Trees (FST) are structurally the same as KD trees and share the same properties, i.e they are built with a set of axis splits along different axis. But invariants of the fair split trees are different:
This algorithm takes O(n^2) time which is too slow for efficiently building WSPD.
To fix that Paul B. Callahan and S. Rao Kosaraju in their paper "A Decomposition of Multidimensional Point Sets with Applications to k-Nearest-Neighbors and n-Body Potential Fields" explain how to build it in O(nlog(n)) time. The link to their paper is in the works cited page.
Rebecca & Sofiia