Znalezienie maksymalnej faktoryzacji zwykłych języków


13

Niech język będzie regularny.LΣ

Rozkład na czynniki to maksymalna para zestawów słów z ( X , Y )L(X,Y)

  • XYL
  • XY ,

gdzie | .x X , y Y }XY={xyxX,yY}

(X,Y) jest maksymalne, jeśli dla każdej pary z albo lub Y \ nie \ subseteq Y ' .(X,Y)(X,Y)XYLXXYY

Czy istnieje prosta procedura, aby dowiedzieć się, które pary są maksymalne?

Przykład:

Niech L=ΣabΣ . Zestaw F={u,v,w} jest obliczany:

  • u=(Σ,ΣabΣ)

  • v=(ΣaΣ,ΣbΣ)

  • w=(ΣabΣ,Σ)

gdzie Σ={a,b} .

Inny przykład:

Σ={a,b} i L=ΣaΣ Zestaw faktoryzacji F={q,r,s,t} z

  • q=(Σ,L)

  • r=(Σa,Σ+L)

  • s=(Σaa,ϵ+Σ+L)

  • t=(L,ϵ+L)


4
Polecam lekturę następującego artykułu (zwłaszcza podrozdział 4.1) Jacquesa Sakarovitcha: perso.telecom-paristech.fr/~jsaka/PUB/Files/TUA.pdf
Cornelius Brand

1
Zastanawiam się, czy mógłbyś chcieć bardziej szczegółowo określić problem, tj. Ostatnie zdanie twojego pytania? Czy otrzymujemy i chcemy sprawdzić, czy jest maksymalne? Czy naszym zadaniem jest wyliczyć wszystkie które są maksymalne? Jeśli to drugie, czy jest jasne, że ta lista jest skończona lub ma wielomian? Prawdopodobnie nie ma sensu prosić o algorytm wyliczający wszystkie możliwości, jeśli jest ich wykładniczo wiele. Czy chcesz także określić, w jaki sposób język jest reprezentowany, kiedy jest nam przedstawiany, oraz w jaki sposób reprezentowane są ? (np. DFA, NFA, regexp)X,Y(X,Y)(X,Y)LX,Y
DW

2
Nie rozumiem twoich przykładów. Czy powinny być wszystkimi maksymalnymi parami? wydaje się być nieważny ...u,v,wv
Raphael

1
Przykład pochodzi z wyżej wspomnianego dokumentu. powinny być parami maksymalnymi. Nie rozumiem też, w jaki sposób obliczane jest ponieważ niekoniecznie musi być w . Podam inny przykład. u,v,wvL
Laura,

1
@ Rafael, wydaje mi się, że jest poprawny. Niech , , jest faktoryzacją, ponieważ (rozważ dowolny ciąg, który zawiera , a następnie każdą sekwencję „s i / lub ” a, a następnie ostatecznie : łańcuch ten może mieć pewne miejsca, w którym pierwsze pojawia się tak, że znajduje się punkt, w którym zawiera on ). Nie mam dowodu, że jest maksymalny, ale nie mogę znaleźć żadnych większych zbiorów które są rozkładem na czynniki . vX=ΣaΣY=ΣbΣ(X,Y)XY=LaabbbabX,YL
DW

Odpowiedzi:


8

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

Y=xXx1L,X=yYLy1,
LLLL

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ΣLx1LxΣuΣxxuLy1L=x1Lx,yxyLz 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

  • N1 , zestaw słów niezawierających jako czynnika i kończących się , aba
  • N2 , zestaw słów kończących się na i niezawierających jako czynnika, oraz bab
  • N3 , zbiór słów zawierających jako czynnik, to znaczyabN3=L

Można je uzupełnić o następujące zestawy (to są lewe ilorazy słów w odpowiednich klasach):

  • S1=x1L dla w składa się ze wszystkich słów w (każde słowo może być uzupełnione słowem zawierającym jako czynnik, a zatem staje się słowem w ) i , że toxN1LabLbΣS1=LbΣ
  • S2=x1L dla w to sam język, to znaczy ixN2S2=L
  • S3=x1L dla w to oczywiście . Oznacza to, że udało nam się znaleźć trzy odpowiednie czynniki . Ponieważ , ich stabilne zamknięcie jest trywialne , a zatem są to właśnie właściwe czynniki.xN3ΣLS2S1S3S1,S2,S3

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

Pi=xSiLx1
.

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 gdzieP1LΣaP2ΣP3LFL=u,v,w

  • u=(P1,S1)=(ΣabΣΣa,ΣabΣbΣ)
  • v=(P2,S2)=(Σ,ΣabΣ) i
  • w=(P3,S3)=(ΣabΣ,Σ)

streszczenie

Podsumowując (tak jak prosiłeś o prostą procedurę):

  • Do obliczania factorizations języka , najpierw obliczyć lewo ilorazy .LL
  • Można to zrobić w języku artykułu, konstruując minimalny DFA dla a następnie dla każdego stanu w (odpowiadającego jako klasa równoważności Nerode lewemu ilorazowi) obliczyć przyszłość w , uzyskując w ten sposób jeden lewy iloraz języka dla każdego stanu.ALqAqA
  • Zbiór lewych ilorazów uzyskanych w ten sposób daje ogólnie podzbiór właściwych czynników.SR
  • Oblicz wówczas -stabilny zamknięcie , które mogą być stosowane w praktyce przez wykonanie przecięcia każdego podzbioru i dodawania podzestawu otrzymanej w ten sposób do .SRSRSR
  • Zestaw wraz ze wszystkimi skrzyżowaniami z poprzedniego etapu jest to zbiór odpowiednich czynników .SRL
  • W celu uzyskania lewego czynniki, możemy obliczyć odpowiednie ilorazy .L
  • Są to zestawy postaci , dla . Teraz jest ich znowu tylko skończonych wiele, a dla mamy wtedy i tylko jeśli dla wszystkich , , to znaczy, że mogą być poprzedzone słowami w języku za pomocą dokładnie tego samego zestawu ciągów.Ly1yΣxyLy1=Lx1uΣuxLuyL
  • Aby obliczyć , rozważ te stany w , że jest zawarty w przyszłości . Zjednoczenie przeszłości tych państw stanowi jeden właściwy iloraz. Znajdź wszystkie te ilorazy.Lx1qAxq
  • Wiesz, że skończyłeś, gdy znalazłeś tyle lewych czynników, ile masz prawych czynników.
  • Znaleźć te pary lewej i prawej strony czynników takie, że . To jest .X,YXYLFL

  1. Uniwersalny automat Lombardii i Sakarowicza (w tekstach z logiki i gier, tom 2: Logika i automaty: historia i perspektywy , 2007)

3
Ładny! Zauważmy, że jest rozstrzygalny dla zwykłych języków i że te czynniki , są regularne ze względu na właściwości zamknięcia. W związku z tym możemy nie tylko skutecznie obliczyć ostatni punkt w podsumowaniu, ale możemy również odfiltrować maksymalne pary. ABXY
Raphael
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.