Теоретическая информатика iii, осень 2018 г...

12
Теоретическая информатика III, осень 2018 г. Формальные языки и действия над ними. Регулярные выражения. Детерминированные и недетерминированные конечные автоматы. Детерминизация недетерминированных автоматов, преобразование регулярных выражений к автоматам * Александр Охотин 29 сентября 2018 г. Содержание 1 Формальные языки и действия над ними 1 2 Регулярные выражения 3 3 Детерминированные конечные автоматы (DFA) 4 4 Недетерминированные конечные автоматы (NFA) 6 5 Построение подмножеств (перевод NFA в DFA) 8 6 Преобразование регулярных выражений в автоматы 9 1 Формальные языки и действия над ними Символьная строка это самое естественное для человека представление данных. Символы из заранее заданного набора идут один за другим такова, например, человеческая речь как последовательность фонем, таковы книги, таковы файлы на компьютере и так можно представить любые данные. Сперва задаётся конечное множество символов Σ, называемое алфавитом. В абстракт- ных примерах элементы Σ обозначаются строчными латинскими буквами из начала алфа- вита (a, b,...). Строка (англ. string) над алфавитом Σ это конечная последовательность w = a 1 ...a , где > 0a 1 ,...,a Σ символы. 1 Строки обычно обозначаются латинскими буквами * Краткое содержание лекций, прочитанных студентам 2-го курса СПбГУ, обучающимся по программе математика, в осеннем семестре 2018–2019 учебного года. Страница курса: http://users.math-cs.spbu.ru/~okhotin/teaching/tcs3_2018/. 1 Чистые математики любят называть строки словами (words); в информатике же это наименование не используется, и в этом курсе его не будет. В очень старых учебниках строки иногда называют цепочками но так говорить уж точно не стоит. 1

Upload: others

Post on 12-Aug-2020

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Теоретическая информатика III, осень 2018 г ...okhotin/teaching/tcs3... · 2018-09-29 · Если и регулярные выражения, то тогда

Теоретическая информатика III, осень 2018 г.Формальные языки и действия над ними. Регулярные

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

автоматов, преобразование регулярных выражений кавтоматам∗

Александр Охотин

29 сентября 2018 г.

Содержание

1 Формальные языки и действия над ними 1

2 Регулярные выражения 3

3 Детерминированные конечные автоматы (DFA) 4

4 Недетерминированные конечные автоматы (NFA) 6

5 Построение подмножеств (перевод NFA в DFA) 8

6 Преобразование регулярных выражений в автоматы 9

1 Формальные языки и действия над ними

Символьная строка — это самое естественное для человека представление данных. Символыиз заранее заданного набора идут один за другим — такова, например, человеческая речькак последовательность фонем, таковы книги, таковы файлы на компьютере — и так можнопредставить любые данные.

Сперва задаётся конечное множество символов Σ, называемое алфавитом. В абстракт-ных примерах элементы Σ обозначаются строчными латинскими буквами из начала алфа-вита (a, b, . . . ).

Строка (англ. string) над алфавитом Σ — это конечная последовательность w = a1 . . . a`,где ` > 0, и a1, . . . , a` ∈ Σ — символы.1 Строки обычно обозначаются латинскими буквами

∗Краткое содержание лекций, прочитанных студентам 2-го курса СПбГУ, обучающимсяпо программе «математика», в осеннем семестре 2018–2019 учебного года. Страница курса:http://users.math-cs.spbu.ru/~okhotin/teaching/tcs3_2018/.

1Чистые математики любят называть строки «словами» (words); в информатике же это наименование неиспользуется, и в этом курсе его не будет. В очень старых учебниках строки иногда называют «цепочками»— но так говорить уж точно не стоит.

1

Page 2: Теоретическая информатика III, осень 2018 г ...okhotin/teaching/tcs3... · 2018-09-29 · Если и регулярные выражения, то тогда

w (дубль-вэ2), u, v, x, y и z. Например, w = abb — это 3-символьная строка над алфавитом,содержащим символы a и b.

Число символов в строке называется её длиной, |w| = `. Существует единственная строкадлины 0, называемая пустой строкой и обозначаемая через ε. Множество всех строк надалфавитом Σ обозначается через Σ∗.

