• Nie Znaleziono Wyników

Materiały do wykładu z Lingwistyki Matematycznej

N/A
N/A
Protected

Academic year: 2021

Share "Materiały do wykładu z Lingwistyki Matematycznej"

Copied!
7
0
0

Pełen tekst

(1)

Materiały do wykładu z Lingwistyki Matematycznej

Barbara Klunder 10 marca 2008

Wykład ten będzie kontynuacją wykładu z Podstaw Teorii obliczalności.

Rozważać będziemy gramatyki, czyli generatory języków i maszyny Turinga, które (przypomnijmy) są akceptorami tychże. Definicja gramatyki (typu 0) jest bardzo pojemna (ogólna); udowodnimy np. twierdzenie, że są one generatorami dokładnie wszystkich języków (zbiorów) rekurencyjnie przeliczalnych. Wykład będzie się więc koncentrował wokół specjalnych gramatyk, i języków przez nie generowanych, o dużym znaczeniu praktycznym. Po wstępie matematycznym dotyczącym monoidów zajmiemy się językami regularnymi, które powinny być dobrze znane użytkownikom Unixa, którzy kiedykolwiek próbowali odszukać plik znając jego niepełną nazwę lub przygotowali nietrywialny skrypt np.

w Perlu. Akceptorami dla tych języków będą automaty Rabina-Scotta, a generatorami np. gramatyki prawostronnie liniowe. Następnie przejdziemy do gramatyk bezkontekstowych, które odgrywają kluczową rolę przy definiowaniu i budowaniu kompilatorów języków programowania. Pojęcie gramatyki nie będzie więc pierwszym, które wprowadzimy w wykładzie. No to zaczynamy!

Niech X będzie dowolnym niepustym i skończonym zbiorem

Definicja 0.1 Deterministycznym i zupełnym X- automatem Rabina-Scotta A nazywamy piątkę < X, Q, F, δ, q0 >, w której

1. X jest skończonym alfabetem symboli wejściowych.

2. Q jest skończonym zbiorem stanów rozłącznym z X.

3. F ⊆ Q jest podzbiorem stanów końcowych.

(2)

4. q0 ∈ Q jest wyróżnionym stanem początkowym.

5. F-cja δ : Q × X 7→ Q zwana jest funkcją przejścia lub zmiany stanu.

Nieformalnie Automat Rabina-Scotta (skrótowo: (RS)-automat)jest urządzeniem posiadającym nieskończoną taśmę wejściową, służącą tylko do czytania (od

lewej do prawej) słów nad alfabetem X, które (urządzenie) pod wpływem przeczytanej ostatnio informacji (litery słowa na wejściu), zmienia swój stan świadomości. Oczywiście stan początkowy jest naturalnie rozumiany. Wygodniej jest opisywać (RS)-automat jako graf zorientowany o wierzcholkach będących stanami i krawędziach etykietowanych literami alfabetu wejściowego.

Przykład Maszyna Turinga obliczająca resztę z dzielenia przez 3 liczby naturalnej n, operując zapisami liczb w systemie dwójkowym bez zbędnych zer

q00 −→ BRq0 wczytana liczba daje resztę 0 q01 −→ BRq1 wczytana liczba daje resztę 1 q10 −→ BRq2 mnóż przez 2 liczbę dającą resztę 1

q11 −→ BRq0 mnóż przez 2 i dodaj 1 do liczby dającej resztę 1 q20 −→ BRq1 mnóż przez 2 liczbę dającą resztę 2

q21 −→ BRq2 mnóż przez 2 i dodaj 1 do liczby dającej resztę 2 Zadanie Zdefiniuj pozostałe instrukcje MT tak, aby w konfiguracji qiB wypisywała kod liczby i.

Jeśli ktoś nie wykonał tego zadania, to czas najwyższy to zrobić!

Tu i teraz będzie dla nas istotne, że maszyna zatrzymuje się w stanie qi wtw, gdy na wejściu był zapis liczby dającej resztę i. Tak więc tablica

q00 −→ q0 q01 −→ q1 q10 −→ q2 q11 −→ q0 q20 −→ q1 q21 −→ q2

opisuje funkcję przejścia pewnego (RS)-automatu. Jeśli wybierzemy {q1} za zbiór stanów końcowych, to automat znajdzie się w stanie końcowym tylko po przeczytaniu zapisu liczby dającej resztę 1 z dzielenia przez 3. Ten przykład na razie wystarczy nam za definicję języka akceptowanego przez (RS)-automat.

