B more carefully to obtain the desired running time. The cost of each iterative step is multiplied by the number of filtering steps needed to compute the location of the coefficients, which is Θ(log(n/B)).If we set B = Θ(k′), this would be Θ(log n) in most iterations, giving a Θ(k log2 n) running time. This is too slow when k is close to n. We avoid this by decreasing B more slowly and k′ more quickly. In the r-th iteration, we set B = k/ poly(r). This allows the total number of bins to remain O(k) while keeping log(n/B) small—at most O(log log k) more than log (n/k). Then, by having k′ decrease according to k′ = k/rΘ(r) rather than k/2Θ(r), we decrease the number of rounds to O(log k/ log log k). Some careful analysis shows that this counteracts the log log k loss in the log (n/B) term, achieving the desired O(k log n log(n/k)) running time.
4.2 Algorithm for the Exactly Sparse Case
In this section, we assume x̂i ∈ {−L, …, L} for some precision parameter L. To simplify the bounds, we assume L ≤ nc for some constant c > 0; otherwise the log n term in the running time bound is replaced by log L. We also assume that x̂ is exactly k-sparse. We will use the filter G with parameter δ = 1/(4n2L).
Definition 4.1 We say that
•
•
•
The above notion corresponds to the (1/(2B), (1 − α)/(2B), δ, O(B/α log(n/δ))-flat window function. In Appendix D, we give efficient constructions of such window functions, where G can be computed in
The algorithm NOISELESSSPARSEFFT (SFT 3.0) is described as Algorithm 4.1. The algorithm has three functions:
• HASHTOBINS. This permutes the spectrum of
• NOISELESSSPARSEFFTINNER. Given time-domain access to x and a sparse vector ẑ such that
• NOISELESSSPARSEFFT. This iterates NOISELESSSPARSEFFTINNER until it finds x̂ exactly.
Algorithm 4.1 SFT 3.0: Exact Sparse Fourier Transform for k = o(n)
We analyze the algorithm “bottom-up,” starting from the lower-level procedures.
Analysis of NOISELESSSPARSEFFTINNER and HASHTOBINS
For any execution of NOISELESSSPARSEFFTINNER, define the support S = supp(x̂ − ẑ). Recall that πσ,b(i) = σ(i − b) mod n. Define hσ,b(i) = round(πσ,b(i)B/n) and
• “Collision” event Ecoll(i): holds iff hσ,b(i) ∈ hσ,b(S\ {i}), and
• “Large offset” event Eoff (i): holds iff |oσ,b(i)| ≥ (1 − α)n/(2B).
Claim 4.1 For any i ∈ S, the event Ecoll(i) holds with probability at most 4|S|/B.
Proof Consider distinct i, j ∈ S. By Lemma 2.1,
By a union bound over j ∈ S, Pr[Ecoll(i)] ≤ 4 |S| /B.
Claim 4.2 For any i ∈ S, the event Eoff (i) holds with probability at most α.
Proof Note that oσ,b(i) ≡ πσ,b(i) ≡ σ(i − b) (mod n/B). For any odd σ and any l ∈ [n/B], we have that Prb[σ(i − b) ≡ l (mod n/B)]= B/n. Since only αn/B offsets oσ,b(i) cause Eoff (i), the claim follows.
Lemma 4.1 Suppose B divides n. The output û of HASHTOBINS satisfies
Let
Proof The proof can be found in Appendix A.3.
Lemma 4.2 Consider any i ∈ S such that neither Ecoll(i) nor Eoff(i) holds. Let j = hσ,b(i). Then
and j ∈ J.
Proof