Ülessanne Kas antud hulkade omadused on rekursiivselt invariantsed: 1. Sisaldab vähemalt 3 elementi 2. On tühi 3. On lõputu 4. On rekursiivselt loenduv (RL) Millised neljast omadusest: on rekursiivne on rekursiivselt loenduv omab rekursiivst täiendit omab rekursiivselt loenduvat täiendit on antud hulkade põhjal 1. A = {x | x on paarisarv} 2. B = {x | x on väiksem kui 100} 3. C = {x | x on algarv} 4. D = {x | Wx on tühi} 5. E = {x | Wx sisaldab vähemalt 3 elementi} Lahendus Alusteooria Hulk on rekursiivselt invariantne, kui iga bijektiivse ja rekursiivse junktsiooni f korral, kui hulgal A on omadus P, siis ka hulgal
Tallinn 2014 Sissejuhatus Käesolevas referaadis keskendume operaatori abil saadud funktsioonide (*)-arvutatavusele, need funktsioonid on osaliselt rekursiivsed. Selleks, et uurida selliseid protsesse toome sisse vajalikud mõisted ja definitsioonid ning tõestame lemma, mis tõestab, et (*)-arvutatavatest funktsioonidest operaatori abil saadud funktsioonid on samuti (*)-arvutatavad. Anname ka sellise teoreemi tõestamise idee, mis ütleb, et iga osaliselt rekursiivne funktsioon on Turingi mõttes arvutatav ehk antud juhul (*)-arvutatav. 1. Osaliselt rekursiivsed funktsioonid. Operaatori µ abil saadud funktsioonide (*)-arvutatavus. Enne põhiosa juurde asumist toome sisse mõned vajalikud definitsioonid. Definitsioon 1.1. ([1], 9) Algfunktsioonideks nimetatakse järgmisi naturaalarvulisi funktsioone: Funktsioone nimetatakse valikufunktsioonideks. Definitsioon 1.2. ([1], 10) Funktsioon on avaldatud funktsioonide ja kaudu asendusskeemi abil, kui
algoritmi suuruse n! leidmiseks: IF n = 0 THEN Fakt := 1 IF n = 0 THEN Fakt := 1 a := n - 1 vôi Fakt := n * Fakt(n - 1) b := Fakt(a) Fakt := n * b Neil algoritmidel on môte, kui loeme Fakt'i esinemist omistuse vasakul poolel täitmise lôpetamiseks (ei pruugi tähendada algoritmi täielikku lôppu) ja paremal poolel (algo- ritmis alla kriipsutatud) rekursiivse täitmise uuestialustamiseks. Rekursiivne alamprogramm on rekursiivse algoritmi esitus konkreetses keeles, meil Turbo Pascalis. Faktoriaalfunktsiooni vôime kirja panna väga lihtsana: FUNCTION Fakt(N: Byte): Longint; BEGIN IF N = 0 THEN BEGIN Fakt := 1; Exit; END; Fakt := N * Fakt(N - 1); END; {Fakt} Järgneva analüüsi huvides on siiski otstarbekas kirjutada see funktsioon vähem kompaktsena. Näide. Esitame n
Tavaliselt on sellise parameetrina kasutusel põhiprogrammi muutuja, kuigi võib kasutada ka kõiki muid avaldisi, millel on vasakväärtus olemas. Mõlemad on küll parameetrid, aga muutujaparameetrile alamprogrammis omistatud uus väärtus muudab ka põhiprogrammi muutuja väärtuse, mida väärtusparameeter ei tee ja muutujaparameetrite mehhanismi võimalik kasutada ka väljundparameetrite realiseerimiseks. 5. rekursiivne funktsioon Rekursiivne funktsioon on ennastkopeeriv funktsioon. Funktsiooni nimetatakse rekursiivseks, kui selles kasutatakse ühe (või ka mitme) sammuna sama funktsiooni ennast, et lahendada funktsioonile antud probleemi kergem variant. Rekursiivse funktsiooni puhul on alati defineeritud baasjuhtum, mille korral rekursiooni edasikaevumine lihtsama variandi poole peatub. Kui baasjuhtumit ei defineerita, siis on rekursioon lõputu ja 99% juhtudest toob kaasa programmi kokkujooksmise.
Esimene on tavaliselt lähteandmete viimiseks alamprogrammi. Kui nende väärtustega alamprogrammis midagi juhtub, siis peaprogrammi tagasi tulles need muudatused kaasa ei tule. Teine on vastuste saamiseks alamprogrammist (kuid ka nende andmete viimiseks alamprogrammi, mis seal oma väärtust muutma peavad). Muudatused nende väärtustes jõuavad ka peaprogrammi. Mõlemad on andmete viimiseks alamprogrammi, aga väärtusparameetri puhul tagasi tulles peaprogrammi muudatused kaasa ei tule. rekursiivne funktsioon Rekursiivsed võivad olla ka iseseisvad alamprogrammid, milles toimub iseenda poole pöördumine e. iseenda väljakutsumine. Täpsemalt öeldes nimetatakse rekursiooniks niisugust algoritmi kirjeldamise viisi, kui see kirjeldatakse iseenda poolt kirjeldatud tegevuste järgnevustega, kuid ainult teistel parameetrite väärtustel.
Keelepädevust ei saa otseselt vaadelda, saab teha järeldusi keelekasutuse põhjal, saab üksnes arutleda, kas see on kõigil ühesugune, kus ja miks see olemas on. Keelekasutus ehk e-keel on keelepädevuse konkreetne väljendus, kas konkreetne keel või kindel ütlus. 3. Mis on kreatiivsus; aktsepteeritavus; grammatilisus? Generatiivsel grammatikal on kaks eeldust keele kohta. Inimkeel erineb kõikide loomade suhtlussüsteemist, sest ta on - rekursiivne võime lisada lausesse suvalisel hulgal täiendeid, panna lauseid üksteise sisse, nt panna alistuma, või loendada; - kreatiivne produktiivsus, erinevate ja uute üksuste kombineerimine. Grammatilisus vastandub vastuvõetavuse ehk aktsepteeritavuse mõõtmele. Grammatilisus viitab keelepädevusele: kui lause on oma olemuselt grammatiline, siis ta vastab reeglitele. The toothbrush is pregnant on grammatiline lause, sest on grammatiliste
Puu on rekursiivne, seega ka enamik algoritme, mis temaga rakendada, on rekursiivsed. Kuid iga rekursiivset algoritmi saab esitada ka iteratiiselt, nagu enne juttugi oli. Kui juur välja jätta, siis kõigil teistel tipul on olemas ematipp ja ematippudel(parent) on omakorda tütartipud(child). Sama emaga tipud on õed(siblings). Kui meil on mitu puud, võime rääkida metsast(forest). Luline on rääkida veel puu kõrgusest. Puu jaguneb nivoodeks. Nivoode hulk on puu kõrgus. Mõnes õpikus võib näha ka teistsugust definitsiooni puu kõrguse kohta. Järjestatud puu, järjestamata puu. Kui on oluline, mis järjekorras mööda nivood vasakult paremale liikudes õed mis järjekorras paiknevad, siis järjestatud puu. Ülespoole järjestatud puud veel jne. Binary search tree(kahendotsingu puu). Ehitamisel - Kui järgmine kirje on väiksem, siis vasakule, kui suurem, siis paremale. Kui midagi ees pole, siis teeme uue kaare ja uue tipu. Jne. Kui on, siis mine mööda s...
OSadmini kohta küsimusi ei tule. 10. Nädal Eksamiks: mis on http, https, html, css, javascript, ajax, json, xml, kuidas üldjoontes töötab klassikaline veebirakendus ja kuidas single-page app (koodinäiteid / nende detaile ei küsita). Robootika kohta ainus küsimusetüüp: kas mingit sorti ülesannet praegused robotid suudavad täita või ei. 11. Nädal Eksamiks: rekursiooni äratundmine, baasjuht ja rekursiivne juht, rekursiooni ekvivalentsus tsükliga, arusaamine funktsionaalse keele näitejuppidest loengus: mida mingi näitekood teeb / mis on rehkendamise tulemus. Mis on lambda-arvutus. Proloogi näide tuleb ära tunda (et on Prolog). Mis on andmebaasid ja mis on sql. Detailseid sql- küsimusi ei tule. Sql näidet tuleks ära tunda (et on sql keeles). 12. Nädal Eksam: lahenduvus teoreetilises ja tavamõttes, mis on lahenduvad ülesanded. Positiivsete täisarvude,
Funktsioonid, mis on algfunktsioonidest saadavad superpositsiooni-,rekursiooni ja minimeerimisoperaatori abil. Lihtrekursiivsed f.-nid on osaliselt rekursiivsed. Kõikjal määratud osaliselt rekursiivseid f.-ne nimetatakse üldrekursiivseteks f.- nideks. Operaatorterm: · funktsioonisümbol · avaldis kujul E(t1,t2,..tn), kus E on n-kohaline operaator ja ti on operaatortermid · muid op-terme pole Kui g on n-kohaline arvutatav f.-n, siis f = y[g] on n-1-kohaline osaliselt rekursiivne f.-n. Tõestus: eksisteerib registermasina programm Seega on osaliselt rekursiivsed f.-nid arvutatavad. 26. Turingi mõttes arvutatavate funktsioonide rekursiivsus. Iga registermasina programm realiseerib rekursiivse f.-ni. x programmi kood P y registrite sisu P täitmisel Kuna instruktsioonid saame Cantori numbritega kodeerida .. proge kood aga on instruktsioonide jada (lõplik korteezh naturaalarvudest), leidub ka sellele Cantori number. Iga registermasinal realiseeritav f
otsimiseks Vali üks: Boyer-Moore Which algorithm uses bisection of sets of symbols to calculate the codes of symbols Milline algoritm kasutab sümbolihulkade poolitamist sümbolite koodide arvutamiseks Shannon-Fano Which algorithm builds a code tree to calculate the codes of symbols Milline algoritm kasutab koodipuu moodustamist sümbolite koodide arvutamiseks Huffman If recursive call is the last command in an algorithm it is called Kui rekursiivne pöördumine on algoritmi viimane käsk, siis on see tail recursion sabarekursioon Returning to the choice made earlier and choosing an unused path in exhaustive search algorithms is known as Tagasipöördumist varem kõrvale jäetud lahendusvariandi juurde ammendava otsingu ülesannetes nim. inglise keeles: backtracking Problem solution method that uses pre-calculated answers to sub-tasks is known as Alamülesannete vastuste meeldejätmisel põhinevat iteratiivset lahendusmeetodit nim
if arv != arvamus: if kordi == lubatud: print("Rohkem ei saa arvata!") else: arvamus = int(input("Arva, millist tuhandest väiksemat arvu ma mõtlen: ")) kontrolliArvamus(arv, arvamus, lubatud, kordi+1) else: print("Õige!") arv = randint(1,19) arvamus = int(input("Arva, millist 20 väiksemat arvu ma mõtlen: ")) lubatud = 5 kontrolliArvamus(arv, arvamus, lubatud, 1) 5. Vokaalide eemaldamine Kirjuta rekursiivne funktsioon konsonandid , mis võtab argumendiks sõne ja tagastab sellest sõnest uue variandi, kus kõik vokaalid on eemaldatud, nt konsonandid("kapitalist") peaks tagastama sõne "kptlst" . Ülesanne tuleks lahendada ilma tsükleid kasutamata. def konsonandid(s, count=0): vokaalid = ["a", "ä", "o", "u", "i", "e", "ö", "ü", "õ", "A", "Ä", "O", "U", "I", "E", "Ö", "Ü", "Õ"] if len(s) == 0: #ET TÜHJA SÕNE PUHUL TÖÖTAKS!!! return "" if len(s)-1 == count:
Kasutada tuleb mittestandardset jaotust (Andrews) H0: ei esine struktuurseid muutusi H1: esineb struktuurseid muutusi Kui p>a, siis võtame vastu H0: ei esine struktuurseid muutusi. Kui pRekursiivne hindamine ja CUSUM test: nullhüpotees ja sisukas hüpotees. ● Algul hinnatakse mudelit väikese alamvalimi põhjal. ○ Alustatakse valimist mahuga r +1, kus r on parameetrite arv mudelis. ● Hinnatud mudeli põhjal leitakse järgmise vaatluse silutud väärtus. ● Kuna järgmise vaatluse tegelik väärtus on teada, leitakse jääk. ● Nüüd võetakse valimisse ka järgmine vaatlus ning leitakse parameetrite hinnangud 1 võrra suurema valimi põhjal.
Lause esitab teadmist, mis võib olla tõene või väär. Lauseid tähistame lauseloogikas lausemuutujatega: • Term tähistab objekti, mis sisaldub väites • Term omab tõeväärtusest erinevat väärtust: täisarv, nimi, kaardimast jne Termide defineerimine: Defineerimine üldise tüübi ja kitsendava(te) omadus(t)e kaudu: ◦ Definitsioonis ei tohi kasutada defineeritavat termi (ringdefinitsioon e. tautoloogia) Rekursiivne definitsioon Uus termi eksemplar defineeritakse varem defineeritud eksemplaride kaudu, kuid teatud regulaarse modifikatsiooniga. Definitsioonis tuleb vältida topelt eitust ja võimaluse korral ka eitust. Ostensiivne definitsioon (osutamise, loetlemise teel). Defineerimine analoogia kaudu, millele on lisatud eristav tingimus. Tüüplaused: Kategooriline lause Kuulutab fakti kehtivaks või mittekehtivaks. Esineb traditsiooniliselt subjekt-predikaat
Positsiooni skäneerimine e iteratiivne optimeerimine. Eelduseks on optimeeritava juhtühendi olemasolu, kusjuures juhtühend jagatakse alaühikutest, varieeritakse üht alaühikut ning leitakse selle optimum. Esimese alaühiku fikseerimise järel optimiseeritakse teist alaühikut. Eeldusteks on: o igal juhtühendi alaühikul on sõltumatu ja aditiivne roll o puudub negatiivne koosmõju o Rekursiivne dekonvolutsioon o üks kogumitest omab aktiivsust, tuleb leida see ühend. Rekursiivne dekonvolutsioon Sünteesitakse individuaalselt kõik kogumis olevad ühendid (9) Vaja säilitada kõik sünteesietappide vahekogumid, mida kasutatakse aktiivse ühendi leidmisel. o Kõigil dipeptiididel lastakse eraldi ühe AH-ga reageerida (terminaalne), o saadakse teada kogumid, mille kaks viimast AH-d on teada,
produktiivsed. Mida kõrgema järgi allsüsteemiga on tegemist, seda avatum ja produktiivsem see allsüsteem on. Võimalik on väljendada ükskõik mis tähendusi. Semantika on seetõttu avatum kui fonoloogia, morfoloogia ja süntaks. Süntaks on produktiivsem kui morfoloogia, mis on omakorda produktiivsem fonoloogiast. Keelte lausete arv on lõputu. Selle põhjustab muuhulgas mõnede süntaktiliste struktuuriüksuste rekursiivne iseloom. Reeglit saab rakendada korduvalt. 4. Keeleuniversaalid. Universaalne grammatika Põhihüpoteesiks on see, et keelte tõelistest lausetest sügavamal, abstraktsemal või semantilisemal analüüsi tasemel on olemas kõigile keeltele ühiseid struktuure. Teiseks lähenemisviisiks (keelte ühiste omaduste ja struktuuride uurimiseks) on empiiriline tüpoloogiline võrdlus. Analüüsitakse teatud nähtuste esinemist sadades keeltes, kuid see võtab
iseloomulikest põhiüksustest ja nende omavahelistest suhetest. Neid on 5. SEMANTIKA-tähendutse uurimine SÜNTAKS-lauseehituse allsüsteem LEKSIKON-sõnavara MORFOLOOGIA-sõnade sisestruktuur FONOLOOGIA-häälikulise struktuuri uurimine Avatud süsteemid Ainult loomulikud keeled on avatud süsteemid. Avatud süsteemi iseloomustab loovus. Mida kõrgema järgu allsüsteemi elemendiga on tegemist, seda avatum ja produktiivsem see allsüsteem on. Lausete rekursiivne iseloom- reeglit saab rakendada korduvalt, nt rinnastus (Agu ja Arno ja Mati ja ... läksid kõrtsi.) 4. Keeleuniversaalid. Püüdlused luua universaalset grammatikat alates 17. saj. Generatiivsed oletused puudutavad keelevõime süntaktiliste struktuuride sünnipärasust. Teistsugune lähenemine lingvistiliste universaalide ehk keelte võimalike ühiste omaduste ja struktuuride uurimisele on empiiriline keeletüpoloogiline võrdlus. Keeletüpoloogilise lähenemisviisi rajaja on Joseph H
Grammatika morfoloogiaosa teatud tuletus- ja ühendamisvahendid on produktiivsed. Mida kõrgema järgu allsüsteemiga on tegemist, seda avatum ja produktiivsem see allsüsteem on. On võimalik väljendada (peaaegu) mis tahes tähendusi. Semantika on seetõttu avatum kui fonoloogia, morfoloogia ja süntaks. Kõiki lausungeid ja lauseid võib käsitleda kui kompleksseid, loovalt produtseeritud sümboleid. Lausete lõputu arvu põhjustab muuhulgas mõnede süntaktiliste struktuuriüksuste rekursiivne iseloom. Reeglit saab rakendada korduvalt. Kategoriseerimise prototüüpsus ja kategooriate vaheliste piiride hägususe lubatuvus suurendavad keele tähendussüsteemi avatust. Need annavad võimaluse rakendada sõnade tähendusi üha uute juhtude kirjeldamiseks, nt arvutisõnavara tarbeks kasutusse võetud hiir,padi. Oluline semantiline mehhanism on metafoorsus, mis suurendab loomuliku keele väljendusjõudu. 4) Keeleuniversaalid
· Valitakse see murdepunkt, mille korral F- statistiku väärtus on kõige suurem. Teststatistik on maksimaalne F-statistiku väärtus. Test annab õiged tulemused siis, kui murdepunkt on piisavalt kaugel vaadeldava perioodi algusest või lõpust. · Tavaliselt võetakse mõlemalt poolt 15%, st F-statistik leitakse 70% potentsiaalsete murdepunktide jaoks. · Kui võrreldakse korraga mitmeid F-statistiku väärtusi, ei saa kriitilise väärtuse leidmiseks kasutada F-jaotust. 67. Rekursiivne hindamine, CUSUM ja CUSUMSQ testid, nullhüpotees ja sisukas hüpotees. 68. Mudeli spetsifikatsioonivigade liigitus. 69. Mis juhtub, kui mudelist on oluline tunnus välja jäänud? Kui jätame välja olulise tunnuse hinnangud on nihkega hinnangud ei ole mõjusad hüpoteeside testimine annab valesid tulemusi prognoosid tulevad valed. 70. Mis juhtub, kui mudelis on sees mitteoluline tunnus?
77) QLR test struktuursete muutuste testimisel: testi idee, nullhüpotees ja sisukas hüpotees Leitakse Chow testi F-statistiku väärtus järjest erinevate murdepunktide T jaoks. Valitakse murdepunkt, mille korral F-statistiku väärtus suurim. Teststatistik on max F-statistiku väärtus QLR = max F ( T ). Leitakse 70% potentsiaalsete murdepunktide jaoks H0 Struktuurseid muutusi ei ole p > a H1 Struktuursed muutused esinevad 78) Rekursiivne hindamine ja CUSUM test: nullhüpotees ja sisukas hüpotees H0 Struktuurseid muutusi ei ole p > a H1 Struktuursed muutused esinevad, parameetrid ei ole konstantsed p < a 79) Mudeli spetsifikatsioonivigade liigitus Mudelis on mõni ebaoluline tunnus Mõni oluline tunnus on välja jäänud Mudeli funktsionaalne kuju on vale 80) Mis juhtub, kui mudelist on oluline tunnus välja jäänud? Nihkega on ainult nende tunnuste kordajad, mis on korrelatsioonis välja jäänud
Tcp (transfer control protocol) – põhiprotokoll, mis kasutab IP-d. Toimub kontroll, kas info jõudis pärale -> kindlam, aeglane Udp (user datagram protocol) – põhiprotokoll, mis kasutab IP-d. Ei kontrollita, kas info jõudis pärale -> kiirem, osad võivad kaduda Kapseldamine (mis mille sees) - saadetud informatsioon on kihtides (siht, transport, data) 10. nädal • Eksamiks: rekursiooni äratundmine, baasjuht ja rekursiivne juht, rekursiooni ekvivalentsus tsükliga, arusaamine funktsionaalse keele näitejuppidest loengus: mida mingi näitekood teeb / mis on rehkendamise tulemus. Mis on lambda-arvutus. Prologi näide tuleb ära tunda (et on Prolog). Arendusprojektide kohta küsimusi ei tule. Puhtas funktsionaalses keeles – Haskell, Hope, Miranda, FP – ei ole programmeerijal peale funktsioonide definieerimise ja sisseehitatud baasfunktsioonide (artimeetika,
Igale suhtele antakse nimi, mis kirjeldab tema funktsiooni. Suhte otstesse on soovitav panna rolli nimed. Roll: Olemi tüübi roll (tähendus), suhte tüübis, milles ta osaleb. Suhte eksemplar: esitab seost olemi eksemplaride vahel. Suhte tüübi aste: Suhtes osalevate olemi tüüpide arv. - binaarne suhe - suhtes osaleb kaks olemi tüüpi. - kolmene suhe - suhtes osaleb kolm olemi tüüpi. - neljane suhe - suhtes osaleb neli olemi tüüpi Rekursiivne suhe: Rekursiivne suhe on selline suhte tüüp, kus sama olemi tüüp osaleb suhtes mitu korda erinevates rollides. Atribuut: Atribuut on olemi tüübi või suhte tüübi omadus. Atribuudi domeen: Atribuudi domeen on ühele või mitmele atribuudile lubatud väärtuste hulk. Lihtatribuut:Atribuut, mis koosneb ühest komponendist, mida ei saa jagada väiksemateks komponentideks Liitatribuut: Atribuut, mis koosneb mitmest komponendist ja mida saab seega jagada väiksemateks komponentideks
Rakendusprogrammides (HTTP,SMTP,FTP,DNS,NFS) "Interneti"põhiosa, reeglina opsüsteemi sisse ehitatud (TCP,UDP,IP), Kohtvõrk,moodemvms, tüüpiliselt opsüsteemi laetavate kaardidraiveritega (Ethernet, SLIP) HTTP on omaette protokoll, mida kasutatakse veebilehtede, piltide, tekstifailide, zip failide jne jne saatmiseks veebiserveri ja brauseri vahel HTTP ei ole ehitatud "biti või baidi" tasemel, vaid teksti ridade kaupa: päis, tühi rida, tekstiread Rekursiivne millegi kordamine viitega iseendale või enesesarnaselt foo calls foo: * int foo(int x) { if (x>0) return 1+foo(x-1) else return 1} Salesman travel - 6 linna puhul 5*4*3*2*1=120 erinevat teed(N-1)! Reaalarvude hulk on suurem (võimsam) kui positiivsete täisarvude hulk. Reaalarvude hulk on suurem (võimsam) kui täisarvude hulk. N: 0 1 -1 2 -2 3 -3 4 -4 ... Z: 0 1 2 3 4 5 6 7 8 ... Tegelikult on murdarvud vs pos täisarvud üksküheses vastavuses Cantori teoreem ütleb
_ Internet layer võrgukiht võimaldab andmeedastust masinate parandada päringute kiirust korduvate päringute puhul. Juurserverid sisaldavad infot kõigi tippdomeenide kohta (com, org, edu). Authorative nimeserver on see, mille andmebaasis on info domeeninime ja sellele vastava IP aadressi kohta. Päringud: rekursiivne- Kui IP-aadress on arvutite ja muude arvutivõrgus toimivate seadmete omavaheliseks suhtlemiseks arvutivõrgus vajalik unikaalne aadress, vahel, mis asuvad erinevates alamvõrkudes. Antud kihi teenuseid kasutavad lisaks lõppjaamadele ka marsruuterid. Toimub sarnaselt maja- või telefoninumbrile
Lokaalne (puhverdav) nimeserver - puhverdab nimeinfot, et parandada päringute kiirust korduvate päringute puhul. Juurserverid - sisaldavad infot kõigi tippdomeenide (com, edu, ee jne.) kohta. 8 Autoritatiivne (authoritative) nimeserver on see server, mille andmebaasis on info domeeninime ja sellele vastava IP-aadressi kohta. Teised nimeserverid ainult puhverdavad antud andmeid (non-authoritative). Autoritatiivsest serverist saab alati vastuse nimepäringule. Rekursiivne päring - kui nimeserver ei oma infot antud domeeni kohta, küsib ta järgmise serveri käest edasi jne., kuni vastus on käes. (See koormab serverit, võtab aega). Vastus tuleb alati sama teed mööda tagasi. Iteratiivne (mitterekursiivne) päring - kui nimeserver ei tea antud domeeni IP- aadressi, siis saadetakse kliendile selle nimeserveri IP, kust edasi küsida. Päringu saabumisel kontrollitakse alati kohaliku nimeserveri puhvrit. Kui seal
Kuidas klassidiagrammi objekte saab omavahel kombineerida konkreetsel ajahetkel. Objekt näidatakse klassina, mille nimi on allajoonitud, kusjuures objekti nime võib näidata või mitte näidata klassinime ees: objektinimi : klassinimi Kui objektinime ei näidata, siis allajoonitud klassinimele eelneb koolon: : klassinimi mis tähendab, et tegeldakse antud klassist nimetu objektiga. Kolmas võimalus: näidatakse ainult objektinime (allajoonitud), ilma klassinimeta: objektinimi Rekursiivne assotsiatsioon Seos (assotsiatsioon) võib ühendada klassi iseendaga, s.t. ühendatud objektid kuuluvad samasse klassi. Klassi seost iseendaga nimetakse rekursiivseks assotsiatsiooniks, mida kasutatakse keerukates mudelites, nagu tootestruktuurid. Rollid assotsiatsioonis Assotsiatsioon võib omada rolle seoses iga assotsiatsioonis osaleva klassiga. Rollinimi on string, mis paikneb seose otsas selle klassi lähedal, millele ta rakendub. Rollinimi näitab, missugust rolli mängib antud klass
kontrollida. • Mis võib põhjustada süsteemi ümber disainimise. Panna enda jaoks kõik riskid, mille puhul peab terve süsteemi ümber tegema. Tarkvaraarhitektuuri disainimeks ei ole universaalset, aksepteeritud protsessi. Iga juhtum on erinev, iga süsteem ja klient on erinevad. Iga protsess tuleb valida või kohandata vastavalt parasjagu valitsevatele olukordadele. Mõned protsessid: • ADD – Attribute Driven Design - rekursiivne protsess. Töötati välja Carnegie Mellon Ülikooli pool. Koosneb kahest osast. Neid kahte osasid rekursiivselt kogu aeg ketratakse. o 1. osa – taktika. § Kontrolli, et nõuded oleks piisavad. § Vali süsteemi osa, mida komponentideks lahutada. § Identifitseeri arhitektuuri juhtivad nõuded. § Vali kontseptsioon, mis täidab juhtivad nõuded. o 2
(kontrollitud) Teema 10 • Kontseptuaalse andmemudeli teisendusreeglid loogilise disaini andmemudeliks 1:1 mõlemad kohustuslikud: luua 1 tabel 1:1 üks kohustuslik, teine mitte: luua 2 tabelit, välisvõti sinna, kus on kohustuslik 1:1 mõlemad mittekohustuslikud: luua 2 tabelit, välisvõti sinna, kuhu lisatakse andmeid hiljem 1:M : luua 2 tabelit, välisvõti sinna, kus on 1 M:N : luua vahetabel koos välisvõtmete ja kitsendustega rekursiivne seosetuup : iseendaga ühenduses, välisvõti viitab sama tabeli primaarvõtmele. uldistussuhted : Optional (ei pea alati kuuluma alamgruppi) või Mandatory (peab alati kuuluma alamgruppi), And (võib kuuluda mitmesse alamgruppi) või Or (võib kuuluda ainult ühte alamgruppi). kaar : ülemelement peab olema seotud ühe või teise alamelemendiga, aga mitte mõlemaga korraga
See tähendab, et funktsiooni sees olevad muutujad on lokaalsed. Kui soovime funktsiooni sees kasutada muutujaid mis olid defineeritud väljaspool funktsiooni siis tuleb enne kasutada global direktiivi: Näide Rekursiivne funktsioon Rekursiivne funktsioon on selline funktsioon, mis kutsub iseennast välja. Rekursiivne funktsiion on hea siis, kui on vaja sooritada korduvaid tegevusi. Hea näide on kaustade puu joonistamine, faktoriaali või suurima ühisteguri leidmine: factorial.php
põhiüksustest ja nende omavahelistest suhetest. Neid on 5. SEMANTIKA-tähendutse uurimine SÜNTAKS-lauseehituse allsüsteem LEKSIKON-sõnavara MORFOLOOGIA-sõnade sisestruktuur FONOLOOGIA-häälikulise struktuuri uurimine Avatud süsteemid Ainult loomulikud keeled on avatud süsteemid. Avatud süsteemi iseloomustab loovus. Mida kõrgema järgu allsüsteemi elemendiga on tegemist, seda avatum ja produktiivsem see allsüsteem on. Lausete rekursiivne iseloom- reeglit saab rakendada korduvalt, nt rinnastus (Agu ja Arno ja Mati ja ... läksid kõrtsi.) 4. Keeleuniversaalid. (lk.41) Püüdlused luua universaalset grammatikat alates 17. saj. Generatiivsed oletused puudutavad keelevõime süntaktiliste struktuuride sünnipärasust. Teistsugune lähenemine lingvistiliste universaalide ehk keelte võimalike ühiste omaduste ja struktuuride uurimisele on empiiriline keeletüpoloogiline võrdlus
Arvutusmudelid esitavad: riistvaraplatvorm?) Kuidas iga moodul (protsess või Käitumuslik hierarhia: Kahni protsessivõrgud disainivoog ülesanne) teostab oma sisemisi Protsesside rekursiivne deklareerimine (ADA, Protsesside suhtlemisel saadetakse andmeühikuid arvutusi VHDL) läbi ühesuunaliste FIFO kanalite Kuidas moodulid vahetavad Kanalisse kirjutamine on mitteblokeeriv
põhiüksustest ja nende omavahelistest suhetest. Neid on 5. SEMANTIKA-tähendutse uurimine SÜNTAKS-lauseehituse allsüsteem LEKSIKON-sõnavara MORFOLOOGIA-sõnade sisestruktuur FONOLOOGIA-häälikulise struktuuri uurimine Avatud süsteemid Ainult loomulikud keeled on avatud süsteemid. Avatud süsteemi iseloomustab loovus. Mida kõrgema järgu allsüsteemi elemendiga on tegemist, seda avatum ja produktiivsem see allsüsteem on. Lausete rekursiivne iseloom- reeglit saab rakendada korduvalt, nt rinnastus (Agu ja Arno ja Mati ja ... läksid kõrtsi.) 4. Keeleuniversaalid. (lk.41) Püüdlused luua universaalset grammatikat alates 17. saj. Generatiivsed oletused puudutavad keelevõime süntaktiliste struktuuride sünnipärasust. Teistsugune lähenemine lingvistiliste universaalide ehk keelte võimalike ühiste omaduste ja struktuuride uurimisele on empiiriline keeletüpoloogiline võrdlus
põhiüksustest ja nende omavahelistest suhetest. Neid on 5. SEMANTIKA-tähendutse uurimine SÜNTAKS-lauseehituse allsüsteem LEKSIKON-sõnavara MORFOLOOGIA-sõnade sisestruktuur FONOLOOGIA-häälikulise struktuuri uurimine Avatud süsteemid Ainult loomulikud keeled on avatud süsteemid. Avatud süsteemi iseloomustab loovus. Mida kõrgema järgu allsüsteemi elemendiga on tegemist, seda avatum ja produktiivsem see allsüsteem on. Lausete rekursiivne iseloom- reeglit saab rakendada korduvalt, nt rinnastus (Agu ja Arno ja Mati ja ... läksid kõrtsi.) 4. Keeleuniversaalid. (lk.41) Püüdlused luua universaalset grammatikat alates 17. saj. Generatiivsed oletused puudutavad keelevõime süntaktiliste struktuuride sünnipärasust. Teistsugune lähenemine lingvistiliste universaalide ehk keelte võimalike ühiste omaduste ja struktuuride uurimisele on empiiriline keeletüpoloogiline võrdlus
DNS kasutab UDP. // ==> Miks seda ei tsentraliseerida? Et vähendada koormatust, vähendada tõenäosust, et midagi ei tööta, vahemaadest tuleneva viivituse vähendamiseks. // ==> Lokaalne nimeserver puhverdab infot, et parandada päringute kiirust korduvate päringute puhul. // Juurserverid sisaldavad infot kõigi tippdomeenide kohta (com, org, edu). // Authorative nimeserver on see, mille andmebaasis on info domeeninime ja sellele vastava IP aadressi kohta. ==> Päringud: rekursiivne - Kui nimeserver ei oma infot antud domeeni kohta, küsib ta järgmise serveri käest edasi jne kuni vastus on käes, vastus tuleb alati sama teed mööda tagasi. // Mitte rekursiivne Kui nimeserver ei tea antud domeeni IP aadressi, siis saadetakse kliendile selle nimeserveri IP, kust edasi küsida. //// (( ==> Internet põhineb tegelikult IP aadressidel, seepärast iga kord, kui kasutaja annab veebilehitsejale ette domeeninime, peab DNS muutma selle vastavaks IP aadressiks. )) 17
DNS kasutab UDP. // ==> Miks seda ei tsentraliseerida? Et vähendada koormatust, vähendada tõenäosust, et midagi ei tööta, vahemaadest tuleneva viivituse vähendamiseks. // ==> Lokaalne nimeserver puhverdab infot, et parandada päringute kiirust korduvate päringute puhul. // Juurserverid sisaldavad infot kõigi tippdomeenide kohta (com, org, edu). // Authorative nimeserver on see, mille andmebaasis on info domeeninime ja sellele vastava IP aadressi kohta. ==> Päringud: rekursiivne - Kui nimeserver ei oma infot antud domeeni kohta, küsib ta järgmise serveri käest edasi jne kuni vastus on käes, vastus tuleb alati sama teed mööda tagasi. // Mitte rekursiivne – Kui nimeserver ei tea antud domeeni IP aadressi, siis saadetakse kliendile selle nimeserveri IP, kust edasi küsida. //// (( ==> Internet põhineb tegelikult IP aadressidel, seepärast iga kord, kui kasutaja annab veebilehitsejale ette domeeninime, peab DNS muutma selle vastavaks IP aadressiks. )) 17
seosed f(x1,…,xn,0) = g(x1,...,xn) ja f(x1,...,xn,y+1) = h( x1,…,xn, y, f(x1,…,xn,y) ). f =R[g,h] Teoreem: Rekursiivsed funktsioonid on Turingi masinal arvutatavad. T: Elementaarfunksioonid Registermasinal: On =0 on CLR, s(x)=x+1 on INC, Inm= xm on R → R. Ja ka Sm+1, R ja μy on reg.masinal arvutatavad. Neist saab konstrueerida kõik rek. funktsioonid. Ja reg.masin ja TM lahendavad samu asju. Teoreem: Iga registermasinal realiseeritav funktsioon on (osaline) rekursiivne funktsioon. Seega: Osaliselt rekursiivsete funktsioonide hulk langeb kokku Turingi mõttes arvutatavate funktsioonide hulgaga. 19 Minimeerimisoperaator. Osaliselt rekursiivsed funktsioonid. DEF: Funktsioon f : Nn → N on saadud funktsioonist g : Nn+1 → N minimeerimisoperaatori μy abil, kui kõikide väärtuste x1,...,xn ∈ N korral kehtib seos f (x1,...,xn) = a) y, mis on vähim selline element, et g(x1,...,xn,y) = 0 ja iga z < y korral g(x ,..
arvuti aadressi, et võrk saaks toimetada andmeid. mõttes, vaid igas ruuteris hoitakse vastavuste tabelit, mille Juurserverid- sisaldab infot kõikide tippdomeenide kohta. Transpordikiht – andmed peavad olema edastatud kindlalt ja järgi saab teada, kuhu antud identifikaatoriga pakett on vaja Rekursiivne päring-kui nimeserver ei tea infot antud domeeni samas järjekorras. Rakenduskiht - selle loogika peab toetama edasi saata. kohta, küsib ta järgmise serveri käest jne, kuni saab vastuse. erinevaid programme. 11. Edastusmeedia. Eristatakse juhtivaid ja vabu keskkondi. Mittekursiivne päring-kui nimeserver ei tea antud domeeni IP- 4
Grammatika morfoloogiaosa teatud tuletus- ja ühendamisvahendid on produktiivsed. Mida kõrgema järgu allsüsteemiga on tegemist, seda avatum ja produktiivsem see allsüsteem on. On võimalik väljendada (peaaegu) mis tahes tähendusi. Semantika on seetõttu avatum kui fonoloogia, morfoloogia ja süntaks. Kõiki lausungeid ja lauseid võib käsitleda kui kompleksseid, loovalt produtseeritud sümboleid. Lausete lõputu arvu põhjustab muuhulgas mõnede süntaktiliste struktuuriüksuste rekursiivne iseloom. Reeglit saab rakendada korduvalt. Kategoriseerimise prototüüpsus ja kategooriate vaheliste piiride hägususe lubatuvus suurendavad keele tähendussüsteemi avatust. Need annavad võimaluse rakendada sõnade tähendusi üha uute juhtude kirjeldamiseks, nt arvutisõnavara tarbeks kasutusse võetud hiir,padi. Oluline semantiline mehhanism on metafoorsus, mis suurendab loomuliku keele väljendusjõudu. 4) Keeleuniversaalid
Igale tähendusele või funktsioonile vastab sama vorm, märgid ei mõjuta üksteise tähendust ega ka kogu sõnumi tähendust juhul, kui on kasutatud nende ühendeid. Uusi märke eriti lihtsalt ei teki. (nt loomadele iseloomulik suhtlussüsteem) Avatud süsteemid on ainult loomulikud keeled. Üldkeele sõnu on kümnetes tuhandetes, paljudel sõnadel on mitu tähendust. Avatud süsteemi tähtis omadus on loovus; uusi märke võib moodustada vastavalt vajadusele. Rekursiivne iseloom - reeglit saab rakendada korduvalt (nt rinnastumise ja alistumise korral) 4. Keeleuniversaalid. Universaalne grammatika Universaalid e keelte võimalikud ühised omadused ja struktuurid. Paljud esitatud universaalidest on implikatiivsed (Omadus b esineb, kui on olemas omadus a; kuid omadus a ei täheda omaduse b olemasolu) Mitteimplikatiivne universaal - mingi omaduse a esinemist teistest omadustest sõltumata (nt kõigis keeltes on oraalseid vokaale)
· Millised on võtme-eeldused ja kuidas neid kontrollida? · Mis võib põhjustada süsteemi ümber disainimise? ADD(Attribute Driven Design) ADD töötati välja Carnegie Mellon Ülikooli pool Väljakutsed: Milline arhitektuur kataks kõige paremini kasutajate vajadusi ? Kuidas täita kujuteldava süsteemi nõudeid ? Kuidas otsustada, milline arhitektuuri strateegia on sobilik ? Kuidas hinnata nõuete täitmisel tehtavate kompromisside mõjusid ? ADD on rekursiivne 1. osa taktika Kontrolli, et nõuded oleks piisavad. Vali süsteemi osa, mida komponentideks lahutada Identifitseeri arhitektuuri juhtivad nõuded Vali kontseptsioon, mis täidab juhtivad nõuded 2. osa dokumenteerimine Algväärtusta arhitektuuri elemendid ja jaota vastutused Defineeri elementide liidesed Verifitseeri ja viimistle nõudeid ning määra nende pealt piirangud elementidele. Korda samme kõikide süsteemi osade kohta ADD KASU:
Diophantose võrrandid on mitme tundmatuga ning täisarvuliste kordajatega algebralised võrrandid, millele otsitakse täisarvulisi lahendeid. *Lineaarsele diofantilisele võrrandile leiduvad täisarvulised lahendid parajasti siis, kui gcd(a,b)|c. Kui viimane tingimus pole täidetud, siis täisarvulisi lahendeid võrrandil ei leidu. *Lahendamiseks kasutatakse harilikult laiendatud Eukleidese algoritmi iteratiivset meetodit. (Teiste meetoditena leiduvad veel näiteks rekursiivne meetod ning tabeli meetod) *Vastuse saamisks on vaja leida kordajad s ja t, millest seejärel arvutatakse võrrandi lahendid kujul x = ning y = . *Mõningatel juhtudel on lineaarsetel diofantilistel võrranditel ka mitu erinevat lahendit. *Lineaarsete ning teist järku diofantiliste võrrandite teooria on põhjalikult välja töötatud, kuid kõrgemat järgu diofantiliste võrrandite lahendamiseks teooria puudub: teada on vaid erivõtteid üksikute juhtude lahendamiseks. [28]
Lokaalne (puhverdav) nimeserver puhverdab nimeinfot, et parandada päringute kiirust korduvate päringute puhul. Juurserverid sisaldavad infot kõigi tippdomeenide (com, edu, ee jne.) kohta. Autoritatiivne (authoritative) nimeserver on see server, mille andmebaasis on info domeeninime ja sellele vastava IP-aadressi kohta. Teised nimeserverid ainult puhverdavad antud andmeid (non-authoritative). Autoritatiivsest serverist saab alati vastuse nimepäringule. Rekursiivne päring kui nimeserver ei oma infot antud domeeni kohta, küsib ta järgmise serveri käest edasi jne., kuni vastus on käes. (See koormab serverit, võtab aega). Vastus tuleb alati sama teed mööda tagasi. Iteratiivne (mitterekursiivne) päring kui nimeserver ei tea antud domeeni IP-aadressi, siis saadetakse kliendile selle nimeserveri IP, kust edasi küsida. Päringu saabumisel kontrollitakse alati kohaliku nimeserveri puhvrit. Kui seal vastust ei ole,
• Kui elementide arv suureneb, siis programmi kiirus väheneb • Nõuab palju elementide liigutamist 11.3 Mestimisega sorteerimine (Merge s.) • Algoritm koosneb kahest osast – massiivi jagamisest ning kahe osa ühendamisest. 1. Jaga algandmed kaheks enam vähem võrdseks osaks. 2. Sorteeri kumbki osa eraldi. 3. Kombineeri mõlemad osad kokku üheks sorteeritud massiiviks. • Olemuselt on see algortim rekursiivne ja toetub otseselt lähenemisele "Jaga ja valitse” (divide et impera). Rekursioonist väljudes ühendatakse massiivi osi järjest omavahel, saades nii üha pikemad sorteeritud lõigud. Vajab täiendavat mälu ajutiste massiivide tegemiseks (reaalselt sama palju kui on sorteeritavaid andmeid) • Keerukus: O(n log2n) nii halvimal kui ka keskmisel juhul. 11.3.1 Tugevad küljed • Stabiilne • Toimib hästi koos virtuaalse ja cache mäluga
protsessi ADD (Attribute Driven Design) o ADD töötati välja Carnegie Melloni Ülikooli pool o Väljakutsed Milline arhitektuur kataks kõige paremini kasutajate vajadusi Kuidas täita kujuteldava süsteemi nõudeid Kuidas otsustada, milline arhitektuuri strateegia on sobilik Kuidas hinnata nõuete täitmisel tehtavate kompromisside mõjusid o ADD on rekursiivne 1. osa taktika Kontrolli, et nõuded oleks piisavad Vali süsteemi osa, mida komponentideks lahutada Identifitseeri arhitektuuri juhtivad nõuded Vali kontseptioon, mis täidab juhtivad nõuded 2. osa dokumenteerimine Algväärtusta arhitektuuri elemendid ja jaota vastutused Defineeri elementide liidesed
omi). Füüsika osakonna hostid kuuluvad teise tsooni nimega physics.groucho.edu. Joonisel on tsooni algus tähistatud domeeninimest paremal asuva väikese ringiga DNS on hiiglaslik hajus andmebaas. Domeeninimede süsteem realiseeritakse nn nimeserverite abil, mis vahendavad teavet antud domeenis või domeenikomplektis. Iga tsooni jaoks on vähemalt kaks nimeserverit, mis hoiavad kogu vajalikku informatsiooni selle tsooni hostide kohta. DNS otsinguprotsess: 1) aadressi rekursiivne otsingi nime järgi: * klient küsib DNS serverilt www.ttu.ee aadressi *server kontrollib oma vahemälu, vastab kui leiab *server küsib mõnelt juurnimeserverilt. Vastuseks saab .ee domeeni nimeserveri aadressi *server küsib .ee nimeserverilt. Vastuseks saab teada, et see on aliasenimi masinale saruman.ttu.ee ja ühtlasi ka selle IP aadress on 193.40.254.179 2) pöördotsing *numbrilised aadressid on pandud nimeserveri hierarhiasse in-addr.arpa domeeni 193.40.254.221 vastab nimele 221.254.40
Lokaalne (puhverdav) nimeserver – puhverdab nimeinfot, et parandada päringute kiirust korduvate päringute puhul. Juurserverid – sisaldavad infot kõigi tippdomeenide (com, edu, ee jne.) kohta. Autoritatiivne (authoritative) nimeserver on see server, mille andmebaasis on info domeeninime ja sellele vastava IP-aadressi kohta. Teised nimeserverid ainult puhverdavad antud andmeid (non- authoritative). Autoritatiivsest serverist saab alati vastuse nimepäringule. Rekursiivne päring – kui nimeserver ei oma infot antud domeeni kohta, küsib ta järgmise serveri käest edasi jne., kuni vastus on käes. (See koormab serverit, võtab aega). Vastus tuleb alati sama teed mööda tagasi. Iteratiivne (mitterekursiivne) päring – kui nimeserver ei tea antud domeeni IP-aadressi, siis saadetakse kliendile selle nimeserveri IP, kust edasi küsida. Päringu saabumisel kontrollitakse alati kohaliku nimeserveri puhvrit. Kui seal vastust ei ole, käivitub
gistrandid usuksime White teooriasse rohkem kui rauakooli õppejõud “seda pälvib”. 6 Kas selle aine pealkirjaks ei sobiks paremini meetodite ajalugu vms. Erinevate aegade ajaloofilosoofia põhineb ju tegelikult sellel, mida selle aja inimesed ajaloo-tegemise all mõis- tisd. Tegelikult veelgi enam — seda, mida see või teine konkreetne filosoof pidas ajaloo tegemiseks. Kas meie teadmine on ikka tegelikult kogu aja jooksul “õigemaks” muutunud? Kas see ei ole mitte rekursiivne aine? (M) 36 PEATÜKK 3. SELETUS 3.1.3 Danto Kolmas autor, kes narratiivi teemadel arutles oli A. C. Danto — Itaalia pä- ritolu ameeriklane. Danto järgi on ajalugu selline kirjutamisviis, milles ka- sutatakse ajaloolisi lauseid. Ajaloolised laused on sellised laused, kus me kirjeldame midagi viidates hilisematele nähtustele. Näiteks “1618 algas 30– aastane sõda”
● Väljakutsed ○ Milline arhitektuur kataks kõige paremini kasutajate vajadusi ○ Kuidas täita kujuteldava süsteemi nõudeid ○ Kuidas otsustada, milline arhitektuuri strateegia on sobilik ○ Kuidas hinnata nõuete täitmisel tehtavate kompromisside mõjusid ADD on rekursiivne, st et protsessi korratakse ja korratakse ● 1. osa taktika ○ Kontrolli, et nõuded oleks piisavad. ○ Vali süsteemi osa, mida komponentideks lahutada ○ Identifitseeri arhitektuuri juhtivad nõuded ○ Vali kontseptsioon, mis täidab juhtivad nõuded ● 2. osa dokumenteerimine
Peale seda valib lokaalne server välja ühe nimeserveri aadressi ja küsib sealt, mille peale nimeserver tagastab autoratiivse serveri IP, kes teab selle hosti aadressi ja lõpuks küsib lokaalne server autoratiivse serveri käest ja saab vastuse IP näol ning see edastatakse hostile, kes pöördus lokaalse DNS serveri poole. Päringud: o Rekursiivne - Kui lokaalne nimeserver ei oma infot antud domeeni kohta, küsib ta juurserveri käest edasi jne kuni vastus on käes, vastus tuleb alati sama teed mööda tagasi. (koormab serverit ja võtab aega). o Iteratiivne - kui nimeserver ei tea antud domeeni IP-aadressi, siis saadetakse kliendile selle nimeserveri IP, kust edasi küsida.
Kui host teeb DNS päringu, siis see edastatace LNS’i, mis käitub nagu proxy/vahemälu ja vajadusel edastab päringu. Päringu vastus salvestatakse host arvutisse ja ka proxisse + lisatakse TTL. LNS asub enamasti lähedal, ülikooli vms puhul asub ilmselt samas võrgus, LANi puhul asub a la mõne ruuteri kaugusel. Iteratiivne nime päring - ehk pöördun DNSi, kui tema ei tea, siis suunab mu edasi kuhugi mujale. Rekursiivne nime päring - Minu päring hakkab üle maailma ringi jooksma, vastus tuleb mööda sama teed tagasi. Tülikas lahendus. Kui mingi NS kaardistab midagi ära, siis ta salvestab selle vahemälusse. Iga mingi aja tagant vahemälu tühjendatakse. TLD serverid on tavaliselt LNSide vahemäludes, tänu sellele ei käida eriti palju root NS’ides. See teeb ka päringute aja lühemaks, iga kord kui facebooki
14 Näide saab läbi •Eelnevat algoritmi saab veelgi parandada mäluvajaduse keerukuse osas •Iga samm tsüklis vajab ainult kahte eelnevat Fibonacci arvu väärtust. Massiivi asemel võime kasutada kahte muutujat. int fib(int n) { int a = 1, b = 1; for (int i = 3; i <= n; i++) { int c = a + b; a = b; b = c; } return c; } ITK 2007, Kalev Pihl Sissejuhatus informaatikasse 15 Mis me sellest näitest pidime õppima? •Sama probleemi saab lahendada mitme algoritmiga Näited: rekursiivne, iteratiivne •Algoritmi idee mängib keeruliste probleemide lahendamisel väga olulist rolli –tihti annab hea algoritm palju suuremat võitu kui kiire arvuti –mõnikord ei aita isegi parim algoritm •Keerulised algoritmid kasutavad vahetulemuste hoidmiseks ja nendega opereerimiseks andmestruktuure •Keerukuse analüüs annab aimu algoritmi headusest ja parema algoritmi olemasolust ITK 2007, Kalev Pihl Sissejuhatus informaatikasse 16 O notatsioon