Regex 从简单语句中提取DFA(或NFA)的步骤?

Regex 从简单语句中提取DFA(或NFA)的步骤?,regex,dfa,nfa,Regex,Dfa,Nfa,我得到一个简单的语句:在字母表{0,1}上构造一个DFA,它接受以101结尾的所有字符串 我的问题是设计它的步骤是什么?或者设计一个NFA,因为我知道将NFA转换为DFA的清晰步骤,所以我会将NFA转换为DFA。 注意:-这对我来说只是一门小修课,所以我从来没有学习过正则表达式之类的东西,也没有学习过可能用于构造DFA的任何算法。如果你想更多地解释我是如何推导出这个的,我很乐意解释,但现在我只是画了DFA并解释了每个状态 对于截图很抱歉…我不知道如何将其直接转换为图像 在状态为0的输入0上,

我得到一个简单的语句:在
字母表{0,1}
上构造一个DFA,它接受
以101结尾的所有字符串

我的问题是设计它的步骤是什么?或者设计一个NFA,因为我知道将NFA转换为DFA的清晰步骤,所以我会将NFA转换为DFA。


注意:-这对我来说只是一门小修课,所以我从来没有学习过正则表达式之类的东西,也没有学习过可能用于构造DFA的任何算法。

如果你想更多地解释我是如何推导出这个的,我很乐意解释,但现在我只是画了DFA并解释了每个状态

对于截图很抱歉…我不知道如何将其直接转换为图像

  • 在状态为0的输入0上,它返回到自身。第1,它准备 因为它可能是“101”

  • q1在输入1上循环到自身,因为它仍准备在输入1上结束 '101'. q1上的输入“0”表示它正在准备输入“10”,因此它转到q2

  • 第2季度的输入“0”会中断整个周期并返回到第0季度。输入“1” 结果移动到q3,即接受状态

  • 第三季度的任何输入都会返回到周期中的任何点 输入对应于

  • 也就是说,在'1'上,它返回到q1,或者第一个'1'所在的状态 在“101”中遇到,准备结束

  • 在“0”上,它转到q2,因为要到达q3,必须有 从第2季度开始输入'1',所以不管怎样,最后两个输入 符号现在是“10”


不要为此使用正则表达式。想想有限状态机可以处于什么状态。你知道如何构造简单的DFA吗?比如说,对于
'1'
,只接受'1'或'01'?@Human的DFA,信号
1
下的转换将从初始状态开始并在自身结束,信号
0
下的转换将从初始状态开始并在
死亡(死亡)状态结束。所以初始状态也将是接受状态。@Human对于'01',0和1转换都将从初始状态开始,并在自身结束。比如说,这使得初始状态也成为接受状态。@Human这就是我的想法。我不确定我是对是错。你用什么工具画这个数字?@GrijeshChauhan我用了TeXLive in Latex的TikZ软件包。:)我在帖子的末尾添加了一个关于TikZ DFA示例的链接。谢谢,我会尝试一下,我使用它,但它看起来更清晰,我们可以制作彩色图片吗?@GrijeshChauhan,你是什么意思?是的,你可以。一般来说,你可以用TikZ/乳胶做很多事情。