# Greedy geometric spanner

In computational geometry, a greedy geometric spanner is an undirected graph whose distances approximate the Euclidean distances among a finite set of points in a Euclidean space. The vertices of the graph represent these points. The edges of the spanner are selected by a greedy algorithm that includes an edge whenever its two endpoints are not connected by a short path of shorter edges. The greedy spanner was first described in the PhD thesis of Gautam Das and conference paper and subsequent journal paper by Ingo Althöfer et al. These sources also credited Marshall Bern (unpublished) with the independent discovery of the same construction.
Greedy geometric spanners have bounded degree, a linear total number of edges, and total weight close to that of the Euclidean minimum spanning tree. Although known construction methods for them are slow, fast approximation algorithms with similar properties are known.

## Construction

The greedy geometric spanner is determined from an input consisting a set of points and a parameter $t\geq 1$. The goal is to construct a graph whose shortest path distances are at most $t$ times the geometric distances between pairs of points. It may be constructed by a greedy algorithm that adds edges one at a time to the graph, starting from an edgeless graph with the points as its vertices. All pairs of points are considered, in sorted (ascending) order by their distances, starting with the closest pair. For each pair $(u,v)$ of points, the algorithm tests whether the graph constructed so far already contains a path from $u$ to $v$ with length at most $t\cdot d(u,v)$. If not, the edge $uv$ with length $d(u,v)$ is added to the graph. By construction, the resulting graph is a geometric spanner with stretch factor at most $t$.
A naive implementation of this method would take time $O(n^{3}\log n)$ on inputs with $n$ points. This is because the considerations for each of the $O(n^{2})$ pairs of points involve an instance of Dijkstra's algorithm to find a shortest path in a graph with $O(n)$ edges. It uses $O(n^{2})$ space to store the sorted list of pairs of points. More careful algorithms can construct the same graph in time $O(n^{2}\log n)$, or in space $O(n)$. A construction for a variant of the greedy spanner that uses graph clustering to quickly approximate the graph distances runs in time $O(n\log n)$ in Euclidean spaces of any bounded dimension, and can produce spanners with (approximately) the same properties as the greedy spanners. The same method can be extended to spaces with bounded doubling dimension.

## Properties

The same greedy construction produces spanners in arbitrary metric spaces, but in Euclidean spaces it has good properties some of which do not hold more generally.
The greedy geometric spanner in any metric space always contains the minimum spanning tree of its input, because the greedy construction algorithm follows the same insertion order of edges as Kruskal's algorithm for minimum spanning trees. If the greedy spanner algorithm and Kruskal's algorithm are run in parallel, considering the same pairs of vertices in the same order, each edge added by Kruskal's algorithm will also be added by the greedy spanner algorithm, because the endpoints of the edge will not already be connected by a path. In the limiting case when $t$ is large enough (e.g. $t>n$, where $n$ is the number of vertices in the graph) the two algorithms produce the same output.
In Euclidean spaces of bounded dimension, for any constant $t$, the greedy geometric $t$-spanners on sets of $n$ points have bounded degree, implying that they also have $O(n)$ edges. This property does not extend even to well-behaved metric spaces: there exist spaces with bounded doubling dimension where the greedy spanner has unbounded vertex degree. However, in such spaces the number of edges is still $O(n)$.
Greedy geometric spanners in bounded-dimension Euclidean spaces also have total weight at most a constant times the total weight of the Euclidean minimum spanning tree. This property remains true in spaces of bounded doubling dimension.