ПЗ 14. Теория конечных автоматов
Задача. Теория будет ниже.
Для конечного автомата, заданного таблично, со множеством состояний {1,2,3,4,5,6,7,8,9}, входным алфавитом {a,b} и выходным алфавитом {x, y}:
Построить эквивалентный минимальный автомат, изобразить в виде графа
Проверить работу исходного и минимального автоматов над словом «bbabaab».
Конечный автомат
A/Q |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
a |
2, x |
4, x |
2, x |
2, x |
9, x |
9, y |
8, x |
7, x |
7, x |
b |
3, x |
6, x |
1, x |
3, y |
3, y |
7, y |
1, y |
6, x |
6, x |
Решение:
Шаг 1. Строим треугольную матрицу(таблицу) как показано ниже и заполняем её.
Снизу нумерация начинается с 1 и заканчивается n-1, где n- количество состояний (номер последнего столбца)
По вертикали слева начиная с 2 и до n.
2 |
|
|
|
|
|
|
|
|
|
3 |
|
|
|
|
|
|
|
|
|
4 |
|
|
|
|
|
|
|
|
|
5 |
|
|
|
|
|
|
|
|
|
6 |
|
|
|
|
|
|
|
|
|
7 |
|
|
|
|
|
|
|
|
|
8 |
|
|
|
|
|
|
|
|
|
9 |
|
|
|
|
|
|
|
|
|
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
|
Смотрим первый столбец исходной таблицы и сравниваем с каждым последующим.
1 |
2, x |
3, x |
На числа внимание не обращаем, сравниваем только буквы. Если буквы совпадают, то в соответствующую ячейку таблицы ничего не ставим, а если же значения не совпадают, то ставим крестик в треугольную матрицу соответствующей ячейки.
Первый столбец со вторым
Например, тут значения совпадают, следовательно, в ячейке (1,2) мы ничего не ставим.
1 |
2 |
2, x |
4, x |
3, x |
6, x |
Первый столбец с третьим
1 |
3 |
2, x |
2, x |
3, x |
1, x |
Тут значения совпали
Первый столбец с четвертым
1 |
4 |
2, x |
2, x |
3, x |
3, y |
Значения не совпали, следовательно, в ячейку (1,4) ставим крестик.
Так подробно далее рассматривать не будем.
! Обратите внимание, что каждый раз вы рассматриваем столбец только с теми столбцами, которые находятся правее. Так предыдущие пары столбцов мы уже рассмотрели.
1 столбец не совпал с 4,5,6,7, следовательно, в этих ячейка ставим крестики.
2 столбец не совпал с 4,5,6,7, следовательно, в этих ячейка ставим крестики.
3 столбец не совпал с 4,5,6,7, следовательно, в этих ячейка ставим крестики.
4 столбец не совпал с 6,8,9, следовательно, в этих ячейка ставим крестики.
5 столбец не совпал с 6,8,9, следовательно, в этих ячейка ставим крестики.
6 столбец не совпал с 7,8,9, следовательно, в этих ячейка ставим крестики.
7 столбец не совпал с 8,9, следовательно, в этих ячейка ставим крестики.
8 столбец осталось проверить только с 9 столбцом, они совпали, следовательно, ничего нового не ставим.
Так подробно расписывать в тетрадках не нужно. Строим сразу таблицу, показанную ниже.
2 |
|
|
|
|
|
|
|
|
|
3 |
|
|
|
|
|
|
|
|
|
4 |
|
|
|
|
|
|
|
|
|
5 |
|
|
|
|
|
|
|
|
|
6 |
|
|
|
|
|
|
|
|
|
7 |
|
|
|
|
|
|
|
|
|
8 |
|
|
|
|
|
|
|
|
|
9 |
|
|
|
|
|
|
|
|
|
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
|
Шаг 2. Заполняем пустые ячейки.
В ячейку (1,2) вставляем данные из столбцов 1,2.
Ниже показаны наши столбцы 1 и 2.
1 |
2 |
2, x |
4, x |
3, x |
6, x |
2 4 3 6 |
Следовательно, в ячейку записываем только числа. Верхняя строка 2 4, нижняя 3 6.
В ячейку (1,3) вставляем данные из столбцов 1,3.
Ниже показаны наши столбцы 1 и 2.
1 |
3 |
2, x |
2, x |
3, x |
1, x |
2 4 3 6 |
2 |
2 4 3 6 |
|
|
|
|
|
|
|
|
3 |
2 2 3 1 |
4 2 6 1 |
|
|
|
|
|
|
|
4 |
|
|
|
|
|
|
|
|
|
5 |
|
|
|
2 9 3 3 |
|
|
|
|
|
6 |
|
|
|
|
|
|
|
|
|
7 |
|
|
|
2 8 3 1 |
9 8 3 1 |
|
|
|
|
8 |
2 7 3 6 |
4 7 6 6 |
2 7 1 6 |
|
|
|
|
|
|
9 |
2 7 3 6 |
4 7 6 6 |
2 7 1 6 |
|
|
|
|
7 7 6 6 |
|
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
|
! Желтым выделены повторения по строкам. По диагонали мы не выделяем.
Шаг 3. Сортируем строки, убираем повторения.
Убираем из ячеек пары, которые совпадают с координатой ячейки.
Например
В ячейке (1,6) была пара 1,6, следовательно, полностью убираем все из этой ячейки.
Было:
6 |
2 4 1 6 |
|
1 |
Стало:
6 |
|
|
1 |
В данном примере у нас такой случай содержит ячейка (1,3), так как в ней есть пара 3,1. То, что она записана наоборот, ничего страшного. Нам она подходит, поэтому мы полностью. Очищаем эту клетку. Также убираем все повторения, которые в предыдущем шаге были выделены желтым. Из ячейки (8,9) вычеркнули два повторения.
2 |
2 4 3 6 |
|
|
|
|
|
|
|
|
3 |
|
2 4 1 6 |
|
|
|
|
|
|
|
4 |
|
|
|
|
|
|
|
|
|
5 |
|
|
|
2 9
|
|
|
|
|
|
6 |
|
|
|
|
|
|
|
|
|
7 |
|
|
|
2 8 3 1 |
8 9 1 3 |
|
|
|
|
8 |
2 7 3 6 |
4 7 |
2 7 1 6 |
|
|
|
|
|
|
9 |
2 7 3 6 |
4 7 |
2 7 1 6 |
|
|
|
|
|
|
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
|
Шаг 4. Зачеркиваем ячейки с проставленными числами, если в ячейке стоит пара, которая соответствует уже вычеркнутой ячейке.
Сейчас более подробно и понятно на примере.
Смотрим, какие значения у нас остались в ячейке (1,2). Остались пары 2,4 и 3,6. Смотрим, соответствует ли какая-нибудь из этих пар вычеркнутой ячейке. В данном случае и ячейка (2,4) является вычеркнутой, и ячейка (3,6) также зачеркнута. Следовательно, ячейку (1,2) зачеркиваем. Но нам достаточно было, чтобы хотя бы одна из этих пар соответствовала вычеркнутой ячейке.
Смело вычеркиваем все ячейки, в которых записаны пары 2,4 или 3,6.
2 |
2 4 3 6 |
|
|
|
|
|
|
|
|
3 |
|
2 4 1 6 |
|
|
|
|
|
|
|
4 |
|
|
|
|
|
|
|
|
|
5 |
|
|
|
2 9
|
|
|
|
|
|
6 |
|
|
|
|
|
|
|
|
|
7 |
|
|
|
2 8 3 1 |
8 9 1 3 |
|
|
|
|
8 |
2 7 3 6 |
4 7 |
2 7 1 6 |
|
|
|
|
|
|
9 |
2 7 3 6 |
4 7 |
2 7 1 6 |
|
|
|
|
|
|
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
|
| 14 |
| 3901 |
| 4 ПРАКТИКА |
| 4 работа |
| 49 |
| 4лаба (с данными) |
| ADAPTATsIYa |
| Chto_-_to_poleznoe |
| DOC1228 |
| G |