Jump to content

Контекстно-свободный язык

В теории формального языка контекстно -свободный язык ( CFL ), также называемый языком Хомского типа 2 , представляет собой язык, порожденный контекстно-свободной грамматикой (CFG).

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

Предыстория [ править ]

Контекстно-свободная грамматика [ править ]

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

Автоматический [ править ]

Набор всех контекстно-свободных языков идентичен набору языков, принимаемых pushdown-автоматами , что делает эти языки поддающимися синтаксическому анализу. Кроме того, для данной CFG существует прямой способ создания автомата с раскрывающимся представлением для грамматики (и, следовательно, соответствующего языка), хотя другой путь (создание грамматики с учетом автомата) не такой прямой.

Примеры [ править ]

Примером контекстно-свободного языка является , язык всех непустых строк четной длины, все первые половины которых — это a , а все вторые половины — b . L генерируется грамматикой .Этот язык не является регулярным .Он принимается автоматом с понижением где определяется следующим образом: [примечание 1]

Однозначные КЛЛ являются подмножеством всех КЛЛ: существуют по своей сути неоднозначные КЛЛ. Примером неоднозначного по своей сути КЛЛ является объединение с . Этот набор является контекстно-свободным, поскольку объединение двух контекстно-свободных языков всегда является контекстно-свободным. Но нет способа однозначно проанализировать строки в (неконтекстно-свободном) подмножестве. который является пересечением этих двух языков. [1]

Язык Дайка [ править ]

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

Свойства [ править ]

Контекстно-свободный анализ [ править ]

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

Определение экземпляра проблемы членства ; т.е. задана строка , определить, является ли где это язык, порожденный данной грамматикой ; также известно как признание . бесконтекстное распознавание грамматик нормальной формы Хомского показал, что Лесли Г. Валиант сводится к умножению булевых матриц , таким образом наследуя верхнюю границу сложности O ( n 2.3728596 ). [2] [примечание 2] И наоборот, Лилиан Ли показала O ( n 3-е ) умножение булевой матрицы так, чтобы его можно было свести к O ( n 3−3е ) Разбор CFG, таким образом устанавливая некую нижнюю границу для последнего. [3]

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

Формально набор всех контекстно-свободных языков идентичен набору языков, принимаемых pushdown-автоматами (PDA). Алгоритмы синтаксического анализа для контекстно-свободных языков включают алгоритм CYK и алгоритм Эрли .

Особым подклассом контекстно-свободных языков являются детерминированные контекстно-свободные языки , которые определяются как набор языков, принимаемых детерминированным автоматом с выталкиванием вниз , и могут быть проанализированы синтаксическим анализатором LR(k) . [4]

См. также анализ грамматики выражений как альтернативный подход к грамматике и синтаксическому анализатору.

Свойства замыкания [ править ]

Класс контекстно-свободных языков замыкается при следующих операциях. То есть, если L и P являются контекстно-свободными языками, следующие языки также являются контекстно-свободными:

и различии Незамыкание при пересечении, дополнении

Контекстно-свободные языки не замкнуты при пересечении. В этом можно убедиться, взяв языки и , которые оба являются контекстно-свободными. [примечание 3] Их пересечение находится , который можно показать как неконтекстно-свободный с помощью леммы о накачке для контекстно-свободных языков . Как следствие, контекстно-свободные языки не могут быть замкнуты относительно дополнения, как и для любых языков A и B , их пересечение может быть выражено объединением и дополнением: . В частности, контекстно-свободный язык не может быть замкнут по отношению к различию, поскольку дополнение может быть выражено различием: . [12]

Однако если L — контекстно-свободный язык, а D — регулярный язык, то оба их пересечения и их разница являются контекстно-свободными языками. [13]

Разрешимость [ править ]

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

Следующие проблемы неразрешимы для произвольно заданных контекстно-свободных грамматик A и B:

  • Эквивалентность: есть ? [14]
  • Дизъюнктность: есть  ? [15] Однако пересечение контекстно-свободного языка и обычного языка является контекстно-свободным, [16] [17] вариант задачи, где B — регулярная грамматика (см. ниже «Пустота»). следовательно, разрешим
  • Сдерживание: есть  ? [18] вариант задачи, где B — регулярная грамматика: Опять же, разрешим [ нужна ссылка ] тогда как тот, где A является регулярным, обычно не является регулярным. [19]
  • Универсальность: есть ? [20]
  • Регулярность: есть обычный язык? [21]
  • Двусмысленность: каждая ли грамматика двусмысленный? [22]

следующие проблемы разрешимы Для произвольных контекстно-свободных языков :

  • Пустота: Учитывая контекстно-свободную грамматику A ,  ? [23]
  • Конечность: Учитывая контекстно-свободную грамматику A , конечный? [24]
  • Членство: Учитывая контекстно-свободную грамматику G и слово , делает ? Эффективными алгоритмами с полиномиальным временем для решения проблемы принадлежности являются алгоритм CYK и алгоритм Эрли .

По данным Хопкрофта, Мотвани, Ульмана (2003), [25] Многие фундаментальные свойства замыкания и (не)разрешимости контекстно-свободных языков были показаны в статье Бар-Хиллеля , Перлза и Шамира 1961 года. [26]

Языки, которые не являются контекстно-свободными [ править ]

