Чи існує алгоритм / систематична процедура, щоб перевірити, чи мова без контексту?
Іншими словами, дається мова, зазначена в алгебраїчній формі (придумайте щось на зразок ), тест на мовічи є контекстно-вільна чи ні. Уявіть, що ми пишемо веб-сервіс, щоб допомогти студентам в усіх домашніх роботах; ви вказуєте мову, і веб-служба виводить "без контексту" або "не контекстно". Чи є хороший підхід до автоматизації цього?
Звичайно, існують методи ручного доказування, такі як викачана лема, лема Огдена, лема Париха, лемма Міжміни тощо . Однак кожен з них вимагає ручного розуміння в якийсь момент, тому не зрозуміло, як перетворити будь-який з них на щось алгоритмічне.
Я бачу, що Kaveh писав деінде, що набір безконтекстних мов не є рекурсивно перелічуючим, тому, здається, немає жодної надії, щоб жоден алгоритм працював на всіх можливих мовах. Тому я припускаю, що веб-сервіс повинен мати можливість виводити "без контексту", "не контекстно" або "я не можу сказати". Чи існує якийсь алгоритм, який часто міг би дати відповідь, окрім "я не можу сказати", на багатьох мовах, які, ймовірно, можна побачити в підручниках? Як би ви створили таку веб-службу?
Щоб правильно поставити це питання, нам потрібно вирішити, як користувач вкаже мову. Я відкритий для пропозицій, але я думаю про щось подібне:
де - це вирази слів, а S - система лінійних нерівностей за змінними довжини із наступними визначеннями:
Кожен з - це слово-вираз. (Вони представляють змінні, які можуть містити будь-яке слово у Σ ∗ .)
Кожен з - це слово-вираз. (Безслідно, Σ = { a , b , c , … } , тому a , b , c , … являють собою єдиний символ в нижньому алфавіті.)
Кожен з слово-вираз, якщо η є довжина змінної.
Сполучення слів-виразів - це слово-вираз.
Кожен з є змінною довжини. (Вони представляють змінні, які можуть містити будь-яке натуральне число.)
Кожна з - змінна довжина. (Вони позначають довжину відповідного слова.)
Це здається досить широким, щоб вирішити багато випадків, які ми бачимо в навчальних посібниках. Звичайно, ви можете замінити будь-який інший текстовий метод вказівки мови в алгебраїчній формі, якщо хочете.