10th StringBeginnersでの発表資料
EliasFano 10th StringBeginners → Kanda → K and A → K & A → K ampersand A →
View Slide
⟫ × "$& n '% S[0,n)× i.e., S[i-1] ≤ S[i] for each 0 < i < n⟫ !× Access / Predecessor / Successor (× #(20 1 2 3 4 5 6 7S 2 7 18 28 42 43 44 59Access(4) = 42Predecessor(10) = 7 Successor(43) = 44
EliasFano3S27182842434459000000010011101101101111n = 8u log $ log %&01011101010001001110001121311001100110000 logH = 110 0 10 10 0 1110 0 102 0 1 1 0 0 13 ( )L = 010 111 010 100 010 011 100 011()
2" + " log '(4L = 010 111 010 100 010 011 100 011H = 110 0 10 10 0 1110 0 100 1 2 3 4 5 6 7S 2 7 18 28 42 43 44 59EliasFanolog)"" log '( "2" 2 *+, ( ≈ "
2" + " log '( "6⟫ [0,u) 2 n (,/ (i.e. 4)-)#.%$*0+3 65S 2 4 5 8 9 00101100112 45 89n 5'& 2 u '(1 5!5 3 log '(
2" + " log '(4⟫ [0,u) 1 n *-+&!, #"'.(246S 2 4 4 5 8 9 00100110100010102 5')((/ 33(0))44 8 9n 3%$1 u+n Less than half a bit per element away (Quasi-succinct)2 log ')((≈ " log ')((
⟫ Access(i) = S[i]⟫ Predecessor(x) = max{S[i] : S[i] ≤ x}⟫ Successor(x) = min{S[i] : S[i] > x}7O(1) O(log $%) 0 1 2 3 4 5 6 7S 2 7 18 28 42 43 44 59Access(4) = 42Predecessor(10) = 7 Successor(43) = 44
Access&O(1) $⟫ &Access(4) = 42 = 101 01028L = 010 111 010 100 010 011 100 011H = 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 # %
SuccessorO(log $%) ⟫ Successor(43) = 44 = 101 10029L = 010 111 010 100 010 011 100 011H = 110 0 10 10 0 1110 0 10Select0(4) = 8 Select0(5) = 12log $%= 33 × (Select0(4) – 4) = 12 3 × (Select0(5) – 5) = 21101 01125② O(&'( )*) ① &'( * Select
/6 EliasFano7)⟫ # (;+'AA× 10%?*&× =98." × TRIE2!× 3<5,[email protected]:->10107501 4 86 93a tetaa t ec c2$A