NFA如何使用epsilon转换?


12

在下面的图片中,我试图弄清楚NFA到底接受了什么。

在此处输入图片说明

什么是困惑我的是在跳q 0ϵq0

  • 如果输入,系统是否同时移动到q 0q 1(接受状态)?0q0 q1

  • 如果输入,系统是否同时移动到q 1q 21q1q2

  • 如果没有输入(空字符串),系统是否仅移至(接受状态)?q1


2
返回定义:NFA接受一个单词(如果对其进行任何计算)。就DFA而言,NFA本身不是“算法”。
拉斐尔

Answers:


10

每次您处于过渡状态时,这意味着您会自动进入两种状态,以简化您的操作:ϵ

如果字符串是则自动机都以q 0q 1结尾ϵq0q1

如果您的字符串为“ 0”,它将再次位于q 1中q0q1

如果您的字符串是'1',那么它只会出现在,因为如果您从q 0的角度看,则您有一个'1'过渡到q 2的情况,但是还必须考虑情况,即在q 1中(如果您在q 0中也总是在q 1中),则不存在“ 1”转换,因此此替代路径只是“死亡”。q2q0q2q1q0q1

仅通过查看这些情况,就很容易看到您的自动机接受0 ,并且从q 0q 1,达到q 2的唯一方法是0 11 1,因此,这会将您的自动机恢复为ϵ0 0 11 1ϵ0q0q1q20111ϵ00111

希望这对您有所帮助,如果您还有其他疑问,请问!


7
“这意味着您自动处于两种状态” –我认为这不是很有帮助的直觉,即它以错误的方式表示不确定性。
拉斐尔

为什么代表错误呢?好吧,通过非确定性上的增量定义,您会得到一组状态而不是仅正确的一组状态?这只能意味着您处于两种状态。
H_DANILO

它提倡非确定性机器“并行尝试所有解决方案”的想法。从算法上来说,这不会发生。非确定性是描述性形式主义,而不是算法技术。
拉斐尔

我试图以一种可以理解的方式来表达它,因为他正在努力以理论的方式理解非确定性的原理
H_DANILO 2015年

@Raphael您认为什么会更有用?
安德烈·波特诺伊

6

q0q0q1q1

q00q0q10q01q21q1q11

0+011101


ϵϵ


-1

我尝试为此NFA构造DFA

Q

σ(Q×(ϵ))P(Q)

q0=q0

FQ,F={q0}

M

字母-相同

Q=P(Q)

RP(Q)

E(R)ϵrR

σ(R,a)=rRE(σ(r,a))

q0=E({q0})

F=P(Q)÷F

一些对此FSM的计算

1. ϵq0=E({q0})={q0,q1}q1ϵ

2. 0σ({q0,q1},0)=E(σ(q0,0))E(σ(q1,0))={q0,q1}{}={q0,q1}0

{ϵ,0}L(M)

感谢David Richerby


感谢您感谢我,但我真的不明白如何回答这个问题。您尚未确定机器可以接受的语言,也没有解决三个项目符号问题中的任何一个。
David Richerby '16

ϵ{q0,q1}00{q0,q1}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.