Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теория автоматов и формальных языков. Учебник.pdf
Скачиваний:
1
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
☆
§ 2.5. Системы уравнений 111
K
является также решением системы на равное ему выражение. Наоборот, всякое решение системы может быть продолжено до решения системы Пустьf— решение системы
K0, полученное по алгоритму. Тогда
K0, так как
K
xnзаменяется
по формуле
K
(3)
по индукционному предположению оно наименьшее. Продлим его до решения системы
K0по формуле
(3)
. Тогда получится решение
системы K, причём по следствию 48 оно также наименьшее.
Из теоремы получаем важное следствие.
0
.
Сл едствие 50.
Наименьшее решение любой системы уравнений с
регулярными коэффициентами является набором регулярных языков.
Пр име р 44. Найдём наименьшее решение системы двух уравнений
(
x = ab∗x + bby + a + ε y = x + a∗y + ba.
Выражая из второго уравнения y, получаем
y = (a∗)∗(x + ba) = a∗(x + ba).
Поставляем это выражение в первое уравнение, получаем
x = ab∗x + bba∗(x + ba) + a + ε.
Теперь раскрываем скобки и приводим подобные члены. В результате полу-
чается уравнение
x = (ab∗+ bba∗)x + bba∗ba + a + ε,
откуда находим
x = (ab∗+ bba∗)∗(bba∗ba + a + ε).
Подставляя это выражение в формулу для y, находим
Итак,
y = a∗((ab∗+ bba∗)∗(bba∗ba + a + ε) + ba).
(
x = (ab∗+ bba∗)∗(bba∗ba + a + ε) y = a∗((ab∗+ bba∗)∗(bba∗ba + a + ε) + ba).
112 Глава 2. Конечные автоматы и регулярные выражения
За меч ани е 2.
ний вида условии, что все операции в правых частях монотонны. Это утверждение является частным случаем теоремы Кнастера-Тарского о том, что множе­ство неподвижных точек любой монотонной функции, заданной на полной решётке, непусто и само является полной решёткой.
xi=
Можно доказать, что любая система, состоящая из уравне-
fi(
x1, x2, . . . , xn), 1
6 i 6 n
, имеет наименьшее решение при
Свяжем с каждой праволинейной грамматикой некоторую систему
уравнений.
Оп ределен ие 61.
ПустьG= (N,Σ
, P, S
) — праволинейная грам­матика. Система уравненийEq(G), с о о т в е т с т в у ю щ а я грам­матикеG, имеет множество переменныхNи для каждого нетер­минала
A ∈ N
содержит уравнениеA=
α1+
α2+
···+αn, где
A → α1| α2| · ·· | αn— все A-правила грамматики G.
Теперь мы покажем, что система уравненийEq(G) «эквивалентна»
грамматике G.
Теорема 51.
правилами вида
ПустьG= (N,Σ
, P, S
) — праволинейная грамматика с
A → aB,A → a,A → ε(A, B ∈ N,a ∈
Σ). Пустьf—
наименьшее решение системы уравненийEq(G). ТогдаL(G) =f(S).
Доказательство. ПустьG= (N,Σ
, P, S
) — праволинейная грам-
матика с правилами указанного вида.
Докажем, чтоL(G)
w ∈ L(G
ром каждого часть,
). Это значит, что существует вывод (
γ0=S,
γn=w. Поскольку грамматика праволинейная, то для
i < n
выполняется
Bi∈ N
— нетерминал. Пусть наi-м шаге вывода (
меняется правило
⊆ f(S
Bi→ aiB
), гдеf— произвольное решение. Пусть
γ0, γ1, . . . , γn), в кото-
γi=
i+1
viBi, где
. Тогда
γ
i+1
vi∈
Σ∗— терминальная
=
viaiB
i+1
и
i < n
v
i+1
) при-
=
viai.
Индукцией по i докажем следующее утверждение: vif(Bi) ⊆ f (S).
Б а з и с и н д у к ц и и . Еслиi= 0, то
γi=ε,
Bi=Sи включение
f(S) ⊆ f (S) выполняется.
Ш а г и н д у к ц и и . Предположим, что дляiутверждение верно.
Поскольку
v
i+1
=
viai, то
v
i+1
f(B
i+1
) =
viaif(B
). Так как грамма-
i+1
§ 2.5. Системы уравнений 113
тика содержит правило Bi→ aiB
Bi= ··· + aiB
поэтому
aif(B
)
⊆ f(Bi). По индукционному предположению имеет
i+1
, то в системе есть уравнение
i+1
+ .. . ,
i+1
место включение vif(Bi) ⊆ f (S). Получаем
v
i+1
f(B
) = viaif(B
i+1
) ⊆ vif(Bi) ⊆ f (S).
i+1
Рассмотрим теперь последний шаг вывода. Пусть на последнем
шаге применяется правило
B
→ an. Тогдаw=
n−1
v
n−1an
, а в системе
есть уравнение
B
= ··· + an+ .. . ,
n−1
поэтому ется v
и
w ∈ f(S
Тогда w = v
an∈ f(B
f(B
n−1
n−1
). По доказанному выше утверждению выполня-
n−1
) ⊆ f (S). Значит,
w = v
n−1an
∈ v
n−1
f(B
n−1
) ⊆ f (S)
). Пусть на последнем шаге применяется правило
, а в системе есть уравнение
n−1
B
n−1
→ ε
.
B
= ··· + ε + . . . ,
n−1
поэтому ε ∈ f (B
). Получаем
n−1
w = v
n−1
∈ v
n−1
f(B
n−1
) ⊆ f (S)
и w ∈ f(S). Итак, в обоих случаях w ∈ f(S). Поэтому L(G) ⊆ f (S).
Теперь докажем, чтоf(S)
системы. Пусть
(
vi, Bi), где
w ∈ f(S
vi— терминальное слово,
⊆ L(G
), гдеf— наименьшее решение
). Построим последовательность пар вида
Bi— нетерминал такие, что
vi∈ f (Bi). Строим последовательность индукцией по i.
Б а з и с и н д у к ц и и . Положим
v0=w,
B0=S. По условию
v0∈ f (B0).
114 Глава 2. Конечные автоматы и регулярные выражения
Ш а г и н д у к ц и и . Пусть уравнение для Biимеет вид
Bi= β1+ ··· + βp.
Тогда
vi∈ f(Bi) тогда и только тогда, когда
vi∈ f(βj) для некоторо-
го j. Возможны три случая.
1)
Если
βj=a, то
vi=a. В этом случае последовательность не
продолжаем.
2)
Если
βj=ε, то
vi=ε. В этом случае последовательность также
не продолжаем.
3)
Пусть том последовательности будет ( предположению
v
Так как на каждом шаге длина слова
тельность не может быть бесконечной. Пусть (
i+1
βj=
∈ f (B
aB
i+1
).
i+1
, тогда
av
i+1
viимеет вид
∈ f(aB
i+1
av
. Следующим элемен-
i+1
v
, B
i+1
), поэтому
). По индукционному
i+1
av
∈ af(B
i+1
i+1
viуменьшается, то последова-
vn, Bn) — её последний
) и
элемент. Обратной индукцией по i докажем, что Bi⇒∗vi.
Б а з и с и н д у к ц и и . Приi=nимеет место случай 1) или 2).
Тогда в грамматике есть правило Bn→ vn, поэтому Bn⇒ vn.
Ш а г и н д у к ц и и . Предположим, что пары ( есть правило Bi→ aB
vi, Bi) имел место случай 3), поэтому
. Значит, Bi⇒ aB
i+1
В частности, приi= 0 получаем
S ⇒∗w
B
i+1
vi=
av
⇒∗av
i+1
. Поэтому
⇒∗v
i+1
. Тогда для
i+1
и в грамматике
= vi.
i+1
w ∈ L(G
) и
f(S) ⊆ L(G).
Теорема 51 даёт ещё один способ построения регулярного выраже­ния по конечному автомату: построить по автомату праволинейную грамматику, преобразовать её в систему уравнений, а затем решить получившуюся систему.
Пр име р 45. Построим регулярное выражение для языка
L = {w ∈ {a, b }∗: w не содержит abb }.
§ 2.5. Системы уравнений 115
Сначала построим для языкаLконечный автомат и преобразуем его в
праволинейную грамматику:
a b
нач, закл q0q1q
закл q1q1q закл q2q1q
q3q3q
0
2
3
3
Далее построим по грамматике систему уравнений:
q0= aq1+ bq0+ ε
  
