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

18

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

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

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

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


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

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

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

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

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

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

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

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

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

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

DW
источник
Не проще ли начать с регулярности языков?
Юваль Фильмус
@YuvalFilmus, конечно! Теперь, когда вы упомянули об этом, это отличная идея. Как вы думаете, проблема выполнима для обычных языков? Я был бы счастлив спросить корреспондент о регулярных языках, если вы думаете, что это может быть полезным.
DW
2
Конечно, было бы легче для обычных языков. Кстати, общая нерешаемость не обязательно относится к языкам той формы, которую вы упоминаете.
Юваль Фильмус
4
Боюсь, что эта проблема, вероятно, открыта, по крайней мере, конкретный случай: cstheory.stackexchange.com/questions/17976 . Возможно, есть способ получить неразрешимость для вашей более общей проблемы, но я этого не вижу.
sdcvvc
было бы полезно привести несколько примеров слов на языке. предложить дальнейшие исследования / сотрудничество в информатическом
чате

Ответы:

0

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

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

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

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

SiluPanda
источник
Это не алгоритм.
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, но здесь это абсолютно не поможет.
Юваль Фильмус