データ構造とプログラミング技法 (第10回) ー文字列照合(KMP法、BM法)ー.

Slides:



Advertisements
Similar presentations
パターン認識入門.
Advertisements

圧縮テキストに対する文字列照合問題 竹田研究室 博士課程二年 喜田 拓也.
LZ符号化 森田 岳史.
情報生命科学特別講義III (1) 文字列マッチング
プログラムのパタン演習 解説.
情報知識ネットワーク 有村・喜田研究室 ex. 7678, 7679
LZ圧縮回路の設計とハード・ソフト 最適分割の検討 電子情報デザイン学科 高性能計算研究室 4回生 中山 和也 2009/2/27.
ヒープソートの演習 第13回.
情報理論2 注意!! 11月26日(火)は休講 (小林が学会出張のため) 湘南工科大学情報工学科 准教授 小林 学 湘南工科大学
第11回 整列 ~ バケットソート,基数ソート,ヒープソート~
プロセッシング入門3 初歩のプログラミング.
SQL J2EE I 第3回 /
アルゴリズムとデータ構造 2012年7月19日
データ構造とプログラミング技法 (第8回) ーデータの探索ー.
アルゴリズムとデータ構造 第9回演習解答.
情報工学概論 (アルゴリズムとデータ構造)
String - 文字列 2009年10月9日 7ADD2116 佐藤洋輔.
第8回 プログラミングⅡ 第8回
文字列探索 2011/5/30.
理由:文字数より要素数の多い配列を用いた時に,文字列の最後を示すため
理由:文字数より要素数の多い配列を用いた時に,文字列の最後を示すため
アルゴリズムとデータ構造 補足資料7-3 「単純選択ソートselsort.c」
ヒープソートの復習.
コンパイラ 2012年10月22日
データ構造と アルゴリズム 第十一回 理工学部 情報システム工学科 新田直也.
コンパイラ 2011年10月24日
アルゴリズムとデータ構造 2013年7月18日
Pattern Matching on Compressed Texts
生物情報ソフトウェア特論 (1) 文字列マッチング・データ構造
喜田 拓也,竹田 正幸,篠原 歩 九州大学大学院システム情報科学府 情報理学専攻
第1回.リレーショナルデータベースを使ってみよう
第1回.リレーショナルデータベースを使ってみよう
データ構造とアルゴリズム 第4回 リスト ~ データ構造(1)~.
PROGRAMMING IN HASKELL
情報生命科学特別講義III (2)文字列データ構造
Fast Pattern Matching Algorithms in Compressed Texts
データ構造とアルゴリズム 第14回 文字列の照合.
アルゴリズムとプログラミング (Algorithms and Programming)
データ構造とアルゴリズム論 第3章 ファイルを用いたデータ入出力2
2章 暗号技術 FM15002 友池 絲子.
アルゴリズムとデータ構造 2011年7月12日
半構造化テキストに対する 文字列照合アルゴリズム
アルゴリズムとプログラミング (Algorithms and Programming)
データ圧縮技術による文字列照合処理の高速化に関する研究
アルゴリズム論 (第12回) 佐々木研(情報システム構築学講座) 講師 山田敬三
長さの制限付きギャップと 文字クラスを含むパタンに対する 照合アルゴリズムの改善
プログラミングⅠ 平成30年10月22日 森田 彦.
東京工科大学 コンピュータサイエンス学部 亀田弘之
生物情報ソフトウェア特論 (2)たたみ込みとハッシュに 基づくマッチング
プログラミング基礎a 第6回 C言語によるプログラミング入門 配列と文字列(その2)
アルゴリズムとデータ構造 --- 理論編 --- 山本 真基
第9回 優先度つき待ち行列,ヒープ,二分探索木
短い部分文字列の ミスマッチトレランスを 高速計算するアルゴリズム
阿久津 達也 京都大学 化学研究所 バイオインフォマティクスセンター
ヒープソートの復習 第12回.
PROGRAMMING IN HASKELL
計算機プログラミングI 第4回 2002年10月31日(木) 問題解決とアルゴリズム クラスメソッドと手続きの抽象化 最大公約数
LZW 圧縮テキストに対する 高速文字列照合アルゴリズム 喜田 拓也 竹田 正幸 篠原 歩 九州大学大学院システム情報科学研究科
情報処理Ⅱ 2006年11月24日(金).
情報処理Ⅱ 第7回 2004年11月16日(火).
PROGRAMMING IN HASKELL
~sumii/class/proenb2010/ml5/
プログラミング演習I 2003年6月11日(第9回) 木村巌.
情報生命科学特別講義III (3)たたみ込みとハッシュに 基づくマッチング
データ構造とアルゴリズム 第14回 文字列の照合.
SQL J2EE I (データベース論) 第3回 /
8.文字列処理 8.1 C#の文字列 C#では, “ABCD”のように文字列を2重引用符で挟んで指定します。ASCIIコード体系のとき,以下のような内部形式となります。 1 1 文字 ‘A’ ナル文字 1 1 文字 ‘B’ A B C D \ 文字 ‘C’ 1 1 文字 ‘D’ ナル文字‘\0’
プログラミング基礎a 第3回 C言語によるプログラミング入門 データ入力
計算機プログラミングI 第5回 2002年11月7日(木) 配列: 沢山のデータをまとめたデータ どんなものか どうやって使うのか
Presentation transcript:

データ構造とプログラミング技法 (第10回) ー文字列照合(KMP法、BM法)ー

文字列照合 text中のpatの位置(複数可)を求める。

単純照合法 jはtext中の照合位置 iはpat中の照合位置 nはtextの長さ、 mはpatの長さ

単純照合法の無駄

単純照合法の無駄: 常に大きくスキップできる訳ではない

KMP法 text中のk番目の文字で、patのi番目の文字との比較に失敗した時、 textのk`番目と、patのnext[i]番目の文字との比較から再開する。 next[i]

next[i]の例 ABABBA 0 1 0 1 3 0 0:共通文字列は存在しない→空であると想定しても,その直後の文字が同じなので矛盾する 1:共通文字列は存在しない→空であると想定すると,その直後の文字と先頭文字が異なるため矛盾しない 3:共通文字列はAB→直後の文字もAとBで不一致

next[i]の例(続き) ABCDABD 0 1 1 1 0 1 3 0:共通文字列は存在しない→空であると想定しても,その直後の文字が同じなので矛盾する 1:共通文字列は存在しない→空であると想定すると,その直後の文字と先頭文字が異なるため矛盾しない 3:共通文字列はAB→直後の文字もAとBで不一致

KMP法:アルゴリズム

BM法:アイデア1 パターンの末尾から照合し,照合に失敗したテキストの 側の文字種が、パターン中の照合に失敗した位置より も左にあるかどうかを探す。

BM法:アイデア1の実現法

BM法:アイデア2 k+m-i

BM法:shift(j)

BM法:アルゴリズム