Lecture02-Binary Search Trees 通信情報システム専攻 岩間伊藤研究室 M1 前田圭介.

Slides:



Advertisements
Similar presentations
HBSP モデル上での 行列積を求めるアルゴリ ム 情報論理工学 吉岡健太.
Advertisements

区間グラフにおける区間表現からMPQ-treeを効率よく構成するアルゴリズム
3次元nクイーン問題の 解に関する研究 論理工学研究室 伊藤精一
離散システム特論 整列(sorting)アルゴリズム 2.
2 分探索木 Binary Search Tree 実行可能な操作 計算量 木の高さは,最悪 O(n) n = |A| : 要素の個数
アルゴリズムとデータ構造 第8回 ソート(3).
近似アルゴリズム 第10章 終了時刻最小化スケジューリング
第11回 整列 ~ シェルソート,クイックソート ~
アルゴリズムとデータ構造 2013年6月18日
A: Attack the Moles 原案:高橋 / 解説:保坂.
On the Enumeration of Colored Trees
Extremal Combinatorics 14.1 ~ 14.2
データ構造とプログラミング技法 (第8回) ーデータの探索ー.
アルゴリズムイントロダクション第5章( ) 確率論的解析
アルゴリズムとデータ構造 2012年6月14日
 Combinations(2)        古川 勇輔.
アルゴリズムとデータ構造 補足資料7-3 「単純選択ソートselsort.c」
岩井 儀雄 コンピュータ基礎演習  ー探索、整列ー 岩井 儀雄
第7章 データベース管理システム 7.1 データベース管理システムの概要 7.2 データベースの格納方式 7.3 問合せ処理.
最尤推定によるロジスティック回帰 対数尤度関数の最大化.
第11講: 平成18年12月 8日 (金) 4限 E352教室 グラフ (1).
階層的境界ボリュームを用いた 陰関数曲面の高速なレイトレーシング法
アルゴリズムとデータ構造 2011年6月14日
データ構造と アルゴリズム 第十一回 理工学部 情報システム工学科 新田直也.
アルゴリズムとデータ構造 第7回探索のためのデータ構造(1) 2015/11/18 アルゴリズムとデータ構造 2015.
第11回 整列 ~ シェルソート,クイックソート ~
二分探索木によるサーチ.
7-3.高度な木 (平衡木) AVL木 平衡2分木。回転操作に基づくバランス回復機構により平衡を保つ。 B木
MPIを用いた並列処理 ~GAによるTSPの解法~
“Purely Functional Data Structures” セミナー
論文紹介 Query Incentive Networks
決定木とランダムフォレスト 和田 俊和.
混合ガウスモデルによる回帰分析および 逆解析 Gaussian Mixture Regression GMR
アルゴリズムとデータ構造1 2006年6月16日
IIR輪講復習 #3 Dictionaries and tolerant retrieval (前半)
第6回:ラケットを動かそう! (キーボードによる物体の操作)
アルゴリズムとデータ構造 第3章 ヒープ 6月10日分
25. Randomized Algorithms
決定木 Decision Tree DT 明治大学 理工学部 応用化学科 データ化学工学研究室 金子 弘昌.
Cプログラミング演習 第10回 二分探索木.
アルゴリズムとプログラミング (Algorithms and Programming)
プログラミング 4 整列アルゴリズム.
様々な情報源(4章).
プログラミング 4 探索と計算量.
プログラミング 4 木構造とヒープ.
生物情報ソフトウェア特論 (2)たたみ込みとハッシュに 基づくマッチング
15.cons と種々のデータ構造.
アルゴリズムとデータ構造 第3章 ヒープ 5月31日分
アルゴリズムとデータ構造 第3章 ヒープ 5月31日分の復習
アルゴリズムとデータ構造 --- 理論編 --- 山本 真基
第16章 動的計画法 アルゴリズムイントロダクション.
AVL木.
ハフマン符号長の効率的な求め方.
アルゴリズムとデータ構造 2012年7月2日
アルゴリズムとプログラミング (Algorithms and Programming)
アルゴリズムとデータ構造 2011年6月28日
アルゴリズムとデータ構造 2011年6月16日
基本情報技術概論(第6回) 埼玉大学 理工学研究科 堀山 貴史
情報工学概論 (アルゴリズムとデータ構造)
Advanced Data Structure 第3回
アルゴリズムとデータ構造 2013年7月2日
精密工学科プログラミング基礎 第7回資料 (11/27実施)
ヒープソート.
コストのついたグラフの探索 分枝限定法 A*アルゴリズム.
アルゴリズムとデータ構造 2013年6月20日
参考:大きい要素の処理.
精密工学科プログラミング基礎Ⅱ 第2回資料 今回の授業で習得してほしいこと: 配列の使い方 (今回は1次元,次回は2次元をやります.)
情報生命科学特別講義III (3)たたみ込みとハッシュに 基づくマッチング
混合ガウスモデル Gaussian Mixture Model GMM
ファーストイヤー・セミナーⅡ 第10回 if文による選択処理(2).
Presentation transcript:

