正規表現からのDFA直接構成.

Slides:



Advertisements
Similar presentations
組合せ最適化輪講 2.3 連結性 川原 純. 2.3 連結性 内容 – グラフ上の節点をすべてたどるアルゴリズム 計算機上でのグラフの表現 – 強連結成分を求めるアルゴリズム トポロジカル順序を求める方法も – k- 連結、 k- 辺連結について – 2- 連結グラフの耳分解について.
Advertisements

©2008 Ikuo Tahara探索 状態空間と探索木 基本的な探索アルゴリズム 横形探索と縦形探索 評価関数を利用した探索アルゴリズム 分岐限定法 山登り法 最良優先探索 A ( A* )アルゴリズム.
データ構造とプログラミング技 法 (第3回) ー木構造ー. 木構造 (1) 根( root )と呼ばれる節 R が、 1 つだけ含まれ る。 R … TmTm T1T1 木構造: 1 個以上の節の有限集合 T であり、 次の二つの条件を満足するもの (2) 根以外の節は、 m (≧ 0 )個の互いに素な部.
区間グラフにおける区間表現からMPQ-treeを効率よく構成するアルゴリズム
アルゴリズムとデータ構造 2011年7月7日
計算の理論 I 文脈自由文法 月曜3校時 大月 美佳 平成15年6月30日 佐賀大学知能情報システム学科.
2009/12/4 グラフ (2) 第10講: 平成21年12月4日 (金) 4限 E252教室 コンピュータアルゴリズム.
ヒープソートの演習 第13回.
コンパイラ 2011年10月17日
    有限幾何学        第8回.
12.3,E,-15, 12.3,E5,+,=, >,<,…,
言語処理系(6) 金子敬一.
5.チューリングマシンと計算.
5.チューリングマシンと計算.
アルゴリズムとデータ構造 補足資料13-4 「2分探索木の追加・削除(ダイジェスト)」
計算の理論 II 文脈自由文法と プッシュダウンオートマトン
言語処理系(5) 金子敬一.
言語処理系(9) 金子敬一.
データ構造とアルゴリズム 第6回の2 木 ~ データ構造(3)~.
第11講: 平成18年12月 8日 (金) 4限 E352教室 グラフ (1).
ヒープソートの復習.
コンパイラ 2012年10月15日
s a b f c e d 2016年度 有限幾何学 期末試験 問1:15点
ML 演習 第 7 回 新井淳也、中村宇佑、前田俊行 2011/05/31.
アルゴリズムとデータ構造 第7回探索のためのデータ構造(1) 2015/11/18 アルゴリズムとデータ構造 2015.
大域的データフロー解析 流れグラフ 開始ブロック 基本ブロックをnodeとし、 基本ブロック間の制御関係をedgeとするグラフを、
二分探索木によるサーチ.
形式言語とオートマトン Formal Languages and Automata 第4日目
形式言語とオートマトン Formal Languages and Automata 第4日目
第25章 単一始点最短路 3節 Bellman-Fordのアルゴリズム
地域情報学演習 VBAプログラミング 第3回 2017年10月24日
アルゴリズムとプログラミング (Algorithms and Programming)
形式言語とオートマトン Formal Languages and Automata 第4日目
アルゴリズムとデータ構造勉強会 第6回 スレッド木
二分探索木における要素削除 データ構造とプログラミング(10)
データ構造とアルゴリズム (第3回) ー木構造ー.
アルゴリズムとデータ構造 第3章 ヒープ 6月10日分
言語と文法 言語とは,ルールに従う記号列の無限集合である. 文法を与えることで言語が定義できる.
第9回 優先度つき待ち行列,ヒープ,二分探索木
データ構造と アルゴリズム 第七回 知能情報学部 新田直也.
データ構造と アルゴリズム 第六回 知能情報学部 新田直也.
A Simple Algorithm for Generating Unordered Rooted Trees
離散数学 07. 木 五島.
計算の理論 II 前期の復習 -有限オートマトン-
計算の理論 I ε-動作を含むNFA 月曜3校時 大月 美佳.
計算の理論 I ε-動作を含むNFA 月曜3校時 大月 美佳 平成15年6月2日 佐賀大学知能情報システム学科.
計算の理論 I 正則表現とFAとの等価性 月曜3校時 大月 美佳 平成15年6月16日 佐賀大学知能情報システム学科.
プログラミング 4 木構造とヒープ.
2007年度 情報数理学.
コンパイラ 2011年10月20日
形式言語とオートマトン 中間試験解答例 2016年11月15実施 中島毅.
計算の理論 I ー正則表現とFAの等価性 その1ー
15.cons と種々のデータ構造.
アルゴリズムとデータ構造 第3章 ヒープ 5月31日分
アルゴリズムとデータ構造 第3章 ヒープ 5月31日分の復習
第9回 優先度つき待ち行列,ヒープ,二分探索木
5.チューリングマシンと計算.
ヒープソートの復習 第12回.
2009/11/27 グラフ (1) 第9講: 平成21年11月27日 (金) 4限 E252教室 コンピュータアルゴリズム.
アルゴリズムとデータ構造 第2章 リスト構造 5月24日分
復習 if ~ 選択制御文(条件分岐) カッコが必要 true 条件 false 真(true)なら この中が aを2倍する 実行される
4.プッシュダウンオートマトンと 文脈自由文法の等価性
計算の理論 I 文脈自由文法 月曜3校時 大月美佳.
計算の理論 I NFAとDFAの等価性 火曜3校時 大月 美佳 平成16年5月18日 佐賀大学理工学部知能情報システム学科.
ヒープソート.
コンパイラ 2012年10月11日
計算の理論 I ε-動作を含むNFAと等価なDFA
計算の理論 I ε-動作を含むNFA 火曜3校時 大月 美佳 平成16年5月25日 佐賀大学知能情報システム学科.
計算の理論 I ー ε-動作を含むNFA ー 月曜3校時 大月 美佳.
情報処理Ⅱ 第3回 2004年10月19日(火).
Presentation transcript:

