Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Эквивалентность автоматов / Дополнение к отчету

.docx
Скачиваний:
14
Добавлен:
28.06.2014
Размер:
373.87 Кб
Скачать

Типовой расчет

По курсу ТА (Теория Алгоритмов)

ТЕМА

«Сравнение двух конечных автоматов

на эквивалентность»

Работу выполнили:

Бычков А. А-13-08

Апухтин М. А-13-08

Техническое задание.

Задать два конечных автомата любым выбранным способом. Сравнить полученные автоматы на эквивалентность. (Автоматы называются эквивалентными, если они представляют один и тот же язык).

Реализация.

Конечный автомат можно представить в виде взвешенного направленного графа, причем из каждой вершины должно выходить столько ребер, сколько букв используется в алфавите. Взвешенный граф однозначно задается матрицей А размерностью nxn такой, что Ai,j = весу ребра, идущего из i в j и Ai,j = 0, если из вершины i не выходят ребра в вершину j. Если вершина Е конечная, то она помечается знаком +.

Задав эту матрицу для автоматов мы сможем сравнить их на эквивалентность.

Реализацию программы можно разделить на две части: задание матрицы ицидентности для автоматов и написание алгоритма проверки эквивалентности.

Задание автомата можно реализовать разными способами, но наиболее наглядным видится графическое представление автомата в виде графа. Областью отрисовки графа сделаем объект Picturebox. Зададим флажки, которые показывают возможность добавления вершин на Picturebox, и показывают является ли добавляемая вершина конечной. При клике мышкой на Picturebox на этом месте появляется новая вершина, которая также представляет собой объект Picturebox. Добавление и удаление ребер происходит при помощи средств, расположенных выше. При нажатии на кнопку «Таблица» происходит преобразование графического представления графа в таблицу, удобную для сравнения автоматов.

Когда оба автомата заданы, можно сравнить их путем нажатия кнопки «сравнить», вследствие чего будет выдано сообщение о результате сравнения, либо сообщение об ошибке. Алгоритм сравнения состоит в построении таблицы, столбцы которой соответствуют различным буквам алфавита, а строки – достижимым парам номеров состояний этих автоматов при одновременной подаче на их входы одних и тех же последовательностей символов алфавита . Начальная строка соответствует паре . В общем случае -й элемент строки , , , есть пара номеров состояний, соответственно, первого и второго автоматов, в которые они переходят из, соответственно, -го и -го состояний при подаче на входы автоматов символа . Построение продолжается путем включения новых строк для всех полученных при построении таблицы пар, для которых соответствующая строка еще не была включена в таблицу. Возможны два варианта окончания работы алгоритма построения таблицы:

  • ввиду отсутствия в ней пар, для которых еще не была построена строка значений, и

  • если при построении была получена «плохая» пара , такая, что -ое состояние является заключительным состоянием автомата , а -ое состояние не является заключительным состоянием автомата , или наоборот.

В первом случае автоматы эквивалентны, а во втором – нет («история» получения «плохой» пары дает пример слова, входящего в язык, представленный одним из автоматов, и не входящего в язык, представленный другим автоматом).

Программа написана на языке C# в Visual Studio 2008

Личный вклад.

Бычков А. – графическое представление автоматов и представление их в виде таблицы.

Апухтин М. – алгоритм сравнения двух конечных автоматов на эквивалентность.

Тестовый пример.

(Более четкие изображения приложены в архиве)