Lecture02-Binary Search Trees 通信情報システム専攻 岩間伊藤研究室 M1 前田圭介

前回の復習 ・データ構造のモデル (List) ・ find(x) はリストの最初から始める。 ・最初から i 番目の要素へのアクセスにはコスト i が必要 ・ 2 つの隣接した要素の入れ替えにはコスト 1 が必要 ・ある要素を見つけたとき、その要素を前方へ動かすのにコストは必要ない ・・・ i123 List

今回の発表内容 今回の発表ではデータ構造として二分木を扱う。 ・ Binary Search Trees ( 二分探索木 ) の定義 ・モデルの定義 ・二分探索木についてのアルゴリズム ・ Splay Trees( スプレー木 )

二分探索木 (Binary Search Trees) 例 左の子の要素の値 < 現在のノードの要素の値 <= 右の子の要素の値 全て 7 未満全て 7 以上

二分探索木の探索コスト ・二分探索木における操作は次の 3 つである。 ・ポインタを右に移動させる ・ポインタを左に移動させる ・現在のノードを回転させる(後述、 List における swap に対応した操作) find(5) 5 < 7 5 > 3 コスト 3

競合比 (competitiveness) ・アルゴリズムを評価する際に用いられる指標 あるアルゴリズムが k-competitive であるとは、どんな入力列 x に対しても が成立することである。 : 評価したいアルゴリズムの x に対するコスト : x に対する最小のコスト(オフラインで計算) あるオンラインアルゴリズムが optimal であるとは、 それが O(1)-competitive であることをいう。

今回の発表内容 今回の発表ではデータ構造として二分木を扱う。 ・ Binary Search Trees ( 二分探索木 ) の定義 ・モデルの定義 ・二分探索木についてのアルゴリズム ・ Splay Trees( スプレー木 ) の定義 ・スプレー木の計算量解析 ・スプレー木についての結果

stochastic and static model ・ stochastic( 確率 ) model ・ static( 静的 ) model n 個の変数に対して、アクセスされる確率が毎回それぞれ独立である。 1 2 ・ ・・ i n n 個の変数に対して、アクセスされる確率が毎回独立でなくてもよい。 木の rotate を許さない。 ( 木が初期状態から動かない ) 例 アクセス列 { ….} ・ stochastic and static model n 個の変数に対して、アクセスされる確率が毎回それぞれ独立である。 木の rotate を許さない。 ( 木が初期状態から動かない )

stochastic model ・ stochastic model かそうでないかの違いは大きなものである。 [ 前回の復習 ] List 型のデータ構造における Transpose アルゴリズム ・・・ n/2123n find(3) → 3 を一つ前に持ってくる。

stochastic model ・ stochastic model かそうでないかの違いは大きなものである。 [ 前回の復習 ] List 型のデータ構造における Transpose アルゴリズム ・・・ n/2123n find(3) → 3 を一つ前に持ってくる。 ・ stochastic model でない場合 アクセス列 { …} に対して、最も良い場合に比べて O(n) 倍 のコストがかかる。 ・ stochastic model の場合 2 3 1/2 のようなアクセスに対しても、 optimal である。

subproblems は、 個あり、 root の選び方は n 通りあるので、 合計 時間で解くことができる 最適な二分探索木 静的モデルの最適な二分探索木は動的計画法 (dynamic programming, DP) を 用いて求めることができる。 ある r を root にして、その左の部分木 ( r) の optimal を求める。 このとき、 OPT は次のように表現される。 ただし、であり、これはハフマン木のエントロピーである。 左の木が探索される確率

dynamic model 木の rotate 変換を許すモデル rotate

動的モデルの二分探索木における最適コストの求め方はまだわかっていない。 当然、 O(1)-competitive かどうかもわかっていない。 一般に AVL 木や赤黒木のような平衡二分探索木の場合、 探索コストが O(log n) かかることになる n log n 木の rotate をうまく利用することで探索コストを o(log n) にできないかを考える。

今回の発表内容 今回の発表ではデータ構造として二分木を扱う。 ・ Binary Search Trees ( 二分探索木 ) の定義 ・モデルの定義 ・二分探索木についてのアルゴリズム ・ Splay Trees( スプレー木 )

アクセス頻度の反映  各ノードのアクセス頻度は一定でない  頻繁にアクセスするノードをより浅い位置に置く  オンラインアルゴリズムを考えるので、アクセス列 全体を見て頻繁にアクセスされるノードを上に持っ ていくことはできない  最後にアクセスしたノードを浅い位置に持っていく アクセス頻度 多 少

Transpose アルゴリズム ・最後にアクセスしたノードを一つ上のノードに持っていく(一回 rotate する)。 A BG HCD EF find(D) A DG HBF CE D B G H CEC A rotate(D)

Transpose の探索コスト ・ Transpose アルゴリズムは等確率で各ノードにアクセスするような確率モデル においては平均探索コストが と悪くなってしまう。 B C A C B AB CAA B C B A C [ ノード数が 3 つの場合 ] 全てのノードのアクセス確率が等確率のとき、全ての状態が等確率で出現する。 1/5

Move to root アルゴリズム ・最後にアクセスしたノードが root にくるまで rotate をおこなう。 A BG HCD EF find(D) D B G H CEC A rotate(D),rotate(D)

Move to root の探索コスト (1) Move to root の探索コストの解析は List 型の Move to front の解析と ほとんど同様である。 i < j としたとき、 i が j の祖先となっている確率を b(i, j) とする。 A BE CD F B は F の祖先 E は F の祖先でない このとき、

Move to root の探索コスト (2) Move to root の探索コスト Cost(MR) は、 ここで、とすると

Move to root の探索コスト (3) y = 1/x

Move to root の探索コスト (3) ・ Move to root アルゴリズムの平均探索コストは stochastic OPT となる。 ・これは stochastic であるという条件の下で成立するものであり、 意地の悪いアクセス列を想定した場合はもっと悪くなってしまう。

今回の発表内容 今回の発表ではデータ構造として二分木を扱う。 ・ Binary Search Trees ( 二分探索木 ) の定義 ・モデルの定義 ・二分探索木についてのアルゴリズム ・ Splay Trees( スプレー木 )

スプレー木 (Splay Tree) [Sleator and Tarjan 1985]  Move to root の一種。  アクセスしたノードを単純に root まで持っていくだ けでなく、平衡状態をできるだけ保つようにして移 動させる。  rotate をおこなうときに、直前のノードだけでなく2 つ上のノードまで見て rotate 操作の方法を決める。

スプレー木の rotate 操作 (1) Zig case: 二つ上のノードが存在しない場合 A BE C root rotate(B) A B E C root D D 今までと同じように rotate 操作をする。

スプレー木の rotate 操作 (2) Zig-Zig case: B C3 1 rotate(B),rotate(C) 2 A 4 1 2A 34 C B

スプレー木の rotate 操作 (3) Zig-Zag case: B 1C 2 rotate(C),rotate(C) 3 A 4 B 3412 C A Move to root アルゴリズムと同様の操作である。

スプレー木の rotate 操作 (4) Zig case, Zig-Zig case, Zig-Zag case の 3 つを組み合わせてアクセスしたノードを root まで移動させる。 B 1C 23 A 4 D E 5 6 rotate(C), rotate(C) rotate(D), rotate(C) B 1 C 2 3 A 4 D E 56

スプレー木と Move to root(1) ・ Move to root は均衡をとらない

スプレー木と Move to root(2) ・スプレー木は均衡をとる Move to root アルゴリズムよりは探索コストが少なくて済みそう

スプレー木の計算量  償却計算量 (amortized complexity) を用いて解析する。  スプレー操作1回ごとに計算  木構造自体にポテンシャルを保持させる。  不均衡な木:ポテンシャルが大きい  均衡な木:ポテンシャルが小さい

計算量解析 ・各ノードは次のように表現されるポテンシャルを保持していると定義する。 xy T0T0 T 0 (x) T 0 (y) T1T1 x T 1 (x) スプレー操作 すべての部分木の和をとったものが C i ノード数の和 T i : スプレー操作を i 回おこなった木

・ C i は平衡な木ほど小さな値になる。

ZigZig Case の計算量 B C 3 12 A 4 A C B T i-1 TiTi

ZigZig Case の計算量 のとき より が得られて

ZigZig Case の計算量 B C 3 12 A 4 A C B ここで、が成立するので、 が成立 より

ZigZig Case の計算量 B C 3 12 A 4 A C B ここで、

全体の計算量 ZigZig Case ZigZag Case Zig Case

Access Lemma スプレー木における1回のスプレー操作の償却計算量 a i は として上界を抑えることができる。 この Access lemma を用いて、スプレー木に対する様々な結果を導くことができる。

スプレー木の計算量 アクセスした要素を root に移動させるまでスプレー操作を m 回おこなうとする。 アクセス回数を k 回とすると、 より

スプレー木の計算量の結果 スプレー木における1回あたりの探索コストは ・これは、スプレー木の探索コストが平衡二分木と 同程度であることを示している。 [Logarithmic Access Cost] 以上のことから次のような結果が得られる。

今回の計算量解析ではポテンシャルとしてノード数の和を用いた。 ノード数の和ではなく出現確率の和としてポテンシャルをとると、 次のような結果が得られる。 スプレー木における1回あたりの探索コストは ・これは、 static tree の OPT と同程度の探索コストで 探索できることを示している。 [Static Optimality Theorem]

B C 3 12 A 4 A C B T i-1 TiTi

スプレー木における1回あたりの探索コストは [Static Finger Theorem] 探索を root から始めるのではなく、あるノード f を指定して そこから探索を始めるようなモデルを考える。 このときポテンシャルとして をとると次のような結果が得られる