【问题标题】:Steps to draw a DFA (or NFA) from a simple statement?从简单的陈述中得出 DFA(或 NFA)的步骤?
【发布时间】:2014-06-10 00:01:43
【问题描述】:

给我一​​个简单的语句:在alphabet {0, 1} 上构造一个接受all the strings that end in 101 的DFA?

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

注意:- 这对我来说只是一门小课,所以我从来没有研究过像正则表达式这样的东西,或者任何可能用于构造 DFA 的算法。 p>

【问题讨论】:

  • 不要为此使用正则表达式。想想有限状态机可以处于什么状态。
  • 你知道如何构建简单的 DFA 吗?比如说,一个只接受“1”或“01”的 DFA?
  • @Human 对于'1',信号1下的转换会从初始状态开始并自行结束,信号0下的转换会从初始状态开始并结束在death (die) state。所以初始状态也将是接受状态。
  • @Human 对于“01”,0 和 1 转换都将从初始状态开始并在其自身结束,比如说,这使得初始状态也成为接受状态。
  • @Human 这就是我的想法。我不确定我是对还是错。

标签: regex dfa nfa


【解决方案1】:

如果您想进一步解释我是如何得出这个的,我很乐意解释,但现在我只是画了 DFA 并解释了每个状态。

抱歉屏幕截图...我不知道如何将其直接转换为图像。

  • 在状态 0 的输入 0 上,它循环回到自身。 1日,准备 自己结束,因为它可能是“101”。

  • q1 在输入 1 上循环到自身,因为它仍在准备结束 '101'。在 q1 上输入 '0' 表示它正在准备输入 '10',所以它转到 q2。

  • 在 q2 上输入“0”会中断整个循环并返回到 q0。输入“1” 导致进入接受状态 q3。

  • q3 上的任何输入都会导致返回到循环中的任何点 输入对应。

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

  • 在“0”上,它进入 q2,因为为了进入 q3,必须有 是来自 q2 的“1”的输入,所以无论如何,最后两个输入 符号现在是“10”。

TikZ DFA examples.

【讨论】:

  • 你用什么工具来画这个图?
  • @GrijeshChauhan 我在 Latex 中使用了 TikZ 包和 TeXLive。 :) 我在帖子末尾包含了 TikZ DFA 示例的链接。
  • 谢谢,我试试看,我用dia但是看起来更清晰,我们可以制作彩色图片吗?
  • @GrijeshChauhan 你是什么意思?是的你可以。一般来说,你可以用 TikZ / LaTeX 做很多事情。
猜你喜欢
  • 1970-01-01
  • 2011-05-25
  • 1970-01-01
  • 1970-01-01
  • 2011-04-29
  • 1970-01-01
  • 1970-01-01
  • 2011-01-02
  • 2010-11-23
相关资源
最近更新 更多