データ構造とプログラミング技法 (第8回) ーデータの探索ー.

Slides:



Advertisements
Similar presentations
P2P 技術を応用した 分散システムの排他制御機構の試作 九州工業大学 情報科学センター 山之上 卓.
Advertisements

データ構造とプログラミング技 法 (第3回) ー木構造ー. 木構造 (1) 根( root )と呼ばれる節 R が、 1 つだけ含まれ る。 R … TmTm T1T1 木構造: 1 個以上の節の有限集合 T であり、 次の二つの条件を満足するもの (2) 根以外の節は、 m (≧ 0 )個の互いに素な部.
アルゴリズムとデータ構造 第2回 線形リスト(復習).
基本情報技術概論 I 演習(第5回) 埼玉大学 理工学研究科 堀山 貴史
ヒープソートの演習 第13回.
2 分探索木 Binary Search Tree 実行可能な操作 計算量 木の高さは,最悪 O(n) n = |A| : 要素の個数
アルゴリズムとデータ構造 第8回 ソート(3).
第11回 整列 ~ シェルソート,クイックソート ~
アルゴリズムとデータ構造 2013年6月18日
第8講: 平成19年11月9日 (金) 4限 E252教室 探索アルゴリズム(1).
第11回 整列 ~ バケットソート,基数ソート,ヒープソート~
データ構造とアルゴリズム論 第6章 探索のアルゴリズム
第10回 ソート(1):単純なソートアルゴリズム
アルゴリズムとデータ構造 2012年6月14日
情報工学概論 (アルゴリズムとデータ構造)
動的ハフマン符号化の例 入力:ABCDEからなる文字列 出力:動的に作ったハフマン木.
2009/11/20 探索アルゴリズム(2) 第8講: 平成21年11月20日 (金) 4限 E252教室 コンピュータアルゴリズム.
岩井 儀雄 コンピュータ基礎演習  ー探索、整列ー 岩井 儀雄
第7章 データベース管理システム 7.1 データベース管理システムの概要 7.2 データベースの格納方式 7.3 問合せ処理.
データ構造と アルゴリズム 第八回 知能情報学部 新田直也.
大岩 元 慶応大学環境情報学部 二分木 データ構造とプログラミング(10) 大岩 元 慶応大学環境情報学部
アルゴリズムとデータ構造 2011年6月14日
アルゴリズムとデータ構造 2011年6月20日
朝日大学大学院 経営学研究科 奥山 徹 データベース論 朝日大学大学院 経営学研究科 奥山 徹 2006/05/29 データベース論(7回目)
データ構造と アルゴリズム 第十一回 理工学部 情報システム工学科 新田直也.
アルゴリズム入門.
アルゴリズムとデータ構造 第7回探索のためのデータ構造(1) 2015/11/18 アルゴリズムとデータ構造 2015.
第11回 整列 ~ シェルソート,クイックソート ~
データ構造とアルゴリズム論 第9章 木構造 平成17年12月20日 森田 彦.
二分探索木によるサーチ.
7-3.高度な木 (平衡木) AVL木 平衡2分木。回転操作に基づくバランス回復機構により平衡を保つ。 B木
ハッシュテーブル.
決定木とランダムフォレスト 和田 俊和.
Q q 情報セキュリティ 第8回:2006年6月9日(金) q q.
アルゴリズムとデータ構造1 2006年6月16日
アルゴリズムとデータ構造1 2005年7月15日
情報とコンピュータ 静岡大学工学部 安藤和敏
データ構造とアルゴリズム 担当:和田俊和 居室:A603 講義資料等は下記を参照してください.
データ構造とアルゴリズム (第3回) ー木構造ー.
アルゴリズムとデータ構造 第3章 ヒープ 6月10日分
第9回 優先度つき待ち行列,ヒープ,二分探索木
基本情報技術概論(第6回) 埼玉大学 理工学研究科 堀山 貴史
Cプログラミング演習 第10回 二分探索木.
アルゴリズムとデータ構造1 2009年7月9日
2005年度 データ構造とアルゴリズム 第6回 「ハッシュ法を用いた探索」
プログラミング 4 探索と計算量.
プログラミング 4 木構造とヒープ.
実装編②HashTable,JavaAPI
15.cons と種々のデータ構造.
アルゴリズムとデータ構造 第3章 ヒープ 5月31日分
情報数理Ⅱ 第11章 データ構造 平成29年1月18日.
データ構造とアルゴリズム (第5回) 静岡大学工学部 安藤和敏
第9回 優先度つき待ち行列,ヒープ,二分探索木
アルゴリズムとデータ構造1 2006年7月4日
データ構造とアルゴリズム論 第6章 探索のアルゴリズム
アルゴリズムとデータ構造 2012年7月2日
アルゴリズムとデータ構造 2011年6月28日
アルゴリズムとデータ構造 2011年6月16日
基本情報技術概論(第6回) 埼玉大学 理工学研究科 堀山 貴史
情報工学概論 (アルゴリズムとデータ構造)
第11回放送授業.
アルゴリズムとデータ構造 2013年7月2日
ヒープソート.
アルゴリズムとデータ構造 2013年6月20日
アルゴリズムとデータ構造 2012年6月21日
新人研修発表 平成13年5月14日(月) 探索アルゴリズム ハッシュ法について 株式会社 エーアイネット・テクノロジ          須田 哲生.
アルゴリズムとデータ構造1 2005年7月12日
アルゴリズムとデータ構造1 2007年7月6日
Ibaraki Univ. Dept of Electrical & Electronic Eng.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
Presentation transcript:

