Эквивалентность автоматов / Дополнение к отчету
.docx
Типовой расчет
По курсу ТА (Теория Алгоритмов)
ТЕМА
«Сравнение двух конечных автоматов
на эквивалентность»
Работу выполнили:
Бычков А. А-13-08
Апухтин М. А-13-08
Техническое задание.
Задать два конечных автомата любым выбранным способом. Сравнить полученные автоматы на эквивалентность. (Автоматы называются эквивалентными, если они представляют один и тот же язык).
Реализация.
Конечный автомат можно представить в виде взвешенного направленного графа, причем из каждой вершины должно выходить столько ребер, сколько букв используется в алфавите. Взвешенный граф однозначно задается матрицей А размерностью nxn такой, что Ai,j = весу ребра, идущего из i в j и Ai,j = 0, если из вершины i не выходят ребра в вершину j. Если вершина Е конечная, то она помечается знаком +.
Задав эту матрицу для автоматов мы сможем сравнить их на эквивалентность.
Реализацию программы можно разделить на две части: задание матрицы ицидентности для автоматов и написание алгоритма проверки эквивалентности.
Задание автомата можно реализовать разными способами, но наиболее наглядным видится графическое представление автомата в виде графа. Областью отрисовки графа сделаем объект Picturebox. Зададим флажки, которые показывают возможность добавления вершин на Picturebox, и показывают является ли добавляемая вершина конечной. При клике мышкой на Picturebox на этом месте появляется новая вершина, которая также представляет собой объект Picturebox. Добавление и удаление ребер происходит при помощи средств, расположенных выше. При нажатии на кнопку «Таблица» происходит преобразование графического представления графа в таблицу, удобную для сравнения автоматов.
Когда оба автомата заданы, можно сравнить их путем нажатия кнопки «сравнить», вследствие чего будет выдано сообщение о результате сравнения, либо сообщение об ошибке. Алгоритм сравнения состоит в построении таблицы, столбцы которой соответствуют различным буквам алфавита, а строки – достижимым парам номеров состояний этих автоматов при одновременной подаче на их входы одних и тех же последовательностей символов алфавита . Начальная строка соответствует паре . В общем случае -й элемент строки , , , есть пара номеров состояний, соответственно, первого и второго автоматов, в которые они переходят из, соответственно, -го и -го состояний при подаче на входы автоматов символа . Построение продолжается путем включения новых строк для всех полученных при построении таблицы пар, для которых соответствующая строка еще не была включена в таблицу. Возможны два варианта окончания работы алгоритма построения таблицы:
-
ввиду отсутствия в ней пар, для которых еще не была построена строка значений, и
-
если при построении была получена «плохая» пара , такая, что -ое состояние является заключительным состоянием автомата , а -ое состояние не является заключительным состоянием автомата , или наоборот.
В первом случае автоматы эквивалентны, а во втором – нет («история» получения «плохой» пары дает пример слова, входящего в язык, представленный одним из автоматов, и не входящего в язык, представленный другим автоматом).
Программа написана на языке C# в Visual Studio 2008
Личный вклад.
Бычков А. – графическое представление автоматов и представление их в виде таблицы.
Апухтин М. – алгоритм сравнения двух конечных автоматов на эквивалентность.
Тестовый пример.
(Более четкие изображения приложены в архиве)