7-3.高度な木 (平衡木) AVL木 平衡2分木。回転操作に基づくバランス回復機構により平衡を保つ。 B木

Slides:



Advertisements
Similar presentations
1 高速フーリエ変換 (fast Fourier transform). 2 高速フーリエ変換とは? – 簡単に言うとフーリエ変換を効率よく計算 する方法 – アルゴリズムの設計技法は分割統治法に基 づいている 今回の目的は? – 多項式の積を求める問題を取り上げ、高速 フーリエ変換のアルゴリズムを用いた解法.
Advertisements

Absolute Orientation. Absolute Orientation の問題 二つの座標系の間における剛体 (rigid body) 変換を復元す る問題である。 例えば: 2 台のステレオカメラから得られた3次元情報の間の関 係を推定する問題。 2 台のステレオカメラから得られた3次元情報の間の関.
1 線形代数学. 2 履修にあたって 電子情報システム学科 必修 2005 年度1セメスタ開講 担当 草苅良至 (電子情報システム学科) 教官室: G I 511 内線: 2095 質問等は上記のいずれかに行なうこと。 注意計算用のノートを準備すること。
A Simple Constant Time Enumeration Algorithm for Free Trees 中野 眞一 宇野 毅明 群馬大学 情報学研究所 2003 年 9 月 19 日 アルゴリズム研究会.
データ構造とプログラミング技 法 (第3回) ー木構造ー. 木構造 (1) 根( root )と呼ばれる節 R が、 1 つだけ含まれ る。 R … TmTm T1T1 木構造: 1 個以上の節の有限集合 T であり、 次の二つの条件を満足するもの (2) 根以外の節は、 m (≧ 0 )個の互いに素な部.
1. 補間多項式 n 次の多項式 とは、単項式 の 線形結合の事である。 Definitions: ( 区間, 連続関数, abscissas (データ点、格子点、差分点), 多項 式 ) Theorem. (補間多項式の存在と一意性) 各 i = 0, …, n について、 をみたす、次数が高々 n.
0章 数学基礎.
4.3 マージソート.
基本情報技術概論 I 演習(第5回) 埼玉大学 理工学研究科 堀山 貴史
極小集合被覆を列挙する 実用的高速アルゴリズム
データ構造と アルゴリズム 第十二回 知能情報学部 知能情報学科 新田直也.
アルゴリズムとデータ構造1 2008年7月22日
2 分探索木 Binary Search Tree 実行可能な操作 計算量 木の高さは,最悪 O(n) n = |A| : 要素の個数
2分探索.
近似アルゴリズム 第10章 終了時刻最小化スケジューリング
アルゴリズムとデータ構造 2013年6月18日
アルゴリズムとデータ構造1 2005年7月8日
アルゴリズムとデータ構造 2010年7月5日
On the Enumeration of Colored Trees
4-3:高度なソートアルゴリズム① (分割統治法にもとづくソート)
アルゴリズムとデータ構造 補足資料13-4 「2分探索木の追加・削除(ダイジェスト)」
アルゴリズムとデータ構造 2012年6月14日
データ構造とアルゴリズム 第7回 木 ~ データ構造(3)~.
情報工学概論 (アルゴリズムとデータ構造)
ランダムウォークに関するいくつかの話題 ・ランダムウォークの破産問題 ・ランダムウォークの鏡像原理 1 小暮研究会Ⅰ 11月12日
9.NP完全問題とNP困難問題.
宇野 毅明 国立情報学研究所 2002年3月 東北大大学院 情報科学研究科ワークショップ
第7章 データベース管理システム 7.1 データベース管理システムの概要 7.2 データベースの格納方式 7.3 問合せ処理.
s a b f c e d 2016年度 有限幾何学 期末試験 問1:15点
アルゴリズムとデータ構造 2011年6月14日
アルゴリズムとデータ構造 第7回探索のためのデータ構造(1) 2015/11/18 アルゴリズムとデータ構造 2015.
二分探索木によるサーチ.
第6章 連立方程式モデル ー 計量経済学 ー.
“Purely Functional Data Structures” セミナー
スペクトル法の一部の基礎の初歩への はじめの一歩
定兼邦彦 今井浩 東京大学理学系研究科 情報科学専攻
アルゴリズムとデータ構造1 2006年7月4日
データ構造とアルゴリズム (第3回) ー木構造ー.
アルゴリズムとデータ構造 第3章 ヒープ 6月10日分
第9回 優先度つき待ち行列,ヒープ,二分探索木
計算量理論輪講 chap5-3 M1 高井唯史.
基本情報技術概論(第6回) 埼玉大学 理工学研究科 堀山 貴史
Cプログラミング演習 第10回 二分探索木.
9.通信路符号化手法1 (誤り検出と誤り訂正の原理)
情報とコンピュータ 静岡大学工学部 安藤和敏
プログラミング 4 木構造とヒープ.
ナップサック問題 クマさん人形をめぐる熱いドラマの結末.
情報数理Ⅱ 第11章 データ構造 平成29年1月18日.
データ構造とアルゴリズム (第5回) 静岡大学工学部 安藤和敏
AVL木.
第9回 優先度つき待ち行列,ヒープ,二分探索木
アルゴリズムとデータ構造 2012年7月2日
アルゴリズムとデータ構造 2011年6月28日
アルゴリズムとデータ構造 2011年6月16日
算法数理工学 第4回 定兼 邦彦.
基本情報技術概論(第6回) 埼玉大学 理工学研究科 堀山 貴史
情報工学概論 (アルゴリズムとデータ構造)
Advanced Data Structure 第3回
アルゴリズムとデータ構造1 2009年7月2日
アルゴリズムとデータ構造 2013年7月2日
平面走査法を使った 一般線分の 交点列挙アルゴリズム
11.動的計画法と擬多項式時間アルゴリズム.
4.プッシュダウンオートマトンと 文脈自由文法の等価性
ヒープソート.
コストのついたグラフの探索 分枝限定法 A*アルゴリズム.
アルゴリズムとデータ構造 2013年6月20日
参考:大きい要素の処理.
7.木構造 7-1.データ構造としての木 7-2.2分探索木 7-3.高度な木.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
グラフの帯域幅連続多重彩色 を求めるアルゴリズム (Bandwidth Consective Multicolorings of Graphs) 西関研究室 西川和秀.
Presentation transcript:

