Bardziej rozbudowany komentarz z przypuszczeniem, ale tutaj jest warunek, który wydaje się wychwytywać problem, w kontekście zwykłego dla S ( L ) bez kontekstu.LS(L)
Warunek
W minimalnym DFA dla L każda ścieżka akceptacji zawiera najwyżej jedną pętlę.AL
Wyjątek: dozwolone są dwie pętle, jeśli ich etykiety i etykieta prefiksu przed pierwszą pętlą wszystkie dojeżdżają do pracy, a sufiks po drugiej pętli jest pusty. Na przykład jest w porządku.aa∗b(aa)∗
Przypomnij sobie, że dwa słowa i v dojeżdżają, jeśli są mocami tego samego słowa t . Możemy założyć, że sufiks jest pusty, ponieważ nie może być niepusty i dojeżdżać do pracy z etykietą drugiej pętli w DFA.uvt
Sufficient
Assume the condition, you build a PDA for L by treating each accepting pattern xuy of A where u labels a simple loop. We want to accept words of the form xunyxuny. We read x, push a symbol for every occurence of u, read yx, then pop a symbol for every occurence of u, and finally read y.
About the exception, if we are in this case, a basic accepting path is of the form xuyv where u,v are the labels of the loops. We accept words of the form xunyvmxunyvm, but by assumption (x,u,v commute) it is the same as unxyunvmxyvm, which can be done by a PDA: push ntimes (dla wystąpień ), czytaj x y , pop n razy, push m razy (dla v ), czytaj x y , pop m razy.uxynmvxym
Końcowy PDA to połączenie PDA dla każdego wzorca.
Konieczne
(ręczne falowanie) Jeśli istnieje ścieżka z dwiema pętlami, nawet w najprostszym przypadku, w którym musisz wziąć jedną, a następnie drugą (na przykład ), musisz pamiętać, ile razy każda z nich została wzięta, ale struktura stosu zapobiega powtarzaniu ich w tej samej kolejności. Zauważ, że fakt, że DFA jest minimalny, jest ważny w charakterystyce, aby uniknąć użycia dwóch pętli, gdy jedna może wystarczyć.a∗b∗
For now the necessary part is only a conjecture, and more exceptions could be needed to get the exact condition, I would be interested in counter-examples.