(3)

1 Monoidy i homomorfizmy monoidów, monoidy wolne

Definicja 1.1 Algebrę S =< S, e, · >, sygnatury < 0, 2 > nazywamy monoidem, jeśli spełnia mastępujące warunki

1. ∀x∈S x · e = e · x = x;

2. ∀x,y,z∈S x · (y · z) = (x · y) · z.

Zwykle monoid jak zbiór jego elementów będę oznaczać tą samą literą oraz pomijać będę znak mnożenia.

Przykłady

1. F(X): Zbiór wszystkich funkcji na zbiorze X ze składniem i funkcją identycznościową.

2. < N, 0, + >: Zbiór liczb naturalnych z dodawaniem.

3. X? =< X?, , · >: Zbiór wszystkich słów nad alfabetem X z operacją konkatenacji słów i słowem pustym .

4. W szczególności dla X = {a}, X? = {, a, a2, a3, . . .} i konkatenacja polega na sumowaniu ”wykładników” stanowiących długość słowa.

Definicja 1.2 Niech S =< S, e, · > i T =< T, e0, · > będą monoidami.

Funkcję h : S 7→ T nazywamy homomorfizmem z monoidu S w monoid T , jeżeli spełnia ona następujące warunki:

1. h(e) = e0;

2. ∀x,y∈Sh(xy) = h(x)h(y).

Wróćmy do ostatniego przykładu. Zauważmy, że funkcja przyporządkowująca liczbie naturalnej n słowo an, dla n 6= 0 i  w przeciwnym wypadku jest homomorfizmem monoidów. Inny ważny

Przykład Niech S =< S, e, · > będzie dowolnym monoidem. Każdy element s ∈ S określa funkcję (lewostronnego) działania na zbiorze S, fs : S 7→ S, określoną następująco: ∀y∈Sfs(y) = sy. Zauważmy, że fe = idS (fe(y) = ey = y). Ponadto dla s, t ∈ S, fs ◦ ft = fst (fst(x) = (st)x = s(tx) = fs(tx) = fs(ft(x)) = (fs◦ ft)(x)) oraz równość fs = ft pociąga s = t!

Zauważmy, że udowodniliśmy następujące twierdzenie.

(4)

Twierdzenie 1.3 Niech S =< S, e, · > będzie monoidem. Funkcja f : S 7→

F (S) przyporządkowująca elementowi s ∈ S f-cję fs jest homomorfizmem z monoidu S w monoid F(S). Homomorfizm ten jest różnowartościowy.

Definicja 1.4 Homomorfizm h : S 7→ T z monoidu S w monoid T będący bijekcja nazywamy izomorfizmem.

Zadanie

1. Pokaż, że homomorfizm h : S 7→ T jest izomorfizmem wtw, gdy f-cja h posiada odwrotną g, która jest homomorfizmem z T w S.

2. Pokaż, że monoidy z przykładu (2) i (4) są izomorficzne.

W wykładzie skupimy się na monoidach słów, które mają równie ciekawą charakteryzację algebraiczną, jak monoidy funkcji (Tw.1.3).

Twierdzenie 1.5 Niech X będzie dowolnym zbiorem a S =< S, e, · > dowolnym monoidem, niech hX : X 7→ X? będzie funkcją przyporządkowującą literze x słowo składające się tylko z tej litery. Wtedy dla dowolnej funkcji f : X 7→ S istnieje dokładnie jeden homomorfizm f : X? 7→ S taki, że f ◦ hX = f .

Dowód Należy pokazać, że żądaną funkcję f można zdefiniować wzorem f (x1. . . xn) = f (x1) . . . f (xn), kładąc dodatkowo f () = e. Jest to proste ćwiczenie.

Definicja 1.6 Powyższe twierdzenie mówi, że monoid słów X? jest monoidem wolnym nad zbiorem X. Abstrakcyjnie, monoid T jest wolny nad zbiorem X, jeśli istnieje funkcja hX : X 7→ T taka, że dla dowolnego monoidu S i dowolnej funkcji f : X 7→ S istnieje dokładnie jeden homomorfizm f : T 7→ S taki, że f ◦ hX = f .

