Shunsuke Kanda
November 30, 2019
160

# EliasFano

10th StringBeginnersでの発表資料

## Shunsuke Kanda

November 30, 2019

## 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 *-+&

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

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."
× 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