Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Мінімізація детермінованих скінчених автоматів




В подальшому при програмуванні скінчених автоматів важливо мати справу з так званими "мінімальними автоматами". Мінімальним для даного скінченого автомата візьмемо еквівалентний йому автомат з мінімальною кількістю станів. Те, що скінчені автомати можна мінімізувати покажемо на наступному прикладі:

 

c q5

a, c a, c

q3 q4

q0

a, b

q2

 

Мал. 2.

Навіть при поверхневому аналізі діаграми переходів наведеного скінченого автомата видно, що вершини q3, q4 та q5 є "зайвими", тобто при їх вилученні новий автомат буде еквівалентний початковому. З наведеного вище прикладу видно, що для отриманого детермінованого скінченого автомата можна запропонувати еквівалентний йому автомат з меншою кількістю станів, тобто мінімізувати скінчений автомат. Очевидно що серед зайвих станів цього автомата є недосяжні та тупикові стани.

 

Означення. Стан q скінченого автомата М називається недосяжним, якщо на діаграмі переходів скінченого автомата не існує шляху з q0 в q.

Алгоритм. Пошук недосяжних станів. Спочатку спробуємо побудувати множину досяжних станів. Якщо Qm - множина досяжних станів скінченого автомата М, то Q\Qm - множина недосяжних станів. Побудуємо послідовність множин Q0, Q1, Q2, … таким чином, що:

П0. Q0 = { q0 }.

П1. Q1 = S0 È { q | q Î d(q0, a), для всіх а Î S }.

П2. Qi = Si-1 È { q | q Î d(qj, a), qj Î Qi-1 та для всіх а Î S }.

……………………….

Пm. Qm = Qm+1 = ……..

Очевидно, що кількість кроків П0, П1… скінчена, тому що послідовність Qi монотонна (Q0 Í Q1 Í Q2 Í ….) та обмежена зверху - |Qm| <= |Q|.

Тоді Qm – множина досяжних станів скінченого автомата, а Q\Qm – множина недосяжних станів.

Вилучимо з діаграми переходів скінченого автомата М недосяжні вершини. В новому (мінімізованому) автоматі функція d визначається лише для досяжних станів. Побудований нами скінчений автомат з меншою кількістю станів буде еквівалентний початковому.

Означення. Стан q скінченого автомата М називається тупиковим, якщо на діаграмі переходів скінченого автомата не існує шляху з q в F.

Алгоритм. Пошук тупикових станів. Спочатку спробуємо знайти нетупикові стани. Якщо Sm - множина нетупикових станів, то Q\Sm - множина тупикових станів. Побудуємо послідовність множин S0, S1, S2, … таким чином, що:

П0. S0 = { q | q Î F }.

П1. S1 = S0 È { q | d(q, a) S0 Æ, а Î S }.

П2. Si = Si-1 È { q | d(q, a) Si-1 Æ, а Î S }.

……………………….

Пм. Sm = Sm+1 = ……..

Очевидно, що кількість кроків П0, П1… скінчена, тому що послідовність Si монотонна (S0 Í S1 Í S2 Í ….) та обмежена зверху - |Sm| <= |Q|.

Тоді Sm – множина нетупикових станів скінченого автомата, а Q\Sm – множина тупикових станів. В новому (мінімізованому) автоматі функція d визначається лише для нетупикових станів.

В прикладі наведеному на Мал. 2 множина недосяжних станів - {q5}, а множина тупикових станів - {q3, q4}. Таким чином, для вище наведеного скінченого автомата еквівалентний йому автомат з меншою кількістю станів буде:

 

a, b

q0 q2

Мал. 3.

 

Автомат, у котрого відсутні недосяжні та тупикові стани, піддається подальшій мінімізації шляхом “склеювання” еквівалентних станів. Продемонструємо це на конкретному прикладі:

a, c

c

b

q1 q2

c a, c

q0 a

q3 q4

Мал. 4.

Очевидно, що для наведеного вище скінченого автомата можна побудувати еквівалентний йому скінчений автомат з меншою кількістю станів:

 
 


a, b c a, c

q0 q1 q2

Мал. 5.

Ми досягли бажаного нам результату шляхом “склеювання” двох станів q1, q3. та q2, q4.

Означення. Два стани q1 та q2 скінченого автомата М називаються еквівалентними, якщо множини слів, які розпізнає автомат, починаючи з q1 та q2, співпадають.

Нехай q1 та q2 два різних стани скінченого автомата М, а х Î S*. Будемо говорити, що ланцюжок х розрізняє стани q1 та q2, якщо (q1,x) |=* (q3, e) та (q2,x) |=* (q4, e), причому один з станів q3 або q4 не належить множині заключних станів. Стани q1 та q2 називаються k – нерозрізнені, якщо не існує ланцюжка х (|x| <=k), що розрізняє стани q1 та q2. Два стани q1 та q2 нерозрізнені, якщо вони