データ構造とプログラミング技法 (第8回) ーデータの探索ー

データ探索 レコードの集合(ファイル)から必要なレコードを探し出す処理. フィールド数:単一、複数 質問形式:一致型、区間型、最近接型、条件指定型 ファイル数:単一ファイル、複数ファイル 単純一致型:単一ファイルから、単一のフィールドの値を指定して、一致を条件としてレコードを探索する。

探索の方法 表探索: 順配置された線形リスト(表)からの探索 線形探索 二分探索 ハッシュ法 表探索:    順配置された線形リスト(表)からの探索 線形探索 二分探索 ハッシュ法 木構造探索: ファイルが表ではなく木構造によって表現されている          場合の探索 二分探索木 平衡木/最適木 AVL木 B木 桁探索木 トライ/パトリシア木

線形探索 データが極端に少ない場合 格納の方が探索よりも圧倒的に多い場合 新しく追加したキーへの探索要求のほうが頻度が高い場合 格納:O(1), 探索: O(n)

二分探索 整列化並びに対する探索法

二分探索のアルゴリズム 探索: O(log n)

ハッシュ法 キー-番地変換 Abe 1 2 3 4 5 ハッシュ表 6 7 8 Abe Suzuki Suzuki 1 2 3 4 5 ハッシュ表 6 7 8 Abe Suzuki Suzuki Sは19番目のアルファベット h0(Suzuki)=19 mod 9 =1 Satoh Satoh 衝突処理  hi(K) =[ h0(K) + d×i] mod M (線形走査法:d=2,M=9) Nakamura Watanabe Watanabe Hoshino

クラスタ 第2種クラスタ 第1種クラスタ

ハッシュ関数h0(K)のいろいろ 除算法 平方採中法 折り返し法 桁解析法 etc 結局は問題依存なので、決め手になる 方法はないと考えるのが無難。

衝突処理 開番地法 線形走査法:hi(K) =[ h0(K) + d×i] mod M 2次走査法:hi(K) =[ h0(K) + a×i+b×i2] mod M (第1種クラスタの発生を押さえることができる。一般に 探索周期は全表的ではない。) 2重分散法:hi(K) =[ h0(K) + (2g(K)+1)×i] mod M (第1種2種クラスタの発生を押さえることができる。 M=2m、0≦g(K)≦2m-1ならば探索周期は全表的) 連鎖法 連合連鎖法・分離連鎖法

2次走査法は思ったほど難しくはない

連鎖法の原理

連合/分離 連鎖

平均探査回数(α:表占有率)

木探索 (データの動的な変更に適する) 50, 35, 80, 75, 20, 95

二分探索木の生成 procedure GenerateTree(n:integer); begin var Root, Candidate, NewNode: NodePointer; Root↑.key:=a[1]; Root↑.left:=nil; Root↑.right:=nil; for i := 2 to n do begin Candidate := SearchKey(Root, a[i]); if Candidate↑.key <> a[i] then begin NewNode := CreateNode();NewNode↑.key:=a[i]; NewNode↑.left:=nil; NewNode↑.right:=nil; if Candidate↑.key >a[i] then begin  Candidate↑.left:=NewNode; else Candidate↑.right:=NewNode end end;

二分探索木の性質 親のキーよりも左の子に格納されたキーは小さく,右の子のキーは大きい. したがって,中順走査をすれば,ソート列が得られる.

アンバランスな二分探索木 20,95,35,50,80,75 35,95,75,20,80,50

キー列と二分探索木の関係 (演習問題:15分) 図8.8と同じ木構造を生成するようなキー列は何種類あるか答えなさい. レポート用紙に学籍番号と氏名,および上記の問題に対する解答を書き,提出しなさい.

平衡木 平衡係数=k 任意の節の平衡係数が 一定の範囲に入っている 二分探索木。 k

木の再平衡化:AVL木 二分探索木を作る段階で、平衡係数が[-1,1]の範囲 を超えたときに、再平衡化を行い、平衡を保つように して作られる。

平衡が崩れる場合

単回転 p A T1 T2 T3 K p A T3 T1 T2 K

複回転 p A T1 T4 K T2 T3 B p p A T1 T4 K T2 T3 B A T4 B T1 T2 T3 K K

得られるAVL木

レポート課題 図8.9(a)および(b)のデータが与えられたときのAVL木の生成過程を図示しなさい.