620 likes | 800 Views
情報工学 オートマトン. 神奈川大学工学部経営工学科 内田智史. 有限オートマトン. 有限オートマトン M は次の5つの要素から成る組である。. は状態 (state) の有限集合. は開始状態 (start state). は受理状態 (accepting states). は有限の入力アルファベット (input alphabet). から. への関数で、 M の遷移関数. は. (transition function). 有限オートマトンの例. 状態の有限集合:. 開始状態:. 受理状態:. 入力アルファベット:. M の遷移関数:.
E N D
情報工学オートマトン 神奈川大学工学部経営工学科 内田智史
有限オートマトン 有限オートマトンMは次の5つの要素から成る組である。 は状態(state)の有限集合 は開始状態(start state) は受理状態(accepting states) は有限の入力アルファベット(input alphabet) から への関数で、Mの遷移関数 は (transition function) 情報工学:オートマトン
有限オートマトンの例 状態の有限集合: 開始状態: 受理状態: 入力アルファベット: Mの遷移関数:
といってもまったくさっぱりイメージがわかないであろうといってもまったくさっぱりイメージがわかないであろう 情報工学:オートマトン
そこで次の例題を考える 文字列照合 情報工学:オートマトン
文字列照合 文字列においてあるパターンをすべて見つけ出す処理 テキストエディタ 例:下記のテキストの中からSunを探し出す。 This chapter describes how to compile C programs under the SunOS version of the UNIX operating system running on Sun Microsystem’s Sun-3 and Sun-4 (SPARC) workstations. DNA配列の中の特定パターン A : アデニル酸 G : グアニル酸 C : シチジル酸 T : チミジル酸 TGACTAC…. 情報工学:オートマトン
文字列照合問題の定式化(string-matching problem) テキスト:長さ n の配列 T[1..n] パターン:長さ m の配列 P[1..m], ただし TやPの要素:有限のアルファベット 例: T = 0010100101001010010101011101010 P = 101 T = the tasks described below are closely related P = closely 情報工学:オートマトン
これからの話の展開 (1) 力ずくの文字列照合アルゴリズム (2) 有限オートマトンによる文字列照合アルゴリズム 情報工学:オートマトン
中から テキスト acaabcabccabcbabc aab パターン を検索する事を考える。 文字列照合の基本的な考え方 情報工学:オートマトン
aab パターン 文字列照合の基本的な考え方 テキスト acaabcabccabcbabc 最初の1文字目をチェック 情報工学:オートマトン
aab パターン 文字列照合の基本的な考え方 テキスト acaabcabccabcbabc 次の文字をチェック 情報工学:オートマトン
aab パターン 文字列照合の基本的な考え方 テキスト acaabcabccabcbabc 残念ながら不一致 情報工学:オートマトン
文字列照合の基本的な考え方 テキスト acaabcabccabcbabc aab パターンを一つずらしてチェックする 情報工学:オートマトン
文字列照合の基本的な考え方 テキスト acaabcabccabcbabc 残念ながら再び不一致 aab 情報工学:オートマトン
文字列照合の基本的な考え方 テキスト acaabcabccabcbabc aab パターンをさらに一つずらしてチェックする 情報工学:オートマトン
文字列照合の基本的な考え方 テキスト acaabcabccabcbabc この文字は一致する aab 情報工学:オートマトン
文字列照合の基本的な考え方 テキスト acaabcabccabcbabc 次の文字をチェック:この文字もまた一致する aab 情報工学:オートマトン
文字列照合の基本的な考え方 テキスト acaabcabccabcbabc 次の文字をチェック:この文字もまた一致する aab 情報工学:オートマトン
文字列照合の基本的な考え方 テキスト acaabcabccabcbabc 次の文字をチェック:この文字もまた一致する aab 文字列が一致した 情報工学:オートマトン
文字列照合の基本的な考え方 テキスト acaabcabccabcbabc 次に一致する文字列があるかも知れないのでさらに、 aab パターンをさらに一つずらしてチェックする 情報工学:オートマトン
素朴な文字列照合アルゴリズム(擬似コード) NAIVE-STRING-MATCHER(T,P) 1 n ← length[T] 2 m ← length[P] 3 for s ← 0 to n-m 4 do if P[1..m] = T[s+1..s+m] 5 then パターンはシフトsで発生する 情報工学:オートマトン
NAIVE-STRING-MATCHER(T,P) 1 n ← length[T] 2 m ← length[P] 3 for s ← 0 to n-m 4 do if P[1..m] = T[s+1..s+m] 5 then パターンはシフトsで発生する aab パターン 文字列照合の基本的な考え方 n テキスト acaabcabccabcbabc m テキストとパターンの長さを セット 1 n ← length[T] 2 m ← length[P] 情報工学:オートマトン
NAIVE-STRING-MATCHER(T,P) 1 n ← length[T] 2 m ← length[P] 3 for s ← 0 to n-m 4 do if P[1..m] = T[s+1..s+m] 5 then パターンはシフトsで発生する aab パターン 文字列照合の基本的な考え方 s←0 to n-m 調べる範囲 テキスト acaabcabccabcbabc 最初のチェック(s=0) P[1..m]=T[s+1..s+m] P[1..3]=T[1..3] 3 for s ← 0 to n-m 4 do if P[1..m] = T[s+1..s+m] 5 then パターンはシフトsで発生する 情報工学:オートマトン
NAIVE-STRING-MATCHER(T,P) 1 n ← length[T] 2 m ← length[P] 3 for s ← 0 to n-m 4 do if P[1..m] = T[s+1..s+m] 5 then パターンはシフトsで発生する aab パターン 文字列照合の基本的な考え方 テキスト acaabcabccabcbabc 次のパターンをチェック(s=1) P[1..m]=T[s+1..s+m] P[1..3]=T[2..4] 3 for s ← 0 to n-m 4 do if P[1..m] = T[s+1..s+m] 5 then パターンはシフトsで発生する 情報工学:オートマトン
NAIVE-STRING-MATCHER(T,P) 1 n ← length[T] 2 m ← length[P] 3 for s ← 0 to n-m 4 do if P[1..m] = T[s+1..s+m] 5 then パターンはシフトsで発生する aab パターン 文字列照合の基本的な考え方 テキスト acaabcabccabcbabc 次のパターンをチェック(s=2) P[1..m]=T[s+1..s+m] P[1..3]=T[3..5] このケースは一致 シフトs=2で一致した。 情報工学:オートマトン
素朴な文字列照合アルゴリズム(C言語) void NaïveStringMatcher(char T[], char P[]) { int n=strlen(T); int m=strlen(P); int s,k; for(s=0;s<=n-m;s++) { for(k=1;k<m;k++) if( P[k-1]!=T[s+k-1]) goto MIS; printf(“Shift=%d\n”,s); MIS: } } 情報工学:オートマトン
次に、….. このプログラムをオートマトン を用いて作る事を考える。 情報工学:オートマトン
有限オートマトン 有限オートマトンMは次の5つの要素から成る組である。 は状態(state)の有限集合 は開始状態(start state) は受理状態(accepting states) は有限の入力アルファベット(input alphabet) から への関数で、Mの遷移関数 は (transition function) 情報工学:オートマトン
有限オートマトンの例 状態の有限集合: 開始状態: 受理状態: 入力アルファベット: Mの遷移関数:
最終状態関数 final state function 有限オートマトン Mが文字列 を操作した後に終了する状態 受理状態 のとき、そのときに限り、Mは文字列 を受理する ただし、 情報工学:オートマトン
表記と用語 :アルファベット からの文字を使った有限長の文字列 のすべてからなる集合を表す 例: :長さ0の空文字列 情報工学:オートマトン
文字列照合オートマトン 文字列の照合プログラムをオートマトンを 使って作成する 情報工学:オートマトン
準備:接尾語関数 (suffix function) はPの接頭語で、かつxの接尾語でもあるような 最長文字列の長さ 例 情報工学:オートマトン
はPの接頭語で、かつxの接尾語でもあるようなはPの接頭語で、かつxの接尾語でもあるような 最長文字列の長さ は の接尾語である 接尾語関数:数学的定義
文字列照合オートマトン 状態集合 唯一の受理状態 開始状態 遷移関数 、任意の状態 、文字 に対して 次のようにするとうまくいく。 情報工学:オートマトン
文字列オートマトン:事例 状態0にいるとき 状態1にいるとき 図34.6 (p.213) 情報工学:オートマトン
文字列オートマトン:事例 状態2にいるとき 状態3にいるとき 情報工学:オートマトン
文字列オートマトン:事例 状態4にいるとき 状態5にいるとき 情報工学:オートマトン
文字列オートマトン:事例 状態6にいるとき 0 1 2 3 4 5 6 7 情報工学:オートマトン
:最終状態関数 :接尾語関数 つまり、…..直感的には
任意の文字列 と文字 に対して、接尾語関数 は である。 補台A:接尾語関数の不等式 情報工学:オートマトン
ならば このとき、 証明:別解 情報工学:オートマトン
証明:続き のとき、 ありうる ありえない 情報工学:オートマトン
証明:続き のとき、 ありうる 事例:
証明:続き のとき、 ありえない なぜなら、 であるから の語尾 語が の語頭 と最大限に一致す るという仮説に反する。 情報工学:オートマトン
任意の文字列 と文字 に対して、もし ならば、 である。 補題B:接尾語関数の再帰の補題 例: のとき 情報工学:オートマトン
補題B:証明 だから は の語尾である。 情報工学:オートマトン
補題B:証明 は の語尾である。 情報工学:オートマトン
補題B:証明 さて、補題Aにより、 任意の文字列 と文字 に対して、 である。 とおくと であり、 つまり、 は 以下にすぎない。
より 補題B:証明 これより、 情報工学:オートマトン