Алгоритм Устранение недостижимых состояний КА
Вход: КА .
Выход: КА .
Шаг 1. Поместить начальное состояние КА в список достижимых состояний , т.е. .
Шаг 2. Для новых элементов списка достижимых состояний пополнить список группой их состояний-приемников, отсутствующих в списке, т.е. .
Шаг 3. Повторить шаг 2, пока список достижимых состояний не перестанет меняться. То есть, если , то i = i +1, иначе .
Шаг 4. Исключить из множества Q состояний КА все состояния, отсутствующие в списке Qд достижимых состояний, т.е. .
Шаг 5. Исключить недостижимые заключительные состояния и функции переходов, содержащие недостижимые состояния, т.е. , .
Пример Устранить недостижимые состояния КА , где Q = { A, B, C, D, E, F, G }, T = { a, b }, H = { A }, Z = { D, E } и функция переходов задана таблицей 2.4. Граф исходного КА М представлен на рисунке 2.3.
Таблица 2.4 – Функция переходов конечного автомата M
F | A | B | C | D | E | F | G |
a | B | C | B | D | F | ||
b | C | D | E | E | D | G | E |
Рисунок 2.2 – Граф исходного конечного автомата М
Последовательность устранения недостижимых состояний КА имеет вид:
Q 0 = { A };
Q 1 = { A, B, C };
Q 2 = { A, B, C, D, E };
Q 3 = { A, B, C, D, E }; т.к. Q 2 = Q 3, то Q д = { A, B, C, D, E }.
Q н = { F, G }; = { A, B, C, D, E }; = { D, E }.
Функция переходов автомата представлена в таблице 2.6.
Таблица 2.5 - Функция переходов автомата
F | A | B | C | D | E |
a | B | C | B | ||
b | C | D | E | E | D |
|
Рисунок 2.3 - Граф КА после устранения недостижимых состояний