• Nie Znaleziono Wyników

Przykład (1) RozwaŜamy język nad alfabetem binarnym

N/A
N/A
Protected

Academic year: 2021

Share "Przykład (1) RozwaŜamy język nad alfabetem binarnym"

Copied!
8
0
0

Pełen tekst

(1)

Automaty skończone

Teoria automatów i języków formalnych

Dr inŜ. Janusz Majewski Katedra Informatyki

Przykład (1)

RozwaŜamy język nad alfabetem binarnym Σ = {0, 1} składający się z łańcuchów zero-jedynkowych o tej własności, Ŝe liczba zer w kaŜdym łańcuchu jest parzysta i liczba jedynek w kaŜdym łańcuchu teŜ jest parzysta. Wszystkie łańcuchy binarne moŜemy podzielić na cztery grupy:

 S – łańcuchy z parzystą liczbą jedynek i parzystą liczbą zer,

 A – łańcuchy z parzystą liczbą jedynek i nieparzystą liczbą zer,

 B – łańcuchy z nieparzystą liczbą jedynek i parzystą liczbą zer,

 C – łańcuchy z nieparzystą liczbą jedynek i nieparzystą liczbą zer.

Analizujemy łańcuch zero-jedynkowy symbol po symbolu od lewej strony. Przed rozpoczęciem analizy jesteśmy w grupie S (łańcuch pusty zawiera zero jedynek i tyleŜ zer, więc liczba jedynek i liczba zer w tym łańcuchu są parzyste). Jeśli pierwszym symbolem jest jedynka – przechodzimy do grupy A (wtedy liczba jedynek jest nieparzysta, a liczba zer jest dalej parzysta), zaś jeśli pierwszym symbolem jest zero – przechodzimy do grupy B (wtedy liczba zer jest nieparzysta, a liczba jedynek jest dalej parzysta). Zapisujemy to w postaci produkcji:

S → 1A | 0B

Dalej analizujemy podobnie kolejne symbole łańcucha. Np. jeśli jesteśmy w grupie A i przeczytamy zero – przechodzimy do grupy C, w której zarówno liczba jedynek, jak i zer są nieparzyste (odpowiedni zapis: A → 0C)

(2)

Przykład (2)

A

1 nieparz.

0 parz.

B

1 parz.

0 nieparz.

C

1 nieparz.

0 nieparz.

S

1 parz.

0 parz.

1

1

0 0

1

1

0 0

Przykład (3)

Wreszcie, gdy przeczytaliśmy cały łańcuch, sprawdzamy, czy zatrzymaliśmy się w grupie S. Jeśli tak – badany łańcuch spełnia nałoŜony nań warunek parzystej liczby jedynek i parzystej liczby zer. Wówczas naleŜy wyeliminować z wyprowadzenia symbol S (odpowiedni zapis: S → ε). Ostatecznie gramatyka naszego języka ma postać:

S → 1A | 0B | ε A → 1S | 0C B → 1C | 0S C → 1B | 0A

Opisana procedura i zamieszczony wcześniej rysunek grafu

ilustrują właściwie nie tyle proces konstruowania gramatyki dla pewnego języka, co proces odpowiadania na pytanie: czy dany łańcuch jest słowem naleŜącym do danego języka.

(3)

Przykład – automat skończony

Jest to pewien (w naszym przypadku deterministyczny) algorytm postępowania, polegający na czytaniu badanego łańcucha symbol po symbolu i przechodzenia od jednego stanu do drugiego. Stany reprezentowane są przez kółka (węzły grafu), zaś przejścia pomiędzy stanami, to skierowane krawędzie, opisane (etykietowane) odpowiednimi symbolami alfabetu, z którego pochodzą symbole łańcucha. Jeden ze stanów jest wyróŜniony jako stan początkowy (na rysunku – jest to stan oznaczony krótką strzałką dochodząc do niego z zewnątrz). Od tego stanu zawsze rozpoczynamy „wędrówkę” po grafie. Niektóre stany są

traktowane jako stany końcowe – akceptujące (są one zaznaczone

kółkami rysowanymi podwójną linią). Jeśli w trakcie naszej „wędrówki” po grafie zatrzymamy się w takim stanie, przeczytawszy wejście do końca, to akceptujemy badany łańcuch, jeśli zatrzymamy się w stanie nie będącym stanem końcowym – nie akceptujemy analizowanego łańcucha.

Zatrzymanie się w naszym przypadku moŜe być tylko spowodowane przeczytaniem badanego słowa do końca i stwierdzeniem, Ŝe juŜ nic nie pozostało do przeczytania.

Opisany powyŜej algorytm nosi nazwę automatu skończonego (a dokładnie deterministycznego i zupełnego automatu skończonego).

Definicja automatu skończonego

Automatem skończonym nazywamy piątkę:

A = < Σ, Q, F, q

0

, δ >, gdzie:

Σ – zbiór symboli terminalnych (alfabet wejściowy) Q – zbiór stanów, #Q < ∞ ∞ ∞ ∞

F ⊆ ⊆ ⊆ ⊆ Q – zbiór stanów końcowych q

0

∈ ∈ ∈ ∈ Q – stan początkowy

δ – funkcja przejścia

δ: Q × × × × (Σ ∪ ∪ ∪ ∪ {ε}) a 2

Q

(4)

Konfiguracja automatu (1)

a b b a b a b a b b

q

i

konfiguracja (q

i,babababb)

przed wykonaniem kroku

a b b a b a b a b b

q

j

konfiguracja (qj,abababb)

po wykonaniu kroku

Konfiguracja automatu (2)

Konfiguracja automatu to dwójka: (q, w), gdzie q jest aktualnym stanem, zaś w jest nieprzeczytaną przez automat częścią słowa zapisanego na taśmie wejściowej

