📅  最后修改于: 2020-12-17 07:00:23             🧑  作者: Mango
摩尔机是一种有限状态机,其中下一个状态由当前状态和当前输入符号决定。给定时间的输出符号仅取决于机器的当前状态。摩尔机器可以由6个元组(Q,q0,∑,O,δ,λ)描述,其中,
Q: finite set of states
q0: initial state of machine
∑: finite set of input symbols
O: output alphabet
δ: transition function where Q × ∑ → Q
λ: output function where Q → O
摩尔机的状态图为
摩尔机的转换表是:
在以上的摩尔机器中,输出用/分隔每个输入状态。 Moore机器的输出长度大于输入长度1。
输入: 010
过渡: δ(q0,0)=>δ(q1,1)=>δ(q1,0)=> q2
输出: 1110(1对于q0,1对于q1,再次1对于q1,0对于q2)
设计摩尔机,以生成给定二进制数的1的补码。
解决方案:要生成给定二进制数的1的补码,简单的逻辑是,如果输入为0,则输出为1,如果输入为1,则输出为0。这意味着存在三种状态。一种状态是开始状态。第二种状态用于将0用作输入并产生输出1。第三种状态用于将1用作输入并产生输出0。
因此,摩尔机器将是
例如,取一个二进制数1011然后
Input | 1 | 0 | 1 | 1 | |
State | q0 | q2 | q1 | q2 | q2 |
Output | 0 | 0 | 1 | 0 | 0 |
因此,我们将00100作为1011的1的补码,可以忽略初始0,而得到的输出是0100,即1011的1的补码。事务表如下:
因此摩尔机器M =(Q,q0,∑,O,δ,λ);其中Q = {q0,q1,q2},∑ = {0,1},O = {0,1}。过渡表显示了δ和λ函数。
针对二进制输入序列设计摩尔机器,以便如果它具有子字符串101,则机器输出A;如果输入具有子字符串110,则输出B,否则输出C。
解决方案:对于设计这样的机器,我们将检查两个条件,分别是101和110。如果得到101,则输出将为A,如果我们识别出110,则输出将为B。对于其他字符串,输出将是C。
部分图将是:
现在,我们将为每个状态插入0和1的可能性。因此,摩尔机变成:
构造一个Moore机器,该机器确定输入字符串是否包含1的偶数或奇数。如果字符串的偶数个数为1,则机器应给出1作为输出,否则为0。
解:
摩尔机将是:
这是必需的摩尔机。在此机器中,状态q1接受奇数1,而状态q0接受偶数1。对零的数量没有限制。因此,对于0输入,自环可应用于两种状态。
设计一个具有输入字母{0,1}和输出字母{Y,N}的Moore机器,如果输入序列包含1010作为子字符串,则该机器将产生Y作为输出,否则,将产生N作为输出。
解:
摩尔机将是: