先决条件——设计一个有限自动机
假设我们有一个由 ( Q, , , q0, F ) 并且它接受语言 L 1 。然后,接受语言 L 2其中 L 2 = ̅L 1 ‘的 DFA 将定义如下:
(问, , , q0, QF )
可以通过将非最终状态作为最终状态来获得 DFA 的补充,反之亦然。被补充的 DFA L 2接受的语言是语言 L 1的补充。
示例 1:
L 1 : {a, b} 上偶数长度的所有字符串的集合
L 1 = { , ab, aa, aaba, aaba, ….}
L 2 :奇数长度 {a, b} 上所有字符串的集合
L2 = { a, b, aab, aaa, bba, bbb, ...}
在这里,我们可以看到 L 2 = ̅L 1
让我们首先绘制接受偶数长度字符串的 L 1的 DFA。
现在,为了设计 L 2的 DFA,我们只需要补充上述 DFA。我们将非最终状态更改为最终状态,将最终状态更改为非最终状态。
这是我们所需的补充 DFA。
示例 2:
L 1 :{a, b} 上以’a’ 开头的所有字符串的集合。
L1 ={ a, ab, aa, aba, aaa, aab, ..}
L 2 :{a, b} 上所有不以 ‘a’ 开头的字符串的集合。
L 2 ={ , b, ba, bb, bab, baa, bba, …}
在这里,我们可以看到 L 2 = ̅L 1
让我们首先绘制 L 1的 DFA,它接受 {a, b} 上以 ‘a’ 开头的所有字符串的集合
现在,为了设计 L 2的 DFA,我们只需要补充上述 DFA。我们将非最终状态更改为最终状态,将最终状态更改为非最终状态。
这是我们要求的补充 DFA,它接受不以“a”开头的字符串。
注意:正则语言在补语下是封闭的(即正则语的补语也将是正则的)。