DAST Code
How the Decorrelating Adaptive Search Tree Works
Optimal multiuser detection in a synchronous code-division channel is a combinatorial optimization: given the bank of matched-filter outputs y and the K-by-K code cross-correlation matrix R, the receiver must find the bit vector b that maximizes the maximum-likelihood correlation metric. Evaluating all 2K candidate vectors is the Verdu optimal detector, but its cost explodes beyond about 15 to 20 simultaneous users. DAST sidesteps the explosion by recasting the problem as a guided tree search rather than an exhaustive enumeration.
The "decorrelating" stage applies R−1 to the matched-filter vector, which perfectly cancels multiple-access interference but amplifies the background noise. Instead of taking the sign of each decorrelated statistic as a final hard decision, DAST treats these statistics, and the reliability ranking that comes from the diagonal of R−1, as guidance. Users are sorted from most reliable to least reliable and assigned to tree levels in that order. The "adaptive search" stage then walks the tree, retaining at most M partial paths per level by their accumulated metric, much like the M-algorithm used in sequential decoding.
Because the highest-reliability users sit near the root, their bits are almost always correct on the first branch, so the search spends its effort only where genuine ambiguity exists. This is the same nulling-and-ordering insight that underpins V-BLAST receivers and the preprocessing in sphere decoding: ordering tightens the partial-path metrics and lets the detector prune aggressively without discarding the true sequence.
Governing Relations
y = R·A·b + n → b̂dec = sgn(R−1y)
ML metric maximized over the tree:
b̂ = arg maxb ( 2·bTA·y − bTA·R·A·b )
Decorrelator noise enhancement (user k):
ηk = [R−1]kk ≥ 1 (asymptotic efficiency = 1 / ηk)
R = code cross-correlation matrix, A = diagonal amplitude matrix, b = ±1 bit vector, n = noise, K = active users. Exhaustive ML evaluates 2K hypotheses; DAST retains M paths per level for an average cost ≈ O(K2) preprocessing plus O(M×K) search.
Detector Comparison
| Detector | Complexity (K users) | BER vs. single-user bound | Near-far resistance | Notes |
|---|---|---|---|---|
| Matched filter bank | O(K) | Poor under load | None | Conventional, interference-limited |
| Decorrelator (linear) | O(K3) (one R−1) | 2 to 4 dB loss from noise gain | Optimal | Hard decisions, no search |
| DAST tree search | ~O(K2) to O(K3) + O(M·K) | < 0.5 dB from ML | Optimal | Reliability-ordered, M paths kept |
| Sphere decoding | Polynomial avg, exp. worst case | Exact ML | Optimal | Radius-bounded lattice search |
| Optimal ML (Verdu) | O(2K) | Reference (best) | Optimal | Impractical beyond ~15 to 20 users |
Frequently Asked Questions
How does the DAST detector differ from a plain decorrelating detector?
A linear decorrelator inverts R and makes an independent hard decision per user, fully removing multiple-access interference but amplifying noise by [R−1]kk. DAST uses the decorrelator only as a soft front end and reliability ranking, then searches a tree to keep the sequence minimizing the ML metric. This recovers roughly 2 to 4 dB at a BER of 0.001 in a moderately loaded system while staying far cheaper than exhaustive ML.
What is the computational complexity of DAST compared with optimal maximum-likelihood detection?
Optimal ML evaluates 2K sequences and is impractical beyond about 15 to 20 users. DAST prunes via decorrelator ordering and a breadth-limited search, giving polynomial average cost: roughly O(K2) to O(K3) for the matrix work plus an O(M×K) search. A 16-user case where ML tests 65,536 hypotheses is handled by DAST with M = 8 in a few hundred metric updates, within a few tenths of a dB of the ML BER.
Why does the decorrelator ordering improve the tree search?
Each decorrelated statistic's reliability scales with its effective SNR, set by the diagonal of R−1. Sorting users most-reliable-first puts near-certain decisions at the top of the tree and reserves branching for ambiguous, low-reliability users near the leaves. This is the same nulling-and-ordering principle as V-BLAST and sphere-decoding preprocessing; it keeps partial-path metrics tight and lets DAST prune hard without losing the true sequence.