【发布时间】:2021-01-15 16:10:14
【问题描述】:
【问题讨论】:
-
我觉得这个更适合cs.stackexchange.com
-
这只是意味着 DFA 不接受
a在b之后的字符串。这可以通过不完整的 NFA 或 DFA(如本例)或引入无法转义且不接受的死状态来指示。
标签: computation-theory dfa nfa
【问题讨论】:
a 在 b 之后的字符串。这可以通过不完整的 NFA 或 DFA(如本例)或引入无法转义且不接受的死状态来指示。
标签: computation-theory dfa nfa
在你的照片中,有点不清楚哪些州正在接受。如果所有状态都接受,我们可以写下一个具有等效状态的平凡 DFA。因此,为了争论,我们假设可能只有其中一些州正在接受。
因为 A 是起始状态,我们知道对于字母表中的每个符号,我们都需要从状态 {A} 进行转换。我们找到 {A} --a--> {A,B,C}, {A} --b--> {B,C} 和 {A} --c--> {C}。我们必须在 DFA 中引入三个新状态 - {A,B,C}、{B,C} 和 {C} - 我们也需要对这些状态进行转换。
对于 {A,B,C} 我们找到 {A,B,C} --a--> {A,B,C}, {A,B,C} --b--> {B, C} 和 {A,B,C} --c--> {C}。这些州已经在我们的待办事项清单上,所以我们可以继续。
对于 {B,C} 我们找到 {B,C} --a--> {}, {B,C} --b--> {B,C} 和 {B,C} --c --> {C}。我们引入了一个对应于空集的新状态,因此我们将其放在待办事项列表中。
对于 {C},我们找到 {C} --a--> {}、{C} --b--> {} 和 {C} --c--> {C}。没有引入新的状态。
最后,很明显 {} --a--> {}、{} --b--> {} 和 {} --c--> {}。
我们可以把转换表写成如下:
q s q'
-------------------------
{A} a {A,B,C}
{A} b {B,C}
{A} c {C}
{A,B,C} a {A,B,C}
{A,B,C} b {B,C}
{A,B,C} c {C}
{B,C} a {}
{B,C} b {B,C}
{B,C} c {C}
{C} a {}
{C} b {}
{C} c {C}
{} a {}
{} b {}
{} c {}
根据原始 NFA 中接受的状态,这组状态可能不是最小的,但您可以根据接受的状态轻松地将其最小化。
【讨论】: