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

2021-02-implicit-static-finger-search

kgoto
February 12, 2021

 2021-02-implicit-static-finger-search

kgoto

February 12, 2021
Tweet

More Decks by kgoto

Other Decks in Research

Transcript

  1. 発表の概要 1 ◼省領域データ構造の究極系である 強暗黙データ構造 (strong implicit data structures)を 指探索(finger search)を通して学ぶ

    ◼強暗黙データ構造を学ぶとここがうれしい! 領域をケチる実用的なテクニック・考え方が学べる 良い問題設定の方法について学べる • なにを前提とするか • 性能の測り方の基準 などなど
  2. 省領域データ構造の分類 2 ◼あるデータの保存に必要な情報量下限をZとしたとき データ構造を使用領域によって分類する 小領域(Compact): O(Z) bits 簡潔(Succinct): Z +

    o(Z) bits 暗黙(Implicit): Z + O(1) bits https://ja.wikipedia.org/wiki/簡潔データ構造 明確な同意はない 本発表では以下の定義を採用する [Nielsen, 2015] 強暗黙: Z bits 弱暗黙: Z bits + O(1) words
  3. 暗黙データ構造の例: Binary heap 4 ◼heap制約を満たす完全二分木の配列表現 *heap制約:各ノードは子より大きい 0 1 2 3

    4 5 6 7 8 100 19 36 17 3 25 1 2 7 = A[i]の子はA[2i+1], A[2i+2] 保存するのは値を格納した配 列のみ(自明な情報量下限) 発表でn log U(ここでデータ構造は[0, U-1]の整数値を保存するとする)は 情報量下限でないのではというツッコミあり。log U C n では?
  4. 暗黙データ構造の例: Binary heap 6 pop 100 0 1 2 3

    4 5 6 7 8 100 19 36 17 3 25 1 2 7 popはrootを取り出し、A[n-1]をrootに移動したあとheap制約 を満たすように左右いずれかの子とswapを繰り返す
  5. 暗黙データ構造の例: Binary heap 7 36 25 7 0 1 2

    3 4 5 6 7 8 36 19 25 17 3 7 1 2 - popはrootを取り出し、A[n-1]をrootに移動したあとheap制約 を満たすように左右いずれかの子とswapを繰り返す O(log n)時間で実行可能 addも同様の時間で計算可能
  6. 指探索(finger search) 8 ◼finger searchはfinger propertyを持ち、 以下の操作を提供する辞書データ構造 search(x): xが含まれるかyes/noを返す change_finger(x):

    fingerをxに変更する ある要素をfingerとして、search(x)の計算時間が fingerとxとのランク距離tに依存する finger property 要素の追加、削除をサポートする動的なバージョンもあるが今回は静的な場合のみを考える
  7. 弱暗黙指探索 9 ◼ データをソートして配列で保存、fingerの位置を保存 O(log N) bits search(x): fingerを起点として指数探索を行う O(log

    t)時間 • ① x≦A[rank(f)+2i]を満たす最小のiを求める • ② A[rank(f), rank(f)+ 2i]を二分探索 強暗黙指探索ではfingerを保存できないのでこの方法は使えない f x
  8. 強暗黙静的指探索 11 q(t, n) ∈ Ω(log n) s.t. • q(t,

    n)≧log t • q(0, n)<log (n/2) • q(t, n)はt, nについて単調非減少 Δ=Zq(n) = min{t ∈[1, n]|q(t, n)≧log (n/2)} • qがtだけの関数ならZq(n) = q-1(log (n/2)) ◼q(t, n)=(1/ε) log t for 0<ε≦1とすると change_searchはO(nε)時間 searchをO(q(t, n))時間、change_searchをO(Δ+log n)時間でサ ポートする強暗黙指探索データ構造が存在する 定理 [Brodal+, 2012] qはトレードオフパラメータ この計算時間は最適であることが証明されている(今回は省略)
  9. search(x) 17 ◼P領域でfを起点として指数探索 t≦Δかつxを含むならxはP領域にある O(log t)∈O(q(t, n))時間 ◼見つからなければその他の領域をそれぞれ二分探索する 二分探索によりO(log n)時間で見つかる

    ここでt>ΔよりO(log n)∈O(q(t, n)) searchをO(q(t, n))時間、change_searchをO(Δ+log n)時間で サポートする強暗黙指探索データ構造が存在する 定理 [Brodal+, 2012] q(t, n)≧log tより Δの定義とqはtに対して単調非減少より Δ = min{t ∈[1, n]|q(t, n)≧log (n/2)}