Высота итерации языкаВ теоретической информатике, точнее, в теории формальных языков, высота итерации — это мера структурной сложности регулярных выражений — высота итерации регулярного выражения равна максимальной глубине вложенности звёздочек, присутствующих в регулярном выражении. Понятие высоты итерации первым ввёл и изучал Эгган (1963). Формальное определениеФормально, высота итерации регулярного выражения E над конечным алфавитом A определяется индуктивно следующим образом:
Здесь обозначает пустое множество, ε означает пустую строку, а E и F — произвольные регулярные выражения. Высота итерации h(L) регулярного языка L определяется как минимальная высота итерации всех регулярных выражений, представляющих L. Интуитивно понятно, что если язык L имеет высокую высоту итерации, он сам по себе сложен, поскольку не может быть описан в терминах «простых» регулярных выражений с низкой высотой итерации. ПримерыХотя вычисление высоты итерации регулярного выражения просто, определения высоты итерации языка может иногда оказаться запутанным. В качестве примера регулярное выражение над алфавитом A = {a, b} имеет высоту итерации 2. Однако описываемый язык представляет собой множество всех слов, оканчивающихся на a. Тот же язык можно описать с помощью выражения
высота итерации которого лишь 1. Чтобы доказать, что высота итерации языка равна 1, нужно исключить возможность описания языка регулярным выражением с меньшей высотой итерации. Например, это может быть сделано косвенно путём доказательства, что язык с высотой итерации 0 содержит лишь конечное число слов. Поскольку наш язык бесконечен, он не может иметь высоту итерации 0. Высота итерации группового языка[англ.] вычислима. Например, высота итерации языка над {a,b}, в котором число вхождений a и b сравнимы по модулю 2n, равна n[1]. Теорема ЭгганаВ своих основополагающих исследованиях высоты итерации регулярных языков Эгган[2] установил связь между теорией регулярных выражений, теорией конечных автоматов и ориентированными графами. В последующем эта связь получила известность как теорема Эггана[3]. Напомним некоторые понятия из теории графов и теории автоматов. В теории графов циклический ранг r(G) ориентированного графа (орграфа) G = (V, E) определяется индуктивно следующим образом:
В теории автоматов недетерминированный конечный автомат с ε-переходами (ε-НКА) определяется как кортеж (Q, Σ, δ, q0, F), состоящий из
Слово w ∈ Σ* принимается ε-НКА, если существует ориентированная цепь из начального стостояния q0 до некоторого конечного состояния F, использующая диги из δ, так что конкатенация всех меток вдоль пути образует слово w. Множество всех слов над Σ*, принимаемых автоматом, является языком, принимаемым автоматом A. Если говорить о недетерминированном конечном автомате A со множеством состояний Q как об ориентированном графе, мы естественным образом имеем в виду граф с множеством вершин Q, порождённым переходами. Теперь можно сформулировать теорему.
Доказательство этой теоремы дал Эгган[2], и, позднее, Сакарович[3]. Обобщённая проблема высоты итерацииВышеприведённое определение предполагает, что регулярное выражение строится на элементах алфавита A, используя только стандартные операции объединения множеств, конкатенации и замыкания Клини. Обобщённое регулярное выражение определяется как регулярное выражение, но включает также операцию дополнение множества (дополнение всегда берётся относительно всех слов над A). Если мы будем считать, что взятие дополнения не увеличивает высоту итерации, то есть
мы можем определить обобщённую высоту итерации регулярного языка L как минимальную высоту итерации среди всех обобщённых регулярных выражений, представляющих язык L. Заметим, что в то время как языки с нулевой (обычной) высотой итерации содержат конечное число слов, существуют бесконечные языки с нулевой обобщённой высотой итерации. Пример. Регулярное выражение которое мы видели в примере выше, можно эквивалентно переписать как обобщённое регулярное выражение
поскольку дополнение пустого множества — это в точности все слова над алфавитом A. Таким образом, множество всех слов над алфавитом A, кончающихся буквой a, имеют высоту итерации один, в то время как обобщённая высота итерации равна нулю. Языки с нулевой высотой итерации называются языками без звёздочек[англ.]. Можно показать, что язык L является языком без звёздочек тогда и только тогда, когда его cинтаксический моноид[англ.] является апериодичным[англ.][4]. См. такжеПримечания
Литература
|