14.08.2013 Views

Sissejuhatus. Keelte formaalne esitamine - Cs.ioc.ee

Sissejuhatus. Keelte formaalne esitamine - Cs.ioc.ee

Sissejuhatus. Keelte formaalne esitamine - Cs.ioc.ee

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

ITT0010<br />

Teor<strong>ee</strong>tiline informaatika<br />

(Theoretical foundations of computer science)<br />

Jaan Penjam<br />

tel: 620 4150, 5147798<br />

faks: 620 4151<br />

email: jaan@cs.<strong>ioc</strong>.<strong>ee</strong><br />

http://www.cs.<strong>ioc</strong>.<strong>ee</strong>/~jaan/teorinf


Ülesanded<br />

Tõenäoliselt<br />

lahendatavad,<br />

aga algoritm pole<br />

teada<br />

Pole arvutil lahendatavad<br />

Praktikas arvutil<br />

lahendatavad<br />

Algoritm<br />

teada


<strong>K<strong>ee</strong>lte</strong> ja mudelite adekvaatsus


Informaatika<br />

valdkond, mis hõlmab informatsiooni töötlemist ning selle tarvis m<strong>ee</strong>todite ja<br />

tehniliste vahendite loomist, ka vastav teadusharu (ENE, 3. kd.)<br />

Kasutatakse ka termineid:<br />

– arvutiõpetus (computer science) - kitsam<br />

– infotehnoloogia (information technology) -laiem<br />

valdkonna vanuseks võib lugeda ligikaudu 50 aastat, seni puudub aga<br />

informaatika ammendav ning kõigi poolt aktsept<strong>ee</strong>ritav definitsioon,<br />

näiteks raamatus<br />

Heinz Zemanek. Das geistige Umfeld der Informationstechnik. Springer,<br />

Berlin , 1992.<br />

on toodud 15 erinevat informaatika ja 7 arvuti mõiste määratlust.


Informaatika kui teadus- ja insenerivaldkond<br />

Informaatika ↔ Matemaatika<br />

lõplikkus ( ; matemaatikas on n! defin<strong>ee</strong>ritud<br />

iga naturaalarvu n jaoks, arvutid suudavad leida vaid<br />

mõneteistkümne arvu faktoriaali)<br />

diskr<strong>ee</strong>tsus ( )<br />

efektiivsus (ainult tõestusest ei piisa, programm peab<br />

olema ka kiire)<br />

arvestada tuleb ka vigadega algandmetes (näiteks: nulliga<br />

jagamine, faktoriaali leidmine suurest arvust)


Informaatika kui teadus- ja insenerivaldkond (2)<br />

Informaatika ↔ Inseneriasjandus<br />

lõplike konstruktsioonielementide suur k<strong>ee</strong>rukus<br />

(programmi komponentide arv on suur ning nende vahel<br />

on palju seoseid)<br />

tarkvaraprojekt = produkt<br />

puuduvad lekkimise ja materjali omadustega seotud<br />

efektid<br />

sarnasus inimajuga


Teor<strong>ee</strong>tilise informaatika kursuse <strong>ee</strong>smärgiks<br />

on tutvustada<br />

– abstraktsiooni olemust ja rolli informaatikas<br />

– arvutamise mudeleid<br />

– formaalset aparatuuri ja m<strong>ee</strong>todeid analüüsimaks<br />

arvutusprotsesside kulgu, programmide korrektsust ja efektiivsust<br />

– programmide konstru<strong>ee</strong>rimise üldisi aluseid<br />

Leida vastus küsimustele:<br />

•Millised ülesanded on arvutil lahendatavad?<br />

•Kui kiiresti (kui efektiivselt) saab üleandeid lahendada?<br />

Küsimuste tüüp on pigem Miks? kui Kuidas?


Teor<strong>ee</strong>tilise informaatika kursuse <strong>ee</strong>smärgiks<br />

on tutvustada<br />

– abstraktsiooni olemust ja rolli informaatikas<br />

– arvutamise peamisi mudeleid<br />

– formaalset aparatuuri ja m<strong>ee</strong>todeid analüüsimaks<br />

arvutusprotsesside kulgu, programmide korrektsust ja efektiivsust<br />

– programmide konstru<strong>ee</strong>rimise üldisi aluseid<br />

Klassikalise teor<strong>ee</strong>tilise informaatika kursuse peatükkideks on:<br />

– hulgateooria ja konstruktiivne loogika<br />

– formaalsete k<strong>ee</strong>lte teooria<br />

– rekursiooniteooria ja algoritmianalüüs<br />

– klassikaliste andmetöötlusülesannete algoritmid ja k<strong>ee</strong>rukushinnangud.


TUNNIPLAAN: ITT0010 | Teor<strong>ee</strong>tiline informaatika<br />

Rühmad: IASBxx Arvuti- ja süst<strong>ee</strong>mitehnika, 2008/09 sügissemester<br />

Loengud IT-137A (IASB 31, 32, 37):<br />

Kolmapäev (paaritu), 14.00–15.30<br />

Kolmapäev (paaris), 14.00–17.30<br />

Harjutustund :<br />

Kolmapäev (paaritu), 16.00–17.30<br />

NB! a) Võrreldes tunniplaaniga on paaris- ja paaritud nädalad vahetatud.<br />

b) Esimene harjutustund toimub 17. septembril)<br />

Konsultatsioonid :<br />

Teisipäeviti kell 15.30–17.00 : Akad<strong>ee</strong>mia t<strong>ee</strong> 21, B237<br />

(soovitav <strong>ee</strong>lkokkulepe aadresil jaan@cs.<strong>ioc</strong>.<strong>ee</strong>)


Mängur<strong>ee</strong>glid<br />

Kursuse teor<strong>ee</strong>tiline materjal esitatakse loengutes ja õppematerjalis<br />

Kursus lõpeb eksamiga (2 teooriaküsimust (suuline) ning 3-4 ülesannet<br />

(kirjalik)). (VAJALIKUD ON MÕLEMAD KOMPONENDID!)<br />

Eksamile J.Penjam. pääsemise “Teor<strong>ee</strong>tiline <strong>ee</strong>lduseks on, et informaatika. semestri jooksul I osa” oleks ülesannete<br />

lahendamise <strong>ee</strong>st - kogutud mahalaaditav vähemalt kursuse 60 % kodulehelt maksimaalselt võimalikust punktide<br />

arvust, kusjuures esitamata ei ole üle 3 ülesande<br />

Eksamile pääs kehtib 2009/10 õ/a sügissemestri punase jooneni<br />

Loengutes/emailiga antakse koduseks lahendamiseks harjutusülesanded, mille<br />

lahendused tuleb esitada ülesannete juurde märgitud tähtajaks (tavaliselt 2 päeva enne<br />

vastavat harjutustundi).<br />

Harjutustunnis toimub lahenduste arutelu ning vajadusel täiendavate ülesannete<br />

lahendamine.<br />

Originaalse lahenduse ning silmapaistva vormistuse <strong>ee</strong>st (mõeldud on <strong>ee</strong>lkõige head<br />

esitusstiili, mitte niivõrd “trükkimist kallil printeril”) võib saada lahenduse <strong>ee</strong>st 1-2<br />

lisapunkti.


Vastavalt vajadusele võidakse r<strong>ee</strong>gleid<br />

semestri jooksul muuta.<br />

Muudatused kuulutatakse avalikult välja<br />

loengutes ja kursuse mailinglistis.


Loengute kalenderplaan<br />

1. <strong>K<strong>ee</strong>lte</strong> <strong>formaalne</strong> <strong>esitamine</strong> (17.09).<br />

2. Regulaarsed k<strong>ee</strong>led ja lõplikud automaadid (15.10).<br />

3. Kontekstivabad k<strong>ee</strong>led ja magasinmäluga automaadid.<br />

Atribuutsemantika (05.11).<br />

4. Turingi masinad ja arvutatavus, algoritmiliselt mittelahenduvad<br />

ülesanded (19.11).<br />

5. Rekursiooniteooria (03.12).<br />

6. Ülesannete ja algoritmide k<strong>ee</strong>rukus (18.12).


Eelteadmisi matemaatikast:<br />

A = { a, b, c, K }<br />

{<br />

A A = ( a,a),<br />

( a,b),<br />

( a,c),<br />

K,<br />

( b,a),<br />

( b,b),<br />

( b,c),<br />

K,<br />

( c,a),<br />

( c,b),<br />

( c,c),<br />

K,<br />

K }<br />

Relatsioon hulgal A<br />

Relatsioon : R A A ( a,b)R<br />

Refleksiivne seos:<br />

Sümm<strong>ee</strong>triline seos:<br />

Transitiivne seos:<br />

a<br />

A korral<br />

aRa<br />

a, b A korral aRb bRa<br />

a, b,<br />

c A korral aRb bRc aRc<br />

Ekvivalentsiseos on refleksiivne, sümm<strong>ee</strong>triline ja transitiivne seos.<br />

def<br />

aRb


Eelteadmisi matemaatikast:<br />

A = { a, b, c, K }<br />

A A = ( a,a),<br />

( a,b),<br />

( a,c),<br />

K,<br />

( b,a),<br />

( b,b),<br />

( b,c),<br />

K,<br />

( c,a),<br />

( c,b),<br />

( c,c),<br />

K,<br />

K }<br />

Refleksiivne seos:<br />

Sümm<strong>ee</strong>triline seos:<br />

{<br />

aRa<br />

aRb<br />

bRa<br />

Relatsioon hulgal A<br />

Relatsioon : R A A ( a,b)R<br />

Transitiivne seos: aRb bRc<br />

aRc<br />

Ekvivalentsiseos on refleksiivne, sümm<strong>ee</strong>triline ja transitiivne seos.<br />

def<br />

aRb


Eelteadmisi matemaatikast:<br />

Definitsioon.<br />

Ekvivalentsiseos<br />

Olgu R ekvivalentsiseos hulgal A. Elemendi a A ekvivalentsiklass on temaga<br />

ekvivalentsete elementide (ala)hulk , .<br />

[]<br />

[] a = { x aRx x A}<br />

xa aRx<br />

ja<br />

aRx x <br />

a<br />

[]


Eelteadmisi matemaatikast:<br />

Definitsioon.<br />

Teor<strong>ee</strong>m.<br />

Tõestus.<br />

Ekvivalentsiseos<br />

Olgu R ekvivalentsiseos hulgal A. Elemendi a A ekvivalentsiklass on temaga<br />

ekvivalentsete elementide (ala)hulk , .<br />

[] a = { x aRx x A}<br />

Olgu R ekvivalentsiseos hulgal A.<br />

Siis iga elemendi<br />

aA ja b A korral kehtib kas a = b või a b = .<br />

1.<br />

[] [] [] []


Eelteadmisi matemaatikast:<br />

Definitsioon.<br />

Teor<strong>ee</strong>m.<br />

Tõestus.<br />

Ekvivalentsiseos<br />

Olgu R ekvivalentsiseos hulgal A. Elemendi a A ekvivalentsiklass on temaga<br />

ekvivalentsete elementide (ala)hulk , .<br />

[] a = { x aRx x A}<br />

Olgu R ekvivalentsiseos hulgal A.<br />

Siis iga elemendi<br />

aA ja b A korral kehtib kas a = b või a b = .<br />

1.<br />

[] [] [] []


Eelteadmisi matemaatikast:<br />

Teor<strong>ee</strong>m.<br />

Ekvivalentsiseos<br />

Definitsioon. Olgu R ekvivalentsiseos hulgal A. Elemendi a∈A ekvivalentsiklass on temaga<br />

Tõestus.<br />

1.<br />

ekvivalentsete elementide (alam)hulk [a] = { x | aRx, x∈A }<br />

Olgu R ekvivalentsiseos hulgal A.<br />

Siis iga elemendi<br />

aA ja b A korral kehtib kas a = b või a b = .<br />

ehk<br />

[] [] [] []


Eelteadmisi matemaatikast:<br />

Teor<strong>ee</strong>m.<br />

Tõestus jätkub …<br />

3.<br />

2.<br />

Ekvivalentsiseos (2)<br />

Olgu R ekvivalentsiseos hulgal A.<br />

Siis iga elemendi<br />

aA ja b A korral kehtib kas a = b või a b = .<br />

aRb aRb<br />

[] a [] b [] b []<br />

a<br />

[] a =<br />

[] b<br />

[] [] [] []<br />

ehk<br />

ehk


Eelteadmisi matemaatikast:<br />

Teor<strong>ee</strong>m.<br />

Tõestus jätkub …<br />

5.<br />

4.<br />

Ekvivalentsiseos (3)<br />

Olgu R ekvivalentsiseos hulgal A.<br />

Siis iga elemendi<br />

aA ja b A korral kehtib kas a = b või a b = .<br />

[] [] [] []<br />

m.o.t.t.


Eelteadmisi matemaatikast:<br />

Relatsioonide korrutis:<br />

Relatsioonide astmed:<br />

Relatsioonide sulundid:<br />

Relatsiooni astmed<br />

Q R = { ( a,b)<br />

z A, aQz, zRb }<br />

R 0 = { ( a,a),<br />

( b,b),<br />

( c,c),<br />

K }= E<br />

R<br />

R<br />

R 2 = R R<br />

R m = R m1 R<br />

+<br />

*<br />

=<br />

=<br />

U<br />

i1<br />

U<br />

i0<br />

R<br />

R<br />

i<br />

i


Eelteadmisi matemaatikast:<br />

Matemaatiline induktsioon<br />

Induktsiooni r<strong>ee</strong>gel erijuhul:<br />

A(<br />

0)<br />

…ja üldisemal kujul:<br />

z<br />

( A()<br />

x A(<br />

x + )<br />

xA()<br />

x<br />

x 1<br />

<br />

( y(<br />

y < z (<br />

A()<br />

y A()<br />

z )<br />

xA()<br />

x


Näide matemaatilise induktsiooni kasutamisest<br />

Teor<strong>ee</strong>m. Kui joonestada tasandile n sirget, millest ükski kaks pole parall<strong>ee</strong>lsed,<br />

siis läbivad n<strong>ee</strong>d sirged kõik ühte punkti.<br />

Tõestus. Väide kehtib, kui sirgeid on üks. Samuti kehtib ta kahe sirge puhul, sest <strong>ee</strong>lduse järgi pole<br />

nad parall<strong>ee</strong>lsed. Oletame nüüd, et väide kehtib n-1 sirge korral. Tõestame induktsiooniga, et siis<br />

kehtib väide ka n sirge korral.<br />

Olgu meil n sirget a, b, c, d, .... Jätame sellest hulgast välja sirge c. Saame hulga, mis koosneb n-1<br />

sirgest. Induktsiooni <strong>ee</strong>lduse põhjal läbivad n<strong>ee</strong>d sirged kõik ühte punkti P. Teiste hulgas läbivad<br />

punkti P ka sirged a ja b ning s<strong>ee</strong>tõttu on P sirgete a ja b lõikepunkt.<br />

Paneme nüüd sirge c tagasi ja jätame välja sirge d. Jällegi saame n-1 sirget, millel induktsiooni<br />

<strong>ee</strong>lduse põhjal on ühine punkt Q. Teiste hulgas läbivad punkti Q ka sirged a ja b ning s<strong>ee</strong>tõttu on Q<br />

samuti sirgete a ja b lõikepunkt. Järelikult Q = P. Seda ühist punkti läbivad kõik sirged, kaasa<br />

arvatud sirged c ja d, mida oligi tarvis tõestada.<br />

Milles on viga?


Näide matemaatilise induktsiooni kasutamisest (2)<br />

«Tõestus» kasutab <strong>ee</strong>ldust, et sirgeid on vähemalt 4.<br />

Me kontrollisime ainult juhte n = 1 ja n = 2. Juhul<br />

n = 3 on väide väär ja on väär ka kõigi järgnevate<br />

väärtuste korral.


Rekurrentsete seoste lahendamine<br />

Recurrent – tagasipöörduv - <br />

Näide (faktoriaal):<br />

Fn ( ) = n! = 12Kn Rekurrentne seos faktoriaali arvutamiseks:<br />

F( n) = nF( n 1)<br />

Lahend – analüütiline kuju e. kinnine kuju:<br />

n<br />

n 1 1 139 1 <br />

Fn ( ) = 2n 1 4<br />

e<br />

+ + + + O <br />

12n 228n 5184n<br />

n


Rekurrentsete seoste lahendamise näide (summa)<br />

Näide (summa):<br />

Sn ( ) = 1+ 2+<br />

K + n<br />

Rekurrentne seos summa arvutamiseks:<br />

Lahendus (Gaussi m<strong>ee</strong>tod):<br />

Sn ( ) = Sn ( 1) + 1<br />

Sn ( ) = 1 + 2 + 3 + L + ( n 1) + n<br />

+ Sn ( ) = n + ( n 1) + ( n<br />

2) + L + 2 + 1<br />

2 Sn ( ) = ( n+ 1) + ( n+ 1) + ( n+ 1) + L + ( n+ 1) + ( n+<br />

1)<br />

2 Sn ( ) = nn ( + 1)<br />

nn ( + 1)<br />

Sn ( ) =<br />

2


Rekurrentsete seoste lahendamine astmerea abil<br />

Olgu arvude jada gn<br />

esitatud rekurrentse seose abil<br />

1. Täiendame jada elementidega<br />

g g<br />

1 = 2<br />

= K = 0<br />

n<br />

2. Korrutame rekurrentse võrrandi mõlemaid pooli suurusega z ning<br />

summ<strong>ee</strong>rime üle kõigi n väärtuste. Võrduse vaskaul poolel olevat<br />

summat<br />

nimetame jada gener<strong>ee</strong>rivaks funktsiooniks. Teisendame võrrandi paremat poolt<br />

nii, et sinna tekiks avaldis funktsioonist Gz ( ) .<br />

3. Lahendame võrrandi Gz ( ) suhtes, s.t. avaldame Gz ( ) .<br />

n<br />

z n<br />

4. Arendame astmeritta. Elemendi kordaja on jada üldliikme valem<br />

analüütilisel kujul.<br />

g<br />

Gz<br />

( )


Rekurrentsete seoste lahendamine astmerea abil (2)<br />

Näide (Fibonacci arvud):<br />

1.<br />

g<br />

n<br />

0,<br />

kui n 0;<br />

<br />

= 1, kui n=1;<br />

<br />

gn1+<br />

gn2, kui n><br />

1.<br />

ehk<br />

<br />

2. ( ) [ 1]<br />

Gz = gz = g z + g z + n= z =<br />

n n n n<br />

n n1 n2<br />

n n n n<br />

<br />

= gz + gz + z=<br />

n+ 1 n+<br />

2<br />

n n<br />

n n<br />

<br />

= z g z + z g z + z =<br />

n 2 n<br />

n n<br />

n n<br />

= zG z + z G z + z<br />

2<br />

( ) ( )


Rekurrentsete seoste lahendamine astmerea abil (3)<br />

3.<br />

z<br />

Gz ( ) =<br />

1zz<br />

4. Arendame selle funktsiooni astmeritta …<br />

S<strong>ee</strong>ga<br />

Näiteks<br />

2<br />

n ˆ n<br />

n<br />

1+ 5 ˆ 15 Gz ( ) = z , kus = ja =<br />

5<br />

2 2<br />

Fn F<br />

3<br />

n<br />

ˆ<br />

=<br />

5<br />

n n<br />

3 3<br />

1+ 5 15 <br />

2 <br />

<br />

2 <br />

16 5<br />

=<br />

<br />

= = 2<br />

5 8 5<br />

Järgmine loeng ...


<strong>K<strong>ee</strong>lte</strong>ga seotud mõisteid<br />

K<strong>ee</strong>l on märgisüst<strong>ee</strong>m; kommunikatsiooni või arutluse vahend, mis kasutab<br />

märke ja nende kombin<strong>ee</strong>rimise r<strong>ee</strong>gleid.<br />

K<strong>ee</strong>led jagunevad loomulikeks k<strong>ee</strong>lteks ja tehisk<strong>ee</strong>lteks<br />

K<strong>ee</strong>le aspektid:<br />

– Süntaks (kr.k.- 'ühendus, liit, kokkupanek') ehk lauseõpetus kirjeldab<br />

lause ehitust ja käsitleb sõnade ühendamist fraasideks ja fraaside ühendamist<br />

lauseks.<br />

– Semantika (kr.k.- μ ‘~ märgi mõte') on ka k<strong>ee</strong>leüksuse (morf<strong>ee</strong>mi, sõna,<br />

fraasi, lause) tähendus või tähendused.<br />

– Pragmaatika e kontekst, mis seob süntaksi ja semantikat.


Lause<br />

k<strong>ee</strong>les L 1<br />

Transl<strong>ee</strong>rimisprotsess<br />

Tr : L L<br />

Lause<br />

süntaktiline<br />

struktuur<br />

k<strong>ee</strong>les L 1<br />

1<br />

2<br />

Lause<br />

süntaktiline<br />

struktuur<br />

k<strong>ee</strong>les L 2<br />

- süntaksanalüüs<br />

- semantiline analüüs ja töötlus<br />

- teksti gener<strong>ee</strong>rimine<br />

Lause<br />

k<strong>ee</strong>les L 2


Päkapiku<br />

Lause süntaktiline struktuur<br />

N<br />

M<br />

liiga<br />

NF<br />

OMF<br />

OM<br />

N<br />

napp<br />

S<br />

kasv<br />

T<br />

tingib<br />

N<br />

tema<br />

TF<br />

NF<br />

NF<br />

N<br />

N<br />

sobimatuse<br />

jõuluvanaks


Kompil<strong>ee</strong>rimise põhietapid Comp : L1 L2<br />

Sisendkood (lähteteksti märgijada)<br />

Leks<strong>ee</strong>mide jada<br />

Tuletuspuu<br />

Abstraktne süntaksipuu<br />

Optim<strong>ee</strong>ritud<br />

abstraktne süntaksipuu<br />

Assembleri- või masinkood<br />

Väljundkood<br />

Skanner (leksiline analüüs)<br />

Parser (süntaksanalüüs)<br />

Vahekoodi gener<strong>ee</strong>rimine<br />

Vahekoodi optim<strong>ee</strong>rimine<br />

Objektkoodi gener<strong>ee</strong>rimine<br />

Objektoodi optim<strong>ee</strong>rimine


Programmi struktuur puuna<br />

if a = b then x := 2*(a - b) else x := | a - b | * | a - b | ;


Programmi puu interpret<strong>ee</strong>rimine


K<strong>ee</strong>le (pool)<strong>formaalne</strong> <strong>esitamine</strong><br />

Süntaks. Wirthi sk<strong>ee</strong>mid:<br />

Tsükkel:<br />

tingimus:<br />

lause:<br />

üksliige:<br />

. . . . . .<br />

. . . . . .<br />

WHILE tingimus DO<br />

lause<br />

üksliige<br />

= < > = IN<br />

üksliige


K<strong>ee</strong>le (pool)<strong>formaalne</strong> <strong>esitamine</strong> (2)<br />

Süntaks. Backus-Nauri valemid:<br />

Tsükkel ::= ‘WHILE’ tingimus ‘DO’ lause<br />

tingimus ::= üksliige | üksliige tehe üksliige<br />

tehe ::= ‘=‘ | ‘’ | ‘’ | ‘=’ | ’IN’<br />

üksliige ::= . . .<br />

lause ::= . . .<br />

. . . . . . . . . . . . .


Semantika.<br />

K<strong>ee</strong>le (pool)<strong>formaalne</strong> <strong>esitamine</strong> (3)<br />

-<br />

WHILE b DO s ;<br />

+<br />

b s


Transl<strong>ee</strong>rimisprotsess praktikas


<strong>K<strong>ee</strong>lte</strong> <strong>formaalne</strong> defin<strong>ee</strong>rimine


Tähestik ja stringid<br />

<br />

*<br />

<br />

- tähestik<br />

- stringide hulk tähestikus <br />

Definitsioon. String tähestikus on tähtede järjend, mis rahuldab tingimusi:<br />

•<br />

•<br />

*<br />

a *<br />

a *<br />

Definitsioon. Konkatenatsioon on tehe<br />

def<br />

x y <br />

xy<br />

Konkatenatsioon on assotsiatiivne ühikelemendiga tehe stringide hulgal *:<br />

*<br />

x<br />

, y,<br />

z korral ( xy)<br />

z = x(<br />

yz)<br />

x * korral x = x = x<br />

Stringide hulk * koos konkatenatsiooni operaatoriga moodustab Thue poolrühma


K<strong>ee</strong>l kui matemaatiline objekt<br />

*<br />

Definitsioon. K<strong>ee</strong>l on alamhulk L .<br />

Näited.<br />

n n { }<br />

L1= 01 n0<br />

L2 = x R x x { a,b}<br />

*<br />

{ } L2 L1 = { , 01, 0011, 000111, K}<br />

( I )<br />

= { , aa, bb, aaaa, abba, baab, bbbb,K}


konkatenatsioon:<br />

Tehted k<strong>ee</strong>ltega<br />

astendamine:<br />

iteratsioon:<br />

L1L2 = { xy x L1, y L2} *<br />

L<br />

L<br />

L 0 = { }<br />

L 2 = LL<br />

L m = L m1 L (m > 0)<br />

+<br />

=<br />

=<br />

L<br />

0<br />

U<br />

i > 0<br />

L<br />

i<br />

L<br />

1<br />

L<br />

2<br />

L<br />

3<br />

K<br />

=<br />

U<br />

i 0<br />

i<br />

L


Teisendussüst<strong>ee</strong>mid<br />

( II )


Avaldise x*(x+y) tuletamine:<br />

)<br />

(<br />

*<br />

)<br />

(<br />

*<br />

)<br />

(<br />

*<br />

)<br />

(<br />

*<br />

)<br />

(<br />

*<br />

)<br />

(<br />

*<br />

)<br />

(<br />

*<br />

)<br />

(<br />

*<br />

*<br />

*<br />

y<br />

x<br />

x<br />

y<br />

x<br />

F<br />

y<br />

F<br />

F<br />

y<br />

T<br />

F<br />

F<br />

T<br />

F<br />

T<br />

T<br />

F<br />

S<br />

T<br />

F<br />

S<br />

F<br />

F<br />

F<br />

T<br />

F<br />

T<br />

S<br />

+<br />

<br />

+<br />

<br />

+<br />

<br />

+<br />

<br />

+<br />

<br />

<br />

+<br />

<br />

+<br />

<br />

<br />

<br />

<br />

<br />

Terminaalid ja mitteterminaalid


x<br />

Avaldise x*(x+y) tuletuspuu<br />

S<br />

T<br />

F T<br />

*<br />

x<br />

F<br />

F<br />

( S )<br />

T + S<br />

T<br />

F<br />

y


Definitsioon.<br />

Fraasistruktuuri grammatika<br />

( III )<br />

Grammatikaks nimetatakse nelikut G = (,N,P,S 0 ), kus<br />

- on terminaalide tähestik,<br />

- N on mitteterminaalide tähestik ( N = ),<br />

- P V * NV * V * on produktsioonide hulk ( V = N),<br />

- S0 N on grammatika lähtesümbol.


Kasutatavaid tähistusi


Definitsioon.<br />

Definitsioon.<br />

* <br />

Definitsioon.<br />

Grammatikaga gener<strong>ee</strong>ritav k<strong>ee</strong>l<br />

= <br />

= <br />

P<br />

def<br />

0 ,1 ,K, k( = 0 0 1 K k k =)<br />

L(G) = x S0 * x, x *<br />

Grammatikaga G gener<strong>ee</strong>ritav k<strong>ee</strong>l on stringide hulk<br />

{ }


Grammatikaga gener<strong>ee</strong>ritav k<strong>ee</strong>l (2)<br />

Näide<br />

Tuletus:<br />

S<br />

<br />

<br />

<br />

<br />

aSBC<br />

<br />

aaabCBCBC<br />

aaabbCBCC<br />

aaabbbcCC<br />

aaSBCBC<br />

<br />

<br />

<br />

<br />

aaabBCCBC<br />

aaabbBCCC<br />

aaabbbccC<br />

aaaBCBCBC<br />

<br />

L(G) = a n b n c n { n > 0 }<br />

<br />

<br />

<br />

aaabbCCBC<br />

aaabbbCCC<br />

aaabbbccc


Chomsky grammatikate hierarhia<br />

Omadus.


Paremlineaarsete grammatikate omadus


Paremlineaarsete grammatikate omadus<br />

Produktsioonid kujul A abcdB on asendatav<br />

produktsioonidega<br />

A <br />

A<br />

A<br />

A<br />

1<br />

2<br />

3<br />

aA<br />

bA<br />

cA<br />

dB<br />

kus A 1 , A 2 , … on uued mitteterminaalid.<br />

<br />

1<br />

2<br />

3


Millise k<strong>ee</strong>le gener<strong>ee</strong>rib grammatika?<br />

(Kuidas lahendada ülesannet)<br />

Antud on grammatika G:<br />

Näitame, et<br />

L S (G)={x∈ {0,1} + | z(x)=o(x)}<br />

L A (G)={x∈ {0,1} + | z(x)-1=o(x)}, kus o(x) on ühtede arve sõnas x<br />

L B (G)={x∈ {0,1} + | z(x)=o(x)-1} ja z(x) on nullide arve sõnas x<br />

Induktsiooni baas: |x|=1 või |x|=2.<br />

S 0B 01<br />

<br />

S 1A10 A 0<br />

B 1<br />

z( 01) = 1, o(<br />

01) = 1<br />

z( 0) = 1, o(<br />

0) = 0<br />

z() 1 = 0, o()<br />

1 = 1


Millise k<strong>ee</strong>le gener<strong>ee</strong>rib grammatika? (2)<br />

(Kuidas lahendada ülesannet)<br />

Induktsiooni samm:<br />

S B v x<br />

*<br />

0 0<br />

*<br />

S 1A 1u<br />

x<br />

*<br />

A0S 0t<br />

x<br />

*<br />

A1AA 1uu<br />

x<br />

*<br />

B 1S 1t<br />

x<br />

*<br />

B 0BB 0vv<br />

x<br />

Eeldame, et iga |x|

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!