Przykład Fakt, iż monoid słów X?jest wolnym wykorzystamy do precyzyjnego zdefiniowania języka akceptowanego przez (zupełny i deterministyczny) (RS)- automat A. Funkcję δ : Q × X 7→ Q rozszerzymu do δ : Q × X? 7→ Q w następujący sposób:

δ(q, ) = q

x∈X,w∈X? δ(q, wx) = δ(δ(q, w), x).

Jak wykorzystujemy ten fakt? Po pierwsze, każde słowo nad alfabetem X jest albo puste, albo postaci wx, dla odpowiednich w, x; po drugie, postać ta jest jednoznaczna! Wtedy łatwo jest udowodnić następujące własności.

(5)

1. ∀x∈X,q∈Q δ(q, x) = δ(q, x)

2. ∀u,w∈X?,q∈Qδ(q, uw) = δ(δ(q, u), w)

Definicja 1.7 Niech A=< X, Q, F, d, q0 > będzie zupełnym i deterministycznym (RS)-automatem. Zbiór

L(A) = {w ∈ X?; δ(q0, w) ∈ F } nazywamy językiem akceptowanym przez A.

1.1 Kongruencje i prawe kongruencje monoidu

W niniejszym paragrafie S =< S, e, · > jest ustalonym monoidem. Niech h : S 7→ T będzie homomorfizmem monoidów. Przypomnijmy, że relację Ker h = {< x, y >∈ S × S : h(x) = h(y)} nazywamy jądrem funkcji h. Wiadomo, że Ker h jest relacją równoważności na zbiorze S. Pojawia się pytanie, czy to że h jest homomorfizmem monoidów znajduje odzwierciedlenie we własnościach Ker h?

Definicja 1.8 Niech R ⊆ S × S będzie relacją równoważności na zbiorze S.

1. R jest kongruencją monoidu S jeśli

s,t,u,v∈S sRt ∧ uRv ⇒ suRtv;

2. R jest prawą kongruencją monoidu S, jeśli

s,t,u∈S sRt ⇒ suRtu

Zadanie Pokazać, że

1. Ker h jest (prawą) kongruencją. S;

2. Ker fs jest prawą kongruencją S;

3. Dla dowolnego X- automatu Rabina-Scotta A =< X, Q, F, δ, q0 >, relacja Ker δ(q0, ) jest prawą kongruencją monoidu X?. Ile klas abstrakcji ma ta relacja równoważności?

(6)

Rozwiązanie

(1) Jeśli h(s)=h(t) i h(u)=h(v), to h(su)=h(s)h(u)=h(t)h(v)=h(tv).

(2) Jeśli sx=sy, to dla każdego z s(xz)=s(yz), bo wystarczy pierwszą równość pomnnożyć prawstronnie przez z i skorzystać z prawa łączności.

(3) Niech δ(q0, u) = δ(q0, v). Korzystając z równości δ(q, uw) = δ(δ(q, u), w) mamy dla dowolnego słowa w δ(q0, uw) = δ(δ(q0, u), w) = δ(δ(q0, v), w) = δ(q0, vw). Zastanówmy się nad drugim pytaniem. Zauważmy, że klasa abstrakcji [w] relacji Kerδ(q0, ) wyznaczona jest przez jeden stan automatu A (rozważ stan, w którym kończy się czytanie jakiegokolwiek słowa z tej klasy abstrakcji).

Oznacza to, że Kerδ(q0, ) ma nie więcej klas abstrakcji niż zbiór Q elementów!

Tak więc zbiór {[w]; w ∈ L(A)} jest skończony. Zauważmy też, żeSw∈L(A)[w] = L(A), co oznacza, że język L(A) jest nasycony względem relacji Kerδ(q0, ) . Otrzymaliśmy więc, że każdy język akceptowany przez pewnien (RS)-automat jest sumą klas abstrakcji pwenej prawej kongruencji monoidu X? mającej tylko skończenie wiele klas abstrakcji. Tw. Nerode’a mówi, że warunek ten jest też wystarczający dla języka do zbudowania (RS)-automatu akceptującego ten język.

Najpierw pokażemy, że pośród prawych kongruencji nasycających dany język L ⊆ X? istnieje element największy.

Uwaga!!! Oczywiście każdy język jest sumą pewnych klas abstrakcji prawej kongruencji ∆ = {(x, x); x ∈ X?}.

Lemat 1.9 Niech X będzie dowolnym (skończonym) zbiorem i L ⊆ X? dowolnym językiem nad alfabetem X. Rozważmy relację ρrL ⊆ X? × X? zdefiniowaną następująco:

