Простейшие средства задания языков - регулярные выражения (или конечные автоматы) и DOL-системы - явились источником математически интересных и захватывающих задач. Многие, в том числе и автор этой книги, предпочитают задачи, которые можно без труда объяснить даже полному профану в соответствующей области, таким задачам, в которых основная трудность заключается в том, чтобы разобраться во введенных понятиях. Типичным примером задачи первого типа является гипотеза Ферма. По очевидным соображениям мы не станем приводить примеры задач второго типа.
Регулярные выражения и DOL-системы породили много проблем, относящихся к первому из указанных выше классов. Действительно, несмотря на многочисленные попытки решения этих проблем, многие из них до сих пор остаются открытыми.
В этой главе мы приведем решения двух задач, связанных с регулярными языками. Обе они достаточно трудны, так что читатели, самостоятельно нашедшие решение, могут себя поздравить. Обе задачи связаны с операцией звезды - кате-нативного замыкания. Операция звезды лежит в основе рассматриваемой теории, поскольку объединение и катенация позволяют порождать только конечные языки. Однако комбинация звезды с объединением и катенацией приводит к некоторым трудным вопросам.
Мы начнем с введения понятия звездной высоты. По существу звездная высота регулярного выражения есть наибольшее число вложений звезды в выражении, т. е. длина самой длинной цепи вложений звезды в звезду. Звездная высота регулярного языка L представляет собой звездную высоты "наиболее экономного" регулярного выражения а для L, т. е. ни одно из регулярных выражений, задающих L, не имеет звездную высоту меньше α.
Определение.Звездной высотой регулярного выражения α над алфавитом ∑ (обозначается sh(α)) называется неотрицательное целое число, рекурсивно определяемое следующим образом:
(i) буквы из ∑ и ∅ имеют звездную высоту 0;
(ii) если sh(α) = i, а sh(β) = j, то
sh ((α∪β)) = sh ((αβ)) = max (i, j);
(iii) если sh(α) = i, то sh(α*) = i+1.
Звездная высота регулярного языка L (обозначается sh(L)) есть наименьшее целое i, такое, что sh(α) = i для некоторого регулярного выражения α, задающего L. □
Звездная высота показывает "циклическую сложность" регулярного выражения: выражение с меньшей звездной высотой менее сложно, хотя оно может содержать большее число символов. Можно ли понизить звездную высоту каждого регулярного выражения (настолько, что она не будет превышать определенного предела), выбирая другое регулярное выражение, задающее тот же язык? Иначе говоря, не окажется ли звездная высота любого регулярного языка над ∑ всегда меньше некоторой константы, возможно зависящей от числа букв в ∑? Это первая проблема, которую мы собираемся исследовать в этой главе.
Очевидно, что во многих случаях звездную высоту данного регулярного выражения действительно можно понизить. Для каждого регулярного выражения а выражения α* и (α*)* задают один и тот же язык. Менее тривиальными примерами оказываются две пары регулярных выражений
упомянутых в конце гл. 2. В обоих случаях возможно понижение звездной высоты с 2 до 1. Очевидно, что дальнейшее понижение невозможно, поскольку ни один бесконечный язык не имеет звездную высоту, равную нулю.
Пример класса регулярных выражений, звездная высота которых может быть уменьшена радикальным образом, дает следующая теорема.
Теорема 3.1. Каждый регулярный язык над однобуквенным алфавитом ∑ = {a} имеет звездную высоту, не большую 1.
Доказательство. В силу теорем 2.9 и 2.4 можно считать, что L = L(G), где G - конечный детерминированный автомат с алфавитом пометок, равным {a}. Но при этом всегда можно считать, что автомат G имеет вид
Это означает, что множество целых чисел {i|ai∈L}, упорядоченное по возрастанию, является заключительно периодическим*. Если соответствующий период равен p, то
L = F1∪F2{ap}*.(3.1)
где F1 и F2 - конечные языки над {a}. Правая часть (3.1), рассматриваемая как регулярное выражение, имеет звездную высоту, равную 1. Следовательно, звездная высота L не превосходит 1. □
* (Множество натуральных чисел А называется заключительно периодическим (с периодом p), если для некоторого с
x≥c→(x∈A ↔ x+p ∈ A).- Прим. перев.)
В основе теоремы 3.1 лежит следующая интуитивная идея: в случае однобуквенного алфавита имеет значение лишь длина слова, и, следовательно, нет необходимости во вложениях звезды. Это заключение не распространяется на случаи, когда алфавит содержит две или более буквы. Итак, мы хотим установить следующий результат.
Теорема 3.2. Над любым алфавитом, содержащим хотя бы две буквы, существуют регулярные языки с любой звездной высотой.
Для доказательства теоремы 3.2 достаточно показать, что некоторый язык Li, заданный регулярным выражением αi со звездной высотой i, нельзя задать никаким регулярным выражением со звездной высотой, меньшей L Определим регулярные выражения αi для всех значений i≥1.
Сначала заметим, что нам всего лишь нужно показать, что над алфавитом {a, b} существуют регулярные выражения с произвольно заданной звездной высотой ≥1. Это следует, во-первых, из того, что каждое регулярное выражение над {a, b) остается регулярным выражением над любым алфавитом, содержащим {a, b}, и, во-вторых, из того, что, скажем, {a} является регулярным языком со звездной высотой, равной нулю.
Регулярные выражения αi, i = 1, 2, ..., рекурсивно определяются следующим образом:
α1 = (ab)*, αi = (a2i-1αi-1b2i-1αi-1)* i≥2.
Так, например,
α3 = (a4(aa(ab)*bb(ab)*)*b4(aa(ab)*bb(ab)*)*)*.
Далее, пусть Li - регулярный язык, заданный регулярным выражением αi, i = 1, 2, ... . Для завершения доказательства теоремы 3.2 достаточно проверить, что для каждого i звездная высота языка Li равна i. Поскольку очевидно, что звездная высота αi равна i для всех i, то sh(Li)≤i. Следовательно, достаточно показать, что
sh(Li)≥i для всех i≥1.(3.2)
В доказательстве (3.2) будут использованы слова w(i, j) с i, j ≥1 над алфавитом {a, b}. Эти слова рекурсивно определяются следующим образом:
Так, например,
w (3, 2) = a4{aaababbbabab)2b4(aaababbbabab)2.
Для каждого слова w над алфавитом (a, b) обозначим через число вхождений буквы а в слово w. Подобным же образом определяется . Так,
Рассмотрим теперь фиксированное значение i≥1 и обозначим через Ki семейство регулярных языков L над {a, b}, удовлетворяющих следующим трем условиям:
(i) существует такое натуральное t, что для каждого слова w из L имеет место равенство
(ii) для бесконечного множества значений j слово (w(i,j))j входит в качестве подслова хотя бы в одно слово из L;
(iii) из всех языков, удовлетворяющих (i) и (ii), L имеет минимальную звездную высоту, т. е. не существует'регулярного языка L', удовлетворяющего условиям (i) и (ii) и неравенству sh (L')<sh (L).
Сначала сделаем несколько предварительных замечаний относительно семейств Ki. Ясно, что для каждого i язык Li удовлетворяет условиям (i) (при t = 0) и (ii). (По сути дела тот факт, что язык Li удовлетворяет условию (ii), доказывается простой индукцией по i: для i = 1 это утверждение очевидно, а шаг индукции совершается согласно определению αi и w(i,j).) Это показывает, что семейство Ki непусто при всех i≥1. Кроме того, условие (iii) гарантирует, что все языки семейства Ki имеют одну и ту же звездную высоту di. Поскольку sh(Li)≤i и Li удовлетворяет условиям (i) и (ii), мы заключаем, что
(3.3)
Ясно, что каждый язык, удовлетворяющий условию (ii), должен быть бесконечным. Отсюда вытекает, что di не может быть равной нулю, и, следовательно, в силу (3.3)
di = 1.(3.4)
Рассмотрим теперь произвольное фиксированное i≥2 и произвольный язык L и Ki. Поскольку sh(L) = di, мы заключаем, что L является конечным объединением языков, каждый из которых задан регулярным выражением вида
(3.4)
где звездная высота каждого регулярного выражения γj (j = 0, ..., 2n) не превосходит di-1. (Заметим, что γ0 или γ2n может оказаться регулярным выражением ∅.) Кроме того, язык, заданный выражением β, удовлетворяет условию (i), поскольку сам язык L удовлетворяет условию (i). Можно также считать, что язык, заданный выражением |3 (3.5), удовлетворяет условию (ii). (Это следует из того, что L удовлетворяет условию (ii), и поэтому хотя бы один язык из задающего L объединения должен удовлетворять условию
Для доказательства теоремы 3.2 предварительно докажем три леммы.
Лемма 3.3. Ни один из языков, заданных регулярными выражениями γu, u = 0, ..., 2n, в (3.5), не удовлетворяет условию (ii).
Доказательство. Предположим противное: пусть для некоторого и язык L', заданный выражением γu, удовлетворяет условию (ii). Тогда V удовлетворяет также условию (i), так как язык, заданный выражением β, удовлетворяет (i), и, согласно определению β, существуют такие слова w1 и w2, что слово w1ww2 принадлежит языку, заданному выражением β, коль скоро w принадлежит L'.
Но из того, что L' удовлетворяет условиям (i) и (ii) и имеет меньшую звездную высоту, чем L, следует, что L не удовлетворяет условию (iii). Это противоречие доказывает лемму 3.3. □
Лемма 3.4. Существует такое натуральное u, 0≤u≤n, что язык, заданный выражением γ2u в (3.5), удовлетворяет условию (ii).
Доказательство. Предположим противное. Тогда, согласно лемме 3.3, ни один из языков, заданных регулярными выражениями
(3.6)
не удовлетворяет условию (ii). Из конечности множества этих языков следует, что существует такое целое j0, что при всех j>j0 слово (w(i,j))j не входит в качестве подслова ни в одно слово, принадлежащее какому-либо из языков, заданных регулярными выражениями (3.6).
В силу теоремы 2.9 язык, заданный регулярным выражением β, может быть представлен конечным детерминированным автоматом G. Обозначим число вершин в G через j1. Так как язык Lβ, заданный регулярным выражением β, удовлетворяет условию (ii), существует натуральное число
j2> max (j0, j1),(3.7)
такое, что (w(i, j2))j2 является подсловом некоторого слова в Lβ. Следовательно, существуют такие слова w1 и w2, что слово w1(w(i, j2))j2w2 принадлежит Lβ. Согласно (3.7), j2 превосходит число вершин автомата G. Отсюда следует, что существуют такие целые числа m1 и m2, 1≤m1<m2≤j2, что слова w1(w(i, j2))m1 и w1(w(i, j2))m2 переводят автомат G из начальной вершины в одну и ту же вершину. Полагая m = m2 - m1, заключаем, что слова
(3.8)
где t - произвольное неотрицательное целое число, принадлежат Lβ.
Вспоминая определения j0 и Lβ, заключаем, что ни одно из слов (w(i, j2))j, где j>(2n + 1)j2, не является подсловом никакого слова из Lβ. (В противном случае слово (w(i, j2))j2 было бы подсловом какого-либо слова в одном из языков, заданных регулярными выражениями (3.6).) Но это заключение противоречит тому факту, что все слова (3.8) принадлежат Lβ. □
Лемма 3.5. Существует целое число u, 0≤u≤n, такое, что язык L(2u), заданный выражением γ2u в (3.5), удовлетворяет следующему условию (модификации условия (ii)): для бесконечного множества значений j слово (w(i-1, j))j входит в качестве подслова хотя бы в одно из слов языка L(2u).
Доказательство. Мы утверждаем, что целое число и из леммы 3.4 удовлетворяет также лемме 3.5. Снова предположим противное: существует такое натуральное j0, что для всех j>j0 слово (w(i-1, j))j не входит в качестве подслова ни в одно слово из L(2u).
Согласно лемме 3.4, язык (L(2u))* удовлетворяет условию (ii). Следовательно, существует такое целое число j1>j0, что слово
является подсловом некоторого слова из (L(2u))*. Значит, и слово w(i, j1) есть подслово некоторого слова из (L(2u))*. Поэтому существует целое число v и слова w1, ..., wv из L(2u), такие, что
(3.9)
слова w1, ..., wv.
Как было показано выше (см. доказательство леммы 3.3), язык L(2u) удовлетворяет условию (i). Но язык (L(2u))* также удовлетворяет условию (i), поскольку язык Lp, заданный выражением (3, удовлетворяет (i). Более того, язык Lβ должен удовлетворять условию (i) при t = 0, поскольку язык (L(2u))* содержит пустое слово. Отсюда следует, что и язык L(2u) удовлетворяет условию (i) при t = 0.
Следовательно, в каждом из слов
w1, ..., wv(3.10)
число вхождений a равно числу вхождений b. Напомним, что (3.9) является подсловом в слове w1, ..., wv. Выясним теперь, почему это возможно.
Обозначим через p, 1≤p≤v, такое целое число, что первое вхождение слова
w(i-1, j1))j1(3.11)
в (3.9) начинается внутри wp (когда мы рассматриваем некоторое фиксированное вхождение (3.9) как подслово в слове w1, ..., wv), а через q такое целое число, что первое вхождение (3.11) в (3.9) оканчивается внутри wq. Тогда q>p, поскольку из равенства q = p следовало бы, что слово (3.11) входило бы в качестве подслова в wp, а это невозможно по определению j0 и выбору j1. Значит, можно записать, что
wq = xy,(3.12)
где x - собственный суффикс слова (3.11).
Из определения слов w(i,j) вытекает, что (1) ни один суффикс слова (3.11) не содержит больше букв a, чем букв b, и (2) каждый префикс слова
(3.13)
(включая само это слово) содержит больше букв b, чем букв a.
Так как wq содержит одинаковое число букв a и b, то из условий (1) и (2) следует, что y в (3.12) должно быть пустым словом λ. Следовательно, слово (3.13) является префиксом слова wq+1, ..., wv. Но в силу условия (2) такой факт может иметь место только тогда, когда (3.13) является префиксом слова wq+1. Так как j1>j0, это опять-таки противоречит выбору j0, и полученное противоречие доказывает лемму 3.5.
Теперь мы в состоянии доказать (3.2), а тем самым и теорему 3.2.
Согласно лемме 3.5, язык L(2u) удовлетворяет условиям (i) и (ii)' (последнее получается из (ii) заменой i на i-1). Это влечет неравенство
di-1≤sh(L(2u)),(3.14)
С другой стороны, мы видели, что язык, заданный одним из регулярных выражений γ в (3.5), имеет звездную высоту не более di-1. Поэтому имеет место следующее неравенство:
sh(L(2u))≤di-1(3.15)
Так как i≥2 было выбрано произвольно, из (3.14) и (3.15) следует, что
di≥di-1+1 при всех i≥2.(3.16)
Неравенство (3.2) непосредственно получается из (3.3), (3.4) и (3.16).□
Хотя теорема 3.2 дает решение одной из основных проблем, связанных со звездной высотой (проблемы построения языков с произвольно выбранной звездной высотой), многие другие важные проблемы, касающиеся звездной высоты, все еще остаются открытыми. Наиболее известной из них является так называемая проблема звездной высоты, состоящая в нахождении алгоритма для определения звездной высоты произвольного регулярного языка. Хотя установлен ряд результатов в духе теоремы 2.8, ни одна из многочисленных попыток решить указанную проблему до сих пор не завершилась успехом. Родственные вопросы обсуждаются в упр. 1.