Основная операция над строками — конкатенация, то есть, приписывание одной строкивслед за другой3. Если u = a1 . . . am и v = b1 . . . bn — две строки, то их конкатенация — этострока u · v = uv = a1 . . . amb1 . . . bn.

Пример 1. У строки abab восемь различных подстрок: ε, a, b, ab, ba, aba, bab, abab. У неёпять префиксов (ε, a, ab, aba, abab) и пять суффиксов (ε, b, ab, bab, abab).

Обращение строки w, обозначаемое через wR — это та же самая строка, записанная вобратном порядке: если w = a1 . . . a`, то wR = a` . . . a1. В частности, εR = ε.

Множества строк называют «формальными языками» или просто «языками». Если Σ —алфавит, то Σ∗ — множество всех строк над ним, и языком называется всякое подмножествоΣ∗.

Пусть K,L ⊆ Σ∗. Так как языки — это множества, для них определены обычные дей-ствия над множествами.

K ∪ L = w | w ∈ K или w ∈ L (объединение K и L)K ∩ L = w | w ∈ K и w ∈ L (пересечение K и L)

Для языка L, определённого над алфавитом Σ, его дополнением называется дополнение доΣ∗ — то есть, язык L = Σ∗ \ L.

L = w | w ∈ Σ∗, w /∈ L (дополнение L)

Конкатенация двух языков, K и L — это язык, состоящий из всех возможных конкате-наций строки из K и строки из L.

KL = K · L = uv | u ∈ K и v ∈ L (конкатенация K и L)

Операции конкатенации и объединения обладают свойством дистрибутивности, тоесть, K(L ∪M) = KL ∪ KM и (K ∪ L)M = KM ∪ LM для всех языков K,L,M ∈ Σ∗.Формальные языки образуют полукольцо с конкатенацией в качестве умножения и объеди-нением в качестве сложения.

Так как конкатенация языков считается умножением, конкатенация k экземпляров од-ного и того же языка называется её k-й степенью.

Lk = L · . . . · L︸ ︷︷ ︸k раз

= w1 . . . wk | w1, . . . , wk ∈ L

В частности, L0 = ε для всякого языка L, что соответствует свойству x0 = 1 для чисел.Следующее действие над языком L — повторение 0 и более раз — задаёт множество

всех строк, получаемых конкатенаций любого числа любых строк из L. Эта операция вы-ражается следующим образом.

L∗ =∞⋃k=0

Lk = w1 . . . wk | k > 0, w1, . . . , wk ∈ L

2На худой конец, «дабл-ю». Но, ради Бога, ни в коем случае не «омега»! Омега (ω, Ω) — это совсемдругая буква, и ею обозначают совсем другие объекты!

3К сожалению, общепринятого русского названия нет — это, конечно, позор на весь мир, но что делать?

2

Page 3: Теоретическая информатика III, осень 2018 г ...okhotin/teaching/tcs3... · 2018-09-29 · Если и регулярные выражения, то тогда

Операция повторения была введена Клини [1951], и её часто называют замыканием Клини,или звёздочкой Клини, или просто «звёздочкой».4

2 Регулярные выражения

Строятся с помощью трёх операторов: выбор, конкатенация, повторение.Формальное определение: сперва, какой вид может иметь регулярное выражение (его

синтаксис), затем — определение языка, задаваемого всяким регулярным выражением.

Рис. 1: Стивен Клини (1909–1994).

Определение 2.1 (Клини [1951]). Регулярные выражения над алфавитом Σ определяютсятак.

• Символ для пустого множества ∅ — регулярное выражение.

• Всякий символ a, где a ∈ Σ — регулярное выражение.

• Если α и β — регулярные выражения, то тогда (α | β), (αβ) и (α)∗ — тоже регу-лярные выражения.

Всякое регуларное выражение α определяет язык над алфавитом Σ, обозначаемый черезL(α). Символ для пустого множества определяет пустое множество.

L(∅) = ∅

Всякий символ из Σ обозначает одноэлементное множество, состоящее из односимволь-ной строки.

L(a) = a

Оператор выбора задаёт объединение множеств.

L(α | β) = L(α) ∪ L(β)

4Формальные языки с операциями объединения, конкатенации и звёздочки — это основной пример ал-гебры Клини — абстрактной алгебраической структуры, представляющей собою полукольцо, расширенноеоператором замыкания, удовлетворяющим определённым аксиомам. В данном курсе это понятие не потре-буется, да и сами полукольца не потребуются тоже.

3

Page 4: Теоретическая информатика III, осень 2018 г ...okhotin/teaching/tcs3... · 2018-09-29 · Если и регулярные выражения, то тогда

Конкатенация регулярных выражений задаёт конкатенацию языков. Оператор итерациизадаёт итерацию.

L(αβ) = L(α) · L(β)

L(α∗) = L(α)∗

Лишние скобки можно опускать, используя следующий порядок действий: сперва итера-ция, затем конкатенация, затем выбор. Например, регулярное выражение (a | bc∗)d читаетсякак (a | (b(c∗)))d.

Синтаксис регулярных выражений можно расширить лишними конструкциями: пустаястрока (ε), повторение один и более раз (α+), необязательная конструкция ([α], что означает“α или ничего”). Всё это можно выразить в терминах определения 2.1. Пустая строка: ∅∗ =ε. Повторение один и более раз (α+) — как αα∗. Необязательная конструкция [α] — какα | ε, и в конечном счёте как α | ∅∗. Например, a+b | ε — это сокращённая запись дляaa∗b | ∅∗.

Пример 2. Множество всех строк над алфавитом Σ = a, b, в которых третий символс конца — a, задаётся регулярным выражением (a | b)∗a(a | b)(a | b).

Пример 3. В языках программирования, имена обычно определяются как непустые по-следовательности из букв и цифр, начинающиеся с буквы.

(a | . . . | z︸ ︷︷ ︸любая буква

)(a | . . . | z | 0 | . . . | 9︸ ︷︷ ︸любая буква или цифра

)∗

3 Детерминированные конечные автоматы (DFA)

Конечный автомат — простейшая модель вычисления в теоретической информатике, соот-ветствующая вычислениям с конечной памятью.

Конечный автомат читает входную строку посимвольно слева направо, не возвращаясьназад. Закончив читать строку, автомат выдаёт ответ «да» или «нет».

Понятие состояния: конфигурация памяти всего автомата в некоторый момент. Мож-но сказать, что у автомата с 32 состояниями — 5 битов памяти; однако никакой битовойструктуры на самом деле нет, на каждом шаге можно перейти из любого состояния памятив любое. Число состояний конечно, отсюда название.

Конечный автомат начинает работу в определённом начальном состоянии q0, головкавидит самый левый символ строки. На каждом шаге текущее состояние и текущий символопределяют состояние в следующий момент, и головка переезжает на одну клетку напра-во. Состояние после чтения последнего, самого правого символа определяет, принимаетсястрока или отвергается.

Определение 3.1 (Клини [1951]). Детерминированный конечный автомат(deterministic finite automaton, DFA; мн. число: automata) — пятёрка A = (Σ, Q, q0, δ, F ),со следующим значением компонентов.

4

Page 5: Теоретическая информатика III, осень 2018 г ...okhotin/teaching/tcs3... · 2018-09-29 · Если и регулярные выражения, то тогда

• Σ — алфавит (конечное множество).

• Q — конечное множество состояний.

• q0 ∈ Q — начальное состояние.

• Функция переходов δ : Q × Σ → Q. Если автомат находится в состоянии q ∈ Q ичитает символ a ∈ Σ, то его следующее состояние — δ(q, a). Функция переходовопределена для всех q и a.

• Множество принимающих состояний F ⊆ Q.

Для всякой входной строки w = a1 . . . a`, где ` > 0 и a1, . . . , a` ∈ Σ, вычисление — по-следовательность состояний p0, p1, . . . , p`−1, p`, где p0 = q0, и всякое следующее состояниеpi, где i ∈ 1, . . . , `, однозначно определено как pi = δ(pi−1, ai).

p0a1−→ p1

a2−→ . . .a`−1−−−→ p`−1

a`−→ p`

Строка принимается, если последнее состояние p` принадлежит множеству F — иначеотвергается.

Язык, распознаваемый автоматом, обозначаемый через L(A) — это множество всехстрок, которые он принимает.

Дополнительное обозначение: если DFA начинает вычисление в состоянии q ∈ Q и чи-тает строку w = a1 . . . a`, то его состояние после её прочтения обозначается через δ(q, w).Формально, определение функции переходов расширяется до δ : Q × Σ∗ → Q, и определя-ется как δ(q, ε) = q и δ(q, aw) = δ(δ(q, a), w). В этих обозначениях язык, распознаваемыйDFA, кратко определяется так.

L(A) = w ∈ Σ∗ | δ(q0, w) ∈ F

Автоматы удобно представлять в виде диаграмм переходов, таких как на рис. 2. Изкаждого состояния по каждому символу выходит ровно одна стрелка. Начальное состояниеобозначается стрелкой, ведущей из ниоткуда, принимающие состояния обведены в кружок.

Пример 4. Язык a∗b∗ = aibj | i, j > 0 , oпределённый над алфавитом Σ = a, b, распо-знаётся конечным автоматом A = (Σ, Q, q0, δ, F ) с состояниями Q = q0, q1, q2. Начавработу в состоянии q0, автомат остаётся в q0 при прочтении a, и переходит в q1, кактолько встретится первый символ b. Это обеспечивается следующими переходами.

δ(q0, a) = q0

δ(q0, b) = q1

Далее, в состоянии q1 при чтении b автомат остаётся в этом же состоянии. Если жев состоянии q1 когда-нибудь встретится a, это значит, что строка — не вида a∗b∗, ипотому автомат переходит в состояние q2, в котором он отвергнет эту строку.

δ(q1, a) = q2

δ(q1, b) = q1

5

Page 6: Теоретическая информатика III, осень 2018 г ...okhotin/teaching/tcs3... · 2018-09-29 · Если и регулярные выражения, то тогда

q0 q1 q2

a

ab

b a,b

Рис. 2: DFA из примера 4, распознающий язык a∗b∗.

q0 q1 q2 q3

a,b

a,b a,ba a b a ba

q3 q3

q2

q0q0

q1

q0

q2

q0q0

q1

q0

q2

q1

Рис. 3: (слева) NFA из примера 5, угадывающий третий символ с конца; (справа) четыревычисления на строке w = abaab, из которых одно — принимающее.

Наконец, в состоянии q2 автомат просто дочитывает строку до конца, хотя уже из-вестно, что принята она не будет.

δ(q2, a) = δ(q2, b) = q2

Множество принимающих состояний — F = q0, q1.Автомат изображён на рис. 2.

4 Недетерминированные конечные автоматы (NFA)

Недетерминированный конечный автомат (nondeterministic finite automaton, NFA) — обоб-щение детерминированного автомата, в котором переход в данной конфигурации можетбыть определён не единственным образом. В некоторых состояниях и по некоторым симво-лам, у NFA может быть определено несколько возможных переходов, и, соответственно, наодной строке может быть несколько различных вычислений. Если хотя бы одно из этихвычислений — принимающее, то тогда считается, что NFA принимает эту строку; в против-ном случае, если все эти вычисления — отвергающие, то строка отвергается.

Это абстрактное определение можно понимать так. Если в некоторой конфигурации до-пустимо несколько различных переходов, и при некотором выборе действия на этом шагевычисление может увенчаться успехом, то можно сказать, что NFA обладает способностью«угадать» это правильное продолжение — своего рода «интуицией». Вообще, если суще-ствует последовательность недетерминированных решений, заканчивающаяся принятием,то тогда NFA «угадывает» эту последовательность — так, что строка отвергается только ес-ли она не может быть принята ни для какой последовательности догадок. Иными словами,догадки автомата всегда правильны.

В общем случае, такая способность угадывать правильное продолжение не обязательнобудет иметь физическую реализацию. Однако для случая конечных автоматов будет пока-зано, что NFA и DFA равномощны — то есть, способны распознавать один и тот же классязыков.

6

Page 7: Теоретическая информатика III, осень 2018 г ...okhotin/teaching/tcs3... · 2018-09-29 · Если и регулярные выражения, то тогда

Пример 5 (ср. с примером 2). Язык всех строк над алфавитом Σ = a, b, в которыхтретий символ с конца — a, распознаётся NFA на рис. 3(левый).

Его вычисления на строке abaab представлены на рис. 3(правый); в их числе — однопринимающее вычисление.

Рис. 4: Майкл Рабин (род. 1931), Дана Скотт (род. 1932).

Определение 4.1 (Рабин и Скотт [1959]). Недетерминированный конечный авто-мат (NFA) — это пятёрка B = (Σ, Q,Q0, δ, F ), со следующим значением компонентов.

• Σ — алфавит.

• Q — конечное множество состояний.

• Q0 ∈ Q — множество начальных состояний (автомат угадывает, в каком из нихначать).

• Функция переходов δ : Q×Σ→ 2Q даёт множество возможных следующих состоя-ний. Находясь в состоянии q ∈ Q и читая символ a ∈ Σ, автомат может перейтив любое состояние из δ(q, a).

• Множество принимающих состояний F ⊆ Q.

Вычисление на входной строке w = a1 . . . a` — это всякая последовательность состо-яний p0, p1, . . . , p`−1, p`, где p0 ∈ Q0, и pi ∈ δ(pi−1, ai). для всех i ∈ 1, . . . , `,

p0a1−→ p1

a2−→ . . .a`−1−−−→ p`−1

a`−→ p`

Вычисление — принимающее, если последнее состояние p` принадлежит множеству F ;иначе оно называется отвергающим.

Язык, распознаваемый автоматом, обозначаемый через L(B) — это множество всехвходных строк, на которых есть хотя бы одно принимающее вычисление.

В этих обозначениях. NFA в примере 5 имеет множество состояний Q = q0, q1, q2, q3,где q0 — единственное начальное состояние (Q0 = q0), q3 — единственное принимающее

7

Page 8: Теоретическая информатика III, осень 2018 г ...okhotin/teaching/tcs3... · 2018-09-29 · Если и регулярные выражения, то тогда

(F = q3), а функция переходов δ принимает следующие значения.

δ(q0, a) = q0, q1δ(q0, b) = q0

δ(q1, a) = δ(q1, b) = q2δ(q2, a) = δ(q2, b) = q3δ(q3, a) = δ(q3, b) = ∅

Тогда принимающее вычисление на w = abaab обозначается так.

q0a−→ q0

b−→ q0a−→ q1

a−→ q2b−→ q3

DFA может рассматриваться как особый случай NFA, с единственным начальным состо-янием (|Q0| = 1) и с единственным следующим состоянием в каждом переходе (|δ(q, a)| = 1для всех q и a).

5 Построение подмножеств (перевод NFA в DFA)

«Интуиция», которой обладает NFA, может быть механически воплощена в материальноммире.

NFA отличается от DFA тем, что может иметь несколько различных вычислений наодной и той же входной строке. Все эти вычисления проходят те же символы в том жепорядке, и отличаются только в состояниях. Можно считать, что все они происходят одно-временно. Например, как показано на рис. 3(правом), после чтения первых трёх символовесть возможных вычисления, находящиеся в состояниях q0, q1 и q3, соответственно. DFAможет вычислить множество этих состояний.

Для NFA на рис. 3(левом), моделирующий его работу DFA, читая ту же самую строкуw = abaab пройдёт через следующую последовательность состояний-подмножеств: q0,q0, q1, q0, q2, q0, q1, q3, q0, q1, q2, q0, q2, q3. Их нетрудно видеть на рис. 3(правом).

Следующая лемма даёт общее построение.

Лемма 1 («построение подмножеств», Рабин и Скотт [1959]). Пусть B = (Σ, Q,Q0, δ, F )— произвольный NFA. Тогда существует DFA A = (Σ, 2Q, Q0, δ

′, F ′), состояния которого— подмножества Q, который распознаёт тот же язык, что и B. Его переход в каж-дом состоянии-подмножестве S ⊆ Q по каждому символу a ∈ Σ ведёт во множествосостояний, достижимых по a из некоторого состояния их S.

δ′(S, a) =⋃q∈S

δ(q, a)

Состояние-подмножество S ⊆ Q — принимающее, если оно содержит хотя бы одно при-нимающее состояние NFA.

F ′ = S | S ⊆ Q, S ∩ F 6= ∅

Общий вид утверждения: по одному вычислительному устройству строится второе, иповедение построенного устройства выражается через поведение исходного устройства. До-казательства подобных результатов обычно начинаются с утверждения о правильности

8

Page 9: Теоретическая информатика III, осень 2018 г ...okhotin/teaching/tcs3... · 2018-09-29 · Если и регулярные выражения, то тогда

a a a

b a

b

b

abb

a

b

a

b a

b

q0,q3

q0,q2,q3

q0,q1,q2,q3

q0,q1,q3q0,q2

q0,q1 q0,q1,q2q0

Рис. 5: DFА, моделирующий работу NFA из примера 5, полученный построением подмно-жеств (все состояния, содержащие q3 — принимающие).

— подробного математического утверждения, описывающего, что новое устройство делаетна каждом шаге, и как это связано с работой исходного устройства. Как правило, именноутверждение о правильности содержит в себе главный смысл построения, а его доказатель-ство бывает неинтересным.

Доказательство.

Утверждение о правильности. Для всякой строки w ∈ Σ∗, состояние-подмножество,достигаемое DFA по прочтении строки w, содержит элемент q тогда и только тогда,когда хотя бы одно из вычислений NFA на w заканчивается в состоянии q.

Доказывается индукцией по длине строки w.Далее из утверждения о правильности выводится, что построенный DFA принимает

строку w ∈ Σ∗ тогда и только тогда, когда её принимает исходный NFA.

Построение переводит NFA с n состояниями в DFA с 2n состояниями-подмножествами.На практике, многие из них обычно бывают недостижимы. Поэтому алгоритм будет строитьтолько состояния-подмножества, достижимые из уже построенных, начиная с Q0.

Пример 6. Построение подмножеств, применённое к NFA с 4 состояниями из примера 5,производит DFA с 8 достижимыми состояниями, представленный на рис 5.

Можно заметить, каждое состояние-подмножество по существу кодирует три по-следних прочитанных символа (qi принадлежит ему, если i-й символ с конца — это a).

В худшем случае построение оптимально по числу состояний: Лупанов [1963] построил,для всякого n, такой NFA над a, b из n состояний, что всякий DFA для этого языка долженсодержать хотя бы 2n состояний.

Было показано, что DFA и NFA определяют одно и то же семейство языков, называемыхрегулярными языками. Следующий результат: что регулярные выражения определяют тоже семейство.

6 Преобразование регулярных выражений в автоматы

Теорема 1 (Клини [1951]). Язык распознается неким DFA тогда и только тогда, когдаон определяется неким регулярным выражением.

9

Page 10: Теоретическая информатика III, осень 2018 г ...okhotin/teaching/tcs3... · 2018-09-29 · Если и регулярные выражения, то тогда

Рис. 6: Олег Лупанов (1932–2006).

Доказательство конструктивно в обе стороны.Для преобразования регулярного выражения в автомат удобно ввести промежуточную

модель.

Определение 6.1. Недетерминированный конечный автомат с ε-переходами (ε-NFA) —пятёрка C = (Σ, Q,Q0, δ, F ), где Σ, Q, Q0 и F — как в NFA, а функция переходов имеетвид δ : Q × (Σ ∪ ε) → 2Q. В состоянии q ∈ Q автомат может или сделать обычныйпереход по символу a ∈ Σ в любое состояние из δ(q, a), перемещая головку на символвперёд—или же перейти в любое состояние из δ(q, ε), не читая ничего ( ε-переход).

Вычисление на w может потребовать более |w| шагов. Строка принимается, еслиесть разбиение w = u1 . . . um, где ui ∈ Σ∪ε, и последовательность состояний r0, . . . , rm ∈Q, для которых: r0 = q0, всякое следующее ri принадлежит δ(ri−1, ui), и rn ∈ F .

Использование ε-переходов не увеличивает мощности конечных автоматов.

Лемма 2. Для всякого ε-NFA существует NFA, использующий то же множество со-стояний и распознающий тот же язык.

Доказательство. Пусть C = (Σ, Q,Q0, δ, F ) — произвольный ε-NFA. Для всякого состоянияq ∈ Q, множество состояний, достижимых из него за 0 и более ε-переходов, обозначаетсячерез ε-closure(q) ⊆ Q. Главная мысль построения: NFA будет проделывать произвольнуюпоследовательность ε-переходов за один шаг.

Первый вариант построения. Определяется NFA B = (Σ, Q,Q0, δ′, F ′), всякий пере-

ход которого за один шаг выполняет любую последовательность ε-переходов в C, и затемпереход по одному символу.

δ′(p, a) =⋃

q∈ε-closure(p)

δ(q, a) (p ∈ Q, a ∈ Σ)

Если C может придти по ε-переходам из p ∈ Q в некоторое принимающее состояние, то pпомечается как принимающее в B.

F ′ = p | ε-closure(p) ∩ F 6= ∅

10

Page 11: Теоретическая информатика III, осень 2018 г ...okhotin/teaching/tcs3... · 2018-09-29 · Если и регулярные выражения, то тогда

Утверждение о правильности. Исходный ε-NFA C может достигнуть состояния q ∈Q по прочтении строки w ∈ Σ∗ тогда и только тогда, когда построенный NFA B, прочи-тав w, может достигнуть некоторого состояния p, где q ∈ ε-closure(p).

Второй вариант построения. Строится автомат B′ = (Σ, Q,Q′0, δ′, F ). На этот раз в

автомате B′ начальными будут все состояния, которые достижимы в C из его начальныхсостояний по ε-переходам.

Q′0 =⋃

q0∈Q0

ε-closure(q0)

Всякий переход B по символу a начинается с перехода C по этому же символу, а вслед затем выполняется любая последовательность ε-переходов.

δ′(p, a) =⋃

q∈δ(p,a)

ε-closure(q) (p ∈ Q, a ∈ Σ)

Множество принимающих состояний остаётся тем же.

Утверждение о правильности. Исходный ε-NFA C может достигнуть состояния q ∈Q по прочтении строки w ∈ Σ∗ тогда и только тогда, когда построенный NFA B′, прочи-тав w, может достигнуть того же состояния состояния q.

Регулярные выражения легко выражаются в этой модели.

Лемма 3 («построение Томпсона»). Для всякого регулярного выражения α, существуетε-NFA Cα с одним начальным и одним принимающим состояниями, распознающий язык,задаваемый α.

Рис. 7: Кеннет Томпсон (род. 1943).

Доказательство. Индукция по структуре регулярного выражения, пять случаев представ-лены на рис. 8.

Известно также прямое преобразование регулярного выражения в DFA, но это по суще-ству построение Томпсона и построение подмножеств, объединённые в одно маловразуми-тельное определение.

11

Page 12: Теоретическая информатика III, осень 2018 г ...okhotin/teaching/tcs3... · 2018-09-29 · Если и регулярные выражения, то тогда

ε

a

Ca: Cα | β:

Cαβ:

Cαε

ε

ε

ε

Cαε

ε

ε

Cα*:

CØ:

Рис. 8: Преобразование регулярного выражения в ε-NFA.

Список литературы

[1951] S. C. Kleene, “Representation of events in nerve nets and finite automata”, RANDResearch Memorandum RM-704, 1951, 98 pp.

[1963] О. Б. Лупанов, “О сравнении двух типов конечных источников”, Проблемы киберне-тики, 9 (1963), 321–326.

[1959] M. O. Rabin, D. Scott, “Finite automata and their decision problems”, IBM Journal ofResearch and Development, 3:2 (1959), 114–125.

12