Języki, automaty i obliczenia/Ćwiczenia 4: Wyrażenia regularne. Automat minimalny

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania

ĆWICZENIA 4

Ćwiczenie 1.1

Pokaż, że każdy skończony zbiór słów nad dowolnym alfabetem jest regularny, tzn. jest określony przez pewne wyrażenie regularne.

Rozwiązanie

Ćwiczenie [Uzupelnij]

Sprawdź, czy język L ciągów binarnych, w których sekwencja 11 występuje dokładnie raz, da się określić wyrażeniem regularnym.

Rozwiązanie

Ćwiczenie [Uzupelnij]

Udowodnij równoważności wyrażeń regularnych (α, β i γ są dowolnymi wyrażeniami regularnymi).

  1. α+α=α,
  1. α+β=β+α,
  1. αα*=α*α,
  1. (α*β*)*=(α+β)*,
  1. (1+α)*=α*,
  1. (α*+β*)*=(α+β)*.
Rozwiązanie punktu 1
Rozwiązanie punku 2
Rozwiązanie punktu 3
Rozwiązanie punktu 4
Rozwiązanie punktu 5
Rozwiązanie punktu 6

Ćwiczenie [Uzupelnij]

Udowodnij, że dla dowolnych wyrażeń regularnych α, β i γ wyrażenia

αβ+γ*,(αβ+γ)*orazα(β+γ)*

nie są równoważne.

Rozwiązanie

Ćwiczenie [Uzupelnij]

Sprawdź, czy następujące wyrażenia regularne są równoważne (α oraz β są dowolnymi wyrażeniami regularnymi.)

  1. (αβ+α)*α=α(βα+α)*,
  1. β(αβ+β)*α=αα*β(αα*β)*,
  1. (βα*)*=β(α+β)*+1,

ROZWIĄZANIE punktu 1. Każde słowo w opisane wyrażeniem po lewej stronie równości zapisać można jako słowo opisane wyrażeniem (αγ)(αγ)...(αγ)α, gdzie γ=β lub γ=1 i czynników postaci (αγ) może być dowolnie dużo, w zależności od postaci słowa w (w szczególności może nie występować ani jeden; wtedy wyrażenie przyjmie postać α). Każde słowo w opisane wyrażeniem stojącym po prawej stronie równości można zapisać jako słowo opisane wyrażeniem α(γα)...(γα)(γα), gdzie γ=β lub γ=1 i tak jak w poprzednim przypadku, zależnie od słowa w czynników (γα) może być dowolnie dużo. Usuwając nawiasy widzimy, że dla każdego słowa w wyrażenia te są sobie równe, zatem (αβ+α)*α=α(βα+α)*.

ROZWIĄZANIE punktu 2. Wyrażenia nie są równoważne, gdyż to stojące po lewej stronie równości rozpoczyna się od β, a to stojące po prawej stronie równości - od α.

ROZWIĄZANIE punktu 3. Wyrażenie (βα*)* opisuje słowa postaci b1x1b2x2...bnxn, gdzie n0, a każde xi jest postaci a1i...ak(i)i, gdzie k(i)0. Słowa bi opisywane są wyrażeniem β, każde xi opisywane jest wyrażeniem α*, a każde ai - wyrażeniem α. Wyrażenie β(α+β)*+1 opisuje natomiast słowa postaci 1 lub b1y1y2...yn gdzie n0, bi opisywane jest wyrażeniem β, a każde y1 jest słowem opisywanym wyrażeniem α lub β.

Jeśli słowo jest postaci b1x1b2x2...bnxn, to widać, że opisane jest także przez wyrażenie stojące po prawej stronie równości, gdyż xi=a1ia2i...ak(i)i może być reprezentowane przez słowo złożone z podsłów postaci y1i...yk(i)i, przyjmując yji=aji, 1jk(i), k(i)0, natomiast każde bj może być reprezentowane przez słowo yj przyjmując yj=bj.

Na odwrót, każde słowo postaci b1y1y2...yn można opisać wyrażeniem stojącym po lewej stronie równości, grupując wszystkie yi występujące obok siebie i opisywane wyrażeniem α i każdą taką grupę reprezentować jako pewne xi, a każde yi opisywane wyrażeniem β reprezentować jako pewne bi.

Ćwiczenie [Uzupelnij]

Określ za pomocą wyrażeń regularnych następujące języki:

  1. wszystkie czteroliterowe słowa nad alfabetem

A={a,b,c,d},

  1. wszystkie trzyliterowe słowa nad alfabetem

A={a,b,c,d}, w których występuje dokładnie jedna litera a,

  1. wszystkie słowa o dowolnej długości nad alfabetem

A={a,b,c,d}, w których występuje dokładnie jedna litera a,

  1. język poprawnych adresów stron www, jeśli założymy, że poprawny adres strony www składa

się ze słowa "http:Parser nie mógł rozpoznać (nieznana funkcja „\slash”): {\displaystyle \slash \slash} www.", a następnie ciągu liter i cyfr zawierającego przynajmniej jedną kropkę, przy czym ostatnim znakiem tego ciągu nie może być kropka.

  1. ogół sekwencji binarnych, w których liczba zer jest podzielna

przez 3,

ROZWIĄZANIE punktu 1. α=(a+b+c+d)(a+b+c+d)(a+b+c+d)(a+b+c+d).

ROZWIĄZANIE punktu 2. β=a(b+c+d)(b+c+d)+(b+c+d)a(b+c+d)+(b+c+d)(b+c+d)a.

