作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
最佳答案
你的答案似乎是正确的。我没有仔细证明它,但逻辑相当清楚。此外,我编写了一个 Python 程序来测试它:
def accepts(transitions,initial,accepting,s):
state = initial
for c in s:
state = transitions[state][c]
return state in accepting
dfa = {1:{'a':4, 'b':2},
2:{'a':10, 'b':3},
3:{'a':4, 'b':3},
4:{'a':7, 'b':5},
5:{'a':10, 'b':6},
6:{'a':7, 'b':6},
7:{'a':1, 'b':8},
8:{'a':10, 'b':9},
9:{'a':1, 'b':9},
10:{'a':10, 'b':10}}
def dfaTest(s):
return accepts(dfa,3,{1,2,3},s)
def valid(s):
return s.count('a') % 3 == 0 and not 'aba' in s
import random
tests = [''.join(random.choice(['a','b']) for j in range(100)) for i in range(1,1001)]
print(all(valid(s) == dfaTest(s) for s in tests))
accepts
解释在
this answer .我量身定制了它以匹配您的图表。为了对其进行压力测试,我生成了 100,000 个随机输入,其长度范围从 1 到 1000,然后将 DFA 的输出与条件的直接验证进行比较。每次运行这段代码,输出都是令人满意的
True
.
>>> dfaTest('ababba')
False
>>> dfaTest('abbabba')
True
关于finite-automata - 设计一个 DFA(字母 'a' 和 'b'): The number of 'a' in the string must be a multiple of 3, 并且字符串不包含 'aba',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41416209/
我是一名优秀的程序员,十分优秀!