アルゴリズムとデータ構造BM法:λとshiftの利用 6 2014/11/13...
Transcript of アルゴリズムとデータ構造BM法:λとshiftの利用 6 2014/11/13...
![Page 1: アルゴリズムとデータ構造BM法:λとshiftの利用 6 2014/11/13 アルゴリズムとデータ構造 アルゴリズムの流れ パターンpat[1..m]より シフト量を決める量](https://reader033.fdocuments.net/reader033/viewer/2022041804/5e52f93066b58e76ac3722eb/html5/thumbnails/1.jpg)
アルゴリズムとデータ構造第7週 <演習>木の構造、木の走査、二分木、決定木
2014年11月13日
金岡 晃
![Page 2: アルゴリズムとデータ構造BM法:λとshiftの利用 6 2014/11/13 アルゴリズムとデータ構造 アルゴリズムの流れ パターンpat[1..m]より シフト量を決める量](https://reader033.fdocuments.net/reader033/viewer/2022041804/5e52f93066b58e76ac3722eb/html5/thumbnails/2.jpg)
授業計画
1
第1週
(9/25)
データ構造とアルゴリズムの基礎
第2週
(10/2)
アルゴリズムの効率、線型構造、スタックと待ち行列
第3週
(10/9)
<演習>アルゴリズムの効率、線型構造、スタックと待ち行列
第4週
(10/16)
文字列照合(KMP法、BM法)+<演習>
第5週
(10/23)
休講
第6週
(10/30)
木の構造、木の走査、二分木、決定木
第7週
(11/13)
<演習>木の構造、木の走査、二分木、決定木
第8週
(11/20)
中間試験
第9週
(11/27)
休講
第10週
(12/4)
グラフ構造と最短路問題+<演習>
第11週
(12/11)
データ整列:ヒープソート法、クイックソート法
第12週
(12/18)
<演習>データ整列:ヒープソート法、クイックソート法
第13週
(1/8)
データ探索:ハッシュ法、木構造探索法
第14週
(1/15)
<演習>データ探索:ハッシュ法、木構造探索法
1/21-2/6 期末試験
2014/11/13 アルゴリズムとデータ構造
![Page 3: アルゴリズムとデータ構造BM法:λとshiftの利用 6 2014/11/13 アルゴリズムとデータ構造 アルゴリズムの流れ パターンpat[1..m]より シフト量を決める量](https://reader033.fdocuments.net/reader033/viewer/2022041804/5e52f93066b58e76ac3722eb/html5/thumbnails/3.jpg)
第3回課題の解説
2014/11/13 アルゴリズムとデータ構造2
![Page 4: アルゴリズムとデータ構造BM法:λとshiftの利用 6 2014/11/13 アルゴリズムとデータ構造 アルゴリズムの流れ パターンpat[1..m]より シフト量を決める量](https://reader033.fdocuments.net/reader033/viewer/2022041804/5e52f93066b58e76ac3722eb/html5/thumbnails/4.jpg)
演習(その6)
2014/11/13 アルゴリズムとデータ構造3
KMP法による文字列照合KMP法による文字列照合
演習:KMP法によるfailの導出を行うプログラムを作成してみよう
入力:文字列出力:文字列の長さに応じたfail
![Page 5: アルゴリズムとデータ構造BM法:λとshiftの利用 6 2014/11/13 アルゴリズムとデータ構造 アルゴリズムの流れ パターンpat[1..m]より シフト量を決める量](https://reader033.fdocuments.net/reader033/viewer/2022041804/5e52f93066b58e76ac3722eb/html5/thumbnails/5.jpg)
第6週【復習】文字列照合(BM法)木の構造、木の走査、二分木、決定木
アルゴリズムとデータ構造
4 2014/11/13 アルゴリズムとデータ構造
![Page 6: アルゴリズムとデータ構造BM法:λとshiftの利用 6 2014/11/13 アルゴリズムとデータ構造 アルゴリズムの流れ パターンpat[1..m]より シフト量を決める量](https://reader033.fdocuments.net/reader033/viewer/2022041804/5e52f93066b58e76ac3722eb/html5/thumbnails/6.jpg)
BM法
2014/11/13 アルゴリズムとデータ構造5
Boyer-Moore法(BM法)Boyer-Moore法(BM法)
末尾から照合をしていく場合の照合失敗後のシフト量をあらかじめパターンから計算をしておき、照合を行っていく
アルゴリズムの流れ
パターンpat[1..m]よりシフト量を決める量shift[1..m]を計算
shiftの計算
パターンの末尾から照合していくが、照合失敗後のシフト量はshift[1..m]とλ[1..Σ]に従う
照合
各文字がpat上で最も右に現れる位置λ[1..Σ]の計算
λの計算
![Page 7: アルゴリズムとデータ構造BM法:λとshiftの利用 6 2014/11/13 アルゴリズムとデータ構造 アルゴリズムの流れ パターンpat[1..m]より シフト量を決める量](https://reader033.fdocuments.net/reader033/viewer/2022041804/5e52f93066b58e76ac3722eb/html5/thumbnails/7.jpg)
BM法:λとshiftの利用
2014/11/13 アルゴリズムとデータ構造6
アルゴリズムの流れ
パターンpat[1..m]よりシフト量を決める量shift[1..m]を計算
shiftの計算
パターンの末尾から照合していくが照合失敗後のシフト量は照合を失敗したテキスト場所kの文字text[k]パターンの場所をiとした場合、shift[i]と(i- λ[text[k]) の大きい方の分だけシフトする
照合
各文字がpat上で最も右に現れる位置λ[1..Σ]の計算
λの計算
![Page 8: アルゴリズムとデータ構造BM法:λとshiftの利用 6 2014/11/13 アルゴリズムとデータ構造 アルゴリズムの流れ パターンpat[1..m]より シフト量を決める量](https://reader033.fdocuments.net/reader033/viewer/2022041804/5e52f93066b58e76ac3722eb/html5/thumbnails/8.jpg)
BM法:shiftの導出
2014/11/13 アルゴリズムとデータ構造7
shiftの導出(アルゴリズム)shiftの導出
(アルゴリズム)
![Page 9: アルゴリズムとデータ構造BM法:λとshiftの利用 6 2014/11/13 アルゴリズムとデータ構造 アルゴリズムの流れ パターンpat[1..m]より シフト量を決める量](https://reader033.fdocuments.net/reader033/viewer/2022041804/5e52f93066b58e76ac3722eb/html5/thumbnails/9.jpg)
第7週<演習>文字列照合(BM法)木の構造、木の走査、二分木、決定木
アルゴリズムとデータ構造
8 2014/11/13 アルゴリズムとデータ構造
![Page 10: アルゴリズムとデータ構造BM法:λとshiftの利用 6 2014/11/13 アルゴリズムとデータ構造 アルゴリズムの流れ パターンpat[1..m]より シフト量を決める量](https://reader033.fdocuments.net/reader033/viewer/2022041804/5e52f93066b58e76ac3722eb/html5/thumbnails/10.jpg)
演習(その7)
2014/11/13 アルゴリズムとデータ構造9
BM法による文字列照合BM法による文字列照合
演習:BM法によるλとshiftの導出を行うプログラムを作成してみよう
入力:文字列出力:文字の種類に応じたλ、文字列の長さに応じたshift
前提:アルファベット(文字の種類)は3文字(A、B、C)とする
![Page 11: アルゴリズムとデータ構造BM法:λとshiftの利用 6 2014/11/13 アルゴリズムとデータ構造 アルゴリズムの流れ パターンpat[1..m]より シフト量を決める量](https://reader033.fdocuments.net/reader033/viewer/2022041804/5e52f93066b58e76ac3722eb/html5/thumbnails/11.jpg)
演習(その8)
2014/11/13 アルゴリズムとデータ構造10
二分木の走査二分木の走査
演習:下記の二分木を先順・中順・後順でそれぞれ走査したときの、節の訪問順序を記載せよ
入力:なし(二分木データはプログラム中に記載してよい)出力:先順、中順、後順
前提:各順での訪問順序 𝐴𝐴
𝐵𝐵 𝐶𝐶
𝐷𝐷 𝐸𝐸 𝐹𝐹 𝐺𝐺
𝐻𝐻 𝐼𝐼 𝐽𝐽
![Page 12: アルゴリズムとデータ構造BM法:λとshiftの利用 6 2014/11/13 アルゴリズムとデータ構造 アルゴリズムの流れ パターンpat[1..m]より シフト量を決める量](https://reader033.fdocuments.net/reader033/viewer/2022041804/5e52f93066b58e76ac3722eb/html5/thumbnails/12.jpg)
演習(その9)
2014/11/13 アルゴリズムとデータ構造11
偽コインの問題偽コインの問題
演習:8枚のコインから決定木を用いて偽コインを見つけるプログラムを作成し、天秤で比較される順序と結果を記載せよ
入力:偽コインの指定(0~7)出力:3回の天秤の比較において、それぞれに載せられるコインとその結果
![Page 13: アルゴリズムとデータ構造BM法:λとshiftの利用 6 2014/11/13 アルゴリズムとデータ構造 アルゴリズムの流れ パターンpat[1..m]より シフト量を決める量](https://reader033.fdocuments.net/reader033/viewer/2022041804/5e52f93066b58e76ac3722eb/html5/thumbnails/13.jpg)
締切と提出方法:演習その7~9
• 締切
– 3週間後(11月20日)の16:10まで
• 提出方法
– 電子メール
• メールアドレス
– メールのタイトルに「アルゴリズムとデータ構造第4回課題」と書いてください
– 作ったプログラムをメールに添付してください。
• 注意事項
– 必ず金岡から受領確認メールを返します。
• 必ず日本語で受領確認メールを返します
• 英語のメールはエラーメール(アドレスが間違っている)の可能性が高いです
– メールで提出がされていないものは未提出とみなします
2014/11/13 アルゴリズムとデータ構造12
![Page 14: アルゴリズムとデータ構造BM法:λとshiftの利用 6 2014/11/13 アルゴリズムとデータ構造 アルゴリズムの流れ パターンpat[1..m]より シフト量を決める量](https://reader033.fdocuments.net/reader033/viewer/2022041804/5e52f93066b58e76ac3722eb/html5/thumbnails/14.jpg)
中間試験についてアルゴリズムとデータ構造
13 2014/11/13 アルゴリズムとデータ構造
![Page 15: アルゴリズムとデータ構造BM法:λとshiftの利用 6 2014/11/13 アルゴリズムとデータ構造 アルゴリズムの流れ パターンpat[1..m]より シフト量を決める量](https://reader033.fdocuments.net/reader033/viewer/2022041804/5e52f93066b58e76ac3722eb/html5/thumbnails/15.jpg)
評価方法とオフィスアワー
• 評価方法
– アルゴリズムとデータ構造
• 中間試験 50点
• 期末試験 50点
• 合計60点以上を合格とする
– アルゴリズムとデータ構造演習
• 演習課題 60点
• 中間試験 20点
• 定期試験 20点
• 合計60点以上を合格とする
• オフィスアワー
– オフィスアワーについてはメールで個別に時間を予約するものとする
• 連絡先:[email protected]
2014/11/13 アルゴリズムとデータ構造14
来週の試験
![Page 16: アルゴリズムとデータ構造BM法:λとshiftの利用 6 2014/11/13 アルゴリズムとデータ構造 アルゴリズムの流れ パターンpat[1..m]より シフト量を決める量](https://reader033.fdocuments.net/reader033/viewer/2022041804/5e52f93066b58e76ac3722eb/html5/thumbnails/16.jpg)
中間試験について
• 筆記試験
• 持ち込みあり
– PC、スマートフォン、タブレットの持ち込みも可
– ネットワーク接続可
• この教室(III号館204)で実施
• 13:00-14:30の90分
• 試験範囲
– 今回までの配布資料と教科書内の該当する箇所
2014/11/13 アルゴリズムとデータ構造15