Upgrade to Pro — share decks privately, control downloads, hide ads and more …

EliasFano

Shunsuke Kanda
November 30, 2019

 EliasFano

10th StringBeginnersでの発表資料

Shunsuke Kanda

November 30, 2019
Tweet

More Decks by Shunsuke Kanda

Other Decks in Research

Transcript

  1. EliasFano   10th StringBeginners   → Kanda →

    K and A → K & A → K ampersand A → 
  2.  ⟫  × "$& n '% S[0,n) × i.e.,

    S[i-1] ≤ S[i] for each 0 < i < n ⟫ ! × Access / Predecessor / Successor ( ×   #( 2 0 1 2 3 4 5 6 7 S 2 7 18 28 42 43 44 59 Access(4) = 42 Predecessor(10) = 7 Successor(43) = 44
  3. EliasFano 3 S 2 7 18 28 42 43 44

    59 000 000 010 011 101 101 101 111  n = 8 u  log $ log % & 010 111 010 100 010 011 100 011 2 1 3 1 1 001 100 110 0 0 0  log  H = 110 0 10 10 0 1110 0 10 2 0 1 1 0 0 1 3 ( ) L = 010 111 010 100 010 011 100 011 ()
  4.  2" + " log ' (  4 L

    = 010 111 010 100 010 011 100 011 H = 110 0 10 10 0 1110 0 10 0 1 2 3 4 5 6 7 S 2 7 18 28 42 43 44 59 EliasFano log ) " " log ' (   " 2"    2 *+, ( ≈ "
  5. 2" + " log ' (  "6 ⟫ 

    [0,u) 2 n (,/ (i.e. 4) -) #. % $*0+3 6 5 S 2 4 5 8 9 0010110011 2 45 89 n  5'& 2 u  ' ( 1  5!5    3 log ' ( 
  6. 2" + " log ' (  4 ⟫ 

    [0,u) 1 n *- +& !, # "'.(2 4 6 S 2 4 4 5 8 9 0010011010001010 2 5 ')( ( /  33 (0)) 44 8 9   n  3%$1 u+n  Less than half a bit per element away (Quasi-succinct) 2 log ')( ( ≈ " log ')( ( 
  7.  ⟫ Access(i) = S[i] ⟫ Predecessor(x) = max{S[i] :

    S[i] ≤ x} ⟫ Successor(x) = min{S[i] : S[i] > x} 7 O(1)  O(log $ % )  0 1 2 3 4 5 6 7 S 2 7 18 28 42 43 44 59 Access(4) = 42 Predecessor(10) = 7 Successor(43) = 44
  8. Access&O(1) $ ⟫ &Access(4) = 42 = 101 0102 8

    L = 010 111 010 100 010 011 100 011 H = 110 0 10 10 0 1110 0 10 ①  !"# $ %   i !   Select1 (4) – 4 = 9 – 4 = 5 = 1012 ②  !"# %   Select1 (i) – i     H  Select " o(n)   Selectb (H, i)&H  i !   b #  %
  9. SuccessorO(log $ % )  ⟫ Successor(43) = 44 =

    101 1002 9 L = 010 111 010 100 010 011 100 011 H = 110 0 10 10 0 1110 0 10 Select0 (4) = 8 Select0 (5) = 12 log $ % = 3 3 × (Select0 (4) – 4) = 12 3 × (Select0 (5) – 5) = 21 101 0112 5 ②   O(&'( ) * )  ① &'( *   Select 
  10. /6  EliasFano7) ⟫  # (;+'  AA ×

    10%?*& × =98. "  × TRIE 2! × 3<5,4!@: -> 10  10 7 5 0 1 4 8 6 9 3 a t e t a a t e c c 2  $A