Машина Мура — це кінцевий автомат, у якому наступний стан визначається поточним станом і поточним вхідним символом. Вихідний символ у певний момент залежить лише від поточного стану машини. Машину Мура можна описати 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:
Діаграма стану машини Мура така
Таблиця переходів для машини Мура:
перетворити рядок на об’єкт json
У наведеній вище машині Мура вихідні дані представлені кожним вхідним станом, розділеним /. Вихідна довжина для машини Мура більша за вхідну на 1.
введення: 010
Перехід: δ (q0,0) => δ(q1,1) => δ(q1,0) => q2
Вихід: 1110 (1 для q0, 1 для q1, знову 1 для q1, 0 для q2)
приклад 2:
Створіть машину Мура для створення доповнення до 1 заданого двійкового числа.
рішення: Щоб створити доповнення до 1 заданого двійкового числа, проста логіка полягає в тому, що якщо вхід дорівнює 0, то вихід буде 1, а якщо вхід дорівнює 1, то вихід буде 0. Це означає, що є три стани. Один стан є початковим станом. Другий стан призначений для прийому нулів як вхідних даних і створення вихідних даних як 1. Третій стан призначений для прийому 1 як вхідних даних і створення вихідних даних як 0.
Отже, машина Мура буде,
Наприклад, візьмемо одне двійкове число 1011
шаблони проектування в java
Введення | 1 | 0 | 1 | 1 | |
Держава | q0 | q2 | q1 | q2 | q2 |
Вихід | 0 | 0 | 1 | 0 | 0 |
Таким чином, ми отримуємо 00100 як доповнення до 1 до 1011, ми можемо знехтувати початковим 0, і результатом, який ми отримуємо, є 0100, який є доповненням до 1 до 1011. Таблиця транзакцій виглядає наступним чином:
Таким чином, машина Мура 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. Для інших рядків результатом буде C.
Часткова діаграма буде виглядати так:
Тепер ми вставимо можливості 0 і 1 для кожного стану. Таким чином, машина Мура стає:
Приклад 4:
Побудуйте машину Мура, яка визначає, чи містить вхідний рядок парну чи непарну кількість одиниць. Машина повинна вивести 1, якщо в рядку є парна кількість одиниць, і 0 в іншому випадку.
рішення:
Машина Мура буде:
Це необхідна машина Мура. У цій машині стан q1 приймає непарну кількість одиниць, а стан q0 приймає парну кількість одиниць. Обмежень на кількість нулів немає. Отже, для входу 0 самоцикл можна застосувати до обох станів.
перевизначення методу в java
Приклад 5:
Створіть машину Мура з вхідним алфавітом {0, 1} і вихідним алфавітом {Y, N}, яка виводить Y на виході, якщо вхідна послідовність містить 1010 як підрядок, інакше виводить N на виході.
рішення:
Машина Мура буде: