Sphere Decoding

Searching a Sphere, Not a Cube

Exhaustive ML search visits every vertex of the ntn_t-dimensional hypercube Ant\mathcal{A}^{n_t}. Sphere decoding visits only those lattice points that lie inside a sphere of radius rr around the received vector. Because the noise is Gaussian, most of the probability mass on the distance to the true transmit vector concentrates on O(r)O(r) with r2β‰ˆnrΟƒ2r^2 \approx n_r \sigma^2 β€” so a well-chosen radius captures the ML solution almost surely while pruning the search tree aggressively. At moderate-to-high SNR, the expected number of visited points grows polynomially in ntn_t; at low SNR, it degenerates to exponential.

Definition:

The MIMO Lattice

The set of all noise-free received vectors, as x\mathbf{x} ranges over Znt\mathbb{Z}^{n_t} (after rescaling/shifting the constellation into an integer grid), is the lattice Ξ›(H)={Hz:z∈Znt}βŠ‚Cnr.\Lambda(\mathbf{H}) = \{\mathbf{H}\mathbf{z} : \mathbf{z} \in \mathbb{Z}^{n_t}\} \subset \mathbb{C}^{n_r}. The MIMO detection problem becomes a closest-vector problem within a bounded region corresponding to the constellation Ant\mathcal{A}^{n_t}.

Real-valued sphere decoders work in R2nr\mathbb{R}^{2n_r} with R2nt\mathbb{R}^{2n_t}-valued integers by stacking real and imaginary parts. QAM constellations map naturally to integer lattices after scaling.

Theorem: QR Decomposition Enables Depth-First Pruning

Let H=QR\mathbf{H} = \mathbf{Q}\mathbf{R} be the economy QR factorization with R\mathbf{R} upper-triangular and Q∈CnrΓ—nt\mathbf{Q} \in \mathbb{C}^{n_r \times n_t} having orthonormal columns. Let yβ€²=QHy\mathbf{y}' = \mathbf{Q}^H \mathbf{y}. Then for any candidate x∈Ant\mathbf{x} \in \mathcal{A}^{n_t}, βˆ₯yβˆ’Hxβˆ₯2=βˆ₯yβ€²βˆ’Rxβˆ₯2+const=βˆ‘i=1ntβ€‰β£βˆ£yiβ€²βˆ’βˆ‘j=intRijxj∣2+const.\|\mathbf{y} - \mathbf{H}\mathbf{x}\|^2 = \|\mathbf{y}' - \mathbf{R}\mathbf{x}\|^2 + \text{const} = \sum_{i=1}^{n_t}\!\left|y'_i - \sum_{j=i}^{n_t} R_{ij} x_j\right|^2 + \text{const}. The sum is triangular: its ii-th term depends only on xi,…,xntx_i, \ldots, x_{n_t}.

The triangular structure lets us bound the total metric by partial sums. If the partial sum from level ii down already exceeds the current best radius, every extension is hopeless β€” we prune.

Schnorr-Euchner Sphere Decoder

