• Nie Znaleziono Wyników

7.2. 7.1. 7. Wstęp do języków regularnych

N/A
N/A
Protected

Academic year: 2021

Share "7.2. 7.1. 7. Wstęp do języków regularnych"

Copied!
2
0
0

Pełen tekst

(1)

str. 20

S0 S1

0 1

S0 S2

Λ

1 S1 0

S0 S2

0, 1 S1 0, 1

S0 S2

a, b, c

a, b, c S1 b

7. Wstęp do języków regularnych 7.1. Trochę teorii

Alfabetem nazywamy dowolny skończony zbiór symboli (np. 1={0,1}, 2={a,b,c})

Słowem nad alfabetem  nazywamy dowolny skończony ciąg symboli alfabetu  (np. nad 1: A=01, nad 2: B=abbbcb,).

Długością słowa nad alfabetem  nazywamy liczbę symboli alfabetu tworzących dane słowo (np. |A|=|01|=2).

Słowem pustym (ozn. Λ) nazywamy słowo o długości 0, tzn. słowo, w skład którego nie wchodzi żaden symbol alfabetu.

Słownikiem (domknięciem alfabetu) nazywamy zbiór wszystkich słów jakie można utworzyć nad danym alfabetem.

Słownik nad alfabetem  oznaczamy przez * (np. 2*={ Λ, a, b, c, aa, ab, ac, ba, bb, bc, ca, cb, cc, aaa, …, baba, …}) Językiem formalnym nad alfabetem  nazywamy dowolny podzbiór * (przykłady języków formalnych nad alfabetem

1: L1={1, 10, 100, …}, L2={Λ,10, 1010, 101010, …} , L3={00, 01, 10, 11}; przykłady języków formalnych nad alfabetem 2: L4={ab, bb, cb, aba, abb, …}, L5={ab, aabb, aaabbb, …}).

Językiem regularnym nazywamy język formalny generowany przez automat skończony lub wyrażenie regularne. Języki regularne to najprostsza klasa języków formalnych w hierarchii Chomsky’ego.

7.2. Automaty skończone

Automatem skończonym nazywamy model matematyczny, umożliwiający opisanie algorytmu decyzyjnego w skończonej liczbie kroków. Opisując automat wskazujemy: alfabet , zbiór stanów głowicy Q (z wyróżnionym stanem początkowym S0 i zbiorem stanów końcowych F) oraz funkcję 𝛿: 𝑄 × Σ → 𝑃(𝑄), która opisuje związek między symbolami a stanami.

Automat skończony składa się z:

- taśmy na której jest umieszczone konkretne słowo,

- głowicy, która może zmienić swój stan i przesunąć się w prawo,

- układu sterującego ruchy głowicy (wspomniana funkcja δ, opisana grafem lub tabelą).

Powiemy, że automat akceptuje słowo, gdy głowica zaczynając ruch od stanu początkowego (ozn. ), po całkowitym wczytaniu słowa, przejdzie jakąś drogą do jednego ze stanów końcowych (ozn. ). Piszemy wówczas, że 𝐴 ∈ L(𝑀).

Jeżeli wszystkie słowa danego języka (i tylko one) są akceptowane przez automat M to mówimy, że M generuje język L (ozn. L=L(M)).

Przykłady:

L1={1, 10, 100, …} – zbiór słów nad alfabetem 1={0,1}, których pierwszym symbolem jest 1 po którym może wystąpić dowolna liczba symboli 0. Wszystkie słowa tego języka (i tylko one), są akceptowane przez poniższy automat M1:

M1 np. dla A=100:

L2={Λ,10, 1010, …} – zbiór słów nad alfabetem 1={0,1}, które składają się z dowolnej liczby powtórzeń słowa 10.

Wszystkie słowa tego języka (i tylko one), są akceptowane przez M2:

L3={00, 01, 10, 11} – zbiór słów nad alfabetem 1={0,1}, których długość wynosi 2. Wszystkie słowa tego języka (i tylko one), są akceptowane przez M3:

L4={ab, bb, cb, aba, abb, …} – zbiór słów nad alfabetem 2={a,b,c}, których drugim symbolem jest b. Język ten jest generowany przez automat M4:

S0

1 0 0

S1

1 0 0

S1

1 0 0

S1

1 0 0

(2)

str. 20

S0 S1

0 1

S0 S1

b Λ

a

S0

S2

Λ b

a S1 Λ

7.3. Wyrażenia regularne

Wyrażeniem regularnym nazywamy słowo utworzone nad Σ ∪ {∅, Λ,∗,∙, +, (, )} o jednej z poniższych postaci:

∅, 𝚲, 𝐱 ∈ 𝚺 𝐥𝐮𝐛 (𝐀), (𝐀) ∙ (𝐁), (𝐀) + (𝐁), gdzie A, B są wyrażeniami regularnymi.

Wyrażenia regularne to wzorce opisujące języki regularne. Wzorce piszemy boldem. Jeżeli wyrażenie regularne A opisuje wszystkie słowa danego języka L (i tylko je), to piszemy: L=L(A).

Przykłady

L1={1, 10, 100, …} – zbiór słów nad alfabetem 1={0,1}, których pierwszym symbolem jest 1 po którym może wystąpić dowolna liczba symboli 0. Wzorcem słów tego języka jest A1= 10* (0* oznacza dowolną liczbę wystąpień symbolu 0).

Zatem język L1 jest generowany przez automat skończony M1 i przez wyrażenie regularne A1

L2 = {Λ,10, 1010, …} = L(M2) = L ((10)*)

L3 = {00, 01, 10, 11} = L(M3) = L((a+b)∙(a+b)) = L((a+b)2) L4 = {ab, bb, cb, aba, abb, …} = L(M4) = L((a+b+c)∙b∙(a+b+c)*)

L5 = {ab, aabb, aaabbb, …} – zbiór słów nad alfabetem 2={a,b,c} postaci anbn. Ten język nie ma swojego wzorca ani automatu skończonego. Sprawdzenie, czy słowo jest akceptowane przez automat wymaga „zapamiętania” ile było symboli a. Ten język nie jest regularny.

Uwaga – język L6 = L(a*b*) = { Λ, a, aa, aaa, … b, bb, … ab, abb, aab, …} jest różny od L5, ponieważ * oznaczać może każdorazowo inną liczbę. Automatem generującym język L6 (ale nie L5) jest automat M6:

L7 = L(a*+ b*) = { Λ, a, aa, aaa, aaaa, … b, bb, bbb, … } – w odróżnieniu od języka L6, język ten nie zawiera ani jednego słowa, które zawierałoby i symbole a i b. Automatem generującym ten język jest M7. Dodatkowo zbudowana jest tabela.

a b Λ

S0 S1, S2

S1 S1

S2 S2

Alfabet ={a,b}, (pamiętaj: Λ∉ Σ) Zbiór stanów Q={ S0, S1, S2}, F={ S1, S2} L8= {A ∈ Σ: A zawiera podsłowo abc} = {abc, aaabc, abbcccbcabcbb, … . }

M8 – automat niedeterministyczny

M8’ – automat deterministyczny zupełny (DAS)

a b c

S0 S0, S1 S0 S0

S1 S2

S2 S3

S3 S3 S3 S3

a b c

S0 S1 S0 S0

S1 S1 S2 S0

S2 S1 S0 S3

S3 S3 S3 S3

L1=L(M1) = L (10*)

a, b, c

a b c

b, c a

c a

b

a b c

a, b, c a, b, c

Cytaty

Powiązane dokumenty

Na świętego Szczypana to ju ż była taka tradycja, że sie święciło owies na take pamiątke, bu Szczepan był biczowany (...) tymi kamieniami zbity i na

czeniu przyjętym przez nas, figu ry stylistyczne, w szczególności metafory i metonimie, odnosimy nie tylko do języka potocznego, ale również do żywego języka

Niektóre spośród leków atypowych powodują jednak umiarkowany przyrost masy ciała (np. rysperydon, kwetiapina), a stosowanie innych wiąże się z minimalnym zwiększeniem wagi

Zapoznanie uczniów z tematem lekcji: utarta opinia mówi, że Kościół jest zamknięty na inne religie, że uzurpuje sobie prawo do nazywana chrześcijaństwa jedyną religia

6.7. Udowodnij, że jeśli wszystkie kąty płaskie w kącie trójściennym są rozwarte, to wszys- tkie kąty dwuścienne też są rozwarte. Czy prawdą jest, że jeśli dwa z

Jeśli nie wszystkie spośród liczb a, b, c mają jednakowy znak, to albo (1) dwie spośród liczb a, b, c są dodatnie, a trzecia ujemna, albo (2) dwie spośród liczb a, b, c są ujemne,

- za napisanie, która z dwóch grup reagentów ma wyższy zasób energii oraz za określenie, czy powyższy wykres obrazuje zmianę energii układu w reakcji

Pocieszającym jest to, że w Polsce pojawia się coraz więcej towarzystw i stowarzyszeń 11 , które obejmują swoją opieką „dzieci ulicy”, niestety na Ukrainie,