Преобразование недетерминированного неоптимального автомата в детерминированный оптимальный, страница 2


Критерии 2, 3. Преобразование недетерминированного КА в детерминированный

Подготовка: формирование начального неотмеченного множества вершин

Прямоугольная выноска: В УП нет рисунков
 


образование множества неотмеченных множеств вершин (вначале включающего только начальное множество)

и вначале пустого множества отмеченных множеств вершин

Основной цикл: перебор всех неотмеченных множеств в произвольном порядке

Первый шаг: удаление взятого множества вершин из множества неотмеченных множеств,

построение εзамыкания взятого множества

(учитываются только εпереходы в рабочие вершины)

Прямоугольная выноска: Отм. мн-во
 


Второй шаг: поиск сформированного εзамыкания в множестве отмеченных множеств, присвоение отметки (номера) и добавление в множество отмеченных множеств, если в нем нет в точности такого же множества вершин

Третий шаг (выполняется только для вновь добавленного отмеченного множества):

определение набора символов, помечающих все выходящие из вершин множества дуги {a,b, … ε} (в том числе учитывается и символ ε, помечающий дуги переходов в финальные вершины)

Внутренний цикл: перебор всех символов набора, построение новых неотмеченных множеств

 


Запоминание дуги перехода из отмеченного множества в новое не отмеченное множество по символу a

После завершения основного цикла:

1.  Сопоставление каждому отмеченному множеству вершин исходного графа в точности одной вершины нового графа. Если в отмеченном множестве есть хотя бы одна финальная вершина, то и ассоциированная с ним вершина нового графа считается финальной.

2.  Формирование дуг переходов в новом графе на основе информации о переходах из одного множества вершин в другое.

 



Критерий 4. Обнаружение и ликвидация тупиковых состояний


Т.1.  С каждой строкой i управляющей таблицы сопоставляется список Si (в начальный момент – пустой) финальных состояний, достижимых из данного состояния;

Т.2.  Начиная с нулевой, просматриваются все строки таблицы;

Т.3.  В каждой строке (пусть ее номер n) просматриваются все клетки;

Т.4.  Если клетка не пуста и содержит номер финального состояния, то этот номер добавляется к списку Sn, если его нет в этом списке;

Т.5.  Если клетка не пуста и содержит номер рабочего состояния k (k не равно n), то все элементы списка Sk финальных состояний строки k добавляются к списку Sn финальных состояний строки n (естественно, если их нет в списке Sn);

Т.6.  Если была просмотрена последняя строка рабочей зоны и в процессе просмотра изменился хотя бы один список Si, то нужно вернуться к шагу Т.2, иначе процесс завершается.

Тупиковыми будут состояния с пустыми списками Si

Все тупиковые состояния (вместе с переходами в эти состояния и из этих состояний) должны быть удалены.

Критерий 5. Обнаружение и ликвидация недостижимых состояний

Н.1.  Сопоставим с каждой строкой рабочей зоны управляющей таблицы (кроме нулевой строки) отметку «недостижима», а с нулевой строкой – отметку «достижима»;

Н.2.  Начиная с нулевой, просмотрим все «достижимые» строки таблицы;

Н.3.  В каждой такой строке просмотрим все клетки и, если в клетке находится номер рабочего состояния k, то значение отметки строки k изменим на значение «достижима»;

Н.4.  Если просмотрена последняя строка таблицы и хотя бы для одной строки отметка изменилась со значения «недостижима» на значение «достижима» – вернуться к шагу Н.2, иначе процесс завершается.

Все недостижимые состояния (вместе с переходами в эти состояния и из этих состояний) должны быть удалены.

Критерий 6. Обнаружение и слияние эквивалентных состояний

Эквивалентными являются такие состояния, все переходы из которых либо строго совпадают, либо различаются только переходами друг на друга.

 


Критерий 7. Слияние одинаковых колонок


ГСП и УТ детерминированного и почти оптимального КА: