무어 머신은 현재 상태와 현재 입력 기호에 따라 다음 상태가 결정되는 유한 상태 머신입니다. 주어진 시간의 출력 기호는 기계의 현재 상태에만 의존합니다. 무어 머신은 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
예시 1:
Moore Machine의 상태 다이어그램은 다음과 같습니다.
Moore Machine의 전환 테이블은 다음과 같습니다.
Python json을 파일에 저장
위의 무어 머신에서 출력은 /로 구분된 각 입력 상태로 표현됩니다. 무어 머신의 출력 길이는 입력 길이보다 1 더 큽니다.
입력: 010
이행: δ (q0,0) => δ(q1,1) => δ(q1,0) => q2
산출: 1110(q0에 1, q1에 1, 다시 q1에 1, q2에 0)
예 2:
주어진 이진수의 1의 보수를 생성하는 무어 머신을 설계합니다.
해결책: 주어진 이진수의 1의 보수를 생성하기 위한 간단한 논리는 입력이 0이면 출력이 1이 되고 입력이 1이면 출력은 0이 된다는 것입니다. 이는 세 가지 상태가 있음을 의미합니다. 한 상태는 시작 상태입니다. 두 번째 상태는 0을 입력으로 사용하고 출력을 1로 생성하는 것입니다. 세 번째 상태는 1을 입력으로 사용하고 출력을 0으로 생성하는 것입니다.
따라서 무어 머신은 다음과 같습니다.
예를 들어, 하나의 이진수 1011을 취하고
입력 | 1 | 0 | 1 | 1 | |
상태 | q0 | q2 | q1 | q2 | q2 |
산출 | 0 | 0 | 1 | 0 | 0 |
따라서 우리는 1011의 1의 보수로 00100을 얻습니다. 초기 0을 무시할 수 있으며 우리가 얻는 출력은 1011의 1의 보수인 0100입니다. 트랜잭션 테이블은 다음과 같습니다.
따라서 무어 머신 M = (Q, q0, ∑, O, δ, λ); 여기서 Q = {q0, q1, q2}, ∑ = {0, 1}, O = {0, 1}입니다. 전이표는 δ 및 λ 함수를 보여줍니다.
소프트웨어 개발 수명주기
예시 3:
부분 문자열 101이 있으면 기계는 A를 출력하고, 입력에 부분 문자열 110이 있으면 B를 출력하고, 그렇지 않으면 C를 출력하도록 이진 입력 시퀀스에 대해 무어 기계를 설계합니다.
해결책: 그러한 기계를 설계하기 위해 우리는 두 가지 조건, 즉 101과 110을 확인하게 됩니다. 101을 얻으면 출력은 A가 되고, 110을 인식하면 출력은 B가 됩니다. 다른 문자열의 경우 출력은 다음과 같습니다. 씨.
부분 다이어그램은 다음과 같습니다.
이제 각 상태에 대해 0과 1의 가능성을 삽입하겠습니다. 따라서 무어 머신은 다음과 같습니다.
빠른 정렬 자바
예시 4:
입력 문자열에 1이 짝수인지 홀수인지 결정하는 무어 머신을 구축하세요. 문자열에 짝수 개의 1이 있으면 기계는 1을 출력하고 그렇지 않으면 0을 제공해야 합니다.
해결책:
무어 머신은 다음과 같습니다.
이것은 필수 무어 머신입니다. 이 기계에서 상태 q1은 홀수 개의 1을 허용하고 상태 q0은 짝수 개의 1을 허용합니다. 0의 개수에는 제한이 없습니다. 따라서 입력이 0인 경우 두 상태 모두에 자체 루프를 적용할 수 있습니다.
예시 5:
입력 시퀀스에 하위 문자열로 1010이 포함되어 있으면 출력으로 Y를 생성하는 입력 알파벳 {0, 1}과 출력 알파벳 {Y, N}을 사용하여 무어 머신을 설계합니다. 그렇지 않으면 N을 출력으로 생성합니다.
해결책:
무어 머신은 다음과 같습니다.