正規表現からのDFA直接構成

正規表現からのDFA直接構成 McNaughton-Yamadaの構成法でできるNFAの特殊性を利用してDFAを直接構成する。 e以外の遷移ができる状態を重要状態という。 問 例で構成したNFAの重要状態をマークせよ。   各重要状態は何に対応するか? 何故「重要」か: move({s}, a)はsが重要状態の時に限り空でない。 したがって部分集合構成法の e-closure(move(T, a))= e-closure(∪move({s}, a)) に寄与するのは重要状態だけ。 s∈T

部分集合の同一性 McNaughton-Yamadaで得られるNFAは 注意: 部分集合構成法では、同じ重要状態をもち、 受理状態を含むか否かが同じであるような 二つの部分集合は同一視してよい。 とくに受理状態が1つだけであれば、 同じ{重要状態or受理状態}を含むとき同一視してよい。 McNaughton-Yamadaで得られるNFAは ただ一つの受理状態をもち、 それは出る辺を持たないので重要状態ではない。

正規表現の拡大 もとのアルファベットSにない記号#を導入し、 S上正規表現rからS ∪{#}上の正規表現(r)#をつくる。 (r)#からMcNaughton-Yamadaで得られるNFAは となり、もとのNFA N(r)の受理状態は重要状態になる。 前ページの注意で受理状態を特別扱いしなくてもよくなる。 N(r) #

拡大正規表現の構文木 (a|b)*abb#の構文木 ・ ・ # 6 ・ b 5 ・ b 4 構文木: 葉 — 記号 (出現順に番号ラベル—位置) 内部節点 — 演算子 ・ — cat-節点 | — or-節点 * — star-節点 * a 3 | a 1 b 2

DFA構成のアルゴリズム(1/3) n nullable(n) firstpos(n) lastpos(n) true Φ false nはeをラベルとする葉 true Φ nは位置iをラベルとする葉 false {i} n   |   c1 c2 nullable(c1) or nulable(c2) firstpos(c1) ∪firstpos(c2) n  ・   nullable(c1) and nulable(c2) if nullable(c1) then firstpos(c1)∪firstpos(c2) else firstpos(c1) n  *   c1 前ページの各nにnullable(n),firstpos(n),lastpos(n)を書き込め。

DFA構成のアルゴリズム(2/3) followpos(i)=位置iのすぐあとにくる位置の集合 followpos(i)の特徴づけ: nがcat-節点でその左右の子がc1,c2であり、iがlastpos(c1)の要素であればfollowpos(i)はfirstpos(c2)のすべての要素を含む。 nがstar-節点でiがlastpos(n)の要素であれば、followpos(i)はfirstpos(n)のすべての要素を含む。 followpos(i)の計算: 構文木を上から深さ優先で巡回して上の規則を満たさせる。 練習 前々ページの構文木にfollowpos(i)を書き込め。 ラベルをノードとする有向グラフ (辺: i → followpos(i)の要素)

DFA構成のアルゴリズム(3/3) アルゴリズム(DFAの直接構成) (r)#に対する構文木の根をrootとする。 Dstates := {firstpos(root)}; (印はつけない。) while Dstatesのなかに印のついていない要素Tがある do Tに印を付ける; for 各入力記号a do U :=   ∪ followpos(p); if Uが空集合でなく、Dstatesの中にもない then Uを、印がついていない状態としてDstatesに追加; Dtran[T,a] := U; end p∈Tがaの位置