Niech język będzie regularny.
Rozkład na czynniki to maksymalna para zestawów słów z ( X , Y )
- ,
gdzie | .x ∈ X , y ∈ Y }
jest maksymalne, jeśli dla każdej pary z albo lub Y \ nie \ subseteq Y ' .
Czy istnieje prosta procedura, aby dowiedzieć się, które pary są maksymalne?
Przykład:
Niech . Zestaw jest obliczany:
gdzie .
Inny przykład:
i Zestaw faktoryzacji z
Odpowiedzi:
Jak zasugerowano w komentarzach do pytania, postaram się udzielić (niestety częściowej) odpowiedzi na pytanie, przynajmniej w takim stopniu, w jakim sam zrozumiałem problem (oznacza to, że możesz znaleźć błędy, a jeśli znajdziesz) sposób na zwięzłe lub wyraźniejsze wyjaśnienie jednego z poniższych punktów, możesz odpowiednio edytować odpowiedź):
Po pierwsze, należy zauważyć, że tak naprawdę nie musimy obliczać uniwersalnego automatu języka, jeśli chcemy obliczyć faktoryzacje języka.
Z artykułu wspomnianego w moim komentarzu ¹ istnieje zgodność 1-1 między lewymi i prawymi czynnikami zwykłego języka, to znaczy, biorąc pod uwagę lewy czynnik języka, odpowiedni prawy czynnik jest jednoznacznie określony i odwrotnie. Dokładniej, mamy następujące:
Niech być na czynniki . Wtedy to znaczy, że każdy lewy czynnik jest przecięciem prawych ilorazów, i każdy właściwy czynnik to przecięcie lewych ilorazów. Z drugiej strony, każdy punkt przecięcia lewych ilorazów jest tuż czynnik , a każdy punkt przecięcia prawych ilorazów jest lewy czynnik .(X,Y) L
Zauważ, że w przypadku zwykłego języka istnieje tylko skończony zestaw lewych i prawych ilorazów, a zatem problem sprowadza się do obliczenia lewego i prawego ilorazu języka, a następnie do obliczenia ich stabilnego zamknięcia, czyli minimalny nadzbiór ilorazów, który jest zamknięty na przecięciu. Są wtedy właśnie odpowiednie czynniki i pozostawione czynników, a to jest zwykle łatwo zobaczyć, które pary są podzbiory .∩ L
Przykład
Aby zilustrować powyższe punkty, rozważ pierwszy przykład w pytaniu (którego również uważam za niepoprawny w pracy):
Niech . Teraz lewe ilorazy to zbiory dla , to znaczy te słowa w które mogą być poprzedzone , tj. . Kiedy dla odrębnego ? Tak jest w przypadku, jeżeli i tylko jeżeli i mogą być zwiększone do słowaL=Σ∗abΣ∗ L x−1L x∈Σ∗ u Σ∗ x xu∈L y−1L=x−1L x,y x y L z dokładnie tymi samymi przyrostkami. Oznacza to, że mówiąc bardziej znajomo, są one odpowiednikami Nerode, a przyrostki potrzebne do dołączenia do słów w klasie Nerode są dokładnie odpowiednimi lewymi ilorazami.
Dla widzimy, że nasze klasy równoważności Nerode sąL
Można je uzupełnić o następujące zestawy (to są lewe ilorazy słów w odpowiednich klasach):
Stąd nasz zestaw faktoryzacji ma postać .FL (P1,S1),(P2,S2),(P3,S3)
Teraz, dla lewych czynników , używamy równań z początku tej odpowiedzi:Pi
Dla , to plony dla otrzymujemy i otrzymujemy . Możesz to zobaczyć przez inspekcję (najpopularniejsze usprawiedliwienie dla bycia zbyt leniwym, aby podać formalny dowód) lub przez jawne obliczenie właściwych ilorazów (co jest dość analogiczne, choć nie całkowicie, do obliczenia lewych ilorazów). Nasze faktoryzacje są więc podane przez gdzieP1 L∪Σ∗a P2 Σ∗ P3 L FL=u,v,w
streszczenie
Podsumowując (tak jak prosiłeś o prostą procedurę):
źródło