Складність перевірки наявності двох слів в мові


9

Для фіксованої мови L на деякому алфавіті A, розглянемо наступну проблему, яку я закликаю L-INTERLEAVING :

  • Введення: два слова u,vA
  • Висновок: чи існує там перемежения зu і v що в L.

Тут переплетення двох слівu і v це слово w що можна отримати інтуїтивно, взявши листи u і vзберігаючи їх відносний порядок. Формальноw є переплетенням u і v якщо ми можемо розділити його на дві суперечливі послідовності, ту, яка дорівнює u та інше, що дорівнює v. Наприклад, "bheleloll" - це переплетення "привіт" і "дзвін".

У чому полягає складність L-НІНТЕРЛЕВІННА проблема, залежно від мови L? Зокрема:

  • Якщо Lрегулярно, то ми можемо вирішити задачу за допомогою динамічного алгоритму на двох рядках, який показує, що він знаходиться в класі NL. Це NL-важко для деяких регулярних мов? Однак для деяких регулярних мов проблема явно в L (детермінований логоспростір). Чи є якась характеристика мов, для яких проблема є в L?
  • Якщо L не регулярно, проблема все ще в NL коли Lмає багаточленну онлайн-детерміновану просторову складність (див. тут це поняття чи моє попереднє запитання ). Однак це не охоплює, наприклад, усіх безконтекстних мов; однак деякі інші (наприклад, паліндром) також можуть бути показані як NL (наприклад, виконавши динамічний алгоритм одночасно з початку та з кінця). Чи є без контексту мова, чияL-проблема переплетення є важкою для NP?

Відповіді:


6

На слово w=w1w і для двох цілих чисел i,j з 1ij позначимо через w(i,j) підслова wiwi+1wj з w. Крім того, ми дозволяємоw(0,0) позначають порожнє слово.

  • Дозволяє u=u1um і v=v1vn бути двома розглянутими словами.
  • Припустимо, що мова без контексту L задається контекстною граматикою у звичайному вигляді Хомського.

Побудувати динамічну програму, де стан [i,j,r,s,A] задається

  • два цілих числа i,j з 1ijm або i=j=0
  • два цілих числа r,s з 1rsn або r=s=0
  • нетермінальний символ A в контексті без граматики

Для кожного стану вирішіть, чи існує в контексті без граматики якесь виведення, яке починається з нетермінального A і це закінчується деяким переплетенням двох слів u(i,j) і w(r,s). Це рішення легко прийняти, якщо штати обробляються в правильному порядку (короткі підслови перед більш довгими підсловами).

Загалом, це дає алгоритм багаточленного часу для L- проблема переплетення будь-якої безконтекстної мови L.


Дякую! Дійсно, я не помічав, що цей варіант en.wikipedia.org/wiki/CYK_algorithm буде працювати, щоб показати, що проблема є в P для контекстних мов. З цього приводу ми не бачимо, як показати, що проблема полягає в NL за допомогою цього алгоритму: нам, здається, потрібно скласти логарифмічне число здогадів (висота дерева), причому кожна здогадка буде логарифмічною (тобто позиції в рядок). Будь-які ідеї з цього приводу?
a3nm

2
@ a3nm Чи пусте слово належить до CFL, це вже P-важко.
Sylvain

@Sylvain: Гаразд це P-важко, але як функція CFL. :) Пам'ятайте, що в моїй проблемі мова (або CFL для неї) виправлена, а вхід - це лише два рядки, тому я не думаю, що цей аргумент застосовується.
a3nm

2
@ a3nm вибачте, що я дійсно пропустив той факт, що мова виправлена. Тоді природним кандидатом буде твердість LogCFL.
Сільвейн

@Sylvain: Правильно, дякую! Так що я маю на увазі, що проблема слів є LogCFL-жорсткою навіть для фіксованої мови CFL (тобто найскладніша мова Грейбаха), тому, зокрема, є мови CFL, для яких моя проблема - LogCFL-жорсткий (візьміть приклади, коли друга рядок порожній ). І навпаки, я уявляю, що алгоритм Ґамова знаходиться в LogCFL (?). І все-таки це змушує мене замислитися над мовами, для яких моя проблема буде легшою, що це пов'язано, і як їх можна класифікувати ...
a3nm
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.