✖

正規言語の差集合

2つの正規言語 L1, L2 を考えます。その差集合 L = L1 ∖ L2 も正規言語であることを証明します。

証明の考え方

実は、証明することはほとんどありません。2つの集合の差集合については、次の関係が成り立つからです。

L1∖L2=L1∩L2―

ここで、L2― は言語 L2 の補集合です。正規言語の共通部分と正規言語の補集合の記事で見たように、正規言語はこの2つの演算について閉じています。つまり、言語の共通部分を受理するオートマトンも、言語の補集合を受理するオートマトンもつくれます。これらのオートマトンを使えば、言語 L1∩L2― を受理するオートマトンがつくれます。この言語は、言語 L1 ∖ L2 にほかなりません。

例

1を偶数個含むすべての語を受理する、次のオートマトン A1 を考えます。

また、0を奇数個含む語を受理する、次のオートマトン A2 も考えます。

これらの言語の差集合を受理するオートマトンをつくります。そのためには、A2 が受理する言語の補集合を受理するオートマトン A2′ が必要です。受理状態と非受理状態を入れかえるだけです。

あとは、言語 L(A1) と L(A2′) の共通部分を受理するオートマトン A をつくるだけです。

参考文献

章: 正規言語の閉包性, 正規言語の和集合, 正規言語の共通部分, 正規言語の差集合, 正規言語の補集合, 正規言語の連接, 正規言語のクリーネ閉包