1 / 62

情報工学 オートマトン

情報工学 オートマトン. 神奈川大学工学部経営工学科 内田智史. 有限オートマトン. 有限オートマトン M は次の5つの要素から成る組である。. は状態 (state) の有限集合. は開始状態 (start state). は受理状態 (accepting states). は有限の入力アルファベット (input alphabet). から. への関数で、 M の遷移関数. は. (transition function). 有限オートマトンの例. 状態の有限集合:. 開始状態:. 受理状態:. 入力アルファベット:. M の遷移関数:.

jadon
Download Presentation

情報工学 オートマトン

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 情報工学オートマトン 神奈川大学工学部経営工学科 内田智史

  2. 有限オートマトン 有限オートマトンMは次の5つの要素から成る組である。 は状態(state)の有限集合 は開始状態(start state) は受理状態(accepting states) は有限の入力アルファベット(input alphabet) から への関数で、Mの遷移関数 は (transition function) 情報工学:オートマトン

  3. 有限オートマトンの例 状態の有限集合: 開始状態: 受理状態: 入力アルファベット: Mの遷移関数:

  4. といってもまったくさっぱりイメージがわかないであろうといってもまったくさっぱりイメージがわかないであろう 情報工学:オートマトン

  5. そこで次の例題を考える 文字列照合 情報工学:オートマトン

  6. 文字列照合 文字列においてあるパターンをすべて見つけ出す処理 テキストエディタ 例:下記のテキストの中から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…. 情報工学:オートマトン

  7. 文字列照合問題の定式化(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 情報工学:オートマトン

  8. これからの話の展開 (1) 力ずくの文字列照合アルゴリズム (2) 有限オートマトンによる文字列照合アルゴリズム 情報工学:オートマトン

  9. 中から テキスト acaabcabccabcbabc aab パターン を検索する事を考える。 文字列照合の基本的な考え方 情報工学:オートマトン

  10. aab パターン 文字列照合の基本的な考え方 テキスト acaabcabccabcbabc 最初の1文字目をチェック 情報工学:オートマトン

  11. aab パターン 文字列照合の基本的な考え方 テキスト acaabcabccabcbabc 次の文字をチェック 情報工学:オートマトン

  12. aab パターン 文字列照合の基本的な考え方 テキスト acaabcabccabcbabc 残念ながら不一致 情報工学:オートマトン

  13. 文字列照合の基本的な考え方 テキスト acaabcabccabcbabc aab パターンを一つずらしてチェックする 情報工学:オートマトン

  14. 文字列照合の基本的な考え方 テキスト acaabcabccabcbabc 残念ながら再び不一致 aab 情報工学:オートマトン

  15. 文字列照合の基本的な考え方 テキスト acaabcabccabcbabc aab パターンをさらに一つずらしてチェックする 情報工学:オートマトン

  16. 文字列照合の基本的な考え方 テキスト acaabcabccabcbabc この文字は一致する aab 情報工学:オートマトン

  17. 文字列照合の基本的な考え方 テキスト acaabcabccabcbabc 次の文字をチェック:この文字もまた一致する aab 情報工学:オートマトン

  18. 文字列照合の基本的な考え方 テキスト acaabcabccabcbabc 次の文字をチェック:この文字もまた一致する aab 情報工学:オートマトン

  19. 文字列照合の基本的な考え方 テキスト acaabcabccabcbabc 次の文字をチェック:この文字もまた一致する aab 文字列が一致した 情報工学:オートマトン

  20. 文字列照合の基本的な考え方 テキスト acaabcabccabcbabc 次に一致する文字列があるかも知れないのでさらに、 aab パターンをさらに一つずらしてチェックする 情報工学:オートマトン

  21. 素朴な文字列照合アルゴリズム(擬似コード) 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で発生する 情報工学:オートマトン

  22. 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] 情報工学:オートマトン

  23. 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で発生する 情報工学:オートマトン

  24. 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で発生する 情報工学:オートマトン

  25. 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で一致した。 情報工学:オートマトン

  26. 素朴な文字列照合アルゴリズム(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: } } 情報工学:オートマトン

  27. 次に、….. このプログラムをオートマトン を用いて作る事を考える。 情報工学:オートマトン

  28. 有限オートマトン 有限オートマトンMは次の5つの要素から成る組である。 は状態(state)の有限集合 は開始状態(start state) は受理状態(accepting states) は有限の入力アルファベット(input alphabet) から への関数で、Mの遷移関数 は (transition function) 情報工学:オートマトン

  29. 有限オートマトンの例 状態の有限集合: 開始状態: 受理状態: 入力アルファベット: Mの遷移関数:

  30. 最終状態関数 final state function 有限オートマトン Mが文字列 を操作した後に終了する状態 受理状態 のとき、そのときに限り、Mは文字列 を受理する ただし、 情報工学:オートマトン

  31. 表記と用語 :アルファベット からの文字を使った有限長の文字列 のすべてからなる集合を表す 例: :長さ0の空文字列 情報工学:オートマトン

  32. 文字列照合オートマトン 文字列の照合プログラムをオートマトンを 使って作成する 情報工学:オートマトン

  33. 準備:接尾語関数 (suffix function) はPの接頭語で、かつxの接尾語でもあるような 最長文字列の長さ 例 情報工学:オートマトン

  34. はPの接頭語で、かつxの接尾語でもあるようなはPの接頭語で、かつxの接尾語でもあるような 最長文字列の長さ は の接尾語である 接尾語関数:数学的定義

  35. 文字列照合オートマトン 状態集合 唯一の受理状態 開始状態 遷移関数 、任意の状態 、文字 に対して 次のようにするとうまくいく。 情報工学:オートマトン

  36. 文字列オートマトン:事例 状態0にいるとき 状態1にいるとき 図34.6 (p.213) 情報工学:オートマトン

  37. 文字列オートマトン:事例 状態2にいるとき 状態3にいるとき 情報工学:オートマトン

  38. 文字列オートマトン:事例 状態4にいるとき 状態5にいるとき 情報工学:オートマトン

  39. 文字列オートマトン:事例 状態6にいるとき 0 1 2 3 4 5 6 7 情報工学:オートマトン

  40. :最終状態関数 :接尾語関数 つまり、…..直感的には

  41. 任意の文字列 と文字 に対して、接尾語関数 は である。 補台A:接尾語関数の不等式 情報工学:オートマトン

  42. ならば このとき、 証明:別解 情報工学:オートマトン

  43. 証明:続き のとき、 ありうる ありえない 情報工学:オートマトン

  44. 証明:続き のとき、 ありうる 事例:

  45. 証明:続き のとき、 ありえない なぜなら、 であるから の語尾 語が の語頭 と最大限に一致す るという仮説に反する。 情報工学:オートマトン

  46. 任意の文字列 と文字 に対して、もし ならば、 である。 補題B:接尾語関数の再帰の補題 例: のとき 情報工学:オートマトン

  47. 補題B:証明 だから は の語尾である。 情報工学:オートマトン

  48. 補題B:証明 は の語尾である。 情報工学:オートマトン

  49. 補題B:証明 さて、補題Aにより、 任意の文字列 と文字 に対して、 である。 とおくと であり、 つまり、 は 以下にすぎない。

  50. より 補題B:証明 これより、 情報工学:オートマトン

More Related