Московский государственный университет имени М.В.Ломоносова
Опубликован: 09.07.2007 | Доступ: свободный | Студентов: 2487 / 1009 | Оценка: 4.56 / 4.26 | Длительность: 20:40:00
ISBN: 978-5-9556-0062-8
Специальности: Математик
Лекция 7:

Синтаксические моноиды

< Лекция 6 || Лекция 7: 1234 || Лекция 8 >

6.2. Минимизация детерминированных конечных автоматов

Определение 6.2.1. Говорят, что слово w различает состояния p и q полного детерминированного конечного автомата \lalg Q , \Sigma , \Delta , I , F \ralg, если одно из состояний \Delta _w ( p ), \Delta _w ( q ) заключительное, а другое не является заключительным.

Определение 6.2.2. Состояния p и q полного детерминированного конечного автомата \lalg Q , \Sigma , \Delta , I , F \ralg называются различимыми (distinguishable), если существует слово w, которое их различает.

Замечание 6.2.3. Пусть полный детерминированный конечный автомат \lalg Q , \Sigma , \Delta , \{ \qinitial \} , F \ralg задает язык L. Рассмотрим произвольные слова u \in \Sigma^* и v \in \Sigma^*. Состояния \Delta _u ( \qinitial ) и \Delta _v ( \qinitial ) различимы тогда и только тогда, когда \rightcontext_{L} ( u ) \neq \rightcontext_{L} ( v ).

Теорема 6.2.4. Существует быстрый алгоритм, позволяющий по произвольному детерминированному конечному автомату находить минимальный (по количеству состояний) автомат среди детерминированных конечных автоматов, эквивалентных исходному автомату.

Доказательство. Без ограничения общности можно предположить, что дан полный детерминированный конечный автомат \lalg Q , \Sigma , \Delta , I , F \ralg, все состояния которого достижимы из начального состояния (для обеспечения полноты достаточно добавить одно состояние). Для каждого натурального числа i определим на множестве Q отношение эквивалентности \equiv _i:

\begin{align*}
p \equiv _0 q &\iff
( p \in F \rusand q \in F ) \rusor ( p \notin F \rusand q \notin F ) ,\\
p \equiv _{i+1} q &\iff p \equiv _i q \rusand
\Delta _a ( p ) \equiv _i \Delta _a ( q )
\mathspace\text{для каждого}\mathspace a \in \Sigma .
\end{align*}
Легко видеть, что p \equiv _i q тогда и только тогда, когда никакое слово длины не больше i не различает p и q. Обозначим n =|Q|. Легко проверить, что для любого k \geq n отношение \equiv _k совпадает с отношением \equiv _{n-1}. Используя классы эквивалентности отношения \equiv _{n-1} как состояния, можно построить минимальный полный детерминированный конечный автомат. Удалив из него бесполезное состояние (из которого не достижимо ни одно заключительное состояние), если такое имеется, получим искомый минимальный детерминированный конечный автомат.

Пример 6.2.5. Рассмотрим полный детерминированный конечный автомат \lalg \{ 1 , 2 , 3 , 4 , 5 , 6 \} , \{ a , b \} , \Delta ,
\{ 1 \} , \{ 1 , 3 \} \ralg, где

\begin{multiline*}
\Delta = \{
\lp 1 , a , 2 \rp ,\
\lp 2 , b , 3 \rp ,\
\lp 3 , a , 4 \rp ,\
\lp 4 , b , 1 \rp ,\
\lp 4 , a , 5 \rp ,\
\lp 5 , a , 5 \rp ,\
\\
\lp 1 , b , 6 \rp ,\
\lp 2 , a , 6 \rp ,\
\lp 3 , b , 6 \rp ,\
\lp 5 , b , 6 \rp ,\
\lp 6 , a , 6 \rp ,\
\lp 6 , b , 6 \rp
\} .
\end{multiline*}
\objectwidth={5mm} \objectheight={5mm} \let\objectstyle=\scriptstyle
\xymatrix {
  *=[o][F=]{1}
 \ar @`{+/l16mm/} [] ^{}
 \ar  "1,2"  ^{a}
 \ar  "2,2"  ^{b}
& *=[o][F-]{2}
 \ar  "1,3"  ^{b}
 \ar  "2,2"  ^{a}
& *=[o][F=]{3}
 \ar  "1,4"  ^{a}
 \ar  "2,2"  ^{b}
& *=[o][F-]{4}
 \ar `ul^l{+/u7mm/}`l^dl{[0,-3]}_{b} "1,1"  
 \ar  "2,4"  ^{a}
\\
  %
& *=[o][F-]{6}
 \rloop{0,-1} ^{a}
 \rloop{-1,0} ^{b}
& 
& *=[o][F-]{5}
 \rloop{0,-1} ^{a}
 \ar  "2,2"  ^{b}
}
Он эквивалентен минимальному детерминированному конечному автомату \lalg \{ \{ 1 , 3 \} , \{ 2 , 4 \} \} , \{ a , b \} , \Delta' ,
\{ \{ 1 , 3 \} \} , \{ \{ 1 , 3 \} \} \ralg, где
\Delta' = \{
\lp \{ 1 , 3 \} , a , \{ 2 , 4 \} \rp ,\
\lp \{ 2 , 4 \} , b , \{ 1 , 3 \} \rp
\} .
\objectwidth={7.5mm} \objectheight={7.5mm} \let\objectstyle=\scriptstyle
\xymatrix {
  *=[o][F=]{1,3}
 \ar @`{+/l16mm/} [] ^{}
 \ar  "1,2" <0.6mm> ^{a}
& *=[o][F-]{2,4}
 \ar  "1,1" <0.6mm> ^{b}
}

Замечание 6.2.6. Неизвестно, существует ли быстрый (полиномиальный) алгоритм, позволяющий по произвольному конечному автомату находить минимальный автомат среди всех (не обязательно детерминированных) конечных автоматов, эквивалентных исходному автомату.

Упражнение 6.2.7. Найти минимальный полный детерминированный конечный автомат для языка, порождаемого грамматикой

\begin{align*}
 C \; & {\to} \; a D , & H \; & {\to} \; a C , \\
 C \; & {\to} \; b E , & H \; & {\to} \; b E , \\
 D \; & {\to} \; a E , & D \; & {\to} \; \varepsilon , \\
 D \; & {\to} \; b H , & H \; & {\to} \; \varepsilon . \\
 E \; & {\to} \; a D , \\
 E \; & {\to} \; b C , \\
\end{align*}

Упражнение 6.2.8. Найти минимальный полный детерминированный конечный автомат для языка

(1+(a+b)*b)b(a+b)*.

Упражнение 6.2.9. Найти минимальный полный детерминированный конечный автомат для языка

(a+b)*(aaba+(aabb+bbaa)abbb)(a+b)*.

Упражнение 6.2.10. Равны ли регулярные выражения

(aa+b+ab)*  и  ((a+b)*b+1)(aa)*?

Упражнение 6.2.11. Равны ли регулярные выражения

(a+b)*aa(a+b)*bb(a+b)*  и  (ab+b)*aa(a+b)*bb(a+ba)*?

Упражнение 6.2.12. Равны ли регулярные выражения

((ba+bb)(aa+ab)*)*a  и  b(aa+ab+ba+bb)*(aa+ba)?

Упражнение 6.2.13. Равны ли регулярные выражения

(ca+cb+cc+(a+b+(a+c))+c)(a+b+c)*

и

c(a+b+bc)++(a+b+c)*(ac+cc)(a+b+bc)*?
< Лекция 6 || Лекция 7: 1234 || Лекция 8 >
Юлия Маковецкая
Юлия Маковецкая

Упражнение 2.1.25

Евгения Гунченко
Евгения Гунченко

Сдавала тест экстерном, результат получен 74 после принятия данного результата и соответственно оплаты курса, будет ли выдано удостоверение о повышении квалификации?