Набор является контекстно-зависимым языком , но не существует контекстно-свободной грамматики, порождающей этот язык. [27] Итак, существуют контекстно-зависимые языки, которые не являются контекстно-свободными. Чтобы доказать, что данный язык не является контекстно-свободным, можно использовать лемму о накачке для контекстно-свободных языков. [26] или ряд других методов, таких как лемма Огдена или теорема Париха . [28]

Примечания [ править ]

  1. ^ значение аргументы и результаты:
  2. ^ В статье Валианта O ( n 2.81 ) была самой известной на тот момент верхней границей. См. «Умножение матриц № Вычислительная сложность», чтобы узнать об улучшениях, произошедших с тех пор.
  3. ^ Контекстно-свободная грамматика для языка A задается следующими правилами производства, принимая S в качестве начального символа: S Sc | аТБ | е ; Т аТб | ε . Грамматика для B аналогична.

Ссылки [ править ]

  1. ^ Хопкрофт и Ульман 1979 , с. 100, Теорема 4.7.
  2. ^ Валиант, Лесли Г. (апрель 1975 г.). «Общее контекстно-свободное распознавание менее чем за кубическое время» (PDF) . Журнал компьютерных и системных наук . 10 (2): 308–315. дои : 10.1016/s0022-0000(75)80046-8 .
  3. ^ Ли, Лилиан (январь 2002 г.). «Быстрый контекстно-свободный анализ грамматики требует быстрого умножения логических матриц» (PDF) . Дж АСМ . 49 (1): 1–15. arXiv : cs/0112018 . дои : 10.1145/505241.505242 . S2CID   1243491 . Архивировано (PDF) из оригинала 27 апреля 2003 г.
  4. ^ Кнут, DE (июль 1965 г.). «О переводе языков слева направо». Информация и контроль . 8 (6): 607–639. дои : 10.1016/S0019-9958(65)90426-2 .
  5. ^ Jump up to: Перейти обратно: а б с Хопкрофт и Ульман 1979 , с. 131, следствие теоремы 6.1.
  6. ^ Хопкрофт и Ульман 1979 , с. 142, Упражнение 6.4d.
  7. ^ Хопкрофт и Ульман 1979 , с. 131-132, Следствие теоремы 6.2.
  8. ^ Хопкрофт и Ульман 1979 , с. 132, Теорема 6.3.
  9. ^ Хопкрофт и Ульман 1979 , с. 142-144, Упражнение 6.4c.
  10. ^ Хопкрофт и Ульман 1979 , с. 142, Упражнение 6.4б.
  11. ^ Хопкрофт и Ульман 1979 , с. 142, Упражнение 6.4а.
  12. ^ Стивен Шейнберг (1960). «Примечание о логических свойствах контекстно-свободных языков» (PDF) . Информация и контроль . 3 (4): 372–375. дои : 10.1016/s0019-9958(60)90965-7 . Архивировано (PDF) из оригинала 26 ноября 2018 г.
  13. ^ Бейгель, Ричард; Гасарч, Уильям. «Доказательство того, что если L = L1 ∩ L2, где L1 — CFL, а L2 — обычный, то L — контекстно-свободный, который не использует КПК» (PDF) . Факультет компьютерных наук Университета Мэриленда . Архивировано (PDF) из оригинала 12 декабря 2014 г. Проверено 6 июня 2020 г.
  14. ^ Хопкрофт и Ульман 1979 , с. 203, теорема 8.12(1).
  15. ^ Хопкрофт и Ульман 1979 , с. 202, Теорема 8.10.
  16. ^ Соломон (1973) , с. 59, теорема 6.7.
  17. ^ Хопкрофт и Ульман 1979 , с. 135, Теорема 6.5.
  18. ^ Хопкрофт и Ульман 1979 , с. 203, теорема 8.12(2).
  19. ^ Хопкрофт и Ульман 1979 , с. 203, теорема 8.12(4).
  20. ^ Хопкрофт и Ульман 1979 , с. 203, Теорема 8.11.
  21. ^ Хопкрофт и Ульман 1979 , с. 205, Теорема 8.15.
  22. ^ Хопкрофт и Ульман 1979 , с. 206, Теорема 8.16.
  23. ^ Хопкрофт и Ульман 1979 , с. 137, теорема 6.6(а).
  24. ^ Хопкрофт и Ульман 1979 , с. 137, теорема 6.6(б).
  25. ^ Джон Э. Хопкрофт; Раджив Мотвани; Джеффри Д. Уллман (2003). Введение в теорию автоматов, языки и вычисления . Эддисон Уэсли. Здесь: Раздел 7.6, стр. 304 и Раздел 9.7, стр. 411.
  26. ^ Jump up to: Перейти обратно: а б Иеошуа Бар Гилель; Мика Ашер Перлз; Эли Шамир (1961). «О формальных свойствах простых грамматик фразовой структуры». Журнал фонетических, лингвистических и коммуникативных исследований . 14 (2): 143–172.
  27. ^ Хопкрофт и Ульман 1979 .
  28. ^ «Как доказать, что язык не контекстно-свободный?» .

Цитируемые работы [ править ]

Дальнейшее чтение [ править ]

Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: e9127722cfab83d9a2c87fab1bfcd258__1713558300
URL1:https://arc.ask3.ru/arc/aa/e9/58/e9127722cfab83d9a2c87fab1bfcd258.html
Заголовок, (Title) документа по адресу, URL1:
Context-free language - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)