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

Конечные автоматы

< Лекция 2 || Лекция 3: 1234 || Лекция 4 >

2.6. Детерминированные конечные автоматы

Определение 2.6.1. Конечный автомат \langle Q , \Sigma , \Delta , I , F \rangle называется детерминированным (deterministic), если

  1. множество I содержит ровно один элемент;
  2. для каждого перехода \langle p , x , q \rangle \in \Delta выполняется равенство |x| = 1 ;
  3. для любого символа a \in \Sigma и для любого состояния p \in Q существует не более одного состояния q \in Q со свойством \langle p , a , q \rangle \in \Delta.

Пример 2.6.2. Конечный автомат из примера 2.1.14 является детерминированным.

Определение 2.6.3. Детерминированный конечный автомат M = \langle Q , \Sigma , \Delta , I , F \rangle называется полным (complete), если для каждого состояния p \in Q и для каждого символа a \in \Sigma найдется такое состояние q \in Q, что \langle p , a , q \rangle \in \Delta.

Пример 2.6.4. Конечный автомат из примера 2.1.14 эквивалентен полному детерминированному конечному автомату \langle Q , \Sigma , \Delta , I , F \rangle, где Q = {1,2,3}, \Sigma = \{ a , b \}, I = {1}, F = {1,2},

\Delta = \{
\langle 1 , a , 2 \rangle ,\
\langle 1 , b , 3 \rangle ,\
\langle 2 , a , 3 \rangle ,\
\langle 2 , b , 1 \rangle ,\
\langle 3 , a , 3 \rangle ,\
\langle 3 , b , 3 \rangle
\} .
\objectwidth={5mm} \objectheight={5mm} \let\objectstyle=\scriptstyle
\xymatrix {
  *=[o][F=]{1}
 \ar @`{+/l16mm/} [] ^{}
 \ar  "1,2" <0.6mm> ^{a}
 \ar  "2,2"  _{b}
& *=[o][F=]{2}
 \ar  "1,1" <0.6mm> ^{b}
 \ar  "2,2"  ^{a}
\\
  %
& *=[o][F-]{3}
 \rloop{1,0} ^{a}
 \rloop{0,-1} ^{b}
}

Замечание 2.6.5. Некоторые авторы используют в определении полного детерминированного конечного автомата вместо отношения \Delta функцию \delta \colon Q \times \Sigma \to Q. От функции \delta можно перейти к отношению \Delta, положив

\Delta = \{ \langle p , a , \delta ( p , a ) \rangle \mid
p \in Q , \; a \in \Sigma \} .

Упражнение 2.6.6. Является ли детерминированным следующий конечный автомат?

\objectwidth={5mm} \objectheight={5mm} \let\objectstyle=\scriptstyle
\xymatrix @=1mm{
  %
& 
& *=[o][F-]{2}
 \ar  "2,5"  ^{b}
 \rloop{0,1} ^{a}
 \rloop{0,-1} _{b}
& 
& 
\\
  *=[o][F-]{1}
 \ar @`{+/l16mm/} [] ^{}
 \ar  "1,3"  ^{a}
 \ar  "3,3"  ^{b}
& 
& 
& 
& *=[o][F=]{4}
\\
  %
& 
& *=[o][F-]{3}
 \rloop{0,1} _{a}
 \rloop{0,-1} ^{b}
 \ar  "2,5"  ^{a}
& 
& 
}

Упражнение 2.6.7. Является ли полным следующий детерминированный конечный автомат с алфавитом \Sigma = \{a,b,c\}?

