繁体   English   中英

正则表达式到 DFA

[英]Regular Expression to DFA

有人可以告诉我附加的 DFA 是否正确吗?

我想为具有字母 Σ ={a, b} 的语言提供 DFA

我需要 DFA ----> A={ε, b, ab} 在此处输入图像描述

不,有多种原因:

  1. 你的机器人bab
  2. 您的自动机不接受ab
  3. 您的自动机不是 DFA,至少按照一些严格的定义

关于第一点:从q1开始,我们看到b ,到q2 ,看到a ,到q3 ,看到b ,再到q4 ,这是接受。 我们看到了bab并接受了它。

关于第二点:从q1开始,我们看到a但没有定义的转换。 自动机“崩溃”并且无法接受。 因此不接受以a开头的字符串,包括ab

关于第三点:DFA 通常需要显示所有状态和转换,包括死状态和永远不会返回任何接受状态的转换。 您不会显示所有转换,也不会显示自动机中的所有状态。

您可以使用 Myhill-Nerode 定理来确定您的语言的最小 DFA 有多少个状态。 我们注意到空状态可以附加空字符串bab以获得语言中的字符串; a可以附加b 并且b可以附加空字符串。 不能将任何内容附加到aabbba以获取语言中的字符串(因此这些是无法区分的); ab可以附加空字符串(因此与b无法区分)。

如此确定的等价类对应于最小 DFA 中的状态。 我们的等价类是:

  1. 类似空字符串的字符串
  2. b这样的字符串
  3. a字符串
  4. aa这样的字符串

我们注意到b在语言中,因此第二类将对应于接受状态。 我们注意到不能将任何内容附加到aa以获取语言中的字符串,因此此类对应于 DFA 中的死状态。 我们通过查看附加新符号将我们置于哪个新等价类来编写这些状态之间的转换:

  1. 附加a将我们置于 (3) 中,因为将a附加到空字符串给出a (3) 中的 a。 附加b将我们置于 (2) 中,因为将b附加到空字符串会得到位于 (2) 中的b

  2. 附加a将我们置于 (4) 中,因为将a附加到b给出了ba ,这与aa类似,因为它不是语言中任何字符串的前缀。 附加b ,我们通过类似的论点到达(4)。

  3. 附加a我们得到aa并且在 (4) 中。 附加b我们得到ab就像b所以我们在(2)中。

  4. 所有从死状态的转换都返回到死状态; ab都返回到 (4)。

你最终会得到类似的东西:

q1 --a--> q3
 |        /|
 b  --b--< a
 | /       |
 vv        v
q2 -a,b-> q4 \
           ^ a,b
           \_/

或以表格形式:

q    s    q'
==   =    ==
q1   a    q3
q1   b    q2
q2   a    q4
q2   b    q4
q3   a    q4
q3   b    q2
q4   a    q4
q4   b    q4

我认为这个 DFA 对那种语言是正确的。

在此处输入图像描述

您附加的 DFA 错误.. 您的 DFA 仅适用于 €,b,bab 但不能接受 ab。 为了让您的 dfa 接受 ab,还向 q0 添加一个新状态,它接受 a 并且每当 newstate 作为 b 获得输入时,将其发送到最终状态。 由于它是一个 dfa,因此您不需要将其发送到新状态(死亡状态)您的问题的 dfa 在这里:单击此处查看 dfa

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM