Автоматы Мура и Мили — это фундаментальные изобретения, которые лежат в основе современных вычислительных систем. Их принципы используются повсеместно: от микроконтроллеров в бытовой технике до процессоров в суперкомпьютерах. Давайте разберемся, как устроены эти гениальные автоматы и почему они так важны.
История создания автоматов Мура и Мили
В 1938 году американский математик Эдвард Мур опубликовал статью «О вычислительных возможностях релейно-контактных схем». В ней он впервые формализовал понятие конечного автомата и доказал, что любой автомат можно преобразовать в эквивалентный с минимальным числом состояний.
Эта работа положила начало теории автоматов. А в 1943 году Мур предложил использовать такие автоматы, названные впоследствии автоматами Мура, для проектирования цифровых вычислительных машин.
Автоматы Мура стали первыми цифровыми автоматами с хранимым состоянием, положившими начало цифровой революции.
Параллельно в СССР выдающийся ученый Михаил Мили разрабатывал свою теорию дискретных автоматов. В 1952 году он опубликовал работу «Расточная логика, вероятные автоматы, расчет чисел», в которой предложил альтернативный подход.
Его автоматы Мили отличались тем, что формировали выходной сигнал на основании текущего входного сигнала и предыдущего состояния. Это позволяло упростить и ускорить работу автоматов.
Так зародились два подхода к построению цифровых автоматов, которые активно применяются и развиваются по сей день. Давайте разберемся в их принципах работы.
Принцип работы автоматов Мура и Мили
В общем виде автомат можно представить так:
Здесь:
- a(t) – входной сигнал в момент времени t
- b(t) – выходной сигнал в момент времени t
- c(t) – внутреннее состояние автомата в момент времени t
Главное отличие автоматов Мура и Мили – это способ формирования выходного сигнала b(t):
- В автомате Мура выход зависит от текущего состояния:
b(t) = f(c(t))
- В автомате Мили выход зависит от входного сигнала и предыдущего состояния:
b(t) = f(a(t), c(t-1))
Это важное отличие определяет особенности работы каждого типа автоматов.
Например, автомат Мура будет формировать выходной сигнал, пока не изменит свое состояние. А автомат Мили сразу отреагирует на новый входной сигнал вне зависимости от длительности предыдущего.
При этом автоматы Мура и Мили могут быть взаимно преобразованы так, чтобы решать одни и те же задачи. Это очень удобно!
Давайте рассмотрим, как можно описывать и задавать работу таких автоматов.
Методы задания автоматов Мура и Мили
Существует несколько способов задания автоматов:
- Табличный
- Графы автоматов
- Логические уравнения
Рассмотрим подробнее графы автоматов Мура и Мили. Это наглядный способ задания, при котором:
- Вершины графа – состояния автомата
- Дуги графа – переходы между состояниями
На дугах графа автомата Мили указываются:
- Входной сигнал
- Выходной сигнал
А на дугах графа автомата Мура – только входной сигнал. Выход указывается непосредственно в вершинах:
Если в графе из каждой вершины исходят все возможные переходы по входным сигналам – это полный автомат. Иначе он неполный.
Зная граф автомата, можно определить его выходной сигнал для любой последовательности входных воздействий. Это очень удобно при проектировании цифровых систем.
Кроме того, графы позволяют наглядно преобразовывать автомат Мура в эквивалентный автомат Мили и наоборот. А это открывает еще больше возможностей для их практического применения.
Применение автоматов Мура и Мили
Автоматы Мура и Мили широко используются в проектировании цифровых устройств, таких как:
- Микроконтроллеры
- Системы управления
- Программируемые логические интегральные схемы (ПЛИС)
Они позволяют легко описывать сложные алгоритмы работы таких систем.
Например, с помощью автомата Мура можно спроектировать систему управления светофором на пешеходном переходе:
А используя автомат Мили – создать алгоритм работы торгового автомата, принимающего монеты и выдающего товар:
Такие автоматы могут быть как программно, так и аппаратно реализованы в цифровых устройствах. Это делает их еще более универсальным инструментом.
Однако в некоторых случаях возникает задача поиска оптимального, минимального автомата в классе эквивалентных. Рассмотрим, как это можно сделать.
Поиск минимального автомата
Из теории известно, что любой автомат можно преобразовать в эквивалентный с меньшим числом состояний. Такой автомат называют минимальным.
Например, два автомата с разным числом состояний могут давать одинаковый выходной сигнал для одной и той же последовательности входных воздействий. Тогда они эквивалентны.
Чтобы найти минимальный автомат, можно использовать специальные алгоритмы минимизации. Среди них:
- Алгоритм Квайна
- Алгоритм минимизации переходов
- Метод таблиц Карнаухова-Патерсона
Эти методы позволяют для заданного автомата автоматически получить эквивалентный с наименьшим числом состояний.
Существуют также программные средства, реализующие подобные алгоритмы. Они упрощают процесс минимизации автоматов.
Применение минимальных автоматов позволяет сократить аппаратные или вычислительные затраты при реализации цифровых систем.
Поэтому поиск оптимального автомата часто является важной задачей при проектировании.
Применение автоматов Мура и Мили
Автоматы Мура и Мили находят широкое применение не только в цифровой технике, но и в других областях.
Применение в искусственном интеллекте
Конечные автоматы используются в искусственных нейронных сетях. Они могут моделировать работу нейронов мозга, автоматизируя процессы распознавания образов, речи, принятия решений.
Например, на основе автоматов Мура созданы нейросети для распознавания рукописного текста. А автоматы Мили применяются в системах машинного перевода с одного языка на другой.
Моделирование дискретных процессов
С помощью автоматов можно имитировать работу сложных дискретных систем: логистики, производства, транспорта. Это позволяет оптимизировать их функционирование.
Например, автомат Мура удобно использовать для моделирования пропускной способности железнодорожных путей в зависимости от интенсивности движения.
Генерация случайных последовательностей
Автоматы Мура и Мили могут выступать в качестве генераторов псевдослучайных чисел и последовательностей. Это важно для имитации случайных процессов, шифрования данных.
К примеру, автомат Мили с 4 состояниями и правильно подобранными правилами переходов дает хорошую случайную последовательность чисел.
Проверка правильности программ
С помощью автоматов можно проверять выполнение программ по заданным алгоритмам, находить ошибки и уязвимости.
Например, автомат Мура позволяет выявить отклонения в работе программы управления роботом от заданной последовательности действий.
Языки программирования на основе автоматов
Существуют специальные языки программирования, использующие автоматы Мура и Мили для описания алгоритмов.
К примеру, Verilog HDL основан на конечных автоматах и активно применяется для программирования ПЛИС, ПАИС и микроконтроллеров.
Как видим, области применения автоматов постоянно расширяются. Это очень мощный и гибкий инструмент!