\objectwidth={5mm} \objectheight={5mm} \let\objectstyle=\scriptstyle
\xymatrix {
  *=[o][F=]{1}
 \ar @`{+/l16mm/} [] ^{}
 \rloop{0,1} ^{a}
 \rloop{0,-1} ^{b}
 \ar  "1,2"  ^{c}
& *=[o][F-]{2}
 \rloop{0,1} ^{a}
 \rloop{0,-1} ^{b}
 \ar  "1,3"  ^{c}
& *=[o][F=]{3}
 \rloop{0,1} ^{a}
 \rloop{0,-1} ^{b}
 \rloop{1,0} ^{c}
}

2.7. Преобразование конечного автомата к детерминированному виду

Теорема 2.7.1 Каждый автоматный язык распознается некоторым полным детерминированным конечным автоматом.

Доказательство. Без ограничения общности можно предположить, что исходный язык задан конечным автоматом \langle Q , \Sigma , \Delta , I , F \rangle, содержащим только переходы с метками длины единица. Для любых a \in \Sigma и H \subseteq Q обозначим

\Delta _ a ( H ) \rightleftharpoons \{ q \in Q \mid
\langle p , a , q \rangle \in \Delta
\mathspace\text{для некоторого}\mathspace p \in H \} .

Обозначим через \mathcal{P} ({ Q }) множество всех подмножеств множества Q. Построим искомый полный детерминированный конечный автомат \langle Q' , \Sigma , \Delta' , I' , F' \rangle, положив Q' = \mathcal{P} ({ Q }),

\Delta' = \{ \langle H , a , \Delta _ a ( H ) \rangle \mid
 H \subseteq Q ,\; a \in \Sigma \} ,
I' = {I} и F' = \{ H \subseteq Q \mid H \cap F \neq \varnothing \}.

Пример 2.7.2. Пусть \Sigma = \{ a , b \}. Рассмотрим конечный автомат M = \langle \{ 1 , 2 , 3 \} , \Sigma , \Delta ,
\{ 1 \} , \{ 3 \} \rangle, где

\Delta = \{
\langle 1 , a , 1 \rangle ,\
\langle 1 , b , 1 \rangle ,\
\langle 1 , a , 2 \rangle ,\
\langle 2 , b , 3 \rangle
\} .
\objectwidth={5mm} \objectheight={5mm} \let\objectstyle=\scriptstyle
\xymatrix {
  *=[o][F-]{1}
 \ar @`{+/l16mm/} [] ^{}
 \rloop{0,1} ^{a}
 \rloop{0,-1} ^{b}
 \ar  "1,2"  ^{a}
& *=[o][F-]{2}
 \ar  "1,3"  ^{b}
& *=[o][F=]{3}
}
Если применить конструкцию из доказательства теоремы 2.7.1. и затем удалить состояния, не достижимые из начального состояния, то получится полный детерминированный конечный автомат
M' =
 \langle \{ \{ 1 \} , \{ 1 , 2 \} , \{ 1 , 3 \} \} , \Sigma , \Delta' ,
 \{ \{ 1 \} \} , \{ \{ 1 , 3 \} \} \rangle ,
где
\begin{multiline*}
\Delta' = \{
\langle \{ 1 \} , a , \{ 1 , 2 \} \rangle ,\
\langle \{ 1 \} , b , \{ 1 \} \rangle ,\
\langle \{ 1 , 2 \} , a , \{ 1 , 2 \} \rangle ,\
\\
\langle \{ 1 , 2 \} , b , \{ 1 , 3 \} \rangle ,\
\langle \{ 1 , 3 \} , a , \{ 1 , 2 \} \rangle ,\
\langle \{ 1 , 3 \} , b , \{ 1 \} \rangle
\} .
\end{multiline*}
\objectwidth={7.5mm} \objectheight={7.5mm} \let\objectstyle=\scriptstyle
\xymatrix {
  *=[o][F-]{1}
 \ar @`{+/l16mm/} [] ^{}
 \rloop{0,1} ^{b}
 \ar  "1,2"  ^{a}
& *=[o][F-]{1,2}
 \rloop{0,1} ^{a}
 \ar  "2,2" <0.6mm> ^{b}
\\
  %
& *=[o][F=]{1,3}
 \ar  "1,2" <0.6mm> ^{a}
 \ar  "1,1"  ^{b}
}

Упражнение 2.7.3. Найти полный детерминированный конечный автомат, эквивалентный автомату, изображенному на диаграмме.

\objectwidth={5mm} \objectheight={5mm} \let\objectstyle=\scriptstyle
\xymatrix {
  *=[o][F-]{1}
 \ar @`{+/l16mm/} [] ^{}
 \ar  "2,1"  ^{ab}
\\
  *=[o][F=]{2}
 \ar @`{+/l16mm/} [] ^{}
 \rloop{1,0} ^{a}
}

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

\begin{align*}
S \; & {\to} \; a T , \\
S \; & {\to} \; a R , \\
T \; & {\to} \; b T , \\
T \; & {\to} \; \varepsilon , \\
R \; & {\to} \; a R , \\
R \; & {\to} \; \varepsilon .
\end{align*}

Упражнение 2.7.5. Найти детерминированный конечный автомат, распознающий язык \{ a u b \mid u \in \{a,b\}^* \} \cup
 \{ b u a \mid u \in \{a,b\}^* \}

< Лекция 2 || Лекция 3: 1234 || Лекция 4 >
Юлия Маковецкая
Юлия Маковецкая

Упражнение 2.1.25

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

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