Алгоритм перевірки правильності мови


11

Чи існує алгоритм / систематична процедура перевірки того, чи є мова регулярною?

Іншими словами, задавши мову, вказану в алгебраїчній формі (придумайте щось на зразок ), перевірте, чи є мова регулярною чи ні. Уявіть, що ми пишемо веб-сервіс, щоб допомогти студентам в усіх домашніх роботах; користувач вказує мову, а веб-служба відповідає "регулярно", "не регулярно" або "я не знаю". (Ми хотіли б, щоб веб-сервіс відповів "я не знаю" якомога рідше.) Чи є хороший підхід до автоматизації цього? Це простежується? Чи це рішуче (тобто чи можна гарантувати, що нам ніколи не потрібно відповідати "я не знаю")? Чи є достатньо ефективні алгоритми вирішення цієї проблеми і чи зможете дати відповідь, окрім "не знаю"L={anbn:nN}

Класичний метод доведення того, що мова не є регулярною, - це накачана лема. Однак, схоже, потрібне ручне розуміння в якийсь момент (наприклад, вибір слова для накачування), тому мені не ясно, чи можна це перетворити на щось алгоритмічне.

Класичним методом доведення того, що мова є регулярним, було б використання теореми Міхілла-Нерода для отримання автоматики з кінцевими станами. Це виглядає як перспективний підхід, але він вимагає здатності виконувати основні операції з мовами в алгебраїчній формі. Мені не ясно, чи існує систематичний спосіб символічно виконувати всі операції, які можуть знадобитися, на мовах в алгебраїчній формі.


Щоб правильно поставити це питання, нам потрібно вирішити, як користувач вкаже мову. Я відкритий для пропозицій, але я думаю про щось подібне:

L={E:S}

де - слово-вираз, а - система лінійних нерівностей над змінними довжини із наступними визначеннями:SES

  • Кожна з - це слово-вираз. (Вони представляють змінні, які можуть приймати будь-яке слово в .)Σ x,y,z,Σ

  • Кожна з - це слово-вираз. (Тут являє собою зворотну сторону рядка .)x r xхr,уr,zr,хrх

  • Кожна з є слово-виразом. (Безслідно, , тому являють собою окремий символ у нижньому алфавіті.)Σ = { a , b , c , } a , b , c , а,б,c,Σ={а,б,c,}а,б,c,

  • Кожна з - це слово-вираз, якщо - змінна довжина.ηаη,бη,cη,η

  • Сполучення слів-виразів - це слово-вираз.

  • Кожна з є змінною довжини. (Вони представляють змінні, які можуть приймати будь-яке натуральне число.)м,н,p,q,

  • Кожна з є змінною довжини. (Вони позначають довжину відповідного слова.)|х|,|у|,|z|,

Це здається досить широким, щоб вирішити багато випадків, які ми бачимо в навчальних посібниках. Звичайно, ви можете замінити будь-який інший текстовий метод вказівки мови в алгебраїчній формі, якщо у вас є краща пропозиція.


Я ще не встигла багато задуматися над вибором мовних виразів. Приблизно, які види мов вона охоплює? Якщо додати обмеження, що змінна слова виникає лише один раз, чи всі такі мови без контексту?
Жил "ТАК - перестань бути злим"

Можливо, ви можете спробувати написати сам граматикою? Як і, це коротко те, що ви описуєте? Е : : = з п | х | Е Е | Е г п : : = п | | х |ЕЕ:: =cηхЕЕЕrη:: =н|х|
jmad

1
Ви можете виразити так що це виходить далеко за рамки без контекстних мов. І все-таки, я підозрюю, що проблема є настільки ж важкою, як вирішити, чи граматика без контексту визначає звичайну мову. {anbncnnN}
Жил "ТАК - перестань бути злим"

@jmad, так, це було б цілком розумно. Я не вподобаний з цим вибором мовних виразів: сміливо вибирайте щось інше, якщо бачите щось інше, що підходить. Жиль, чудовий кут атаки! (Для глядачів відомі результати, які показують, що тестування того, чи довільна без контексту граматика визначає звичайну мову, не визначимо.) Якщо проблема не визначилася, я б запропонував ми усунути проблему, щоб веб-сервіс міг відповісти "Я не знаю "не знаю", а потім запитайте алгоритм, який відповідає "я не знаю" якомога рідше.
DW

