Złożoność sprawdzania, czy dwa słowa mają przeplatanie w języku

9

Dla ustalonego języka L na jakiś alfabet A, rozważmy następujący problem, który nazywam L-WŁOKA WEWNĘTRZNA :

  • Wejście: dwa słowa u,vA
  • Wyjście: czy istnieje takie przeplatanie odu i v która jest w L.

Tutaj przeplatają się dwa słowau i v to słowo w które można uzyskać intuicyjnie, biorąc litery u i vzachowując ich względną kolejność. Formalnie,w jest przeplotem u i v jeśli możemy podzielić go na dwa rozłączne podsekwencje, jeden równy u a drugi, który jest równy v. Na przykład „bheleloll” to przeplatanie „hello” i „bell”.

Jaka jest złożoność L-WYMIAR WEWNĘTRZNY, w zależności od języka L? W szczególności:

  • Gdyby Ljest regularny, wtedy możemy rozwiązać problem za pomocą algorytmu dynamicznego na dwóch ciągach, który pokazuje, że jest w klasie NL. Czy w niektórych zwykłych językach jest to trudne? Jednak w przypadku niektórych zwykłych języków problemem jest wyraźnie L (deterministyczny obszar logów). Czy istnieje jakaś charakterystyka języków, dla których problem występuje w L?
  • Gdyby L nie jest regularny, problem nadal występuje w Holandii, kiedy Lma wielomianową deterministyczną złożoność przestrzeni online (zobacz tutaj to pojęcie lub moje wcześniejsze pytanie ). Nie obejmuje to jednak np. Wszystkich języków bezkontekstowych; jednak niektóre inne (np. palindromy) można również wykazać jako NL (np. wykonując algorytm dynamiczny jednocześnie od początku i od końca). Czy istnieje język bezkontekstowy, któregoL-problem przeplatania jest trudny NP?
a3nm
źródło

Odpowiedzi:

6

Za słowo w=w1w i dla dwóch liczb całkowitych i,j z 1ij oznaczamy przez w(i,j) podmowa wiwi+1wj z w. Ponadto pozwalamyw(0,0) oznacz puste słowo.

  • Pozwolić u=u1um i v=v1vn dwa rozważane słowa.
  • Załóżmy, że język bezkontekstowy L jest określony przez bezkontekstową gramatykę w normalnej formie Chomsky'ego.

Zbuduj program dynamiczny, w którym stan [i,j,r,s,A] jest określone przez

  • dwie liczby całkowite i,j z 1ijm lub i=j=0
  • dwie liczby całkowite r,s z 1rsn lub r=s=0
  • nieterminalny symbol A w gramatyce bezkontekstowej

Dla każdego stanu zdecyduj, czy w gramatyce bezkontekstowej istnieje pewna pochodna, która zaczyna się od nieterminalnej A i to kończy się przeplataniem dwóch słów u(i,j) i w(r,s). Decyzję tę można łatwo podjąć, jeśli stany są obsługiwane we właściwej kolejności (krótkie słowa przed dłuższymi słowami).

Podsumowując, daje to algorytm wielomianu czasu dla L-interleaving problem dowolnego języka bezkontekstowego L.

Gamow
źródło
Dzięki! Rzeczywiście nie zauważyłem, że ten wariant en.wikipedia.org/wiki/CYK_algorytm działałby, aby pokazać, że problem dotyczy języka P dla języków bezkontekstowych. To powiedziawszy, nie widzimy, jak pokazać, że problem tkwi w NL przy użyciu tego algorytmu: wydaje się, że musimy dokonać logarytmicznej liczby domysłów (wysokość drzewa), przy czym każda domysł jest logarytmiczna (tj. Pozycje w strunowy). Jakieś pomysły na ten temat?
a3nm
2
@ a3nm To, czy puste słowo należy do CFL, jest już trudne.
Sylvain,
@Sainain: OK, to jest P-hard, ale jako funkcja CFL. :) Pamiętaj, że w moim problemie język (lub CFL dla niego) jest naprawiony, a dane wejściowe to tylko dwa ciągi, więc nie sądzę, aby ten argument miał zastosowanie.
a3nm
2
@ a3nm przepraszam, że rzeczywiście przegapiłem fakt, że język został naprawiony. Wtedy naturalnym kandydatem byłaby twardość LogCFL.
Sylvain,
@Sylvain: Zgadza się, dzięki! Wydaje mi się więc, że problem ze słowami jest trudny do LogCFL nawet dla ustalonego języka CFL (tj. Najtrudniejszy język Greibacha), więc w szczególności istnieją języki CFL, dla których mój problem jest trudny do LogCFL (weźmy przypadki, w których drugi ciąg znaków jest pusty ). I odwrotnie, wyobrażam sobie, że algorytm Gamowa jest w LogCFL (?). Mimo to zastanawiam się nad językami, dla których mój problem byłby łatwiejszy do rozwiązania, i jak można je skategoryzować ...
a3nm