Processing math: 100%

Złożoność problemów automatowych

  1. Zaprojektować algorytm, który dla wyrażenia regularnego β i słowa wΣ odpowiada na pytanie, czy w należy do języka opisywanego przez β

    1. w czasie O(|Σ||β|2|w|),
    2. w czasie O(|β||w|),

    Wskazówka. Skonstruować automat niedeterministyczny równoważny wyrażeniu β i obliczyć zbiór stanów osiągalnych po słowie w. Dla oszacowania w punkcie ?? użyć automatu z ϵ-przejściami (por. zadanie ??.?? ), w grafie którego z każdego stanu wychodzą co najwyżej dwie krawędzie.

  2. Rozważamy pytanie ,,wL[β] ?” jak w zadaniu ??, ale dla uogólnionego wyrażenia regularnego, tj. takiego, w którym dopuszczamy również operacje teorio–mnogościowe i . Zaprojektować algorytm, który rozstrzyga to pytanie w czasie wielomianowym od |β|+|w|.

    Wskazówka. Zastosować metodę programowania dynamicznego:

    dla 1ij|w| sukcesywnie obliczać zbiór podwyrażeń

    α wyrażenia β takich, że w[i..j]L[α].

  3. Konstrukcję automatu z zadań ??.?? i ??.?? , który dla danego w rozpoznaje język Σw, można przeprowadzić za pomocą następującego algorytmu. Niech m=|w|.

    Najpierw obliczamy pomocniczą tablicę F[0..m], taką, że F[0]=0 oraz F[i] jest długością najdłuższego prefiksu właściwego w[1..i] będącego jednocześnie sufiksem w[1..i], dla i=1,,m.

    F[0]:=F[1]:=0; i:=0;

    for j:=2 to m do

    begin (i=F[j1])

    while wjwi+1 i>0 do i:=F[i];

    if wj=wi+1 then i:=i+1;

    F[j]:=i

    end

    W konstrukcji automatu przyjmujemy, że stany są liczbami 0,1,,m (które można utożsamić z prefiksami w o odpowiednich długościach). Funkcję przejścia δ określamy przez

    1. δ(0,w1)=1, δ(0,a)=0, dla aw1,
    2. δ(j,wj+1)=j+1, δ(j,a)=δ(F[j],a), dla awj+1

    Dowieść, że powyższy algorytm oblicza żądany automat w czasie liniowym względem długości w (zależnym od alafabetu).

  4. Niech A będzie ustalonym automatem deterministycznym. Zaprojektować algorytm, który dla danej liczby n znajduje w czasie O(n) liczbę słów długości n akceptowanych przez A.

  5. Podać przykład świadczący o tym, że najkrótsze słowo, jakiego nie akceptuje automat niedeterministyczny o n stanach może mieć długość 2Ω(n).

    Wskazówka. Rozważyć automat akceptujący wszystko za wyjątkiem słowa

    (((a20a1)2a2)2a3an1)2an.

  6. Dowieść, że jeśli dwa stany n–stanowego automatu deterministycznego nie są równoważne (tzn. L(A,q)L(A,p)), to istnieje słowo długości nie większej niż n akceptowane z dokładnie jednego z nich.

    Wskazówka. Rozważyć zstępujący ciąg relacji równoważności na zbiorze stanów: Ri(p,q) o ile stany p i q są nierozróżnialne słowami długości i.

  7. Podać algorytm rozstrzygający równoważność dwóch automatów deterministycznych.

    Uwaga. Zastosowanie idei zadania prowadzi do efektywniejszego algorytmu niż testowanie niepustości automatu produktowego.

  8. Czy dla słów u,v takich, że |u|<|v|=n istnieje automat deterministyczny spełniający: uL(A) vL(A) i mający O(logn) stanów?
    1. Wykazać, że dla dowolnego automatu niedeterministycznego o n stanach można skonstruować równoważne wyrażenie regularne długości 2O(n).
    2. (**) Podać przykład świadczący o tym, że najkrótsze wyrażenie regularne równoważne danemu automatowi deterministycznemu o n stanach może mieć długość 2Ω(n).

      Wskazówka. Rozważyć automat, którego graf jest pełnym grafem o n wierzchołkach, a każda krawęd”z ma inną etykietę. Stosując indukcję po n, skonstruować pętlę, która ,,wymusza” eksponencjalną długość wyrażenia regularnego.

  9. Eksplozja stanów w produkcie automatów. Niech Σ={0,1,,k} i niech dla i=1,,k, Li będzie zbiorem słów v nad Σ o następującej własności:
    i występuje w v, ale przed pierwszym i pomiędzy kaźdymi dwoma kolejnymi wystąpieniami i, i1 występuje co najmniej dwa razy.

    Nietrudno jest skonstruować deterministyczny automat o 4 stanach rozpoznający Li. Dowieść, że każdy (nawet niedeterministyczny) automat rozpoznający język L1Lk musi mieć co najmniej 2k+11 stanów.

    Wskazówka. Oszacować od dołu długość najkrótszego słowa w tym języku.

  10. Dowieść, że jakikolwiek automat niedeterministyczny rozpoznający język {xcy:x,y{a,b}x[1..k]=y[1..k]} ma 2Ω(k) stanów.

  11. Zakładając, że następujący automat deterministyczny An ma n stanów (n2, na rysunku n=6), dowieść, że jakikolwiek automat deterministyczny rozpoznający lustrzane odbicie języka L(An) ma co najmniej 2n stanów (por. zadanie ?? na str. ?? ).

  12. Słowo synchronizujące. Mówimy, że słowo w synchronizuje stany automatu deterministycznego, jeśli istnieje taki stan q0, że startując z dowolnego stanu i czytając słowo w, automat dojdzie zawsze do stanu q0, tzn.
    (qQ)qwq0.

    1. Znaleźć słowo synchronizujące dla automatu nad alfabetem {a,b} o zbiorze stanów {0,1,,k1} i funkcji przejścia

      iai+1(modk)
      dla i=0,1,,k1

      ibi
      dla i = 0,1, …, k-2

      k1b0

      Wskazówka. Dla k=5 słowem synchronizującym (najkrótszym) jest w=(ba4)3b

    2. Zaprojektować algorytm, który dla automatu o n stanach rozstrzyga w czasie O(n3), czy istnieje słowo synchronizujące i w pozytywnym przypadku znajduje takie słowo (długości (n1)3).

      Wskazówka. Dla każdej pary stanów sprawdzamy, czy istnieje słowo synchronizujące dla tej pary. Szukamy ścieżki w grafie
      par od danej pary do pary o identycznych składowych. Wystarczy jeden taki graf dla wszystkich par.
      Graf ma rozmiar kwadratowy. Zatem pare można zsynchronizować słowem długości kwadratowej.
      Zaczynamy od zbioru wszystkich stanów. Stosując słowo do jednej pary sklejamy je w jeden stan. Teraz mamy juz tylko n-1
      stanów. Znowu bierzemy parę róznych słów. Dla niej liczymy słowo synchronizujące
      (w czasie kwadratowym) i sklejamy te stany. Kontynuujemy aż skleimy wszystkie stany do jednego stanu.

    3. (*) Znaleźć najkrótsze słowo synchronizujące dla automatu z punktu ().

    Uwaga. Licząca już 40 lat hipoteza Černego, zobacz www.liafa.jussieu.fr/jep/Problemes/Cerny.html , głosi, że najkrótsze słowo synchronizujące, o ile istnieje, ma długość (n1)2.

  13. Podać wielomianowy algorytm sprawdzania, czy dany skończony zbiór słów CΣ jest kodem (por. rozdz. ?? , ?? zadanie ).

    Wskazówka. Skonstruować automat skończony, rozpoznający hipotetyczne słowa posiadające dwie różne faktoryzacje.

  14. Podać algorytmy rozwiązujace następujące dwa problemy (złożoność moze być duża).

    1. Dany jest (poprzez automat skończony) język regularny L nad skończonym alfabetem Σ, sprawdzić czy zachodzi

       (xL)  (r, sΣ ) #r(x)=#s(x).

    2. Dany jest (poprzez automat skończony) język regularny L nad skończonym alfabetem Σ, sprawdzić czy dla wszystkich słów xL poza skończoną ilością zachodzi

       (r, sΣ ) rs  #r(x)  #s(x).