asp 03 algoritmi i slozenost[4]

Upload: pasko-runjic

Post on 08-Jan-2016

213 views

Category:

Documents


0 download

DESCRIPTION

ASP 03 Algoritmi i Slozenost[4]

TRANSCRIPT

  • *Algoritmi i strukture podatakaZatieno licencom http://creativecommons.org/licenses/by-nc-sa/3.0/hr/

    Algoritmi i strukture podataka, FER

  • Algoritmi i strukture podataka, FER* / 36*Creative Commonsslobodno smijete:dijeliti umnoavati, distribuirati i javnosti priopavati djelo remiksirati preraivati djelo pod sljedeim uvjetima:imenovanje. Morate priznati i oznaiti autorstvo djela na nain kako je specificirao autor ili davatelj licence (ali ne nain koji bi sugerirao da Vi ili Vae koritenje njegova djela imate njegovu izravnu podrku). nekomercijalno. Ovo djelo ne smijete koristiti u komercijalne svrhe. dijeli pod istim uvjetima. Ako ovo djelo izmijenite, preoblikujete ili stvarate koristei ga, preradu moete distribuirati samo pod licencom koja je ista ili slina ovoj. U sluaju daljnjeg koritenja ili distribuiranja morate drugima jasno dati do znanja licencne uvjete ovog djela. Najbolji nain da to uinite je linkom na ovu internetsku stranicu. Od svakog od gornjih uvjeta mogue je odstupiti, ako dobijete doputenje nositelja autorskog prava. Nita u ovoj licenci ne naruava ili ograniava autorova moralna prava.Tekst licencije preuzet je s http://creativecommons.org/.

    Algoritmi i strukture podataka, FER

  • *Sloenost algoritamaAlgoritmiSloenost algoritama

    Algoritmi i strukture podataka, FER

  • Algoritmi i strukture podataka, FER* / 36*Abu Ja'far Mohammed ibn Musa al KhowarizmiAbu Ja'far Mohammed ibn Musa al Khowarizmi Muhamed, otac Jafarov, sin Muse iz Khwarizmaroen u Khwarizmu, danas Khiva, Uzbekistan, oko 780. g.umro u Bagdadu, oko 850. godine. jedan od 10 najcjenjenijih matematiara svih vremena

    Algoritmi i strukture podataka, FER

  • Algoritmi i strukture podataka, FER* / 36*Zasluge al Khowarizmijapotie koritenje hindu-arapskih brojeva - uvodi nuluu Bagdadu oko 825. godine napisao knjigu Hidab al-jabr w'al-muqubala Znanost o prenoenju i ponitenjujabr - prenoenje na suprotnu stranu jednadbex - 2 = 12 x = 12 + 2muqubala - ponitenje jednakih izraza s lijeve i desne strane jednadbex + y = y + 7 x = 7al-jabr -> algebranematematiki (maursko porijeklo): algebrista namjeta kostiju

    Algoritmi i strukture podataka, FER

  • Algoritmi i strukture podataka, FER* / 36*Od al Khowarizmija do algoritma...vjerovao da se bilo koji matematiki problem moe ralaniti na korake, tj. niz pravilau latinskom prijevodu knjige (12. stoljee) ispred svakog pravila pieDixit Algorizmi - rekao je Al Kowarzimialgoritam glasiu poetku algoritmom se nazivaju samo pravila raunanja s brojevima, kasnije i pravila obavljanja ostalih zadataka u matematiciu XX stoljeu, pojavom raunala, pojam se proiruje na raunarstvo, a zatim i na druga podrujapravila za postizanje eljenog rezultata

    Algoritmi i strukture podataka, FER

  • Algoritmi i strukture podataka, FER* / 36*to je algoritamprecizno opisan nain rjeenja nekog problemajednoznano odreuje to treba napravitimoraju biti definirani poetni objekti koji pripadaju nekoj klasi objekata na kojima se obavljaju operacijekao ishod algoritma pojave se zavrni objekti ili rezultatikonani broj koraka; svaki korak opisan instrukcijomobavljanje je algoritamski procesuporabiv, ako se dobije rezultat u konanom vremenuprimjeri za nedoputene instrukcije:izraunaj 5/0uveaj x za 6 ili 7

    Algoritmi i strukture podataka, FER

  • Algoritmi i strukture podataka, FER* / 36*Algoritamalgoritam mora biti djelotvoran:u konanom vremenu moe se dobiti rezultat koristei olovku i papir.primjeri:zbrajanje cijelih brojeva je djelotvornozbrajanje realnih brojeva nije jer se moe pojaviti broj s beskonano mnogo znamenkisa znanjem programiranja i uz razumijevanje problema koji rjeava, student moe napisati djelotvoran (effective) algoritamcilj ovog predmeta je nauiti kako se oblikuje i programira uinkovit (efficient) algoritam.djelotvoran i uinkovit su u hrvatskom jeziku gotovo sinonimi effective = onaj koji daje rezultat, djelotvoranefficient = uspjean, uinkovit (s obzirom na utroene resurse - vrijeme, procesor, disk, memoriju)mnoenje se moe svesti na ponavljanje zbrajanja djelotvorno, ali nije uinkovito!rjeavanje velikog skupa linearnih jednadbi Kramerovim pravilom - djelotvorno, ali nije uinkovito!

    Algoritmi i strukture podataka, FER

  • Algoritmi i strukture podataka, FER* / 36*Procedurapostupak koji ima sva svojstva kao i algoritam, ali ne mora zavriti u konanom broju koraka jest raunalna procedurau jeziku C to moe biti void funkcijaprimjeri za proceduru: operacijski sustav raunalaureiva tekstavrijeme izvoenja mora biti "razumno"primjer:algoritam koji bi izabirao potez igraa aha tako da ispita sve mogue posljedice poteza, zahtijevao bi milijarde godina na najbrem zamislivom raunaluAlgoritamProcedura

    Algoritmi i strukture podataka, FER

  • Algoritmi i strukture podataka, FER* / 36*Algoritmi i programiprogram - opis algoritma koji u nekom programskom jeziku jednoznano odreuje to raunalo treba napravitiprogramiranje - nauiti sintaksu nekog proceduralnog jezika i stei osnovna intuitivna znanja glede algoritmizacije problema opisanog rijeimaalgoritmi + strukture podataka = programi (Wirth)kako osmisliti algoritme?kako strukturirati podatke?kako formulirati algoritme?kako verificirati korektnost algoritama?kako analizirati algoritme?kako provjeriti (testirati) program?Postupci izrade algoritama nisu jednoznani te zahtijevaju i kreativnost. Inae bi ve postojali generatori algoritama. Znai da se (za sada?) gradivo ovog predmeta ne moe u potpunosti algoritmizirati. Koristit e se programski jezik C. Za saeti opis sloenijih algoritama moe se koristiti pseudokod.

    Algoritmi i strukture podataka, FER

  • Algoritmi i strukture podataka, FER* / 36*Djelotvorno, ali nije uinkovito?

    Algoritmi i strukture podataka, FER

  • *Analiza sloenosti algoritamaAnalize "a priori" i "a posteriori"O-notacijaAsimptotsko vrijeme izvoenjaPrimjeri

    Algoritmi i strukture podataka, FER

  • Algoritmi i strukture podataka, FER* / 36*Osnovni pojmovisvrhaintelektualna razonoda?predvianje vremena izraunapronalaenje uinkovitijih algoritamapretpostavke:sekvencijalno jednoprocesorsko raunalofiksno vrijeme dohvata sadraja memorijske lokacijevrijeme obavljanja operacija (aritmetike, logike, pridruivanje, poziv funkcije) je ogranieno nekom konstantom kao gornjom granicom

    Algoritmi i strukture podataka, FER

  • Algoritmi i strukture podataka, FER* / 36*Analize a priori i a posterioriizbor skupova podataka za iscrpno testiranje algoritma:ponaanje u najboljem sluaju (best case scenario)ponaanje u najgorem sluaju (worst case scenario)prosjeno (tipino) ponaanjea priori trajanje izvoenja algoritma (u najgorem sluaju) kao vrijednost funkcije nekih relevantnih argumenata (npr. broja podataka)a posteriori statistika dobivena mjerenjem na raunalu

    Algoritmi i strukture podataka, FER

  • Algoritmi i strukture podataka, FER* / 36*Analiza a priori procjena vremena izvoenja, nezavisno od raunala, programskog jezika, prevoditelja (compilera)primjeri:a)x += y;1

    b)for(i = 1; i

  • Algoritmi i strukture podataka, FER* / 36*Sloenost algoritmatreba nam alat kojim emo usporediti uinkovitost algoritamau pomo dolazi matematika promatramo kako se ponaa vrijeme izvoenja kad broj ulaznih podataka postane dovoljno velikprimjer: inverzija matrice od n x n elemenata traje 10n3 sekundiinverzija matrice 100 x 100 elemenata traje 1 minutuinverzija matrice 200 x 200 elemenata trajat e 8 minuta (23=8)kako izraziti vrijeme izvoenja kao funkciju od n?npr. vrijeme izvoenja raste s n3

    Algoritmi i strukture podataka, FER

  • Algoritmi i strukture podataka, FER* / 36*O - notacijaf(n) = O(g(n)) ako postoje dvije pozitivne konstante c i n0 takve da vrijedi f(n) cg(n) za sve n n0 trai se najmanji g(n) za koji to vrijedidrugim rijeima, procjenjuje se trajanje kao red veliine odreen temeljem broja podataka n, pomnoeno s nekom konstantom cprimjeri:n3+5n2+77n = O(n3)Koliki je posao prenijeti 1 stolicu iz dvorane A u dvoranu B?Koliki je posao prenijeti n stolica iz A u B?Koliki je posao prenijeti n stolica iz A u B, s time da se kod donoenja svake nove stolice sve dotada donesene stolice u B moraju pomaknuti, pri emu se za pomicanje stolice u dvorani B ulae isti trud kao i kod prijenosa jedne stolice iz A u B?1 + 2 + 3 + 4 + ...+ n = n(n+1)/2 = n2/2 + n/2 = O (n2)

    Algoritmi i strukture podataka, FER

  • Algoritmi i strukture podataka, FER* / 36*O - notacijaanalizom a priori dobije se vrijeme izvoenja algoritma O(g(n)) ako je broj izvoenja operacija nekog algoritma ovisan o nekom ulaznom argumentu n oblika polinoma m-tog stupnja, onda je vrijeme izvoenja za taj algoritam O(nm) dokaz:Ako je vrijeme izvoenja odreeno polinomom:A(n) = amnm + ... + a1n + a0onda vrijedi:A(n) am nm + ... +a1n +a0A(n) (am + am-1/ n + ... +a1 /nm-1+a0/ nm) nmA(n) (am + ... +a1 +a0) nm , za svaki n1uz: c = am + ... +a1 +a0 i n0 = 1 tvrdnja je dokazana

    Algoritmi i strukture podataka, FER

  • Algoritmi i strukture podataka, FER* / 36*O - notacijamoe se kao c koristiti bilo koja konstanta vea od am ako je n dovoljno velik:ako neki algoritam ima k odsjeaka ija vremena su:c1nm1, c2nm2,...,cknmkonda je ukupno vrijemec1nm1 + c2nm2 +... + cknmkznai da je za taj algoritam vrijeme izvoenja jednako O(nm), gdje jem = max{mi}, i =1,...,k

    Algoritmi i strukture podataka, FER

  • Algoritmi i strukture podataka, FER* / 36*O - notacijavrijedi za dovoljno veliki n:O(1) < O(log n) < O(n) < O(nlog n) < O(n2) < O(n3) < ...< O(2n) < O(n!)

    O(1) znai da je vrijeme izvoenja ogranieno konstantomostale vrijednosti, do predzadnje, predstavljaju polinomna vremena izvoenja algoritmasvako sljedee vrijeme izvoenja je vee za red veliinepredzadnji izraz predstavlja eksponencijalno vrijeme izvoenjane postoji polinom koji bi ga mogao ograniiti jer za dovoljno veliki n ova funkcija premauje bilo koji polinomalgoritmi koji zahtijevaju eksponencijalno vrijeme mogu biti nerjeivi u razumnom vremenu, bez obzira na brzinu slijednog raunala

    Algoritmi i strukture podataka, FER

  • Algoritmi i strukture podataka, FER* / 36* - notacijaf(n) = (g(n)) ako postoje dvije pozitivne konstante c i n0 takve da vrijedi f(n) c g(n) za sve n > n0trai se najvei g(n) za koji to vrijedidonja granica za vrijeme izvoenja algoritmaniti u kojem sluaju izvoenje ne moe biti krae od npr. mnoenje dvije matrice od n x n elemenata uvijek traje (n2) , O (n3)zbrajanje n brojeva uvijek traje (n) = O (n)pronalaenje nekog broja meu n nesortiranih brojeva (1) O (n)

    Algoritmi i strukture podataka, FER

  • Algoritmi i strukture podataka, FER* / 36* - notacijaf(n) = (g(n)) ako postoje pozitivne konstante c1, c2 i n0 takve da vrijedi c1g(n) f(n) c2g(n) za sve n > n0f i g rastu jednako brzo za velike nomjer f i g je izmeu c1 i c2drugim rijeima, jednaka su trajanja za najbolji i za najgori sluajprimjer:Treba po abecedi sortirati n kontrolnih zadaa tako da se prvo pronae prvi po abecedi, zatim se u preostalima trai prvi itd.postupak jednako traje bez obzira na eventualnu ureenost:O(n2) = (n2) = (n2)

    Algoritmi i strukture podataka, FER

  • Algoritmi i strukture podataka, FER* / 36*Asimptotsko vrijeme izvoenjaf(n) ~ g(n) ako je

    ita se: "f(n) je asimptotski jednako funkciji g(n)precizniji je opis vremena izvoenja nego O-notacijomzna se i red veliine vodeeg lana i konstanta koja ga mnoiako je, primjerice:f(n) = aknk + ... + a0tada je:f(n) = O(nk) i f(n) ~ aknkprimjeri: 3*2x+7 logx+x ~ 3*2xza primjer sortiranja s prethodnog slajda (sortiranje zadaa):zbog linearnog smanjivanja preostalog skupa u kojem se trai prvi, asimptotsko trajanje je: ~ n2/2

    Algoritmi i strukture podataka, FER

  • Algoritmi i strukture podataka, FER* / 36* n i = n(n+1)/2 = O (n2)i=1Asimptotsko vrijeme izvoenjau izraunu uestalosti obavljanja nekih naredbi esto se javljaju sume oblika:

    n2/2for (i = 1; i

  • Algoritmi i strukture podataka, FER* / 36*Razne sloenosti u logaritamskom mjerilu

    Algoritmi i strukture podataka, FER

  • Algoritmi i strukture podataka, FER* / 36*O-notacija - primjeri IspisiTrazi.cispisipetlja se uvijek obavi n puta (n) , O(n) , (n)trazivrijeme izvoenja je O(n)donja granica je (1)u najboljem sluaju u prvom koraku nae traeni lan poljau najgorem sluaju mora pregledati sve lanove polja

    Algoritmi i strukture podataka, FER

  • Algoritmi i strukture podataka, FER* / 36*Analiza a posterioristvarno vrijeme potrebno za izvoenje algoritma na konkretnom raunalu#include // gdje je deklarirano

    struct timeb {time_t time; // broj sekundi od ponoi, 01.01.1970, UTCunsigned short millitm; // milisekunde short timezone; // razlika u minutama od UTC short dstflag; // 0 ako je na snazi ljetno vrijeme};

    void ftime(struct timeb *timeptr);

    Algoritmi i strukture podataka, FER

  • Algoritmi i strukture podataka, FER* / 36*Analiza a posterioriu programu:

    Universal Time Co-ordinated (UTC)novi naziv za Greenwich Mean Time (GMT)struct timeb vrijeme1, vrijeme2; long trajanjems;

    ftime (&vrijeme1);...ftime (&vrijeme2);

    trajanjems = 1000 * (vrijeme2.time - vrijeme1.time) + vrijeme2.millitm - vrijeme1.millitm;

    Algoritmi i strukture podataka, FER

  • Algoritmi i strukture podataka, FER* / 36*Zadaci za vjebuZa algoritam

    odrediti:a) apriorno vrijeme izvoenjab) odrediti asimptotsku ocjenu za prosjeno vrijeme izvoenjac) asimptotsku ocjenu vremena izvoenja za najbolji sluajd) asimptotsku ocjenu vremena izvoenja za najgori sluaje) za kakvu vrijednost varijable b nastupa najgori sluaj?

    for (i = 0; i < n; i++) { if (a[i] == b) {printf ("i = %d\n", i);break;}}

    Algoritmi i strukture podataka, FER

  • Algoritmi i strukture podataka, FER* / 36*Zadaci za vjebuNapisati funkciju koja rauna zbroj znamenki zadanog prirodnog broja N. Kolika je sloenost funkcije?

    int zbrojZnamenki (int N) {int zbroj = 0;while (N > 0) {zbroj += N % 10;N /= 10;}return zbroj;}

    Algoritmi i strukture podataka, FER

  • Algoritmi i strukture podataka, FER* / 36*Zadaci za vjebu

    Stvarno trajanjeO~5n2+7n+4n25n23n2+700n+2n23n2n2+7logn+40n2n20,1*2n+100n22n0,1*2n(2n+1)2n24n26nlogn + 10nnlogn6nlogn8logn + 1000logn8logn3n! + 2n + n10n!3n!3*5n + 6*2n + n1005n3*5n

    Algoritmi i strukture podataka, FER

  • Algoritmi i strukture podataka, FER* / 36*Primjeri ovisnosti trajanja o broju podataka i sloenosti

    nT(n) = nT(n) = n lg(n)T(n) = n2T(n) = n3T(n) = 2n50.005 s0.01 s0.03 s0.13 s0.03 s100.01 s0.03 s0.1 s1 s1 s200.02 s0.09 s0.4 s8 s1 ms500.05 s0.28 s2.5 s125 s13 dana1000.1 s0.66 s10 s1 ms4 x 1013 godina

    Algoritmi i strukture podataka, FER

  • Algoritmi i strukture podataka, FER* / 36*to se moe rijeiti u zadanom vremenu

    Vremenska sloenostVeliina najveeg sluaja problema koji se moe rijeiti za 1 satdanas raspoloivim raunalom100 puta brim raunalom1000 puta brim raunalomnN1100N11000N1n2N210 N231.6 N2n3N34.64 N310 N32nN4N4+6.64N4+9.973nN5N5+4.19N5+6.29

    Algoritmi i strukture podataka, FER

  • Algoritmi i strukture podataka, FER* / 36*Relativni udio komponenti u izrazu: n4 + n3log n + 2 (n-1) O ( 2n )

    nn4n3 log n2(n-1)11011010 00010005121783 5216 0466553618104 9767 321131072506 250 000212 372562 949 953 421 312100100 000 0002 000 0006,3 x 10 29

    Algoritmi i strukture podataka, FER

  • Algoritmi i strukture podataka, FER* / 36*Utjecaj veliine konstante K = 1 000 000

    nK nK n2K n4K 2n11061061062 x 1061010710810101,0 x 108100108101010141,2 x 10361 00010910121018~ 10306

    Algoritmi i strukture podataka, FER

  • Algoritmi i strukture podataka, FER* / 36*to znai dovoljno veliki n, tj. n > n0Izvor: Cormen, Leiserson & Rivest: Introduction to algorithms, 2/e,MIT Press, 2001

    Algoritmi i strukture podataka, FER