7-3.高度な木 (平衡木) AVL木 平衡2分木。回転操作に基づくバランス回復機構により平衡を保つ。 B木  平衡2分木。回転操作に基づくバランス回復機構により平衡を保つ。 B木  平衡多分木。各ノードの分割、併合操作により平衡を保つ。

2分探索木の問題点 高さが になることがある。 各操作の最悪計算量は、 時間になってしまう。 (平均計算量は、 時間である。) 高さが     になることがある。 各操作の最悪計算量は、       時間になってしまう。 (平均計算量は、        時間である。) 最悪計算時間でも        時間にしたい。

平衡木とは 根から、葉までの道の長さが、どの葉に対してもある程度の範囲にある。  (厳密な定義は、各々の平衡木毎に定義される。概して、平衡木の高さは、      である。) 平衡木に対する各操作は、最悪計算時間で        時間にできることが多い。

平衡木のイメージ ほぼ完全(2分)木に近い形状をしている。 葉までの経路長がほぼ等しい。

AVL木 Adel’son-Vel’skiiとLandisが考案したデータ構造 探索、挿入、削除の操作が最悪でも、        時間で行える2分探索木の一種。 全てのノードにおいて、左部分木と右部分木の高さの差が1以内に保つ。 最後の、性質を保つために、バランス回復操作を行う。 また、この性質より、高性能となる。

様々なAVL木 6 5 8 9 2 5 1 6 9 4 3 8 8 9 5 6 3

AVL木でない例 8 5 5 9 7 4 3 6 3 8 1 1 9 6 5 8 3 7 9 1

AVL木の高さの導出 「各ノードにおいて、右部分木の高さと左部分木の高さの差が高々1」 という条件からAVL木の高さが、 になることが導かれる。 AVL木の バランス条件 ここでは、できるだけ少ないノードで、 高さを増加させることを考える。

少ないノードのAVL木1 高さ2 高さ1 高さ0 3点 1点 2点 4点

少ないノードのAVL木2 高さ3 高さ4 7点 12点

ここで、この数列 が満たすべき漸化式を導く。 高さ    のAVL木を実現する最小のノード数を       と表す。 例より、 という数列になるはずである。 ここで、この数列    が満たすべき漸化式を導く。

高さ   を実現する最小ノード数のAVL木 根 左部分木の点数 (右部分木の点数) 右部分木の点数 (左部分木の点数)

以上の考察より、次の漸化式が成り立つ。 この漸化式を解けば、高さ   を実現する最小のノード数     が求められる。 特殊解を    とする。 再帰式より、

と置くと、任意定数 を持ちいて、次のようにあらわせる。 この同次解を求める。 すなわち、以下の漸化式を満たす解を求める。 特性方程式を解く。 よって、 と置くと、任意定数      を持ちいて、次のようにあらわせる。

これより、 点のAVL木の高さは、次式を満たす。 これを解いて、 これより、   点のAVL木の高さは、次式を満たす。

これより、 と高さを導くことができる。 (この評価は、最悪時も考慮されていることに注意する。)

AVLへの挿入 挿入によっても、AVLのバランス条件を満足していれば、通常の2分探索木の挿入をおこなう。 挿入によりバランス条件を破ってしまったとき、挿入状況により、バランス回復操作をおこなう。 1重回転操作 2重回転操作

