我把这个DFA描述为(Q,q1,A,N,F),其中
Q = {1,2,3,4},
q1 = 1,
A = {a,b,c},
F = {2,4},
N = {
(1,a) - > 2,(1,b) - > 3,(1,c) - > 4,
(2,a) - > 2,(2,b) - > 4,
(3,a) - > 2,(3,c) - > 4,
(4,b) - > 4,(4,c) - > 4}
所以我绘制了转换图,看起来很好,
然后我需要弄清楚这个DFA是否接受以下字符串:
并提出以下
我并非100%确定这些是正确的,但认为它们是在正确的轨道上。
然后我需要用英语描述这种接受的语言,我认为这不是一个问题,但我需要帮助的地方是使用数学符号来描述这种语言。你能帮我理解一下吗。
非常感谢你的帮助
答案 0 :(得分:0)
您对字符串可接受性的回答是正确的,可以通过尝试在图表中跟踪它们来轻松看出
现在,关于语言:
在第2个顶点,我们可以用对应的正则表达式的单词结束:
b?a+
- 我们可以选择首先获取b
我移动到第3个顶点,然后通过a
,或者我们可以通过a
移动到第2个顶点曾经,我们可以根据需要添加a
个。{/ p>
现在关于完成第4个顶点的单词:
首先,我们如何到达顶点4?
1.我们可以首先通过c
一次移动到达顶点4,或者首先移动到第3个顶点,获得b,然后通过c
移动到第4个。因此,我们得到像b?c
这样的字符串
2.我们可以使用b?a+
(如前面的例子中所述)到达顶点2,然后通过b
。因此,我们得到像b?a+b
这样的字符串
总的来说,我们可以使用与b?(a+b|c)
正则表达式匹配的任何单词到达第4个顶点。
现在,在顶点4的末尾添加任意数量的b
和c
符号,我们得到了这种情况的答案:
b?(a+b|c)(bc)*
最后,我们可以将这个DFA单词所接受的整个单词集合作为以下正则表达式:
b?( a+ | (a+b|c)(bc)*? )