Висота ітерації мови

Матеріал з testwiki
Версія від 01:21, 10 червня 2022, створена imported>InternetArchiveBot (Виправлено джерел: 2; позначено як недійсні: 0.) #IABot (v2.0.8.8)
(різн.) ← Попередня версія | Поточна версія (різн.) | Новіша версія → (різн.)
Перейти до навігації Перейти до пошуку

У теоретичній інформатиці, а саме, теорії формальних мов, висота ітерації — це міра структурної складності регулярних виразів — висота ітерації регулярного виразу дорівнює найбільшій глибині вкладеності зірочок, наявних у регулярному виразі. Поняття висоти ітерації першим увів та вивчав Егган (1963).

Формальне визначення

Формально, висота ітерації регулярного виразу E над скінченним алфавітом A визначається індуктивно так:

  • h()=0, h(ε)=0 і h(a)=0 для будь-якого символу a з A.
  • h(EF)=h(EF)=max(h(E),h(F))
  • h(E*)=h(E)+1.

Тут позначає порожню множину, ε означає порожній рядок, а E і F — довільні регулярні вирази.

Висота ітерації h(L) регулярної мови L визначається як найменша висота ітерації всіх регулярних виразів, що представляють L. Інтуїтивно зрозуміло, що якщо мова L має високу висоту ітерації, вона сама по собі складна, її не можна описати в термінах «простих» регулярних виразів з низькою висотою ітерації.

Приклади

Хоча обчислити висоту ітерації регулярного виразу просто, визначення висоти ітерації мови іноді може видатися заплутаним. Наприклад, регулярний вираз

(baa*b)*aa*

над алфавітом A={a,b} має висоту ітерації 2. Однак описувана мова являє собою множину всіх слів, що закінчуються на a. Цю ж мову можна описати за допомогою виразу

(ab)*a ,

висота ітерації якого лише 1. Щоб довести, що висота ітерації мови дорівнює 1, потрібно виключити можливість опису мови регулярним виразом із меншою висотою ітерації. Наприклад, це можна зробити побічно, довівши, що мова з висотою ітерації 0 містить лише скінченне число слів. Оскільки наша мова нескінченна, вона не може мати висоту ітерації 0.

Висота ітерації Шаблон:Не перекладено обчислювана. Наприклад, висота ітерації мови над {a,b}, в якій число входжень a і b можна порівняти за модулем 2n, дорівнює nШаблон:Sfn.

Теорема Еггана

Приклад автомата з циклічним рангом 1. Шаблон:Не перекладено перетворює його в регулярний вираз a*b*ba ((a|b)b*a|ε)* (a|b)b*|a*b*b, що має висоту ітерації 2. За теоремою Еггана має існувати еквівалентний регулярний вираз із висотою ітерації ≤1. Фактично a*b(b|a(a|b))* описує ту ж мову.

У своїх основоположних дослідженнях висоти ітерації регулярних мов ЕгганШаблон:Sfn установив зв'язок між теорією регулярних виразів, теорією скінченних автоматів та орієнтованими графами. Надалі цей зв'язок став відомим як теорема ЕгганаШаблон:Sfn. Нагадаємо деякі поняття з теорії графів та теорії автоматів.

У теорії графів циклічний ранг r(G) орієнтованого графа (орграфа) G=(V,E) визначається індуктивно так:

r(G)=1+minvVr(Gv),Шаблон:Padде Gv — орграф, отриманий видаленням вершини v і всіх дуг, що починаються або закінчуються у v.
  • Якщо G не сильно зв'язний, то r(G) дорівнює найбільшому циклічному рангу серед усіх сильно зв'язних компонент графа G.

У теорії автоматів недетермінований скінченний автомат з ε-переходами (ε-НСА) визначається як кортеж (Q, Σ, δ, q0, F), що складається з:

  • скінченної множини станів Q,
  • скінченної множини вхідних символів Σ,
  • множини помічених дуг δ, званих переходами : Q×(Σ{ε})×Q (тут ε позначає порожній рядок),
  • початкового стану q0Q,
  • множини станів F, званих поглинальними, F⊆Q.

ε-НСА приймає слово w ∈ Σ*, якщо існує орієнтований ланцюг із початкового стану q0 до деякого кінцевого стану F, що використовує дуги з δ так що конкатенація всіх міток уздовж шляху утворює слово w. Множина всіх слів над Σ*, які приймає автомат, є мовою, яку приймає автомат A.

Якщо говорити про недетермінований скінченний автомат A зі множиною станів Q як про орієнтований граф, ми природно маємо на увазі граф із множиною вершин Q, породженою переходами. Тепер можна сформулювати теорему.

Теорема Еггана: Висота ітерації регулярної мови L дорівнює найменшому циклічному рангу серед усіх недетермінованих скінченних автоматів з ε-переходами, що приймають мову L.

Доведення цієї теореми дав ЕгганШаблон:Sfn, і пізніше СакаровичШаблон:Sfn.

Узагальнена проблема висоти ітерації

Наведене вище визначення передбачає, що регулярний вираз будується на елементах алфавіту A, з використанням тільки стандартних операцій об'єднання множин, конкатенації та замикання Кліні. Узагальнений регулярний вираз визначається як регулярний вираз, але включає ще операцію доповнення множини (доповнення завжди береться відносно всіх слів над A). Якщо вважати, що взяття доповнення не збільшує висоти ітерації, тобто

h(Ec)=h(E) ,

можна визначити узагальнену висоту ітерації регулярної мови L як найменшу висоту ітерації серед усіх узагальнених регулярних виразів, що представляють мову L.

Зауважимо, що у той час як мови з нульовою (звичайною) висотою ітерації містять скінченну кількість слів, існують нескінченні мови з нульовою узагальненою висотою ітерації.

Приклад. Регулярний вираз

(ab)*a,

наведений у прикладі вище, можна еквівалентно переписати як узагальнений регулярний вираз

ca ,

оскільки доповнення порожньої множини — це точно всі слова над алфавітом A. Таким чином, множина всіх слів над алфавітом A, що закінчуються буквою a, має висоту ітерації один, тоді як узагальнена висота ітерації дорівнює нулю.

Мови з нульовою висотою ітерації називають Шаблон:Не перекладено. Можна показати, що мова L є мовою без зірочок тоді й лише тоді, коли її Шаблон:Не перекладено є Шаблон:Не перекладеноШаблон:Sfn.

Див. також

Примітки

Шаблон:Reflist

Література