Matematyczne Podstawy Informatyki

Transkrypt

Matematyczne Podstawy Informatyki
Matematyczne Podstawy Informatyki
dr inż. Andrzej Grosser
Instytut Informatyki Teoretycznej i Stosowanej
Politechnika Częstochowska
Rok akademicki 2013/2014
Automat ze stosem
Automat ze stosem to szóstka uporządkowana (Q,Σ, Γ, δ, q0 , F ),
gdzie:
1. Q jest skończonym zbiorem stanów;
2. Σ jest alfabetem wejściowym;
3. Γ jest alfabetem stosu;
4. δ : Q × Σ × Γ → P(Q × Γ );
5. q0 ∈ Q jest stanem początkowym;
6. F ⊆ Q jest zbiorem stanów akceptujących.
Automat ze stosem
Przykład
Automat rozpoznający język 0n 1n
I
Q = {q1 , q2 , q3 , q4 },
I
Σ = {0, 1},
I
Γ = {0, $},
I
F = {q1 , q4 },
I
Funkcja przejścia (puste miejsca oznaczają ∅:
Wejście
Stos
q1
q2
q3
q4
0
0
$
{(q2 , 0)}
1
0
{(q3 , )}
{(q3 , )}
$
0
$
{(q4 , )}
{(q2 , $)}
Przykład
Opis chwilowy I
I
Opis chwilowy to trójka (q, w , γ), gdzie:
I
I
I
I
q jest stanem,
w jest pozostałą częścią wejścia,
γ jest zawartością stosu.
Jeżeli dla AZS = (Q, Σ, Γ, δ, q0 , Z0 , F ) δ(q, a, X ) zawiera
(p, α). Wtedy dla wszystkich łańcuchów w ∈ Σ∗ i β ∈ Γ∗ :
(q, aw , X β) ` (p, w , αβ)
Opis chwilowy II
1. Jeżeli ciąg opisów chwilowych jest poprawny dla automatu ze
stosem P, to obliczenie utworzone poprzez dodanie tego
samego łańcucha wejściowego na koniec wejścia w każdym
opisie chwilowym jest również poprawne.
2. Jeśli dane obliczenie jest poprawne dla automatu ze stosem P,
to obliczenie utworzeone przez dodanie tych samych symboli
stosowych pod stosem w każdym opisie jest również poprawne.
3. Jeśli dane obliczenie jest poprawne dla automatu ze stosem P
i jaksa końcowka wejścia nie została pobrana, to można
usunąć tę końcówkę z wejścia w każdym opise chwilowym, a
wynikowe obliczenie jest nadal poprawne.
Opis chwilowy III
Twierdzenie 1
Jeżeli P = (Q, Σ, Γ, δ, q0 , Z0 , F ) jest automatem ze stosem oraz
(q, x, α) `∗ (p, y , β), to dla dowolnych łańcuchów w ∈ Σ∗ i β ∈ Γ∗ :
(q, x, w , αγ) `∗ (p, yw , βγ)
Twierdzenie 2
Jeżeli P = (Q, Σ, Γ, δ, q0 , Z0 , F ) jest automatem ze stosem oraz
(q, xw , α) `∗ (p, yw , β)
to jest także prawdą, że (q, x, α) `∗ (p, y , β).
Automat ze stosem akceptujący poprzez pusty stos
I
Można podać równoważną definicję automatu ze stosem,
definiując go jako automat, dla którego słowo wejściowe
opróżni jego stos.
I
Automat tego rodzaju jest nazywany automatem
akceptującym przez pusty stos.
I
Automat podany w poprzedniej definicji jest nazywany
akceptującym przez stan końcowy.
I
Dla danego automatu ze stosem języki akceptowane przez
niego przez pusty stos i przez stan końcowy z reguły są różne.
I
Można jednak zawsze podać przekształcenie automatu ze
stosem akceptującego poprzez stan końcowy na automat
akceptujący poprzez pusty stos (i odwrotnie), który akceptuje
ten sam język.
Od pustego stosu do stanu końcowego I
Automat ze stosem akceptujący przez pusty stos:
PN = (Q, Σ, Γ, δN , q0 , Z0 ) można przekształcić na automat ze
stosem akceptujący przez stan końcowy rozpoznający ten sam
język: PF = (Q ∪ {p0 , pf }, Σ, Γ ∪ X0 , δN , q0 , X0 , {pf }), gdzie δF
zdefiniowana jest następująco:
1. δF (p0 , , X0 ) = {q0 , Z0 X0 },
2. Dla wszystkich stanów q ∈ Q wejść a ∈ Σ ∪ {} i symboli
stosowych Y ∈ Γ, δF (q, a, Y ) zawiera wszystkie pary z
δN (q, a, Y ).
3. Dodatkowo dla dowolnego q ∈ Q, δF (q, , X0 ) zawiera (pf , ).
Od pustego stosu do stanu końcowego II
Od stanu końcowego do pustego stosu I
Automat ze stosem akceptujący przez stan końcowy:
PF = (Q, Σ, Γ, δF , q0 , Z0 , F )
można przekształcić na automat ze stosem akceptujący przez pusty
stos rozpoznający ten sam język:
PN = (Q ∪ {p0 , p}, Σ, Γ ∪ {X0 }, δN , p0 , X0 ), gdzie δN jest
zdefiniowana jako:
1. δN (p0 , , X0 ) = {(q0 , Z0 X0 },
2. Dla wszystkich stanów q ∈ Q, symboli wejściowych
q ∈ Σ ∪ {} oraz Y ∈ Γ, δN (q, a, Y ) zawiera każdą parę
należącą do δF (q, a, Y ) (PN symuluje PF ).
3. Dla wszystkich stanów akceptujących q ∈ F oraz symboli
stosowych Y ∈ Γ ∪ {X0 }, deltaN (q, , Y ) zawiera (p, ).
Według tego, za każdym razem, gdy PF zaakceptuje wejście,
PN może zacząć opróżniać stos bez pobierania dalszej części
wejścia.
Od stanu końcowego do pustego stosu II
4. Dla wszystkich symboli stosowych Y ∈ Γ ∪ {X0 },
δN (p, , Y ) = {(p, )}. Będąc w stanie p, PN po prostu
wyrzuca każdy symbol ze swego stosu, dopóki stos ten nie
będzie pusty.
Od stanu końcowego do pustego stosu III
Przekształcenie GBK na AZS I
1. Na stosie umieszczono znacznik $ oraz symbol początkowy
gramatyki.
2. Powtarzane są następujące kroki:
2.1 Jeżeli na szczycie stosu jest zmienna oznaczona jako A, to
niedeterministycznie wybiera się jedną z produkcji dla tej
zmiennej i zastępuje się ją prawą stroną tej produkcji.
2.2 Jeżeli na stosie jest symbol końcowy oznaczony jako a, to
czytany jest kolejny symbol z wejścia i porównywany z a. Jeżeli
porównanie wypadło pozytywnie można kontynuować
procedurę, w przeciwnym razie należy odrzucić tą ścieżkę
obliczeń.
2.3 Jeżeli na szczycie stosu jest symbol $, to następuje wejście w
stan akceptujący. W sytuacji, gdy nie ma już symboli
wejściowych, to takie słowo zostaje zaakceptowane
Przekształcenie AZS na GBK I
Twierdzenie 3
Niech P = (Q, Σ, Γ, δ, q0 , F ) będzie automatem ze stosem, wtdy
istniej gramatyka bezkontekstowa G, dla której L(G ) = N(P).
Przekształcenie AZS na GBK II
Algorytm konstrukcji G = (V , Σ, R, S).
Zbiór zmienych V składa się z:
1. specjalnego symbolu S, który jest symbolem początkowym,
2. wszystkich symboli postaci [pXq], gdzie p, q ∈ Q, a X ∈ Γ.
I
Symbol [pXq] reprezentuje akcję ostatecznego zdjęcia symbolu
X ze stosu i zmianę stanu z początkowego p na końcowe q.
Produkcje gramatyki G są następujące:
1. Dla wszystkich stanów p gramatyka G ma produkcję
S → [q0 Z0 p].
I
I
W ten sposób generuje się wszystkich łańcuchy w, które
powodują zdjęcie przez automat ze stosem symbolu Z0 przy
jednoczesnym przejściu ze stanu q0 do stanu p.
Inaczej (q0 , w , Z0 ) `∗ (p, , ) - symbol początkowy S
wygeneruje wszystkie łańcuchy w, które powodują opróżnienie
przez P swego stosu, po wystartowaniu ze stanu początkowego.
Przekształcenie AZS na GBK III
2. Niech δ(q, a, X ) zawiera parę (r , Y1 Y2 ...Yk ),gdzie:
I
I
a ∈ Σ lub a = .
k może być dowolną liczbą naturalną, wyłącznie z 0, w którym
przypadku para ma postać (r , ). Wtedy dla wszystkich list
stanów r1 , r2 , ..., rk , gramatyka G ma produkcję:
[qXrk ] → a[rY1 r1 ][r1 Y2 r2 ]...[rk−1 Yk rk ]
Maszyna Turinga - koncepcja I
I
Nieograniczona pamięć jest modelowana jako taśma o
nieskończonej długości.
I
Maszyna ma głowicę, która może się przesuwać po taśmie,
czytać i zapisywać symbole.
I
Początkowo wypełniona jest słowem wejściowym, reszta
taśmy jest wypełniona symbolem pustym.
I
W sytuacji, gdy maszyna ma zapisać jakąś informację może ją
zapisać na taśmie.
I
Do odczytu informacji maszyna może przesunąć nad nią
głowicę.
Maszyna Turinga - koncepcja II
I
Maszyna kontynuuje obliczenia aż do osiągnięcia wyniku.
I
Wynikiem jest informacja akceptuj lub odrzuć, jeżeli maszyna
jest odpowiednio w stanie akceptującym lub odrzucającym.
I
Maszyna może kontynuować obliczenia w nieskończoność,
jeżeli w żadnym momencie nie wejdzie w stan akceptujący lub
odrzucający.
Różnice pomiędzy maszyną Turinga a automatem
skończonym
I
Maszyna Turinga może czytać i zapisywać na taśmie.
I
Głowica czytająco-zapisująca może przesuwać taśmę w dwóch
kierunkach.
I
Taśma jest nieskończona.
I
Wejście w stan akceptujący lub odrzucający powoduje
natychmiastowe zatrzymanie maszyny.
Działanie maszyny Turinga I
1. Maszyna przechodzi wzdłuż taśmy między odpowiadającymi
sobie pozycjami po różnych stronach znaku #, by sprawdzić,
czy na tych samych pozycjach stoją jednakowe znaki.
2. Jeżeli znaki są różne lub brakuje symbolu # to odrzuca słowo
wejściowe.
3. W przeciwnym razie wykreśla znaki, by zapamiętać część,
która została już sprawdzona.
4. Po wykreśleniu wszystkich znaków na lewo od znaku #
maszyna sprawdza czy na prawej stronie zostały jakieś znaki jeżeli zostały odrzuca słowo, w przeciwnym razie akceptuje.
Działanie maszyny Turinga II
1. [0] 1 1 1 0 1 # 0 1 1 1 0 1 |_|
2. x [1] 1 1 0 1 # 0 1 1 1 0 1 |_|
3. x 1 1 1 0 1 # [x] 1 1 1 0 1 |_|
4. [x] 1 1 1 0 1 # x 1 1 1 0 1 |_|
5. x x x x x x # x x x x x x [|_|]
6. Akceptuj
Maszyna Turinga - formalna definicja
Maszyna Turinga to siódemka uporządkowana
(Q, Σ, Γ, δ, q0 , qA , qO ), gdzie Q, Σ, Γ są zbiorami skończonymi i
I
Q jest zbiorem stanów,
I
Σ jest alfabetem wejściowym, do którego nie należy znak
pusty,
I
Γ jest alfabetem taśmy, gdzie t ∈ Γ oraz Σ ⊆ Γ,
I
δ : Q × Σ × Γ → Q × Γ × {L, R} jest funkcją przejścia,
I
q0 ∈ Q jest stanem początkowym,
I
qA ∈ Q jest stanem akceptującym,
I
qO ∈ Q jest stanem odrzucającym, gdzie qO 6= qA .
Literatura
Do napisania materiałów wykorzystano:
1. M. Sipser “Wprowadzenie do teorii obliczeń”, WNT 2009
2. J.E. Hopcroft, R. Motwani, J.D. Ullman “Wprowadzenie do
teorii, automatów, języków i obliczeń”, PWN 2005