к-нерозрізнені для довільного к.

Твердження: два стани q1 та q2 довільного скінченого автомата М з n станами нерозрізнені, якщо вони (n-2)-нерозрізнені.

Доведення: На першому кроці розіб’ємо множину станів скінченого автомата на дві підмножини: F та Q\F. На цій основі побудуємо відношення º0:

q1 º0 q2 , якщо обидва стани одночасно належать F або Q\F.

Побудуємо відношення ºк :

q1 ºк q2 , якщо q1 ºк-1 q2 та d(q1, а) ºк-1 d(q2, а) для всіх а Î S.

Очевидно, кожна побудована множина містить не більше (n-1) елементи. Таким чином, можна отримати не більше (n-2) уточнення відношення º0.

Відношення ºn-2 визначає класи еквівалентних станів автомата М.

Алгоритм. Побудова мінімального скінченого автомата.

П1. Побудувати скінчений автомат без тупикових станів.

П2. Побудувати скінчений автомат без недосяжних станів.

П3. Знайти множини еквівалентних станів та побудувати найменший (мінімальний) автомат.

Ознайомившись з деякими результатами теорії скінчених автоматів, спробуємо уяснити, які мови (словарні множини) є скінченоавтоматними.

Твердження: Скінчено автоматними є наступні множини:

- порожня словарна множина - Æ;

- словарна множина, що складається з одного e-слова – {e};

- множина {a}, a Î S.

Доведення: в кожному випадку нам доведеться конструктивно побудувати відповідний скінчений автомат:

1. Довільний скінчений автомат з пустою множиною заключних станів (а мінімальний – з пустою множиною станів) допускає Æ;

2. Розглянемо автомат М =<{q0}, S, q0, d, {q0}>, у якому d не визначено ні для яких а Î S.

Тоді L(M) = {e}.

3. Розглянемо автомат М =<{q0, q1}, S, q0, d, {q1}>, у якому функція d визначена лише для пари (q0, a), а саме: d(q0, a) = q1.

Тоді L(M) = {a}.

Твердження: Якщо М1 = <Q1, S, q01, d1, F1> та М2 = <Q2, S, q02, d2, F2>, що визначають відповідно мови L(M1) та L(M2), то скінченоавтоматними мовами будуть:

- L(M1) È L(M2);

- L(M1) * L(M2);

- {L(M1)} = {e} È L(M1) È L(M1)* L(M1) È ….,

де:

L(M1) È L(M2) = { w | w Î L(M1) або w Î L(M2) },

L(M1) * L(M2) = {w=xy | x Î L(M1), y Î L(M2) }.

Доведення:

1. Побудуємо автомат М = <Q, S, q0, d, F>, такий що L(M) = L(M1) È L(M2).

- Q = Q1 È Q2 È {q0}, де q0 – новий стан (q0 Ï Q1 È Q2);

- Функцію d визначимо таким чином:

d(q,a) = d1(q,a), q Î Q1, а Î S;

d(q,a) = d2(q,a), q Î Q2, а Î S;

d(q0,a) = d1(q01,a) È d2(q02,a), q01 Î Q1, q02 Î Q2, а Î S;

- Множина заключних станів

Побудований в цьому випадку автомат взагалі недетермінований. Індукцією по i >=1 покажемо, що (q0,w) |=i (q,e) можливо тоді і тільки тоді, коли (q01,w) |=i (q,e), q Î F1 або (q02,w) |=i (q,e), q Î F2.

2. Побудуємо автомат М = <Q, S, q0, d, F>, такий що L(M) = L(M1) * L(M2):

- Q = Q1 È Q2;

- q0 =q01;

- Функцію d визначимо таким чином:

d(q,a) = d1(q,a), q Î Q1\F1, а Î S;

d(q,a) = d2(q,a), q Î Q2, а Î S;

d(q,a) = d1(q,a) È d2(q02,a), q Î F1, q02 Î Q2,а Î S;

- Множина заключних станів

3. Побудуємо автомат М = <Q, S, q0, d, F>, такий що L(M) = {L(M1)}:

- Q = Q1 È {q0}, де q0 – новий стан (q0 Ï Q1);

- Функцію d визначимо таким чином:

d(q,a) = d1(q,a), q Î Q1\F1, а Î S;

d(q0,a) = d1(q01,a), q01 Î Q1, а Î S;

d(q,a) = d1(q,a) È d1(q01,a), q Î F1, а Î S;

- Множина заключних станів F = F1 È {q0}.





Поделиться с друзьями:


Дата добавления: 2015-11-05; Мы поможем в написании ваших работ!; просмотров: 396 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Есть только один способ избежать критики: ничего не делайте, ничего не говорите и будьте никем. © Аристотель
==> читать все изречения...

2217 - | 2173 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.009 с.