Problem członkostwa dla niektórych klas gramatyki nieograniczonej


9

Rozważ dowolną bezkontekstową gramatykę nad alfabetem . Do produkcji tej gramatyki dodaj dwie stałe produkcje bezkontekstowe : i \ overline {1} 1 \ rightarrow \ epsilon . Nazwij wynikową gramatykę G ^ P oznaczającą „ G uzupełniony o produkcje P ”.G{0,1,0¯,1¯}P0¯0ϵ1¯1ϵGPGP

Czy można podać algorytm, który przyjmuje gramatykę GP i ciąg s ponad {0,1,0¯,1¯} i decyduje, czy sL.(solP.) ?


Co ciekawe, choć wydaje się, że odpowiedź brzmi „nie”, myślę, że jeśli L(G) jest regularne, to również L(GP) . Zasadniczo NFA dla L(G) można przekształcić w jeden dla L.(solP.) , iteracyjnie dodając ϵ -transitions (s,ϵ,t) ilekroć masz ścieżki (s,0¯,p,0,t),(s,0¯,p,ϵ,q,0,t),(s,1¯,p,1,t),(s,1¯,p,ϵ,q,1,t) lub (s,ϵ,p,ϵ,t) , a na koniec wykonanie eliminacji ϵ .
Klaus Draeger

Tak, to prawda. W rzeczywistości pytanie powstało w wyniku analizy programu (zbieranie śmieci na podstawie żywotności). Obejściliśmy ten problem, przybliżając CFG do bardzo regularnej gramatyki (transformacja Mohri-Nederhoffa), a następnie wykonując uproszczenia P. na powstałym NFA dokładnie tak, jak wspomina Klaus Draeger.
Amit.

Odpowiedzi:


5

Ta klasa gramatyk jest nierozstrzygalna. Oto przybliżony pomysł na temat tego, jak używać go do emulacji maszyn Turinga.

W każdym punkcie wyglądałoby obecne częściowo częściowo rozwinięte słowo

[tape to the left][head][tape to the right]

Tutaj:

  • [taśma po lewej stronie] , po zastosowaniu , zawiera tylko znaki i .P.0¯1¯
  • [taśma w prawo] , po zastosowaniu , zawiera tylko znaki i .P.01
  • [głowa] to pojedynczy nieterminal, który koduje zarówno stan głowy, jak i znak w pozycji głowy.

Załóżmy, że głowa znajduje się w stanie , a znak pod głową to . Wtedy głowa jest reprezentowana przez nieterminalny . Jeśli trzeba przejść do stanu , zastąpić obecny znak , i przejść w lewo, istnieją dwa przejścia i . Jeśli zamiast tego trzeba przejść w prawo, istnieją dwa przejścia iS.ja{0,1}S.jaT.jotS.ja0T.0jotS.ja1T.1jotS.jajot¯T.00¯S.jajot¯T.11¯. W pewnym sensie głowa musi „odgadnąć” postać w kierunku, w którym się porusza, tworząc pasującą postać. Jeśli zgadywanie jest błędne, niezmiennik na lub zostałby naruszony i nigdy się nie odzyskał.[taśma po lewej stronie][taśma w prawo]

Gdy maszyna zatrzymuje się, głowa powinna „zużyć” taśmę po obu stronach, „zgadując” i wytwarzając pasujące znaki. Następnie powinno wygenerować puste słowo. W rezultacie puste słowo byłoby członkiem takiej gramatyki wtedy i tylko wtedy, gdy odpowiednia maszyna Turinga zatrzyma się.


Nie jestem pewien, czy rozumiem twoją redukcję. Oto moja wątpliwość: jeśli dana maszyna Turinga ma stany , to czy liczba nieograniczonych produkcji wymaganych do emulacji maszyny Turinga nie jest związana z ? Ale mój problem pozwala tylko na dwie stałe, nieograniczone produkcje. N.N.
Amit.

@ Amit.SI podał więcej wyjaśnień dotyczących przejść w odpowiedzi.
abacabadabacaba
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.