• Nie Znaleziono Wyników

Zbiory (języki) regularne

N/A
N/A
Protected

Academic year: 2021

Share "Zbiory (języki) regularne"

Copied!
4
0
0

Pełen tekst

(1)

Zbiory (języki) regularne

Teoria automatów i języków formalnych

Dr inŜ. Janusz Majewski Katedra Informatyki

Zbiory (języki) regularne

Niech Σ będzie alfabetem.

Zbiór (język) regularny nad alfabetem Σ definiujemy następująco:

1) ∅ ∅ ∅ ∅ – zbiór pusty jest zbiorem regularnym,

2) { ε ε ε ε } – zbiór zawierający łańcuch pusty jest zbiorem regularnym, 3) {a} – ( ∀ ∀ ∀ ∀ a ∈ Σ) zbiór zawierający łańcuch złoŜony z

pojedynczego symbolu alfabetu jest zbiorem regularnym, 4) jeśli P i Q są zbiorami regularnymi nad Σ to zbiorami

regularnymi są takŜe:

a) P ∪ ∪ ∪ ∪ Q – suma teoriomnogościowa zbiorów P i Q, b) PQ – złoŜenie (konkatenacja) zbiorów P i Q, c) P* - domknięcie Kleene’ego zbioru P.

5) nic innego poza tym, co wynika z punktów (1) – (4), nie jest

zbiorem regularnym.

(2)

WyraŜenia regularne (1)

WyraŜenia regularne słuŜą do uproszczonego oznaczania zbiorów regularnych. Niech Σ będzie alfabetem. WyraŜenia regularne nad alfabetem Σ definiujemy następująco:

1) ∅∅∅∅– jest wyraŜeniem regularnym oznaczającym zbiór pusty ∅ będący zbiorem regularnym,

2) εεεε– jest wyraŜeniem regularnym oznaczającym zbiór zawierający łańcuch pusty {εεεε} będący zbiorem regularnym,

3) a– (∀∀∀∀a∈Σ) jest wyraŜeniem regularnym oznaczającym zbiór zawierający łańcuch złoŜony z pojedynczego symbolu alfabetu będący zbiorem regularnym, 4) jeśli p i q są wyraŜeniami regularnymi oznaczającymi odpowiednio zbiory

regularne P i Q nad Σ to wyraŜeniami regularnymi są takŜe:

a) p|q– wyraŜenie regularne oznaczające P ∪ Q – sumę teoriomnogościową zbiorów P i Q będącą zbiorem regularnym,

b) pq– wyraŜenie regularne oznaczające PQ – złoŜenie (konkatenację) zbiorów P i Q będące zbiorem regularnym,

c) p*- wyraŜenie regularne oznaczające P* - domknięcie Kleene’ego zbioru P będące zbiorem regularnym.

5) nic innego poza tym, co wynika z punktów (1) – (4), nie jest wyraŜeniem regularnym.

Przykłady

Przykład:

Niech Σ = {a, b}. Zbiorem regularnym nad Σ jest np. zbiór:

{ε, a, ab, abb, abbb, abbbb, ...} = {ε} ∪ {a}{b}*

Ten zbiór regularny zapisujemy w formie wyraŜenia regularnego jako:

ε ε ε ε |ab*.

Przykład:

WyraŜenie regularne:

(0|1)*011

odpowiada zbiorowi regularnemu:

({0} ∪ {1})* {0}{1}{1} = {0, 1}* {011}

będącemu dowolnym ciągiem zer i jedynek zakończonym

sekwencją: 011.

(3)

WyraŜenia regularne (2)

• Dwa wyraŜenia p i q regularne są równe (równowaŜne), gdy odpowiadające im zbiory regularne P i Q są równe (identyczne).

• W zapisie wyraŜeń regularnych moŜna stosować nawiasy.

• Zapisując wyraŜenia regularne stosujemy następujące priorytety operatorów:

 ( ) - najwyŜszy,

 *

 · - (konkatenacja)

 | - najniŜszy.

ToŜsamości

Niech p, q i r będą dowolnymi wyraŜeniami

regularnymi. Prawdziwe są następujące zaleŜności i toŜsamości:

p|q = q|p

p|(q|r) = (p|q)|r p(qr) = (pq)r pq|pr = p(q|r) pq|rq = (p|r)q ε

ε ε

ε p = pεεεε = p

∅ p = p∅ ∅ ∅ ∅ = ∅ ∅ ∅ ∅ ε ε

ε ε * = εεεε

∅ * = εεεε

p* = p|p* = (p|εεεε)*

(p*)* = p** = p*

p|p = p p|∅ ∅ ∅ ∅ = p ε ε

ε ε |p* = p*

ε ε ε

ε |pp* = p*

ε ε ε

ε |p*p = p*

pqq*|pq* = pq*

(p|q)* = (p*|q*)* = (p*q*)*

(4)

Przykłady (1)

Przykład:

abb*|ab* = ab*

bo:

abb*|ab* = {ab}{b}* ∪ {a}{b}* = {ab, abb, ...} ∪ {a, ab, abb, ...} =

= {a, ab, abb, ...} = {a}{b}*

Przykład:

(ab|a)*a = a(ba|a)*

bo:

(ab|a)* - to łańcuchy zbudowane z liter a i b, rozpoczynające się literą a, w których Ŝadne dwie litery b, o ile w ogóle występują, nie występują obok siebie,

(ba|a)* - to łańcuchy zbudowane z liter a i b, kończące się literą a, w których Ŝadne dwie litery b, o ile w ogóle występują, nie występują obok siebie, (ab|a)*a oraz a(ba|a)* - to łańcuchy zbudowane z liter a i b, rozpoczynające

się i kończące się literą a, w których Ŝadne dwie litery b, o ile w ogóle wystepują, nie występują obok siebie.

Przykłady (2)

Przykład:

(a|b)* ≠ a*|b*

bo:

(a|b)* = {a, b}* = {εεεε, a, b, aa, ab, ba, bb, aaa, aab, ...}

a*|b* = {a}* ∪ {b}* = {εεεε, a, aa, aaa, ...} ∪ {εεεε, b, bb, bbb, ...} =

={εεεε, a, b, aa, bb, aaa, bbb, ...}

Przykład:

b(ab|b)* ≠ aa*b(aa*b)*

bo:

b(ab|b)* - to łańcuchy zbudowane z liter a i b, rozpoczynające się i kończące się literą b, w których Ŝadne dwie litery a, nie występują obok siebie,

aa*b(aa*b)* - to łańcuchy zbudowane z liter a i b, rozpoczynające się literą a, kończące się literą b, w których Ŝadne dwie litery b nie występują obok siebie.

Cytaty

Powiązane dokumenty

supletywizmem. Uświadamia też uczniom, że tylko podane wyżej cztery przymiotniki polskie stopniują się nieregularnie... Nauczyciel prosi uczniów, by stopniowali przymiotnik

• u mniej ruchliwych dzieci i młodzieży zaleca się stopniowe, powolne zwiększanie aktyw- ności, aby ostatecznie osiągnąć cel aktywności fizycznej trwającej godzinę

wiele równoważnych definicji (np. rozszerzone wyrażenia regularne) klasa zamknięta na wiele naturalnych operacji. zastosowania

Chociaż podstawowym tematem książki jest, jak wskazuje tytuł, pojęcie przypadku, na drugim planie czai się pytanie, które od lat jest przyczyną gorących debat.. Skąd się

Zbudować deterministyczny i zupełny automat skończony akceptujący język nad alfabetem T = {0, 1} będący zbiorem wszystkich łańcuchów zerojedynkowych zawierających co

Rozważamy języki regularne nad alfabetem {a, b, c}, takie że liczba ich słów o długości n wynosi dokładnie n·2 n1 dla każdego n

‡ Stan początkowy posiada ε przejście do stanu akceptującego (a więc akceptowany jest ciąg ε) oraz do stanu początkowego automatu dla wyrażenia R1.. ‡ Stan akceptujący

Gdy wybierzemy typ tranzycji b, to ze wszystkich stanów 2, 3, 5 wychodzą tranzycje b na zewnątrz grupy, a więc podział nie jest możliwy.. Kończymy budowę drzewa stanów,