
- •Основы теории автоматов
- •1. Множества
- •1.1. Основные понятия теории множеств
- •1.2. Операции над множествами
- •2. Логика буля
- •2.1. Булевы функции
- •2.2. Постулаты и основные законы булевой алгебры
- •2.3. Формы представления булевых функций
- •2.4. Минимизация булевых функций
- •3. Формальная логика
- •3.1. Исчисление высказываний
- •3.2. Предикаты и кванторы
- •4. Графы
- •4.1. Происхождение графов
- •4.2. Основные определения
- •4.3. Методы представления графов в аналитической форме
- •4.4. Пути и контуры в графах
- •4.5. Деревья
- •5 . Конечные автоматы
- •5.1. Понятие автомата
- •5.2. Представление конечных автоматов
- •5.3. Типы конечных автоматов
- •5.4. Эквивалентность конечных автоматов: теорема Мура
- •5.5. Минимизация конечных автоматов
- •5.6. Минимизация неполных конечных автоматов
- •5.7. Примеры конечных автоматов
- •5.8. Моделирование автоматных систем сетями Петри
- •6. Алгоритмы и машины тьюринга
- •6.1. Понятие алгоритма
- •6.2. Основные требования к алгоритмам
- •6.3. Блок-схемы алгоритмов
- •6.4. Формализация понятия алгоритма
- •6.5. Машина Тьюринга
- •6.6. Примеры машин Тьюринга
- •Библиографический список
- •Оглавление
5.7. Примеры конечных автоматов
Триггер является простейшим автоматом. Рассмотрим два наиболее распространенных типа триггеров: RS-триггер и счетный триггер. Состояния этих автоматов являются их выходом, т.е. это автоматы Мура. В RS-триггере два входа: Reset и Set. Вход Reset сбрасывает, a Set устанавливает единичное состояние автомата (рис. 5.12а).
а) б)
Рис. 5.12
В счетном триггере (рис. 5.12б) единственный счетный вход переключает автомат из нулевого состояния в единичное и обратно. Подробно аналогичный триггер был описан в разделе 5.2.
Электронные часы являются одним из наиболее широко применяемых в быту электронных приборов, управление которыми построено на основе модели конечного автомата. Простейшие электронные часы обычно показывают время, дату и дают возможность установки времени и даты. Управление этими возможностями производится встроенным автоматным преобразователем, входами которого являются события нажатия внешних управляющих кнопок. Структурная схема электронных часов показана на рис. 5.13
Рис.5.13
Управляющие
кнопки на часах обозначены «а» и «b».
Кроме устройства
отображения, высвечивающего цифры, а
также схемы отображения,
преобразующей двоично-десятичные коды
цифр в семиразрядный
код управления светодиодами, на схеме
показаны четыре
регистра отображения. Эти регистры
хранят двоично-десятичные коды четырех
цифр, которые в настоящий момент
высвечиваются на циферблате
с помощью схемы и устройства отображения.
Также показаны комбинационные
схемы «ИЛИ», пропускающие любой из
разрешенных кодов
на регистры отображения и шина
«Управление», разрешающая в каждой
ситуации выдачу на регистры отображения
сигналов либо
секундомера, либо часов, либо даты. На
схеме также присутствуют регистры
секундомера и генератор тиков, который
выдает сигнал с частотой 1 Гц.
В последовательностныхавтоматах одна и та же совокупность состояний входных символов может в разные тактовые моменты цикла определять разные состояния выходных функций. Например, на одном из этапов циклаτvпри совокупности входовx1= 1,x2= 0,x3= 0 выходная функцияy1 = 0, а на каком-либо другом этапе циклаτv+iпри такой же совокупности входов выходная функцияy1 = 1.Рис. 5.14
Устройство управления, организующее работу всех элементов электронных часов, построено на основе модели конечного автомата. Граф переходов этого автомата изображен на рис. 5.14. В начальном состоянии отображается время. Это значит, что двоичный код этого состояния (после дешифрирования) открывает выходы четырех двоично-десятичных регистров, хранящих единицы и десятки минут и единицы и десятки часов на входы четырех комбинационных схем «ИЛИ».
Конечный автомат реагирует на событие нажатия кнопки «а» на корпусе часов переходом в состояние «Установка минут», в котором событие нажатия кнопки «b» вызовет увеличение числа, хранящегося в регистрах, отведенных для минут. При этом переносы из регистра секунд и в регистр, отведенный под хранение числа, блокируются. Событие нажатия кнопки «b» в состоянии «Установка месяца» вызовет увеличение числа, хранящегося в регистрах, отведенных для месяца.
Реактивные системы. Следует выделить особый класс систем, который назван «реактивными», или «реагирующими» системами (reactive systems). Это системы, взаимодействующие с окружением и реагирующие на поток внешних событий. Они состоят из нескольких подсистем, и взаимодействие подсистем является частью взаимодействия системы с ее окружением. Микрокалькулятор, электронные часы, система управления проходом в метро – все это реактивные системы. Модель конечного автомата является удобным средством описания таких систем: она обладает ясностью семантики, наглядностью и выразительностью и в то же время достаточно строга и формальна. Однако классическое графическое представление конечных автоматов страдает рядом недостатков. Главным недостатком является отсутствие понятия времени. Другие недостатки – отсутствие иерархии состояний, обобщения переходов, средств выражения прерываний и продолжения нормальной работы после их обработки.
Простым расширением модели классического конечного автомата является введение понятия «внешнее событие», наступление которого можно считать условием перехода автомата из состояния в состояние. Такими событиями могут быть получение на вход автомата символа или же целого сообщения, прерывание, событие срабатывания таймера. С этим последним типом событий естественно связывается понятие времени в автомате. Действительно, введение понятия времени проще всего связать с ограничением времени пребывания автомата в конкретном состоянии и такое ограничение задать таймером. Событие срабатывания таймера вызовет переход автомата в другое состояние.
Рис.5.15
Рассмотрим в качестве примера задачу спецификации процесса, определяющего одинарный либо двойной щелчок мыши. Двойным щелчком считается пара нажатий на клавишу мыши, разделяемая менее чем τ = 250 мс. На рис. 5.15 представлен граф переходов автомата, решающего эту задачу. По первому щелчку мыши (click) автомат переходит в состояние Q1, и если до истечения τ =250 мс на вход автомата поступит еще один сигнал-событие click, то на выход будет выдан сигнал «double», в противном случае - сигнал «single».
Во многих приложениях обычная модель конечного автомата расширяется путем добавления переменных. Для одной из переменных с конечной областью определения может использоваться специальное название state – «состояние». Возможные состояния такого автомата характеризуются наборами значений всех переменных соответствующей программы. Так достигается соответствие между программным представлением поведения реактивной системы и графическим представлением состояний и переходов.
Еще одним широко применяемым расширением классической модели конечного автомата являются диаграммы состояний (Statecharts), введенные Д. Харелом. Особенностью такой «карты состояний» является наличие гиперсостояния, объединяющего несколько состояний, имеющих идентичную реакцию на одно и то же событие. Управление при возврате в гиперсостояние передается тому состоянию, в котором система находилась последний раз прежде, чем она покинула данное гиперсостояние. Переходы между состояниями в такой модели вызываются либо условиями (наступлением истинности предиката над внутренними переменными автомата, например, условие исчерпания буфера), либо событиями. Событиями в диаграммах состояний являются внешние события автомата. Обычно это прием управляющих или информационных сообщений из окружающей среды.
Рассмотрим в качестве примера использования Statecharts простейший автомат, регулирующий пешеходный переход. Внешние события автомата – это события нажатия пешеходами кнопки-запроса на тротуаре и исчерпание тайм-аута. Автомат естественно строить как автомат Мура, в котором выход – регулирование светофора и разрешающий сигнал на переход – это потенциальные сигналы, являющиеся функциями состояния (рис. 5.16).
Рис. 5.16
Выход автомата в каждом состоянии представляется парой:<Светофор транспорта; светофор пешеходов>. Например, в состоянии Q1 управляющий автомат устанавливает <З;К>, т.е. включенными зеленый свет транспорту и красный – пешеходам; в состоянии Q6 установлен <Ж,К;К>, т.е. желтый и красный свет транспорту (приготовиться) и красный – пешеходам. В начальном состоянии Q0 разрешен проезд транспорту, а пешеходам движение запрещено. В состояниях Q4, Q5 при запрещающем сигнале транспорту зеленый сигнал пешеходам мигает каждые t0 секунд в течение t2 секунд. Запрос на переход принимается только в состоянии Q0, в остальных состояниях он игнорируется. Задержки (тайм-ауты t0 – t3) устанавливаются в момент перехода автомата в данное состояние, по исчерпании тайм-аута автомат переходит в следующее состояние. В гиперсостоянии G, объединяющем пару состояний Q4 и Q5, автомат находится ровно t2 секунд: внутренние переходы не срывают тайм-аута. Именно для этого здесь удобно использовать гиперсостояние G.
Конечный автомат как преобразователь информации является мощной моделью, однако существуют алгоритмические проблемы, которые не могут быть решены с помощью конечного автомата. Одной из таких проблем является проблема умножения двоичных чисел.
Теорема 5.2. Умножение двоичных чисел не может быть выполнено с помощью конечного автомата.
Доказательствотеоремы проведем от противного.
Предположим, что такой конечный автомат существует. Пусть он имеет n состояний. Подадим на вход автомата два одинаковых двоичных числа 2n+1. Каждое из этих входных чисел записывается n+2 двоичными разрядами. Автомат, выполняющий умножение, получает на вход n+1 пар нулей, за которыми следует пара единиц – последовательное представление пары входных аргументов. Автомат, если он существует, должен выдать в качестве результата число 22n+2 , т.е. он должен выдать 2n+2 нуля, за которыми следует единица. Иными словами, после того, как автомат получит n+2 входных сигнала, он, перейдя в автономный режим, должен выдать еще n нулей, за которыми он должен выдать единицу (см. рис. 5.17).
Рис. 5.17
Однако очевидно, что никакой конечный автомат с n состояниями, работая в автономном режиме (т.е. под действием только входных сигналов синхронизации), не может выдать на выход n нулей, за которыми следует единица, так как максимальный цикл в автомате с n состояниями не превышает n.
Невозможность построения конечного автомата для решения этой проблемы является отражением того, что объем информации, которую должен был бы «помнить» такой автомат, неограниченно растет с ростом значений исходных чисел. В то же время для выполнения задачи сложения любых двух двоичных чисел автомату достаточно иметь только два состояния, одно из которых помнит наличие, а другое – отсутствие переноса в следующий разряд.