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

EliasFano

Avatar for Shunsuke Kanda Shunsuke Kanda
November 30, 2019

 EliasFano

10th StringBeginnersでの発表資料

Avatar for Shunsuke Kanda

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