Sissejuhatus. Keelte formaalne esitamine - Cs.ioc.ee
Sissejuhatus. Keelte formaalne esitamine - Cs.ioc.ee
Sissejuhatus. Keelte formaalne esitamine - Cs.ioc.ee
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|