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
Gramatyki bezkontekstowe I
Gramatyką bezkontekstową jest nazywana uporządkowana czwórka
G=(V,T,P,S), gdzie:
I
V jest skończonym zbiorem zmiennych (nieterminali, kategorii
syntaktycznych) - elementy tego zbioru są oznaczane dużymi
literami,
I
T jest skończonym zbiorem terminali (symboli terminalnych,
symboli końcowych) - elementy tego zbioru są oznaczane
małymi literami,
I
P jest zbiorem produkcji (reguł) przedstawiających
rekurencyjną definicję języka,
I
S jest wyróżnionym symbolem zwanym symbolem startowym.
Produkcje
Produkcje są zbudowane z:
1. Zmiennej definiowanej przez tą produkcję - jest ona często
nazywana głową produkcji,
2. Symbolu →,
3. Łańcucha złożonego z zera lub więcej terminali i zmiennych łańcuch ten tworzy ciało produkcji. Łańcuch przedstawia jeden
ze sposobów tworzenia łańcuchów w języku zmiennej będącej
głową produkcji - w trakcie tego procesu symbole terminalne
pozostają bez zmian, podstawiane są za każdą zmienną ciała
produkcji dowolnego łańcucha, o których wiadomo, że należą
do języka tej zmiennej.
Przykład gramatyki I
1. E → I
2. E → E + E
3. E → E ∗ E
4. E → (E )
5. I → a
6. I → b
7. I → Ia
8. I → Ib
9. I → I 0
10. I → I 1
Przykład gramatyki II
Gramatykę z poprzedniego slajdu można zapisać również w postaci
(zamiast zapisywać produkcje dotyczącego tego samego symbolu w
różnych wierszach łączy się je za pomocą symbolu |:
1. E → I | E + E | E ∗ E | (E )
2. I → a | b | Ia | Ib | I 0 |I 1
Wnioskowanie rekurencyjne
I
Reguły są stosowane od ciała do głowy.
I
Brane są łańcuchy, o których wiadomo, że należą do języka
jednej ze zmiennych ciała i składane we właściwej kolejności
ze wszystkimi symbolami końcowymi w ciele.
I
Przeprowadzone wnioskowanie pozwala udowodnić, że
wynikowy łańcuch należy do głowy produkcji.
I
Opisywana metoda postępowania jest nazywana
wnioskowaniem rekurencyjnym.
Wnioskowanie rekurencyjne
Wyw. łańcuch
a
b
b1
b11
a
b11
a + b11
(a + b11)
a ∗ (a + b11)
Zmienna
I
I
I
I
E
E
E
E
E
Nr produkcji
5
6
10
10
1
1
2
4
3
Wyprowadzenie
Dla danej gramatyki bezkontekstowej G = (V , T , P, S):
I
niech αAβ będzie ciągiem symboli końcowych i zmiennych,
gdzie A jest zmienną (α, β ∈ (V ∪ T )∗ , A ∈ V ).
I
niech A → γ, wtedy można zapisać αAβ ⇒ αγβ.
G
I
W jednym kroku wyprowadzenia zastępuje się w dowolnym
miejscu łańcucha dowolną zmienną ciałem jednej z jej
produkcji.
Wyprowadzenia w gramatyce I
I
Produkcje stosowane są w kierunku od głowy do ciała.
I
Na początku rozwijany jest symbol początkowy, przy
zastosowaniu jednej z produkcji dla tego symbolu (wybierana
jest produkcja, której głową jest symbol startowy).
I
Otrzymany w ten sposób łańcuch rozwija się dalej zastępując
jedną ze zmiennych ciałem jednej z jej produkcji.
I
Opisaną metodę stosuje się, aż do momentu uzyskania
łańcucha składającego się jedynie z symboli końcowych.
I
Opisywane zastosowanie gramatyki jest nazywane
wyprowadzeniem.
Wyprowadzenia prawostronne i lewostronne I
I
Można ograniczyć liczbę wyborów, jakie należy dokonać w
wyprowadzeniu łańcucha stawiając wymagania, że:
I
I
w każdym kroku będzie zastępowana pierwsza zmienna od
lewej strony jednym z ciał jej produkcji (jest to nazywane
wyprowadzeniem lewostronnym),
w każdym kroku będzie zastępowana pierwsza zmienna od
prawej strony jednym z ciał jej produkcji (jest to nazywane
wyprowadzeniem prawostronnym).
Wyprowadzenia prawostronne i lewostronne II
Na przykład dla napisu a ∗ (a + b11) można przedstawić
korzystając z gramatyki następujące wyprowadzenia:
I
lewostronne
E ⇒ E ∗ E ⇒ I ∗ E ⇒ a ∗ E ⇒ a ∗ (E ) ⇒ a ∗ (E + E ) ⇒
a ∗ (I + E ) ⇒ a ∗ (a + E ) ⇒ a ∗ (a + I ) ⇒ a ∗ (a + I 1) ⇒
a ∗ (a + I 11) ⇒ a ∗ (a + b11)
Wyprowadzenia prawostronne i lewostronne III
I
prawostronne
E ⇒ E ∗ E ⇒ E ∗ (E ) ⇒ E ∗ (E + E ) ⇒ E ∗ (E + I ) ⇒
E ∗ (E + I 1) ⇒ E ∗ (E + I 11) ⇒ E ∗ (E + b11) ⇒
E ∗ (I + b11) ⇒ E ∗ (a + b11) ⇒ I ∗ (a + b11) ⇒ a ∗ (a + b11)
Język gramatyki
I
Jeżeli G = (V , T , P, S) jest gramatyką bezkontekstową, to jej
język G oznaczony jako L(G ) jest zbiorem łańcuchów symboli
końcowych (terminali), które mają wyprowadzenia z symbolu
startowego.
∗
L(G ) = {w ∈ T ∗ |S ⇒ w }
G
I
Jeżeli język L jest językiem pewnej gramatyki bezkontekstowej
to jest on nazywany językiem bezkontekstowym.
Formy zdaniowe
I
Najważniejszą role odgrywają wyprowadzenie z symbolu
startowego - są one nazywane formami zdaniowymi.
I
Jeżeli G = {V , T , P, S} jest gramatyką bezkontekstową to
∗
dowolny łańcuch a ∈ (V ∪ T )∗ taki, że S ⇒ α jest formą
zdaniową.
I
Jeżeli S ⇒ α to α jest lewostronną formą zdaniową.
I
Jeżeli S ⇒ α to α jest prawostronną formą zdaniową.
l
p
Drzewa wyprowadzenia I
Drzewo wyprowadzenia to drzewo spełniające następujące warunki:
1. Każdy wierzchołek wewnętrzny jest etykietowany zmienną ze
zbioru V.
2. Każdy liść etykietowany jest zmienną, symbolem końcowym
lub .
3. Jeżeli wierzchołek wewnętrzny jest etykietowany zmienną X a
jego dzieci są etykietowane, zaczynając od lewej symbolami
Y1 Y2 ...Yn , to musi istnieć produkcja X → Y1 Y2 ...Yn
Drzewa wyprowadzenia II
E
E
∗
E
I
a
(
E
E
)
+
E
I
I
I
a
I
a
1
1
Plon drzewa wyprowadzeń
I
Składając liście dowolnego drzewa wyprowadzeń od lewej do
prawej można uzyskać łańcuch, który jest nazywany plonem
tego drzewa.
I
Dla drzewa z poprzedniego slajdu plonem jest a*(a+a11).
Wnioskowanie, wyprowadzenia i drzewa wyprowadzeń
Dla danej gramatyki G = (V , T , P, S) równoważne są:
1. Procedura wnioskowania rekurencyjna, która rozstrzyga, że
dany łańcuch końcowy w należy do zmiennej języka A.
∗
2. A ⇒ w
3. A ⇒∗l w
4. A ⇒∗p w
5. Istnieje drzewo wyprowadzeń o korzeniu A i plonie w.
Od wnioskowania do drzewa wyprowadzeń
Niech G = (V , T , P, S) będzie gramatyką bezkontekstową. Jeżeli
procedura wnioskowania rekurencyjnego stwierdzi, że łańcuch
końcowy w należy do języka zmiennej A, to instnieje drzewo
wyprowadzenia o korzeniu A i plonie w.
Przekształcenie drzewa na wyprowadzenie
Niech G = (V , T , P, S) będzie gramatyką bezkontekstową, jeżeli
istnieje drzewo wyprowadzenia o korzeniu etykietowanym zmienną
A i o plonie w, gdzie w ∈ T ∗ , wtedy w gramatyce G istnieje
wyprowadzeie lewostronne A ⇒∗l w .
Od wyprowadzeń do wnioskowania rekurencyjnego
Niech G = (V , T , P, S) będzie gramatyką bezkontekstową, jeżeli
istnieje wyprowadzenie A ⇒∗G w , gdzie w ∈ T ∗ , wtedy procedura
wnioskowania rekurencyjnego zastosowana do G rozstrzyga, że w
należy do języka zmiennej A.
Gramatyki niejednoznaczne
I
I
Gramatyka jest niejednoznaczna wtedy i tylko wtedy, gdy
istnieje przynajmniej jeden łańcuch dla którego można znaleźć
więcej niż jedno wyprowadzenie (drzewo wyprowadzeń).
Np. dla gramatyki E ⇒ E + E | E ∗ E można wygenerować
dwa wyprowadzenia dla E + E ∗ E :
1. E ⇒ E + E ⇒ E + E ∗ E
2. E ⇒ E ∗ E ⇒ E + E ∗ E
Niejednoznaczność gramatyki
E
E
id
E
+
E
E
id
*
E
E
E
id
id
+
*
E
id
E
id
Ścisła wieloznaczność
1. Język bezkontekstowy jes ściśle wieloznaczny, gdy wszystkie
jego gramatyki są wieloznaczne.
2. Jeżeli choć jedna gramatyka języka L jest jednoznaczna to L
jest językiem jednoznacznym.
Zastosowania gramatyk bezkontekstowych
1. Gramatyki bezkontekstowe są używane do opisu języków
programowania 1.1 Istnieją automatyczne sposoby przekształcania opisu języka
bezkontekstowego na parser.
1.2 Bardziej zwarty opis języka.
1.3 Łatwiejsze rozszerzanie języka o nowe elementy.
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

Podobne dokumenty