(5)

Konfiguracja automatu (3)

q

0

Konfiguracja początkowa:

Konfiguracja końcowa akceptująca:

q F

stan końcowy

Wyprowadzenie bezpośrednie i pośrednie

Wyprowadzenie bezpośrednie:

(q, ax) A (q’, x)

gdzie: q,q’∈∈∈∈Q, a∈∈∈(Σ ∪∈ ∪∪∪{ε}), x∈Σ* , q’∈ δ(q,a)

Wyprowadzenia pośrednie A+ i A* są odpowiednio

przechodnim oraz przechodnim i zwrotnym domknięciem relacji wyprowadzenia bezpośredniego A:

(q, w) A+ (q’, w’) ⇔⇔⇔⇔ ∃∃∃∃p0, ..., pn(pi– konfiguracje), takie Ŝe:

q0=(q, w), qn= (q’, w’),

pi A pi+1 dla i=0, 1, ..., n-1

(q, w) A* (q’ , w’) ⇔ (q, w) A+(q’, w’) ∨∨∨∨ (q, w)=(q’, w’)

(6)

Akceptacja języka przez automat

x∈Σ* jest słowem akceptowanym przez automat A (skończony) ⇔

(∃ ∃ ∃q∈F) ((q ∃

0

,x) 

A

* (q,ε))

Język L jest akceptowany przez automat A (co oznaczamy L(A) ) ⇔

L = L(A) = { x∈Σ* | x jest akceptowane przez A }

Konfiguracja blokująca:

(q,w) jest blokująca ⇔ ¬ ¬ ¬ ¬ (∃ ∃ ∃ ∃ (q’ ,w’)) ((q,w) 

A

(q’ ,w’))

Przykład (1)

Przykład: Automat niedeterministyczny akceptujący język regularny opisany wyraŜeniem regularnym (a|b)*abb Σ={a,b}

Q={q0, q1,q2,q3} F={q3}

q0– stan początkowy δ- funkcja przejścia:

∅∅

∅∅ q3

{q3}

∅∅ q2

{q2}

∅∅∅ q1

{q0} {q0, q1}

q0

b a

stan b

b

a b

start a

q3 q2

q1 q0

(7)

Przykład (2)

Analizowane słowo : aabb ∈ L( (a|b)*abb ) MoŜliwe wyprowadzenia:

• ( q0, aabb )  ( q0, abb )  ( q1, bb )  ( q2, b )  ( q3, ε) – konfiguracja końcowa akceptująca)

• ( q0, aabb )  ( q0, abb )  ( q0, bb )  ( q0, b )  ( q0, ε) – konfiguracja blokująca, bo q0∉∉∉∉F

• ( q0, aabb )  ( q1, abb ) – konfiguracja blokująca, słowo nie zostało przeczytane do końca

Automat nie jest deterministyczny. Jednak istnieje wyprowadzenie (ciąg kroków), które doprowadza do konfiguracji akceptującej, więc zgodnie z definicją automat akceptuje to słowo.

b

b

a b

start a

q3 q2

q1 q0

Własności automatów skończonych

Automat skończony A jest zupełny ⇔ (∀a∈Σ) (∀q∈Q) (#δ(q,a) ≥ 1)

Automat skończony A jest deterministyczny ⇔ (i) (∀q∈Q) (#δ(q,ε) = 0) oraz

(ii) (∀a∈Σ) (∀q∈Q) (#δ(q,a) ≤ 1)

Automat skończony A jest deterministyczny i zupełny ⇔ (i) (∀q∈Q) (#δ(q,ε) = 0) oraz

(ii) (∀a∈Σ) (∀q∈Q) (#δ(q,a) = 1)

Automat skończony zupełny nazywamy automatem Rabina- Scotta.

Automat skończony, deterministyczny i zupełny nazywamy

deterministycznym automatem Rabina-Scotta

(8)

Przykład

Przykład: Deterministyczny zupełny automat

akceptujący język opisany wyraŜeniem regularnym (a|b)*abb

Σ = {a, b}

Q = {0, 1, 2, 3}

F = {3}

q0 = 0

δ - funkcja przejścia:

0 1 3

3 1 2

2 1 1

0 1 0

b a Stan

b

b

a b

start a

3 2

1 0

Przypomnienie poprzedniego przykładu : automat niederministyczny i niezupełny

0 1 2 3

b

b b

a a

a a b

3

Cytaty

Powiązane dokumenty

Operator A jest liniowy, tzn... Kwantowy

Dla dodatniej liczby naturalnej n znaleźć wzór na największą potęgę liczby pierwszej p dzielącą n!4. Rozłożyć na czynniki pierwsze

Celem projektu jest opis algebr ba- zowych uogólnionego typu kwaternionowego oraz pokazanie, że są one okresowe o okresie 4. Kołczan Q nazywamy 2-regularnym, jeśli w każdym

Krawędzi, które łączą wierzchołki należące do różnych kawałków, jest dokładnie n k − 1, a ponieważ poddrzewa połączone takimi krawędziami składają się z

Kompozycja ikony Rublowa zbudowana jest na podstawie zasady kręgu1. Na czym polega

Punkty te połączono między sobą i z wierzchołkami trójkąta nieprzecinającymi się odcinkami tak, iż ”duży” trójkąt podzielono na mniejsze trójkąty.. Udowodnij, że

, n} tak, by dla każdych trzech wierzchołków A, B, C, dla których |AB| = |AC|, liczba przy wierzchołku A była albo mniejsza, albo wi e , ksza od jednocześnie obu liczb

Podlaski Konkurs Matematyczny 2006 Zadania przygotowawcze - klasy drugie..