u,v∈X?rLv ⇔ ∀w∈X?(uw ∈ L ⇔ vw ∈ L).

Wtedy relacja ta jest największą prawą kongruencją nasycającą L.

Dowód Po pierwsze: ρrL jest relacją równoważności:

(zwrotność) xρrLx ⇔ ∀w∈X?(xw ∈ L ⇔ xw ∈ L)

(symetryczność) xρrLy ⇔ ∀w∈X?(xw ∈ L ⇔ yw ∈ L) ⇔ ∀w∈X?(yw ∈ L ⇔ xw ∈ L) ⇔ yρrLx

(przechodniość) Niech xρrLy, yρrLz. Wtedy dla dowolnego v ∈ X? mamy, xv ∈ L ⇔ yv ∈ L ⇔ zv ∈ L, co oznacza, że xρrLz.

Po drugie: ρrL jest też prawą kongruencją: xρrLy i z ∈ X?. Wtedy xzρrLyz ⇔

w∈X?((xz)w ∈ L ⇔ (yz)w ∈ L) ⇔ ∀w∈X?(x(zw) ∈ L ⇔ y(zw) ∈)L, a

(7)

ostatnie zdanie jest prawdziwe, bo xρrLy.

Po trzecie: ρrL nasyca L. Zauważmy, że wystarczy pokazać, iż warunki, x ∈ L, xρrLy pociągają y ∈ L. Faktycznie, z definicji xρrLy, wstawmy w = , mamy: x ∈ L ⇔ y ∈ L.

Po czwarte: Niech Θ ⊆ X? × X? będzie prawą kongruencją nasycającą L.

Niech xΘy, pokażemy, że xρrLy. Weźmy z ∈ X?, wtedy xzΘyz (bo Θ jest prawą kongruencją) i xz ∈ L wtw, gdy yz ∈ L (bo L jest sumą klas abstrakcji relacji Θ)

Chwila refleksji: przecież relacja ∆ jest kongruencją, więc może podobne twierdzenie zachodzi też dla kongruencji?

Zadanie Udowodnij

Lemat 1.10 Niech X będzie dowolnym (skończonym) zbiorem i L ⊆ X? dowolnym językiem nad alfabetem X. Rozważmy relację ρL ⊆ X? × X? zdefiniowaną następująco:

u,v∈X?Lv ⇔ ∀w,x∈X?(xuw ∈ L ⇔ xvw ∈ L).

Wtedy relacja ta jest największą kongruencją nasycającą L.

Fakt, że ρrL jest największą prawą kongruencją o podanych własnościach można wykorzystać w dowodzeniu, że pewne języki nie są akceptowane przez deterministycze (RS)-automaty: jeśli pewna relacja równoważności ma skończenie wiele klas abstrakcji, to każda zawierająca ją również. Język L = {0i1i : i ∈ N } nie jest akceptowany przez taki automat, bo relacja ρrL ma nieskończenie wiele klas abstrakcji: każde ze słów 0i, i ∈ N wyznacza inną klasę abstrakcji.

Faktycznie, dla i 6= j, 0i1i ∈ L, 0j1i 6∈ L.

Cytaty

Powiązane dokumenty

Typy danych, stałe liczbowe, deklaracje zmiennych i stałych Operatory, priorytet operatorów..

%d kod ASCII znaku, liczba całkowita char * %s łańcuch znaków, napis. char * %s łańcuch

złożone - kilka instrukcji zawartych pomiędzy nawiasami klamrowymi Typy instrukcji

jeśli wyrażenie jest prawdziwe, to wykonywana jest instrukcja1, zaś instrukcja2 nie jest wykonywana gdy wyrażenie jest fałszywe,. to wykonywana jest instrukcja2, zaś instrukcja1

prawdziwe - gdy jego wartość jest różna od zera fałszywe - gdy jego wartość. jest

Informatyka (EDS1B1007), studia stacjonarne I stopnia dr inż..

Mówimy, że zmienna ptr jest typu: wskaźnik do zmiennej typu int Do przechowywania adresu zmiennej typu double trzeba. zadeklarować zmienną typu: wskaźnik do zmiennej

Mówimy, że zmienna ptr jest typu: wskaźnik do zmiennej typu int Do przechowywania adresu zmiennej typu double trzeba. zadeklarować zmienną typu: wskaźnik do zmiennej