Computer science 设M为带状态图的DFA
a) 构造M的转换表 b) 哪根弦是巴巴,巴巴,巴巴,巴巴 c) 给出L(M)的正则表达式Computer science 设M为带状态图的DFA,computer-science,Computer Science,a) 构造M的转换表 b) 哪根弦是巴巴,巴巴,巴巴,巴巴 c) 给出L(M)的正则表达式 由于生病,我实际上错过了这篇报道的那天的课,对此我感到非常困惑。我在维基百科上查过DFA的信息,但这让我更加困惑。如果您对这个问题有任何见解,我们将不胜感激 DFA=确定性有限状态自动机(搜索) 有一个启动状态(请参见q0,旁边有) (零个或多个)由圆圈指定的非终端状态(参见内部名称) 由双同心圆指定的终端(结束)状态 由事件标记的行(箭头)指定的状态转换 DFA(DFSA)可用于“识别”输入模式。将
由于生病,我实际上错过了这篇报道的那天的课,对此我感到非常困惑。我在维基百科上查过DFA的信息,但这让我更加困惑。如果您对这个问题有任何见解,我们将不胜感激 DFA=确定性有限状态自动机(搜索)
- 有一个启动状态(请参见
,旁边有q0
) - (零个或多个)由圆圈指定的非终端状态(参见内部名称)
- 由双同心圆指定的终端(结束)状态
- 由事件标记的行(箭头)指定的状态转换
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
你试过询问你的处理者、助教或同班同学吗?可能更适合