Jump to content

Производная Бжозовского

Производная Бжозовского (на красном фоне) набора словарных строк относительно строки «con».

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

.

Например,

Производное Бжозовского было введено под разными названиями с конца 1950-х годов. [1] [2] [3] Сегодня он назван в честь ученого-компьютерщика Януша Бжозовского , который исследовал его свойства и предложил алгоритм вычисления производной обобщенного регулярного выражения . [4]

Определение

[ редактировать ]

Хотя изначально это определение изучалось для регулярных выражений, оно применимо к произвольным формальным языкам.Учитывая любой формальный язык над алфавитом и любая строка , производная от относительно определяется как: [5]

Производная Бжозовского — это частный случай левого фактора по одноэлементному множеству, содержащему только : .

Эквивалентно для всех :

Из определения для всех :

поскольку для всех , у нас есть .

Производная по произвольной строке сводится к последовательным производным по символам этой строки, поскольку для всех :

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

Язык можно рассматривать как (потенциально бесконечное) дерево с булевой меткой (см. также дерево (теория множеств) и автомат с бесконечным деревом ). Каждая возможная строка обозначает узел в дереве с меткой true, когда и ложь в противном случае. В этой интерпретации производная по символу соответствует поддереву, полученному путем следования по ребру от корня. Разложение дерева на корень и поддеревья. соответствует следующему равенству, справедливому для любого языка :

Производные обобщенных регулярных выражений

[ редактировать ]

Когда язык задается регулярным выражением, концепция производных приводит к алгоритму определения того, принадлежит ли данное слово регулярному выражению.

Учитывая конечный алфавит A символов, [6] обобщенное регулярное выражение R обозначает возможно бесконечное множество строк конечной длины в алфавите A , называемом языком R и обозначаемом L ( R ).

Обобщенным регулярным выражением может быть одно из следующих (где a — символ алфавита A , а R и S — обобщенные регулярные выражения):

  • «∅» обозначает пустое множество: L (∅) = {},
  • «ε» обозначает одноэлементный набор, содержащий пустую строку: L (ε) = {ε},
  • " a " обозначает одноэлементный набор, содержащий односимвольную строку a : L ( a ) = { a },
  • « R S » обозначает объединение R и S : L ( R S ) = L ( R ) ∪ L ( S ),
  • « R S » обозначает пересечение R и S : L ( R S ) = L ( R ) ∩ L ( S ),
  • «¬ R » обозначает дополнение R (относительно A *, множества всех строк над A ): L R ) = A * \ L ( R ),
  • « RS » обозначает объединение R и S : L ( RS ) = L ( R ) · L ( S ),
  • « R *» обозначает замыкание Клини : R L ( R * ) = L ( R )*.

В обычном регулярном выражении ни ∧, ни ¬ не допускаются.

Вычисление

[ редактировать ]

Для любого данного обобщенного регулярного выражения R и любой строки u производная u −1 R снова является обобщенным регулярным выражением (обозначающим язык u −1 Л ( Р )). [7] Его можно вычислить рекурсивно следующим образом. [8]

( делать ) −1 Р = а −1 ( в −1 Р ) для символа a и строки u
е −1 Р = Р

Используя предыдущие два правила, производная по произвольной строке объясняется производной по односимвольной строке a .Последний можно вычислить следующим образом: [9]

а −1 а = е
а −1 б = ∅ для каждого символа b a
а −1 е = ∅
а −1 = ∅
а −1 ( Р *) = ( а −1 Р ) Р *
а −1 ( РС ) = ( а −1 р ) S ∨ ν( р ) а −1 С
а −1 ( R S ) = ( а −1 р ) ∧ ( а −1 С )
а −1 ( R S ) = ( а −1 р ) ∨ ( а −1 С )
а −1 R ) = ¬( а −1 Р )

Здесь ν( R ) — вспомогательная функция, дающая обобщенное регулярное выражение, которое возвращает пустую строку ε, если ε язык R содержит , и в противном случае возвращает ∅. Эту функцию можно вычислить по следующим правилам: [10]

п( а ) = ∅ для любого символа а
п( е ) = е
п(∅) = ∅
п( Р *) = е
ν( РС ) знак равно ν( р ) ∧ ν( S )
ν( р S ) знак равно ν( р ) ∧ ν( S )
ν( р S ) знак равно ν( р ) ∨ ν( S )
п(¬ Р ) = е если ν( R ) = ∅
п(¬ Р ) = ∅ если ν( R ) = е