Complexity: Expected O(ntp)O(n_t^p) at moderate SNR; worst case O(∣A∣nt)O(|\mathcal{A}|^{n_t})
Input: y\mathbf{y}, H\mathbf{H}, alphabet A\mathcal{A}, initial radius rr
Output: x^ML\hat{\mathbf{x}}_{\text{ML}}
1. Compute H=QR\mathbf{H} = \mathbf{Q}\mathbf{R} and yβ€²=QHy\mathbf{y}' = \mathbf{Q}^H \mathbf{y}
2. Initialize k←ntk \leftarrow n_t, Tk←0T_k \leftarrow 0, best radius r⋆←rr^\star \leftarrow r, x^←NULL\hat{\mathbf{x}} \leftarrow \text{NULL}
3. Compute the Babai estimate xΛ‡k←(ykβ€²βˆ’βˆ‘j>kRkjxj)/Rkk\check{x}_k \leftarrow (y'_k - \sum_{j>k} R_{kj} x_j) / R_{kk}
4. Order candidates in A\mathcal{A} by increasing ∣xkβˆ’xΛ‡k∣|x_k - \check{x}_k| (Schnorr-Euchner zig-zag)
5. loop
6. xk←nextΒ candidateΒ inΒ theΒ SEΒ orderΒ forΒ levelΒ k\quad x_k \leftarrow \text{next candidate in the SE order for level } k
7. partial←Tk+∣Rkk(xkβˆ’xΛ‡k)∣2\quad \text{partial} \leftarrow T_k + |R_{kk}(x_k - \check{x}_k)|^2
8. \quad if partialβ‰₯r⋆2\text{partial} \geq r^{\star 2} then backtrack: k←k+1k \leftarrow k+1; if k>ntk > n_t then return x^\hat{\mathbf{x}}
9. \quad else if k=1k = 1 then update best: x^←(x1,…,xnt)\hat{\mathbf{x}} \leftarrow (x_1,\ldots,x_{n_t}); r⋆←partialr^\star \leftarrow \sqrt{\text{partial}}; backtrack
10. \quad else descend: Tkβˆ’1←partialT_{k-1} \leftarrow \text{partial}; k←kβˆ’1k \leftarrow k-1; recompute Babai xΛ‡k\check{x}_k
11. end loop

The Schnorr-Euchner enumeration orders children by increasing metric, which causes the best candidates to be found first and shrinks r⋆r^\star aggressively. Radius updating (line 9) is the key speed-up over the original Viterbo-Boutros decoder with fixed radius.

Theorem: Sphere Decoding is ML-Optimal on Termination

If the initial radius rr is chosen so that at least one lattice point in HAnt\mathbf{H}\mathcal{A}^{n_t} lies within distance rr of y\mathbf{y}, the Schnorr-Euchner sphere decoder terminates and returns x^ML\hat{\mathbf{x}}_{\text{ML}}.

The algorithm enumerates every point inside the sphere whose partial metric does not already exceed the current best. The radius is only ever decreased when an improvement is found. Nothing can be missed that was not provably worse.

Expected Complexity and Its Honest Limit

Hassibi and Vikalo (2005) showed that under i.i.d. Rayleigh channels and fixed SNR, the expected number of lattice points inside the sphere grows as O(ntp(SNR))O(n_t^{p(\text{SNR})}) for some SNR-dependent exponent p(SNR)p(\text{SNR}). JaldΓ©n and Ottersten (2005) proved, however, that the expected complexity is exponential at any fixed SNR β€” the polynomial behavior only holds when the SNR scales up with ntn_t. The practical message: sphere decoders are fast where practical wireless systems operate (moderate-to-high SNR), but one should not call them "polynomial" without qualification.

,

Sphere Decoder Nodes Visited vs. SNR

Average number of tree nodes visited by the Schnorr-Euchner sphere decoder as a function of SNR. At high SNR, the search is nearly linear in ntn_t; at low SNR it approaches exhaustive.

Parameters
4

Sphere Decoder: R\mathbf{R}-Triangular Search and Pruning

Visualizes the depth-first search over a small lattice, with pruned subtrees highlighted as the radius rr shrinks after each improvement.
Tree nodes colored by fate: green = best-so-far, red = pruned, gray = explored. Radius tightens each time a shorter lattice vector is discovered.

Example: Two-Dimensional Sphere Decoder by Hand

With R=[1.00.400.8]\mathbf{R} = \begin{bmatrix} 1.0 & 0.4 \\ 0 & 0.8 \end{bmatrix}, yβ€²=(0.9,0.5)T\mathbf{y}' = (0.9, 0.5)^T, alphabet {βˆ’1,+1}\{-1, +1\}, and initial radius r=2r = 2, trace the Schnorr-Euchner search and report x^ML\hat{\mathbf{x}}_{\text{ML}}.

Historical Note: From Fincke-Pohst to Wireless Receivers

1985–1999

Sphere decoding originated in number theory: Fincke and Pohst (1985) introduced the lattice enumeration algorithm for computing short vectors. Viterbo and Boutros (1999) adapted it to wireless communications, presenting the first sphere decoder for MIMO-like problems. Schnorr and Euchner (1994), working independently in cryptographic lattice contexts, introduced the zig-zag enumeration order that dramatically accelerates the search. The combined algorithm β€” Viterbo-Boutros structure with Schnorr-Euchner ordering β€” is what most modern MIMO implementations use.

Common Mistake: Choosing the Wrong Initial Radius

Mistake:

One picks an initial radius rr too small, and the sphere decoder returns "no candidate found."

Correction:

A safe choice is r2=Ξ²β‹…nrβ‹…Οƒ2r^2 = \beta \cdot n_r \cdot \sigma^2 with β∈[2,4]\beta \in [2, 4], calibrated to cover the typical noise norm with high probability. Alternatively, initialize from the Babai / ZF estimate: compute x^ZF\hat{\mathbf{x}}_{\text{ZF}}, snap to the alphabet, and use r=βˆ₯yβˆ’Hx^ZFβˆ₯r = \|\mathbf{y} - \mathbf{H} \hat{\mathbf{x}}_{\text{ZF}}\|. This guarantees at least one lattice point inside the sphere and provides an immediate radius tightening on the first leaf.

⚠️Engineering Note

Sphere Decoders in Hardware

Commercial MIMO receivers ship sphere decoders only when nt≀4n_t \leq 4 and the constellation is 16-QAM or smaller. Above that, the variable throughput (a data-dependent node count per channel use) becomes incompatible with deterministic latency budgets. FPGA implementations typically use a K-best variant: keep only the KK best partial candidates at each level, sacrificing ML optimality for fixed throughput.

Practical Constraints
  • β€’

    K-best: deterministic latency, near-ML for Kβ‰₯8K \geq 8 and nt≀4n_t \leq 4

  • β€’

    Pure sphere decoder: variable latency, unusable in fixed-rate pipelines

Sphere Decoding

A depth-first lattice search that enumerates only lattice points within a given radius of the received vector, using QR-based triangular metric bounds to prune subtrees. ML-optimal when it terminates with a candidate.

Related: Closest Vector Problem, Schnorr-Euchner Enumeration

Schnorr-Euchner Enumeration

A zig-zag ordering of lattice candidates at each level, visiting points in order of increasing distance from the Babai / continuous estimate. Accelerates sphere decoding by finding good candidates early and tightening the radius faster.

Related: Sphere Decoding, Babai Estimate

Quick Check

Sphere decoding prunes a subtree when:

The partial metric already exceeds the current best radius squared

The candidate symbol is not the nearest to the Babai estimate

The QR decomposition has zero diagonal entries

A random threshold is met