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

Z Studia Informatyczne
Wersja z dnia 11:12, 5 wrz 2023 autorstwa Luki (dyskusja | edycje) (Zastępowanie tekstu – „,</math>” na „</math>”)
(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)
Przejdź do nawigacjiPrzejdź do wyszukiwania

Ćwiczenia 4

Ćwiczenie 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 2

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 3

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

(1) α+α=α,
(2) α+β=β+α,
(3) αα*=α*α,
(4) (α*β*)*=(α+β)*,
(5) (1+α)*=α*,
(6) (α*+β*)*=(α+β)*.
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 4

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

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

nie są równoważne.

Rozwiązanie

Ćwiczenie 5

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

(1) (αβ+α)*α=α(βα+α)*,
(2) β(αβ+β)*α=αα*β(αα*β)*,
(3) (βα*)*=β(α+β)*+1,
Rozwiązanie punktu 1
Rozwiązanie punktu 2
Rozwiązanie punktu 3

Ćwiczenie 6

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

(1) wszystkie czteroliterowe słowa nad alfabetem A={a,b,c,d},
(2) wszystkie trzyliterowe słowa nad alfabetem A={a,b,c,d}, w których występuje dokładnie jedna litera a,
(3) 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,
(4) język poprawnych adresów stron www, jeśli założymy, że poprawny adres strony www składa się ze słowa "http://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.
(5) ogół sekwencji binarnych, w których liczba zer jest podzielna przez 3,
Rozwiązanie punktu 1
Rozwiązanie punktu 2
Rozwiązanie punktu 3
Rozwiązanie punktu 4
Rozwiązanie punktu 5

Ćwiczenie 7

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

Ćwiczenie 8

Wykorzystując ciąg relacji zdefiniowanych w twierdzeniu 3.3 w wykładu 4 (patrz twierdzenie 3.3 wykład 4) określ prawą kongruencję syntaktyczną PLr dla następujących języków.

(1) L=(a2)*
(2) L=a(a+b)*+(a+b)*b
Rozwiązanie punktu 1
Rozwiązanie punktu 2

Ćwiczenie 9

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

(1) L=(a2)*
(2) L=a(a+b)*+(a+b)*b
Rozwiązanie
ZADANIA DOMOWE

Ćwiczenie 10

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

(1) (α+β)+γ=α+(β+γ),
(2) (αβ)γ=α(βγ),
(3) (α+β)γ=αγ+βγ,
(4) (α*)*=α*,

Ćwiczenie 11

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

(1) (α+β)*=α*+β*.
(2) (α*β)*α*=(α+β)*,
(3) (α+β*)*=(α*β*)*,
(4) α(αβ+β)*α=αα*β(αα*β)*α,
(5) α(αβ+β)*α=α(βα+α)*.

Ćwiczenie 12

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,
(2) ogół sekwencji binarnych, w których występują co najwyżej dwa zera obok siebie,
(3) ogół sekwencji binarnych, w których liczba zer jest podzielna przez dwa, a liczba jedynek przez 3,
(4) 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 13

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
(2) L=(a+b)*ab(a+b)*

Ćwiczenie 14

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

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