Характеристики

[ редактировать ]

Строка u является членом набора строк, обозначаемого обобщенным регулярным выражением R, тогда и только тогда, когда ε является членом набора строк, обозначаемого производной u. −1 Р. [11]

Учитывая все производные фиксированного обобщенного регулярного выражения, R дает лишь конечное число различных языков. Если их количество обозначить d R , все эти языки можно получить как производные от R по строкам длины меньше d R . [12] Более того, существует полный детерминированный конечный автомат с d R состояниями, который распознает регулярный язык, заданный R , как утверждается в теореме Майхилла-Нерода .

Производные контекстно-свободных языков

[ редактировать ]

Производные также эффективно вычислимы для рекурсивно определенных уравнений с операторами регулярных выражений, которые эквивалентны контекстно-свободным грамматикам . Это понимание было использовано для разработки алгоритмов синтаксического анализа для контекстно-свободных языков . [13] Было показано, что реализация таких алгоритмов имеет кубическую временную сложность , [14] соответствует сложности синтаксического анализатора Эрли для общих контекстно-свободных грамматик.

См. также

[ редактировать ]
  1. ^ Джордж Н. Рэйни (апрель 1958 г.). «Последовательные функции» . Журнал АКМ . 5 (2): 177–180. дои : 10.1145/320924.320930 . S2CID   1611992 .
  2. ^ Дана Скотт и Майкл Рабин (апрель 1959 г.). «Конечные автоматы и проблемы их решения» (PDF) . Журнал исследований и разработок IBM . 3 (2): 114–125. дои : 10.1147/рд.32.0114 .
  3. ^ Си Си Элгот и Джей Ди Ратледж (октябрь 1961 г.). «Операции над конечными автоматами». В Роберте С. Ледли (ред.). Учеб. AIEE 2-я годовщина. Симп. по коммутации, теории цепей и логическому проектированию (SWCT), Детройт . стр. 129–132. дои : 10.1109/FOCS.1961.26 .
  4. ^ Януш А. Бжозовский (1964). «Производные регулярных выражений» . Дж АСМ . 11 (4): 481–494. дои : 10.1145/321239.321249 . S2CID   14126942 .
  5. ^ Януш А. Бжозовский (1964). «Производные регулярных выражений» . Дж АСМ . 11 (4): 481–494. дои : 10.1145/321239.321249 . S2CID   14126942 .
  6. ^ Бжозовский (1964), стр. 481, требовал, чтобы A состояло из 2 н комбинации из n битов для некоторого n .
  7. ^ Бжозовский (1964), стр.483, Теорема 4.1.
  8. ^ Бжозовский (1964), стр.483, Теорема 3.2.
  9. ^ Бжозовский (1964), стр.483, Теорема 3.1.
  10. ^ Бжозовский (1964), стр.482, Определение 3.2.
  11. ^ Бжозовский (1964), стр.483, Теорема 4.2.
  12. ^ Бжозовский (1964), стр.484, Теорема 4.3.
  13. ^ Мэтью Мэйт; Дэвид Дарайс; Дэниел Спивак (2011). Разбор с производными: функциональный перл . Материалы 16-й международной конференции ACM SIGPLAN по функциональному программированию (ICFP). стр. 189–195. дои : 10.1145/2034773.2034801 .
  14. ^ Майкл Д. Адамс; Селеста Холленбек; Мэтью Мэйт (2016). «О сложности и производительности синтаксического анализа с производными». Материалы 37-й конференции ACM SIGPLAN по проектированию и реализации языков программирования . Материалы 37-й конференции ACM SIGPLAN по разработке и реализации языков программирования (PLDI). стр. 224–236. arXiv : 1604.04695 . дои : 10.1145/2908080.2908128 . ISBN  9781450342612 .
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 54c6e8093d3a92410fbb329b485c2cd6__1708949820
URL1:https://arc.ask3.ru/arc/aa/54/d6/54c6e8093d3a92410fbb329b485c2cd6.html
Заголовок, (Title) документа по адресу, URL1:
Brzozowski derivative - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)