Детерминированный контекстно-свободный язык - Deterministic context-free language

В формальная теория языка, детерминированные контекстно-свободные языки (DCFL) площадь правильное подмножество из контекстно-свободные языки. Это контекстно-свободные языки, которые могут быть приняты детерминированный автомат выталкивания. DCFL всегда недвусмысленны, что означает, что они допускают однозначная грамматика. Существуют недетерминированные однозначные CFL, поэтому DCFL образуют собственное подмножество однозначных CFL.

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

Описание

Понятие DCFL тесно связано с детерминированный автомат выталкивания (DPDA). Вот где языковая сила выталкивающие автоматы сводится к, если мы сделаем их детерминированными; автоматические выталкивающие устройства не могут выбирать между различными альтернативами перехода между состояниями и, как следствие, не могут распознавать все контекстно-свободные языки.[1] Однозначные грамматики не всегда генерируют DCFL. Например, язык четной длины палиндромы в алфавите 0 и 1 имеет однозначную контекстно-свободную грамматику S → 0S0 | 1S1 | ε. Произвольная строка этого языка не может быть проанализирована, не прочитав сначала все ее буквы, а это означает, что выталкивающий автомат должен пробовать альтернативные переходы между состояниями, чтобы приспособиться к различной возможной длине частично проанализированной строки.[2]

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

Детерминированные контекстно-свободные языки могут быть распознаны детерминированная машина Тьюринга за полиномиальное время и О (бревно2 п) Космос; как следствие, DCFL является подмножеством класса сложности SC.[3]

Набор детерминированных контекстно-свободных языков замыкается при следующих операциях:[4]

  • дополнять
  • обратный гомоморфизм
  • правое частное с обычным языком
  • pre: pre () - это подмножество всех строк, имеющих собственный префикс, который также принадлежит .
  • мин: мин () - это подмножество всех строк, у которых нет правильного префикса в .
  • макс: макс () - это подмножество всех строк, которые не являются префиксом более длинной строки в .

Набор детерминированных контекстно-свободных языков нет закрыта по следующим операциям:[4]

Важность

Языки этого класса имеют большое практическое значение в информатике, поскольку их можно анализировать намного эффективнее, чем недетерминированные контекстно-свободные языки. Сложность программы и время выполнения детерминированного автомата выталкивания намного меньше, чем у недетерминированного. В наивной реализации последний должен делать копии стека каждый раз, когда происходит недетерминированный шаг. Самый известный алгоритм проверки членства на любом контекстно-свободном языке: Алгоритм Valiant, принимая O (п2.378) время, где п - длина строки. С другой стороны, детерминированные контекстно-свободные языки могут быть приняты в O (п) время LR (k) парсер.[5] Это очень важно для компьютерный язык перевод, потому что многие компьютерные языки относятся к этому классу языков.

Смотрите также

Рекомендации

  1. ^ Хопкрофт, Джон; Джеффри Уллман (1979). Введение в теорию автоматов, языки и вычисления. Эддисон-Уэсли. п. 233.
  2. ^ Хопкрофт, Джон; Раджив Мотвани; Джеффри Уллман (2001). Введение в теорию автоматов, языки и вычисления 2-е издание. Эддисон-Уэсли. С. 249–253.
  3. ^ Кук, Стивен А. (30 апреля - 2 мая 1979 г.). «Детерминированные CFL принимаются одновременно в полиномиальное время и в логарифмическом квадрате пространства». Материалы одиннадцатого ежегодного симпозиума ACM по теории вычислений - STOC '79. Атланта. С. 338–345. Дои:10.1145/800135.804426.
  4. ^ а б Хугебум, Хендрик; Энгельфриет, Джуст (2004). Формальные языки и приложения. Springer-Verlag Berlin Heidelberg. п. 128. ISBN  978-3-642-53554-3.
  5. ^ Кнут, Д. Э. (Июль 1965 г.). «О переводе языков слева направо» (PDF). Информация и контроль. 8 (6): 607–639. Дои:10.1016 / S0019-9958 (65) 90426-2. Архивировано из оригинал (PDF) 15 марта 2012 г.. Получено 29 мая 2011.CS1 maint: ref = harv (связь)