- •Элементы математической логики
- •Составные высказывания
- •Простейшие связки
- •Логические отношения
- •Варианты импликации
- •Элементы математической логики
- •Эти утверждения называются теоремой о функциональной полноте.
- •Подмножества
- •Множества и отображения
- •Способы задания множеств
- •Операции над множествами
- •Соотношение между множествами и составными высказываниями
- •Множества и отображения
- •Соотношения между высказываниями и соответствующими им множествами истинности
- •Законы для объединения и пересечения:
- •Множества и отображения
- •Кортежи и декартово произведение множеств
- •Бинарные отношения
- •Отображение множеств
- •Функции
- •Элементы комбинаторного анализа
- •Основные правила комбинаторики
- •Перечислительная комбинаторика или теория перечислений
- •Логика предикатов или логика первого порядка
- •Предикаты
- •Применение предикатов в алгебре
- •Булева алгебра предикатов
- •Кванторы
- •Формулы логики предикатов
- •Логика предикатов или логика первого порядка
- •Равносильные формулы логики предикатов
- •Элементы теории графов
- •Степень вершины
- •Изоморфизм графов
- •Элементы теории графов
- •Способы задания графов
- •Аналитический способ задания графов
- •Эйлеровы графы
- •Гамильтоновы графы
- •Элементы теории автоматов
- •Способы задания конечного автомата
- •Табличное задание автомата
- •Задание автомата диаграммой Мура
- •Задание конечного автомата системой булевых функций
- •Элементы теории автоматов
- •Примеры конечных автоматов
- •Канонические уравнения автомата
- •Пример 1:
Способы задания конечного автомата
Существует несколько эквивалентных способов задания абстрактных автоматов, среди которых можно назвать три: табличный, геометрический и функциональный.
Табличное задание автомата
Из определения автомата следует, что его всегда можно задать таблицей с двумя входами, содержащей т строк и п столбцов, где на пересечении столбца q и строки а стоят значения функций ф(а,; с/у); \|/(аг-; ду).
о\2
qi
qi
...
qn
О]
9(ai;2i);
v(ai;?i)
<p(ai;
q.i)>
4'(«i; q.i)
...
9(ai;gn);
y(ai;gn)
...
...
...
...
...
а;
<р(аг,
qi); \>(аг, qA
Ф(а,;
qj);
\/(a,-;
q})
...
cp(«b
Qn)l
Qn)
...
...
...
...
...
4>(ат;
qi); qA
ф(^т?
Qj)y
ф(&т>
Qj)
...
ф(&т5
Qn)\
Qn)
Задание автомата диаграммой Мура
Другой способ задания конечного автомата — графический. При этом способе состояния автомата изображают кружками, в которые вписывают символы состояний qj (j = 1,..., п). Из каждого кружка проводится т стрелок (ориентированных ребер) взаимно-однозначно соответствующих символам входного алфавита Х{а\, ...,ат}. Стрелке, соответствующей букве щ € X и выходящей из кружка г/, с Q, приписывается пара (щ, 1|/(аг-; <?/))> причем эта стрелка ведет в кружок, соответствующий ф(щ, (УуО-
Полученный рисунок называется графом автомата или, диаграммой Мура. Для не очень сложных автоматов этот способ более нагляден, чем табличный.
Задание конечного автомата системой булевых функций
Третий способ задания конечного автомата А = (Х\ Q-, Y; ср; ц/), заданного таблицей или диаграммой Мура, состоит в определении системы булевых функций.
Изложим алгоритм этого способа задания.
Находим числа к, г, s, удовлетворяющие условиям 2k~1 < т < 2fe; 2г~г <n^2r; 2s~l <p^2s, где т = |Х|; п = \Q\; р = |У|.
Очевидно, что k,r,s соответственно равны числу разрядов в двоичном представлении чисел т, п, р. Например, если т = 5, п = 17, р = 3, то k = 3, г = 5, s = 2.
Кодирование состояний входных и выходных символов исходного автомата.
Каждому qj € Q взаимно-однозначно ставим в соответствие двоичную последовательность длины г — двоичный кода (g) = Z\Z2.-.zr. Аналогично каждому щ £ X и каждому b), € Y ставим взаимно однозначно в соответствие двоичные последовательности (3(a) = x^X2...X)t; у(Ь) = У1У2--Уь-
Отметим, что кодирование состояний, входных и выходных символов можно провести многими способами. При этом некоторые последовательности (коды) могут оказаться неиспользованными.
Составляем следующую таблицу:
Код ВХОДНОГО символа
Код текущего СОСТОЯНИЯ
Код следующего состояния
Код выходного символа
Xi
х2
...
Xk
2l
22
...
2r
<pl
ф2
...
фг
m
V2
...
Vs
0
0
...
0
0
0
...
0
Pi
Р2
Р*
ai
a2
ar
а\
a'2
a'r
7i
72
7s
1
1
...
1
1
1
...
1
Эта таблица содержит к + г + г + s столбцов и 2Ь+Г строк. В первых к + г столбцах выписаны все наборы длины к + г. Каждый такой набор соответствует паре ((3, а), где а — возможный код некоторого состояния, (3 — код входного символа.
Заполнение последних столбцов в таблице (предыдущий шаг).
Для каждой пары (а,, с/,), где а* G X; q{ G Q, находим код Р(а) и а(q).
По таблице автомата (или диаграмме Мура) определяем ф(а; q) = q' и \|>(a;q) = b. Затем находим код а (г/) = о\ а'2.. .а', и код у([3) = yiY2...ys- В строку таблицы, соответствующую набору
Ръ Рй* — 9 Р/г> > 0^2>
дописываем набор
«1» ос'2, ...,a'r,yi,y2, ...,ys.
Определение системы булевых функций.
После выполнения предыдущего шага может оказаться, что не все строки в таблице заполнены. Это произойдет в том случае, если хотя бы одно из чисел т, п не является степенью 2. Таким образом, функции фь ф2,фг, Фъ ф2>Vs окажутся не полностью определенными — на некоторых наборах их значения не определены. Тогда мы их доопределяем произвольным образом. Как правило, доопределение функций производят так, чтобы получившиеся полностью определенные функции удовлетворяли тем или иным условиям оптимальности, например представлялись минимальными ДНФ.
После выполнения этого шага исходный автомат будет задаваться системой полностью определенных булевых функций
{фьф2, ...,фг,фьф2> ■ ■ -»Vs}•
