Алгоритм для перевірки того, чи мова без контексту


18

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

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

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

Я бачу, що Kaveh писав деінде, що набір безконтекстних мов не є рекурсивно перелічуючим, тому, здається, немає жодної надії, щоб жоден алгоритм працював на всіх можливих мовах. Тому я припускаю, що веб-сервіс повинен мати можливість виводити "без контексту", "не контекстно" або "я не можу сказати". Чи існує якийсь алгоритм, який часто міг би дати відповідь, окрім "я не можу сказати", на багатьох мовах, які, ймовірно, можна побачити в підручниках? Як би ви створили таку веб-службу?


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

L={E:S}

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

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

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

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

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

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

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

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


Не було б легше почати з регулярності мов?
Yuval Filmus

@YuvalFilmus, точно! Тепер, коли ви це згадуєте, це чудова ідея. Як ви вважаєте, проблема можлива для звичайних мов? Буду рада запитати відповідь про звичайні мови, якщо ви вважаєте, що це може бути цінним.
DW

2
Звичайно, для звичайних мов було б простіше. До речі, загальна нерішучість не обов'язково стосується мов форми, яку ви згадуєте.
Yuval Filmus

4
Я боюся, що ця проблема, ймовірно, відкрита, принаймні конкретний випадок є: cstheory.stackexchange.com/questions/17976 . Можливо, є спосіб визначити невирішеність вашої загальнішої проблеми, але я цього не бачу.
sdcvvc

було б корисно навести кілька прикладних слів мовою. пропонуємо додаткові дослідження / співпрацю в Computer Science Chat
vzn

Відповіді:


0

Згідно з теоремою Райса , визначити, чи є мова, прийнята машиною Тьюрінга, якусь нетривіальну властивість (тут: без контексту), не вирішується. Таким чином, вам доведеться обмежити потужність вашої розпізнавальної машини (або опису), щоб зробити це не Тюрінг повним, щоб сподіватися на відповідь.

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


1
Я погоджуюся з усіма вашими коментарями, але я не впевнений, що бачу, як це відповідає на питання або використовую це, як відповісти на питання. Мені відомі всі ці факти. Я описую особливий спосіб вказівки мов. Ви припускаєте, що це Тьюрінг? Здається, це не є для мене Тьюрінгом. Система лінійних нерівностей не є повної Тьюрінга, тому я підозрюю / припускаю, що я вже досить обмежив її, щоб бути не повним Тьюрінга. Крім того, для методу, який я дав для вказівки мов, це не тривіально, оскільки це не регулярний вираз і не граматика без контексту.
DW

-2

Автомати Push Down автоматично приймаються будь-якою мовою, це CFL. Ось детальна розбивка, щоб визначити, мова є CFL чи ні. перевірити, чи мова є CFL чи ні


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

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

AFAIK, для цього ще немає добре структурованого алгоритму. (виправте мене, якщо я помиляюся). Найкраще, що ми можемо зробити, це перевірити наявність справ.
SiluPanda

-3

Спробуйте програмне забезпечення JFLAP, якщо ви просто хочете перевірити CFG. Ви можете навіть попросити розробників JFLAP дати вам код або алгоритм програмного забезпечення. ви можете отримати JFLAP звідси http://www.jflap.org/jflaptmp/ безкоштовно, однак це вимагає JDK або JRE або щось подібне. А може, ви можете спробувати деякі інші подібні програмні засоби та їх розробники.


1
Я не впевнений, що це відповідає на питання. JFLAP не має функції, яка приймає мову в математичних позначеннях і повідомляє вам, чи це без контексту чи ні.
Yuval Filmus

ТЕОРЕМА 2.20 у книзі Сіпсера Мова є без контексту, якщо і лише тоді, коли якийсь автоматичний розгортання розпізнає її. І ви можете побудувати PDA в JFLAP з граматики
Хазеб Хасан Асіф

Ви, можливо, маєте рацію щодо математичних позначень, які не можна поставити в JFLAP, але ви все одно можете помістити всі правила граматики, і вона може або перетворити її в КПК, або сказати, що це не CFG або якась інша помилка
Хазеб Хассан Асіф

{анбнcн:нN}

2
Я думаю, що JFLAP може перетворити без контексту граматику в еквівалентний КПК, але це тут абсолютно не допомагає.
Yuval Filmus
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.