q1= aq1+ bq2+ ε
q2= aq1+ bq3+ ε
  
q3= aq3+ bq
Чтобы построить регулярное выражения для языкаL, нужно найти значе-
ние переменной
q0, соответствующей начальному нетерминалу. Значения
остальных переменных находить не требуется. Сначала найдём следнего уравнения. Оно эквивалентно уравнению q3= (a + b)q3, поэтому
q0→ aq1| bq0| ε q1→ aq1| bq2| ε q2→ aq1| bq3| ε q3→ aq3| bq
3
3
q3из по-
q3= (a + b)∗∅ = ∅
(в уравнении свободный член равен∅). Подставляя полученное выражение
для q3в третье уравнение, получаем
q2= aq1+ ε.
Теперь подставим q2во второе уравнение. Получаем
q1= aq1+ b(aq1+ ε) + ε,
то есть
q1= (a + ba)q1+ b + ε,
откуда
q1= (a + ba)∗(b + ε).
Наконец, подставим q1в первое уравнение. Получается уравнение
q0= a(a + ba)∗(b + ε) + bq0+ ε.
116 Глава 2. Конечные автоматы и регулярные выражения
Отсюда
q0= b∗(a(a + ba)∗(b + ε) + ε).
Это и есть искомое регулярное выражение.
Мы видим, что метод, основанный на использовании систем урав­нений, потребовал значительно меньше вычислений, чем метод теоре­мы 45 в примере 40, даже несмотря на то, что автомат в примере 40 был проще.
Задачи
93.
Найдите наименьшие решения следующих систем уравнений и упростите
получающиеся регулярные выражения:
(
x = (a + b)x + b∗y
(а)
y = bbx + a∗b∗y + ba
(
x = aax + a∗y + bb
(б)
y = (b∗+ ba)x + ay + a
94. Найдите наименьшее решение уравнения x = xax + b.
95.
Пустьx=px+q— уравнение,pиq— регулярные выражения в алфавите Σ.
Докажите следующие два утверждения.
(а) Если ε /∈ L(p), то p∗q — единственное решение уравнения.
(б)
Если
ε ∈ L(p
), то множество решений уравнения совпадает с множеством
языков p∗(q + L), где L задаёт любой язык (не обязательно регулярный).
96.
Приведите пример регулярных выраженийpиqтаких, что
уравнение x = px + q имеет единственное решение.
97.
Докажите, что любая система линейных уравнений с регулярными коэффици-
ентами имеет наибольшее решение и предложите алгоритм для его нахождения.
98.
Где в доказательстве теоремы 51 используется минимальность решения си-
стемы?
99.
Постройте регулярные выражения для следующих языков с помощью систем
уравнений:
(а) L1= { w ∈ { a, b }∗: w не содержит подслова abab };
(б) L2= { w ∈ { a, b }∗: |w|aнечётно, |w|bнечётно };
(в) L3= { w ∈ { 0, 1 }∗: w — двоичная запись числа кратного трём }.
(
x = abx + a∗by + bb
(в)
y = (b + bb)x + b∗y + a + b
ε ∈ L(p
), но
§ 2.6. Двусторонние конечные автоматы 117
§ 2.6. Двусторонние конечные автоматы
Конечные автоматы, которые мы изучали до сих пор, передвигали головку только слева направо. Можно ослабить это требование и разрешить автомату передвигать головку по входному слову как влево, так и вправо. Используемая память по-прежнему должна быть конечной. Такие устройства называются двусторонними конечными автоматами.
Оп ределен ие 62.
н ы й к о н е ч н ы й а в т о м а т (двусторонний ДКА, 2ДКА) — это пятёрка M = (Q, Σ, δ, q0, F ), где
1) Q — конечное множество состояний;
2) Σ — конечный входной алфавит;
Д в у с т о р о н н и й д е т е р м и н и р о в а н -
3) δ : Q×Σ→ Q×{−1,0,+1}
4) q0∈ Q — начальное состояние;
5) F ⊆ Q — множество заключительных состояний.
Как обычно, еслиδ( программа автомата содержит команду в виде q, a → p, s ∈ δ.
Оп ределен ие 63.
(
q, w, i
), гдеq— состояние,w— слово в алфавите Σ,i— целое число такое, что 1 это конфигурация вида ( рация — это конфигурация вида (qf, w, |w| + 1), где qf∈ F .
Отношение п е р е х о д а з а о д и н ш а г определяется на множе­стве конфигураций следующим образом: ( существует команда q, a → p, s такая, что w(i) = a и j = i + s.
Содержательно,q— это текущее состояние автомата,w— входное
слово (целиком), аi— номер обозреваемого символа. Условие 1
q, a
К о н ф и г у р а ц и я 2ДКА — это тройка
6 i 6 |w|
q0, w,
— функция переходов (программа);
) = (
p, s
), то мы будем говорить, что
q, a → p, s
+ 1. Н а ч а л ь н а я конфигурация —
1). З а к л ю ч и т е л ь н а я конфигу-
q, w, i)`M(
и записывать это
p, w, j
), если
6
118 Глава 2. Конечные автоматы и регулярные выражения
i 6 |w|
+ 1 говорит, что автомат не может передвинуть головку левее первого символа входного слова, а также правее последнего символа более чем на одну позицию. Автомат может двигаться по ленте в двух направлениях. Команда
q, a → p, s
говорит, что если автомат в состоянииqобозревает ячейку с символомa, то он должен перейти в состояниеpи сдвинуть головку в соответствии со значениемs: направо, еслиs= +1; налево, еслиs=−1; не сдвигать, еслиs= 0. По определению конфигурации
j >
1, поэтому автомат не может
сделать шаг влево, если он уже находится в самом начале слова
w
. Аналогично, по определению конфигурации
i 6 |w|
+ 1, поэтому
если автомат перемещает головку правее последнего символа слова
w
, то он останавливается, так как ни одна команда не может быть
выполнена.
Оп ределен ие 64.
п о з н а ё т словоw, если (
qf∈ F
. Язык, р а с п о з н а в а е м ы й автоматомM, — это множе-
Двусторонний ДКАM= (Q,Σ
q0, w,1)`
∗
(
qf, w, |w|
M
+ 1) для некоторого
, δ, q0, F
) р а с -
ство всех слов, распознаваемых автоматом M .
Если автомат находится в конфигурации (
есть команда
q, a → p, −
1, гдеw(1) =a, то будем говорить, что авто-
q, w,
1) и в программе
мат с х о д и т с л е в о г о к р а я л е н т ы . Аналогично, если автомат находится в конфигурации (
q, a → p,
+1, гдеw(
|w|
) =a, то будем говорить, что автомат сх о -
q, w, |w|
) и в программе есть команда
д и т с п р а в о г о к р а я л е н т ы . Тогда определение распознавания слова можно переформулировать следующим образом: автомат
M
распознаёт словоw, если при работе наwон сходит с правого края ленты и при этом попадает в заключительное состояние.
Пр име р 46.
M = ({ q0, q1, q2, q3}, {a, b }, δ, q0, {q3}) с программой
Рассмотрим следующий двусторонний конечный автомат
q0, a → q0, +1 q2, a → q2, +1 q0, b → q1, 0 q2, b → q3, +1 q1, a → q1, −1 q3, a → q3, +1 q1, b → q2, −1 q3, b → q3, 0
§ 2.6. Двусторонние конечные автоматы 119
Рассмотрим несколько примеров его работы. Пусть сначала w1= aabaa. Тогда
(q0, aabaa, 1) ` (q0, aabaa, 2) ` (q0, aabaa, 3) `
` (q1, aabaa, 3) ` (q2, aabaa, 2) ` (q2, aabaa, 3) `
` (q3, aabaa, 4) ` (q3, aabaa, 5) ` (q3, aabaa, 6).
Так как автомат прочитал всё слово
w1∈ L(M ).
Теперь рассмотрим слово w2= aaa:
(q0, aaa, 1) ` (q0, aaa, 2) ` (q0, aaa, 3) ` (q0, aaa, 4).
В результате автомат сходит с правого края ленты. Так как w2/∈ L(M ).
Пусть w3= baa. Автомат делает один шаг
(q0, baa, 1) ` (q1, baa, 1),
после чего сходит с левого края ленты, поэтому w3/∈ L(M ).
Наконец, рассмотрим слово w4= ababa:
(q0, ababa, 1) ` (q0, ababa, 2) ` (q1, ababa, 2) `
` (q2, ababa, 1) ` (q2, ababa, 2) ` (q3, ababa, 3) `
` (q3, ababa, 4) ` (q3, ababa, 4) ` (q3, ababa, 4) ` . . .
После этого конфигурация ( зацикливается и отвергает слово w4, то есть w4/∈ L(M ).
Нетрудно видеть, что автоматMраспознаёт язык, задаваемый регу­лярным выражением не может сделать ни одного шага и отвергает его. Если слово начинается наb, то автомат выполняет команды зультате чего сходит с левого края ленты. Следовательно, входное слово должно начинаться на положительное число символовa. Далее должен встретиться символb, так как в противном случае автомат останется в незаключительном состоянии выполнит команды
q0, b → q1,0;q1, b → q2, −1;q2, a → q2,
q3, ababa,
aa∗ba∗. Действительно, если слово пусто, то автомат
q0. Дойдя до первого символаb, автомат
w1и оказался в состоянии
4) будет повторяться, поэтому автомат
q0, b → q1,
0 и
q1, b → q2, −
+1;
q2, b → q3,
q0/∈ F
1, в ре-
q2, то
, то
+1.
120 Глава 2. Конечные автоматы и регулярные выражения
При этом он окажется в состоянии заb. Если далее встречаются только символыa, то автомат дочитает их до конца, оставаясь в состоянии то автомат выполняет команду доказательство оставляем в качестве упражнения.
q3и будет обозревать символ, следующий
q3. Если же далее встречается символb,
q3, b → q3,
0 и зацикливается. Формальное
Мы видим, что в случае двусторонних автоматов появляются дополнительные случаи, когда автомат отвергает слово: он может либо сойти с левого края ленты, либо зациклиться.
Обычные ДКА (будем называть их односторонними) являются частным случаем 2ДКА, поэтому любой регулярный язык распозна­ётся и двусторонним автоматом. Мы докажем, что верно и обратное: любой двусторонний ДКА распознаёт регулярный язык.
С каждым словом
w ∈
Σ∗мы свяжем некоторое отображение
τw,
описывающее работу автомата на правом краю слова w.
Оп ределен ие 65.
ДКА,w— произвольное слово в алфавите Σ. Пусть словаwопределяется отображение
Пусть
M
= (Q,Σ
, δ, q0, F
τw: Q → Q ∪ {r }
) — двусторонний
r /∈ Q
. Для
, с в я з а н н о е
с о с л о в о м w:
1) τw(q) = p, если (q, w, |w|) `
2) τ
(q) =r, если не существует состоянияpтакого, что
w
(q, w, |w|) `
∗
(p, w, |w| + 1).
M
Неформальная интерпретация функции
∗
(p, w, |w| + 1);
M
τwтакова. Предположим,
что на ленте написано словоwи автоматMобозревает его последний символ. Тогда
τw(q) =pозначает, что автомат после нескольких
шагов сдвинет головку в следующую заwячейку и при первом посещении этой ячейки он окажется в состоянииp. При этом перед первым сдвигом в правую ячейку он может проделать сколь угодно много шагов внутри словаw. Отображение
τwучитывает только
первое посещение правой ячейки. Равенствоτ(q) =rозначает, что автомат никогда не посетит ячейку, расположенную справа отw. Это возможно в двух случаях: либо автомат сойдёт с левого края ленты,
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]