http://i.stack.imgur.com/QoXru.png设M是与状态图中的DFA
a)构造中号 B的转换表),该弦巴巴,BAAB,ABAB的,abaaab c)就升的正则表达式(M)
我实际上错过了因疾病而被覆盖的一天,我很困惑这一点。我检查过维基百科的DFA信息,但这让我更加困惑。任何有关这个问题的见解,因为它涉及到这个问题将不胜感激!
http://i.stack.imgur.com/QoXru.png设M是与状态图中的DFA
a)构造中号 B的转换表),该弦巴巴,BAAB,ABAB的,abaaab c)就升的正则表达式(M)
我实际上错过了因疾病而被覆盖的一天,我很困惑这一点。我检查过维基百科的DFA信息,但这让我更加困惑。任何有关这个问题的见解,因为它涉及到这个问题将不胜感激!
DFA =确定性有限状态自动机(搜索),
q0
,与>
旁边),DFA(DFSA)可用于“识别”输入模式。您将输入模式(字符串)输入到DFA,并且在DFA在状态之间转换时,它会识别下一个条目,或者产生错误/无法识别的结果。输入完成后,检查结束状态是否为终端/识别状态。
实现如下:
states[] = { 'q0', 'q1', 'q2' }
events[] = { 'a', 'b' }
transition[]
transition['q0'] = []
transition['q1'] = []
transition['q2'] = []
transition['q0']['a'] = 'q1'
transition['q0']['b'] = 'q0'
transition['q1']['a'] = 'q1
transition['q1']['b'] = 'q2'
transition['q2']['a'] = 'q0'
transition['q2']['b'] = 'q1'
state = 'q0' #start state
terminal[]
terminal['q2'] = true # you can have more than one terminal/recognized state
terminal['q0'] = false # you can have more than one terminal/recognized state
terminal['q1'] = false # you can have more than one terminal/recognized state
您可以实现上述状态机,(rubylike) 终端[ 'Q2'] = 1#可以有一个以上的终端/识别状态
def DFArun(initstate, input)
state = initstate
each input.each do |inp|
if !transition[ state, inp ].exists then
return :notrecognized
end
state = transition [ state, inp ]
end
if terminal[ state ].exists then return :recognized
else return :notrecognized end
end
您可以使用进行特定转换时发生的语义操作进一步注释DFSA或DFSM(确定性有限状态机)。这可以是在某些转换('识别')上“发出”输出,或者导致某些动作发生。 DFA(DFSA,DFSM)可用于识别语言解析器中的令牌或控制工厂自动化或业务工作流程。
您可以在文件中轻松表示对DFSM的识别,该文件可以加载到DFSM中进行操作,从而构建一个由可编辑文件控制其行为的程序。例如,一个简单的CSV文件,
#state,input,newstate,actions(optional)
q0,a,q1,none
q0,b,q0,none
q1,a,q1,none
q1,b,q2,none
q2,a,q0,none
q2,b,q1,none
init,q0
terminal,q2
你有没有试过要求你的处理器,TA或同级班? – smcg
可能更适合http://cstheory.stackexchange.com/ – Calpis