Цей клас не закритий під зіркою Кліна, чи не так? Чи можете ви виразити збалансовані дужки?
Жил "ТАК - перестань бути злим"

Відповіді:


13

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

Оновлення . Я дав цю негативну відповідь на загальне запитання

Давши мову, вказану в алгебраїчній формі, перевірити, чи є мова регулярною чи ні

оскільки безконтекстні мови є рішеннями алгебраїчних рівнянь у мовах: див. Главу II, теореми 1.4 та 1.5 у книзі Дж. Берстеля Перетворення та безконтекстні мови .

Однак те саме питання вирішується для детермінованих без контексту мов, нетривіальний результат завдяки Стіарну [1] та покращений Валіантом [2]:
[1] RE Stearns, Тест на регулярність для машин Pushdown, інформації та управління 11 323- 340 (1967). DOI: 10.1016 / S0019-9958 (67) 90591-8.
[2] LG Valiant. Закономірність і пов'язані з ними проблеми для детермінованих автоматичних витискань J. ACM 22 (1975), стор. 1–10.

Є ще один позитивний результат, ближчий до специфікацій, наведених у другій частині питання. Нагадаємо, що напівлінійні підмножини є саме множинами, визначеними в арифметиці Пресбургера. Існують також раціональні підмножини N k . Зокрема, підмножина N k, визначена лінійними нерівностями, є раціональною. Тепер, з огляду на раціональне підмножина R з N до , то дозволимо мову L ( R ) = { у п - 1у п до до | ( п 1NкNкNкRNк регулярний. Дійсно, [Гінзбург-Іспанець] відомо, що L ( R ) є регулярним, якщо і лише тоді, коли R є впізнаваним підмножиною N k, і його можна визначити [Гінзбург-іспанець], чивизнанийданий раціональний підмножина N k .

L(R)={у1н1укнк(н1,...,нк)R}
L(R)RNкNк

S. Ginsburg та EH Spanier., Напівгрупи, формули Пресбургера та мови , Тихоокеанський Дж. Мат. 16 (1966), 285-296.

С. Гінзбург та Е. Г. Іспанець. Обмежені регулярні набори , Зб. американської математики. Соц. 17 , 1043–1049 (1966).

Це не вирішує другу частину питання, яке може бути невирішеним через змінні слова, але це дає розумний фрагмент для початку.


(а) Педантична нитка: Мені не ясно, чи алгебраїчний синтаксис, наведений вище, є загальним для того, щоб виразити всі контекстно-вільні граматики (як натякали Жилль і я в коментарях), тому не зовсім зрозуміло, чи застосовується саме цей результат . (b) Більш важливо: будь ласка, розгляньте заяву про проблему відповідним чином підробленою, щоб веб-сервіс міг відповідати "я не знаю", і ми хотіли б знайти алгоритм, який відповідає "я не знаю" так рідко як можна. Я раніше це пропонував у коментарях; Я відредагую питання, щоб зробити це яснішим у самому запитанні.
DW

Я підозрюю, що ви можете адаптувати доказ, але результат не випливає. Я думаю, що існують без контексту мови, які не можуть бути виражені в цьому формалізмі: наприклад, як ви виражаєте збалансовані дужки? Клас мов не закритий під зіркою Kleene, чи не так?
Жил "ТАК - перестань бути злим"

@ Gilles, так, я подумав про це. Мені не відразу зрозуміло, як адаптувати доказ. Стандартним доказом того, що не можна визначити, чи є без контексту граматика правильною, є теорема Грейбаха. Однак мені не здається, що цей клас мов задовольняє припущення теореми Грейбаха (він, схоже, не може бути закритим при конкатенації з регулярними множинами і закритим під союзом). Можливо, є якийсь інший доказовий підхід, з яким я не знайомий. Я погоджуюся, незрозуміло, як виразити мову врівноважених дужок у цій алгебраїчній формі.
DW

Просто додали посилання.
Ж.-Є.

Ваша публікація не відповідає на запитання, оскільки стосується іншого класу мов. Дозволені тут алгебраїчні форми (з виразом одного слова) є (наскільки ми не можемо сказати) не такі загальні, як алгебраїчні форми, необхідні для вираження довільних без контекстних мов. Може статися так, що для перетину обох проблема вирішується.
Жил "ТАК - перестань бути злим"
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.