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 →

    View Slide



  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

    View Slide

  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
    ()

    View Slide

  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 *+, ( ≈ "

    View Slide

  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 '
    (

    View Slide

  6. 2" + " log '
    (
    4
    ⟫ [0,u) 1 n *-+&

    !, #"'.(24
    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 ')(
    (

    View Slide


  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

    View Slide

  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 #
    %

    View Slide

  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

    View Slide

  10. /6 EliasFano7)
    ⟫ # (;+'AA
    × 10%?*&
    × =98."
    × TRIE2!
    × 3<5,[email protected]:->
    10



    10
    7
    5
    0
    1 4 8
    6 9
    3
    a t
    e
    t
    a
    a t e
    c c
    2
    $A

    View Slide