Чи всі контекстні та регулярні мови ефективно вирішуються?


12

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

Чому всі контекстні та регулярні мови ефективно вирішуються? Це означає, що їх вирішення не займе багато часу (я маю на увазі, що ми знаємо це без більшого контексту)?

введіть тут опис зображення


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

2
Якщо "ефективний" означає " " (як це прийнято), "ефективний" не означає "не дуже довгий час", оскільки поліноми теж дають величезні значення. Зауважимо, що основний результат у складності полягає в тому, що існує нескінченна послідовність проблем, кожна з яких належить простіше, ніж наступна. Це стосується як так і зовні . PПП
Рафаель

@Raphael: У цьому контексті ефективним є клас мов, які можна визначити за багаточлен. Я використовував "це може зайняти дуже багато часу" для вирішувальних проблем на відміну від невирішених, для яких ми не можемо знайти рішення за будь-який обмежений час.
Джигілі

правильним технічним способом сказати це є те, що визначити, чи w∈L, де w - слово, а L - мова, є в П. тобто / aka "розпізнавання мови"
vzn

Відповіді:


15

Регулярне членство в мові можна визначити в час, імітуючи (мінімально) DFA мови (що було попередньо обчислено).О(н)

Контекст членство вільного мови може бути вирішено в з допомогою CYK алгоритму .О(н3)

Є мови, які можна вирішити, яких немає в , такі, як у .E X P T I M EPПЕХПТЯМЕП


2
Ви можете згадати алгоритм множення матриць для безконтекстних граммарок, які мають кращий час роботи, і що цей алгоритм працює дуже ефективно (лінійно) практично на будь-якій практичній без контекстній граматиці: sciencedirect.com/science/article/pii / 030439759190180A
Олексій десять Бринк

@AlextenBrink Я не думаю, що це питання вимагає більш тонкої деталізації, ніж "поліном чи ні".
Рафаель

1
О(н)

1
Насправді для звичайних мов вам навіть явно не потрібні детерміновані автомати. Ви моделюєте паралельно всі обчислення, відслідковуючи всі стани, імітуючи конструкцію енергетичного набору.
Гендрік

1
@Dave: лінійна довжина вхідного рядка для фіксованої регулярної мови, як і інші складності, наведені тут.
Гендрик

1

Уточнення / "тонкий друк" на відповідь DC: всі CFL у формі нормальної форми Хомського можна ефективно аналізувати за допомогою алгоритму CYK, і всі CFL можуть бути перетворені в CNF. Однак перетворення довільної CFL в CNF може зайняти експоненціальний простір в гіршому випадку залежно від деяких алгоритмів. (Мені невідомий алгоритм, який гарантує перетворення P-часу тут, чи хтось інший? Треба враховувати всі кращі / найгірші випадки, такі як недетерміновані КФЛ або неоднозначні .) Вікіпедія зазначає у розділі CNF Порядок перетворень

|Г|222|Г|

Тому, здається, можуть існувати КФЛ, які не піддаються ефективному аналізу. Більшість мов програмування є ефективно конвертованими у CNF (або, можливо, в основному визначені в CNF або поблизу CNF), тому розбір CFL для "типових" мов "практично" в P. Існує певне сучасне дослідження цієї найгіршої складності (але не знайти на ньому останні документи на побіжному пошуку). Наприклад, цей старіший (1973) дослідницький документ Грейбаха також, схоже, вказує на те, що найгірший випадок може не обмежувати П. див.

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