プログラミング入門 - soi.wide.ad.jp · プログラミング入門B 第2回「データと型」 講師: 斉藤賢爾 [email protected] ∆ 棟N206 2003 年度秋学期
データ構造とプログラミング技法 (第 10 回)
14
デデデデデデデデデデデデデデデ デ ( 10 デ) デデデデデデ( KMP デ、 BM デデ デ
description
データ構造とプログラミング技法 (第 10 回). ー文字列照合( KMP 法、 BM 法)ー. 文字列照合. text 中の pat の位置(複数可)を求める。. jは text 中の照合位置 i は pat 中の照合位置 n は text の長さ、 m は pat の長さ. 単純照合法. 単純照合法の無駄. 単純照合法の無駄: 常に大きくスキップできる訳ではない. next[i]. KMP 法. text 中の k 番目の文字で、 pat の i 番目の文字との比較に失敗した時、 - PowerPoint PPT Presentation
Transcript of データ構造とプログラミング技法 (第 10 回)
![Page 1: データ構造とプログラミング技法 (第 10 回)](https://reader035.fdocument.pub/reader035/viewer/2022062217/56813a25550346895da2052a/html5/thumbnails/1.jpg)
データ構造とプログラミング技法
(第 10回)
ー文字列照合( KMP法、 BM法)ー
![Page 2: データ構造とプログラミング技法 (第 10 回)](https://reader035.fdocument.pub/reader035/viewer/2022062217/56813a25550346895da2052a/html5/thumbnails/2.jpg)
文字列照合text中の patの位置(複数可)を求める。
![Page 3: データ構造とプログラミング技法 (第 10 回)](https://reader035.fdocument.pub/reader035/viewer/2022062217/56813a25550346895da2052a/html5/thumbnails/3.jpg)
単純照合法 jは text中の照合位置iは pat中の照合位置nは textの長さ、mは patの長さ
![Page 4: データ構造とプログラミング技法 (第 10 回)](https://reader035.fdocument.pub/reader035/viewer/2022062217/56813a25550346895da2052a/html5/thumbnails/4.jpg)
単純照合法の無駄
![Page 5: データ構造とプログラミング技法 (第 10 回)](https://reader035.fdocument.pub/reader035/viewer/2022062217/56813a25550346895da2052a/html5/thumbnails/5.jpg)
単純照合法の無駄:常に大きくスキップできる訳では
ない
![Page 6: データ構造とプログラミング技法 (第 10 回)](https://reader035.fdocument.pub/reader035/viewer/2022062217/56813a25550346895da2052a/html5/thumbnails/6.jpg)
KMP法text中の k番目の文字で、 patの i番目の文字との比較に失敗した時、textの k`番目と、 patの next[i]番目の文字との比較から再開する。
next[i]
![Page 7: データ構造とプログラミング技法 (第 10 回)](https://reader035.fdocument.pub/reader035/viewer/2022062217/56813a25550346895da2052a/html5/thumbnails/7.jpg)
next[i]の例ABABBA0 1 0 1 3 0
0:共通文字列は存在しない→空であると想定しても,その直後の文字が同じなので矛盾する
1:共通文字列は存在しない→空であると想定すると,その直後の文字と先頭文字が異なるため矛盾しない
3:共通文字列は AB→直後の文字も Aと Bで不一致
![Page 8: データ構造とプログラミング技法 (第 10 回)](https://reader035.fdocument.pub/reader035/viewer/2022062217/56813a25550346895da2052a/html5/thumbnails/8.jpg)
next[i]の例(続き)ABCDABD0 1 1 1 0 1 3
0:共通文字列は存在しない→空であると想定しても,その直後の文字が同じなので矛盾する
1:共通文字列は存在しない→空であると想定すると,その直後の文字と先頭文字が異なるため矛盾しない
3:共通文字列は AB→直後の文字も Aと Bで不一致
![Page 9: データ構造とプログラミング技法 (第 10 回)](https://reader035.fdocument.pub/reader035/viewer/2022062217/56813a25550346895da2052a/html5/thumbnails/9.jpg)
KMP法 :アルゴリズム
![Page 10: データ構造とプログラミング技法 (第 10 回)](https://reader035.fdocument.pub/reader035/viewer/2022062217/56813a25550346895da2052a/html5/thumbnails/10.jpg)
BM法 :アイデア1パターンの末尾から照合し ,照合に失敗したテキストの側の文字種が、パターン中の照合に失敗した位置よりも左にあるかどうかを探す。
![Page 11: データ構造とプログラミング技法 (第 10 回)](https://reader035.fdocument.pub/reader035/viewer/2022062217/56813a25550346895da2052a/html5/thumbnails/11.jpg)
BM法 :アイデア1の実現法
![Page 12: データ構造とプログラミング技法 (第 10 回)](https://reader035.fdocument.pub/reader035/viewer/2022062217/56813a25550346895da2052a/html5/thumbnails/12.jpg)
BM法 :アイデア2
k+m-i
![Page 13: データ構造とプログラミング技法 (第 10 回)](https://reader035.fdocument.pub/reader035/viewer/2022062217/56813a25550346895da2052a/html5/thumbnails/13.jpg)
BM法 :shift(j)
![Page 14: データ構造とプログラミング技法 (第 10 回)](https://reader035.fdocument.pub/reader035/viewer/2022062217/56813a25550346895da2052a/html5/thumbnails/14.jpg)
BM法 :アルゴリズム