Алгоритм проверки, является ли язык контекстно-свободным


18

Существует ли алгоритм / систематическая процедура для проверки того, является ли язык свободным от контекста?

Другими словами, учитывая язык, указанный в алгебраической форме (подумайте о чем-то вроде ), проверьте, является ли язык контекстно-свободным или нет , Представьте, что мы пишем веб-сервис, чтобы помочь студентам со всеми домашними заданиями; Вы указываете язык, и веб-служба выводит «без контекста» или «не контекстно-свободно». Есть ли хороший подход к автоматизации этого?Lзнак равно{aNбNaN:NN}

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

Я вижу, что Каве писал в другом месте, что набор неконтекстно-свободных языков не является рекурсивно перечисляемым, поэтому, похоже, нет надежды на то, что какой-либо алгоритм будет работать на всех возможных языках. Поэтому, я полагаю, что веб-сервис должен был бы иметь возможность выводить «без контекста», «не без контекста» или «я не могу сказать». Есть ли какой-нибудь алгоритм, который часто мог бы дать ответ, отличный от «я не могу сказать», на многих языках, которые можно увидеть в учебниках? Как бы вы создали такой веб-сервис?


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

Lзнак равно{Е:S}

где - это слова-выражения, а - система линейных неравенств по переменным длины со следующими определениями:ЕS

  • Каждое из является словом-выражением. (Они представляют переменные, которые могут содержать любое слово в .)ΣИкс,Y,Z,...Σ*

  • Каждое из a,б,с,... является словом-выражением. (Неявно, Σзнак равно{a,б,с,...} , поэтому a,б,с,... представляют один символ в основном алфавите.)

  • Каждое из aη,бη,сη,... является выражением слова, если η является переменной длины.

  • Конкатенация слов-выражений является словом-выражением.

  • Каждый из является переменной длины. (Они представляют переменные, которые могут содержать любое натуральное число.)м,N,п,Q,...

  • Каждый из является переменной длины. (Они представляют длину соответствующего слова.)|Икс|,|Y|,|Z|,...

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


Не проще ли начать с регулярности языков?
Юваль Фильмус

@YuvalFilmus, конечно! Теперь, когда вы упомянули об этом, это отличная идея. Как вы думаете, проблема выполнима для обычных языков? Я был бы счастлив спросить корреспондент о регулярных языках, если вы думаете, что это может быть полезным.
DW

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

4
Боюсь, что эта проблема, вероятно, открыта, по крайней мере, конкретный случай: cstheory.stackexchange.com/questions/17976 . Возможно, есть способ получить неразрешимость для вашей более общей проблемы, но я этого не вижу.
sdcvvc

было бы полезно привести несколько примеров слов на языке. предложить дальнейшие исследования / сотрудничество в информатическом
чате

Ответы:


0

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

Для некоторых языковых описаний ответ тривиален: если он с помощью регулярных выражений, то он регулярный, поэтому не зависит от контекста. Если это контекстно-свободные грамматики, то же самое.


1
Я согласен со всеми вашими комментариями, но я не уверен, что вижу, как это отвечает на вопрос или использует это, как ответить на вопрос. Я знаю обо всех этих фактах. Я описываю конкретный способ указания языков. Вы предполагаете, что это полный по Тьюрингу? Похоже, это не будет полным для Тьюринга. Система линейных неравенств не является полной по Тьюрингу, поэтому я подозреваю, что я уже ограничил ее настолько, чтобы она не была полной по Тьюрингу. Кроме того, для метода, который я дал для определения языков, это не тривиально, так как это не регулярное выражение и не контекстно-грамматическая грамматика.
DW

-2

Любой язык принимается автоматами Push Down, это CFL. Вот подробная разбивка, чтобы определить, является ли язык CFL или нет. проверьте, является ли язык CFL или нет


Это не алгоритм.
xskxzr

Я не понимаю, как это отвечает на вопрос. Я знаю, что язык не зависит от контекста, если он принят КПК, но это, похоже, не помогает в поиске алгоритма формы, запрошенной в вопросе. Статья geeksforgeeks, на которую вы ссылаетесь, не предоставляет полного алгоритма для этой проблемы; он просто перечисляет неисчерпывающие особые случаи, которые проще (и это не очень хорошая ссылка, так как некоторые из его утверждений немного отрывочны / сомнительны).
DW

AFAIK, пока нет хорошо структурированного алгоритма для этого. (поправьте меня, если я ошибаюсь). Лучшее, что мы можем сделать, это проверить случаи.
SiluPanda

-3

Попробуйте программное обеспечение JFLAP, если вы просто хотите проверить CFG. Вы можете даже попросить разработчиков JFLAP предоставить вам код или алгоритм для программного обеспечения. Вы можете получить JFLAP здесь http://www.jflap.org/jflaptmp/, это бесплатно, но для этого требуется JDK или JRE или что-то еще. Или, может быть, вы можете попробовать другие подобные программы и их разработчиков.


1
Я не уверен, что это отвечает на вопрос. JFLAP не имеет функции, которая принимает язык в математической нотации и сообщает вам, является ли он контекстным или нет.
Ювал Фильмус

ТЕОРЕМА 2.20 в книге Sipser Язык не зависит от контекста тогда и только тогда, когда его распознает какой-то автомат. И вы можете построить КПК в JFLAP из грамматики
Хасиб Хасан Асиф

Возможно, вы правы насчет математической нотации, которую нельзя поместить в JFLAP, но вы все равно можете поместить все правила грамматики, и она может либо преобразовать ее в КПК, либо сказать, что это не CFG или какая-то другая ошибка
Хасееб Хассан Асиф

{aNбNсN:NN}

2
Я полагаю, что JFLAP может преобразовать контекстно-свободную грамматику в эквивалентный PDA, но здесь это абсолютно не поможет.
Юваль Фильмус
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.