計算理論学習ノート - 正規言語と正規演算
この記事は「計算理論の基礎(共立出版)」の読書ノートです
ある有限オートマトンで認識される言語を正規言語という。正規言語に対して以下の演算が定義できる。
スター演算は$${k = 0}$$の場合も含むため、空文字列$${\varepsilon}$$は常にスター演算後の言語に含まれる。
ところで正規演算の結果が再び正規言語になるかどうか、すなわち認識する有限オートマトンが存在するかどうかは自明な事実ではない。しかし、実際には正規演算は正規言語の中で閉じている。このことを証明することが当面の目標となる。
まずは和集合演算について考えることにしよう。証明したい定理は以下だ。
さて、今$${A}$$を認識する有限オートマトンを$${M_A}$$、$${B}$$を認識する有限オートマトンを$${M_B}$$とし、それぞれの定義を以下のようにする。
$$
M_A \equiv (Q_A, \Sigma_A, \delta_A, q_A, F_A),\ M_B \equiv (Q_B, \Sigma_B, \delta_B, q_B, F_B)
$$
ここから$${A \cup B}$$を認識する有限オートマトン$${M \equiv (Q,\Sigma, \delta, q, F)}$$を構成する。次のように定義しよう。
$${Q \equiv Q_A \times Q_B = \{(r_A, r_B): r_A \in A, r_B \in B\}}$$
$${\Sigma \equiv \Sigma_A \cup \Sigma_B}$$
$${\delta((r_A, r_B), s) \equiv (\delta_A(r_A, s), \delta_B(r_B, s))}$$。ただし、$${s \notin \Sigma_A}$$のとき$${\delta((r_A, r_B), s) \equiv (r_A, \delta_B(r_B, s))}$$、$${s \notin \Sigma_B}$$のとき$${\delta((r_A, r_B), s) \equiv (\delta_A(r_A, s), r_B)}$$とする
$${q\equiv (q_A, q_B)}$$
$${F \equiv (F_A \times Q_B)\cup (Q_A \times F_B) = \{(r_A, r_B) \in Q_A \times Q_B: r_A \in F_A または r_B \in F_B\}}$$
このように定義すると、$${s \in A}$$である文字列が来た時、最後の状態はある$${f_A \in F_A}$$と$${r_B \in Q_B}$$が存在して、$${(f_A, r_B) \in F}$$となる。同様に$${s \in B}$$である文字列が来た時、最後の状態はある$${r_A \in Q_A}$$と$${f_B \in F_B}$$が存在して、$${(r_A, f_B) \in F}$$となる。このことから$${A\cup B}$$は$${M}$$の言語であるため、和集合演算は正規言語で閉じることになる。
次回は連結演算が同様に正規言語で閉じていることと、非決定性について議論することにする。
この記事が気に入ったらサポートをしてみませんか?