ROZWIĄZANIE punktu 3. β=(b+c+d)*a(b+c+d)*.

ROZWIĄZANIE punktu 4. Wyrażenie opisujące zbiór wszystkich takich adresów może mieć postać:

Parser nie mógł rozpoznać (nieznana funkcja „\slash”): {\displaystyle \gamma=http:\slash \slash www.(a+b+...+z+0+...+9)^+(.(a+b+...+z+0+...+9)^+)^+}

ROZWIĄZANIE punktu 5. δ=(1*01*01*01*)*.

Dla uproszczenia, zgodnie z umową przyjętą na wykładzie, jeśli język L=|α| dla pewnego wyrażenia regularnego α, to L będziemy zapisywać jako α.

Ćwiczenie [Uzupelnij]

Niech L będzie językiem określonym przez wyrażenie regularne a*ba* nad alfabetem A={a,b} . Określ prawą kongruencję syntaktyczną PLr i kongruencję syntaktyczną PL dla tego języka.

ROZWIĄZANIE. Widać, że dwa słowa będą należały do tej samej klasy abstrakcji relacji PLr, jeśli będą miały taką samą ilość liter b. Zatem Parser nie mógł rozpoznać (nieznana funkcja „\slash”): {\displaystyle L \slash P_L^r = \{[1],[b],[bb]\}} , gdzie
[1]=a*,
[b]=a*ba*,
[bb]=A*bA*bA*

Dla języka L=a*ba* jest PLr=PL.

Ćwiczenie [Uzupelnij]

Wykorzystując ciąg relcji zdefiniowanych w twierdzeniu Uzupelnic lekcja4-w-tw3.3 | określ prawą kongruencję syntaktyczną PLr dla następujących języków.

  1. L=(a2)*
  1. L=a(a+b)*+(a+b)*b

ROZWIĄZANIE punktu 1.
ρ1: (a2)*, a*(a2)*=(a2)*a
ρ2=ρ1=PLr

ROZWIĄZANIE punktu 2.

ρ1
a(a+b)*+(a+b)*b=a(a+b)*a+b(a+b)*b+a(a+b)*b+a+b,

(a+b)*a(a+b)*+(a+b)*b=b(a+b)*a+1

ρ2
b(a+b)*b+b,
a(a+b)*a+a(a+b)*b+a,
b(a+b)*a,
1,

ρ3=ρ2=PLr

Ćwiczenie [Uzupelnij]

Zdefiniuj minimalny automat akceptujący następujące języki:

  1. L=(a2)*
  1. L=a(a+b)*+(a+b)*b

ROZWIĄZANIE. Zgodnie z wnioskiem lekcja4-w wniosek 3.1 automat minimalny rozpoznający język L ma postać

𝒜L=(A*/PLr,f*,[1]PLr,T),

gdzie T={[w]PLr:wL},. Korzystając z ćwiczenia Uzupelnic 4.7|. dostajemy

  1. S={s0,s1}, gdzie
    s0=(a2)*,s1=(a2)*a,
    a działanie automatu określone jest poprzez graf

RYSUNEK ja-lekcja4-c-rys1.JPG

  1. S={s0,s1,s2,s3}, gdzie
    s0=1,s1=b(a+b)*a,
s2=a(a+b)*a+a(a+b)*b+a,s3=b(a+b)*b+b,

a działanie automatu określone jest poprzez graf
RYSUNEK ja-lekcja4-w-rys2.pdf

ZADANIA DOMOWE

Ćwiczenie [Uzupelnij]

Udowodnij równoważności wyrażeń regularnych (α, β i γ są dowolnymi wyrażeniami regularnymi).

  1. (α+β)+γ=α+(β+γ),
  1. (αβ)γ=α(βγ),
  1. (α+β)γ=αγ+βγ,
  1. (α*)*=α*,

Ćwiczenie [Uzupelnij]

Sprawdź, czy następujące wyrażenia regularne są równoważne (α oraz β są dowolnymi wyrażeniami regularnymi.)

  1. (α+β)*=α*+β*.
  1. (α*β)*α*=(α+β)*,
  1. (α+β*)*=(α*β*)*,
  1. α(αβ+β)*α=αα*β(αα*β)*α,
  1. α(αβ+β)*α=α(βα+α)*.

Ćwiczenie [Uzupelnij]

Określ za pomocą wyrażeń regularnych następujące języki:

  1. ogół sekwencji binarnych, w których występują co najwyżej trzy zera,
  1. ogół sekwencji binarnych, w których występują co najwyżej dwa zera obok siebie,
  1. ogół sekwencji binarnych, w których liczba zer jest podzielna

przez dwa, a liczba jedynek przez 3,

  1. język poprawnych adresów e-mail. Dla uproszczenia przyjmujemy,

że poprawny adres e-mailowy składa się z niepustego identyfikatora złożonego z samych liter (maksymalnie z czterech), znaku "małpy", niepustej nazwy serwera złożonej z samych liter (maksymalnie czterech), kropki oraz dwuliterowej nazwy domeny. Alfabet składa się tylko z liter a, b i c.

Ćwiczenie [Uzupelnij]

Wykorzystując ciąg relcji zdefiniowanych w twierdzeniu lekcja4-w-tw? określ prawą kongruencję syntaktyczną PLr dla następujących języków.

  1. L=ab
  1. L=(a+b)*ab(a+b)*

Ćwiczenie [Uzupelnij]

Zdefiniuj minimalny automat akceptujący następujące języki:

  1. L=ab
  1. L=(a+b)*ab(a+b)*