バランスを崩す挿入 A B 挿入前 挿入後 A A B B X X 1重回転 2重回転

1重回転 回転前 回転後 A B B A X X 高さの差は0

2重回転1 回転前 詳細化 A A B B C X X

2重回転2 回転前 回転後 C B A A B C X X 高さの差は0

1重回転2回での2重回転の実現 1回転後 回転前 A C B A B X C 2回転後 C A B X X

AVL木への挿入例1 1 30 15 39 34 50 10 18 5 12 16 25

バランスが崩れる 30 15 39 34 50 10 18 5 12 16 25 1 1重回転

15 30 10 5 12 18 39 1 16 25 34 50 1重回転後

AVL木への挿入例2 28 30 15 39 34 50 10 18 5 12 16 25

バランスが崩れる 30 15 39 34 50 10 18 5 12 16 25 28 2重回転

バランスが崩れる 18 15 30 10 16 25 39 28 34 50 5 12 2重回転後

次のAVL木に、各要素を順に挿入した結果を示せ。 練習 次のAVL木に、各要素を順に挿入した結果を示せ。 33 17 46 41 8 24 3 11 27

AVLへの挿入の計算量 挿入位置の確認とバランス条件のチェックに、木の高さ分の時間計算量が必要である。 また、回転操作には、部分木の付け替えだけであるので、定数時間(     時間)で行うことができる。 以上より、挿入に必要な最悪時間計算量は、  である。

AVLへの削除の計算量 削除時に、バランス条件が崩された場合も、挿入時と同様に、回転操作によって、バランスを回復することができる。 削除位置を求めることと、バランス条件のチェックに、木の高さ分の時間計算量が必要である。 以上より、削除に必要な最悪時間計算量も、  である。

B木の概略 多分木( 分木)を基にした平衡木 各ノードには、データそのものと、部分木へのポインタを交互に蓄える。 多分木(  分木)を基にした平衡木 各ノードには、データそのものと、部分木へのポインタを交互に蓄える。 各葉ノードまでの道は全て等しい。  (したがって、明らかに平衡木である。) 部分木中の全てのデータは、親ノードのデータで範囲が限定される。

B木の満たすべき条件 ①根は、葉になるかあるいは 個の子を持つ。 ②根、葉以外のノードは、 個の子を持つ。 ①根は、葉になるかあるいは      個の子を持つ。 ②根、葉以外のノードは、        個の子を持つ。 ③根からすべての葉までの道の長さは等しい。 ④部分木全てのデータは、その部分木へのポインタを“はさんでいる”データにより、制限される。

B木の例 35 45 10 20 37 40 50 2 5 13 15 27

簡単のため、根以外は、 個以上の個があるとする。 B木の高さ 簡単のため、根以外は、   個以上の個があるとする。 このとき、高さ    のB木に含まれるノード数 を     とする。このとき、次が成り立つ。

B木への挿入 43 35 45 10 20 37 40 50 2 5 13 15 27

オーバーフロー時のノード分割1 35 45 10 20 37 40 50 2 5 13 15 27 43

オーバーフロー時のノード分割2 35 40 45 10 20 37 2 5 13 15 27 43 50 オーバーフローが起きたときには、ノードを分割して、親に向かって 再帰的にB木の条件を満足するように更新していく。

B木からの削除 delete(50) 35 40 45 10 20 37 2 5 13 15 27 43 50 アンダーフローが起きたときには、ノードを結合や、 データの再配置等を行い、 再帰的にB木の条件を満足するように更新していく。

アンダーフローにおけるデータの再配置 35 40 10 20 37 45 2 5 13 15 27 43 アンダーフローが起きたときには、ノードを結合や、 データの再配置等を行い、 再帰的にB木の条件を満足するように更新していく。

B木の最悪計算量 B木の高さが、 であることに注意する。 また、1つのノードを処理するために、 時間必要である。 B木の高さが、         であることに注意する。 また、1つのノードを処理するために、     時間必要である。 以上より、各操作は、最悪時間計算量として、  時間である。パラメータ   の値により性能に違いが生じる。      とすると高速に動作しない

B木の応用 ディスクアクセスは、メモリアクセスに比べて極端に遅い。したがって、ある程度もまとまったデータを1度の読み込んだ方が全体として高速に動作することが多い。 よって、B木の各ノードに蓄えられているデータを、一度に読み込むようにすれば、ディスクアクセスの回数が軽減される。 各ノード内の処理は、メモリ上で効率よく実現できる。

平衡木のまとめ 平衡木の高さは、 となる。 平衡を実現するための条件により、各種平衡木が定義される。  となる。 平衡を実現するための条件により、各種平衡木が定義される。 平衡状態を満足するために、各種バランス回復処理が行われる。