1 / 20

Succincter

Succincter. Mihai P ătra ș cu. ?. ?. unemployed. Storing t rits. Store A[1..n] ∈{1,2,3} n to retrieve any A[i ] efficiently Credits: @Max Plank, 2005. Storing t rits. Store A[1..n] ∈{1,2,3} n to retrieve any A[i ] efficiently. Storing t rits.

liko
Download Presentation

Succincter

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Succincter Mihai Pătrașcu ? ? unemployed

  2. Storing trits Store A[1..n] ∈{1,2,3}n to retrieve any A[i] efficiently Credits: @Max Plank, 2005

  3. Storing trits Store A[1..n] ∈{1,2,3}n to retrieve any A[i] efficiently

  4. Storing trits Store A[1..n] ∈{1,2,3}n to retrieve any A[i] efficiently “1” “2” “3” 1 0 ⅓ ⅔ “21” “23” “22”

  5. Storing trits Store A[1..n] ∈{1,2,3}n to retrieve any A[i] efficiently redundancy

  6. Storing trits Store A[1..n] ∈{1,2,3}n to retrieve any A[i] efficiently • Hmm… If a block uses O(1) redundancy, the • encoding must spread information around

  7. Storing trits Store A[1..n] ∈{1,2,3}n to retrieve any A[i] efficiently

  8. Succinct Data Structures “Make data structures use space close to optimum (≈entropy)” • dictionaries * classic hash tables use O(n∙lgu) bits * strive for H = log (un) • pattern matching * suffix trees use O(n∙lgn) bits * strive for H = n∙lgΣ • represent trees with fast navigation (also graphs, etc) * trivial representations use O(n∙lgn) bits * strive for H = lgCn≈ 2n • etc

  9. Succinct Data Structures “Make data structures use space close to optimum (≈entropy)” • dictionaries * classic hash tables use O(n∙lg u) bits * strive for H = log (un) • pattern matching * suffix trees use O(n∙lg n) bits * strive for H = n∙lg Σ • represent trees with fast navigation (also graphs, etc) * trivial representations use O(n∙lg n) bits * strive for H = lg Cn ≈ 2n • etc • Down deep, common technique: * blocks of εlgn elements stored with redundancy ≤1 * tabulation to handle blocks⇒ Space ≈ H+O(H/(τlgn)) with time O(τ)

  10. Storing trits Store A[1..n] ∈{1,2,3}n to retrieve any A[i] efficiently

  11. Storing trits Store A[1..n] ∈{1,2,3}n to retrieve any A[i] efficiently

  12. Discussion Big new concept: ** use recursion to reduce redundancy ** Many applications: succinct data structures with space O(n/lgcn), ∀c How am I getting away with improving on a constant?

  13. A Succinct Proof

  14. Spill-Over Encodings Say I want to represent x∈X(think X={1,2,3}B) If |X|is not a power of 2, how to get redundancy <<1 ? New encoding framework: x ➝ M bits + a spill in {1,..,K} Redundancy = wasted entropy = M + lg K – lg |X| … need to approximate lg|X| ≈ integer + lg(integer) M + lg(K-1) < lg|X| < M + lg K ⇒ redundancy ≤lg K – lg(K-1) = O(1/K)

  15. Recursion {1,..,K’} B’=(lgn)/(lg K) {1,..,K} {1,..,K} {1,..,K} B=lgn B=lgn B=lgn … … … {1,2,3} {1,2,3} {1,2,3} {1,2,3} {1,2,3} {1,2,3}

  16. Analysis • choose K, K’, K’’, … = Θ(κ) • redundancy at each node = O(1/κ) times ≈n nodes ⇒ O(n/κ) bits • degree B’, B’’, … = Θ( (lgn) / (lgκ) ) • go up until O(n/κ) nodes left, then waste 1 bit/node ⇒ query time τ = O(lgB’κ) ⇒ κ=((lgn) / τ)τ ⇒ redundancy n / ((lgn) / τ)τ≈ n/lgτn

  17. Succinct(er) Data Structures

  18. A Building Block The “Rank/Select Problem”: Store A[1..n] ∈{0,1}n subject to: * rank(k): return Σki=1 A[i] * select(j): find k such that rank(k)=j [Golynski et al ’07] space n + O(n∙lglgn / lg2n), query O(1) [P. FOCS’08] space n + O(n / lgcn), query O(c)

  19. The Algorithm spill {1, .., K’(Σ)} {1, .., K(Σ)} Σ X =(BΣ) H(Σ) + H(A|Σ) = n ⇒ H(Σ) + lg K(Σ) + M ≈ n ⇒ H(spill) ≈ n – M … A[B] A[2] A[1]

  20. The End Questions?

More Related