3 ANALIZA ALGORITAMA 1 analiza strukture algoritma analiza

  • Slides: 24
Download presentation
3 ANALIZA ALGORITAMA 1

3 ANALIZA ALGORITAMA 1

 • analiza strukture algoritma • analiza performanse (vremenske i prostorne) 2

• analiza strukture algoritma • analiza performanse (vremenske i prostorne) 2

ANALIZA STRUKTURE ALGORITAMA 3

ANALIZA STRUKTURE ALGORITAMA 3

Strukturirano programiranje • nastalo početkom sedamdesetih, kao odgovor na softversku krizu • povod: eliminisanje

Strukturirano programiranje • nastalo početkom sedamdesetih, kao odgovor na softversku krizu • povod: eliminisanje naredbe goto • Pod strukturiranim programiranjem podrazumeva se skup tehnika za razvoj programskih modula koje koriste strogo definisane grupe upravljačkih struktura i struktura podataka. • paskal, C 4

Graf toka programa • kvazi-digraf čiji čvorovi odgovaraju naredbama, njihovim delovima ili pak grupama

Graf toka programa • kvazi-digraf čiji čvorovi odgovaraju naredbama, njihovim delovima ili pak grupama naredbi • podseća na blok dijagram algoritma bez posebne oznake početka/kraja 5

elementi grafa toka programa • Proces ili funkcionalni čvor koji predstavlja operaciju transformacije (obrade)

elementi grafa toka programa • Proces ili funkcionalni čvor koji predstavlja operaciju transformacije (obrade) podataka; ulazni stepen 1, izlazni stepen 1 f • Predikat realizuje grananje; ulazni stepen 1, izlazni stepen 2 T p 6

 • Kolektor služi samo za povezivanje dve grane koje se stiču na istom

• Kolektor služi samo za povezivanje dve grane koje se stiču na istom mestu; ulazni stepen 2, a izlazni stepen 1 7

primer double max. El(double v[], int n) { double vmax; int i; for(maxv=v[0], i=0;

primer double max. El(double v[], int n) { double vmax; int i; for(maxv=v[0], i=0; i<n; i++) if(v[i]>vmax) vmax=v[i]; return vmax; } vmax=v[0] i=0 i<n T i++ v[i]>vmax T vmax=v[i] 8

 • Pravilan program je program čiji graf toka zadovoljava sledeća tri uslova: –

• Pravilan program je program čiji graf toka zadovoljava sledeća tri uslova: – Postoji tačno jedna ulazna grana. – Postoji tačno jedna izlazna grana. – Kroz svaki čvor prolazi najmanje jedan put od ulazne do izlazne grane (put je skup grana g 1, . . . gm takav da grana gi+1 počinje u čvoru u kojem se završava grana gi, za i=1, 2, . . . ) nepravilan (i besmislen) program 9

 • Podgrafa toka programa nosi naziv potprogram; potprogram koji je pravilan nosi naziv

• Podgrafa toka programa nosi naziv potprogram; potprogram koji je pravilan nosi naziv pravilan potprogram • Prost program je program kojem odgovara graf toka takav da nijedan od njegovih pravilnih potprograma nema više nego jedan čvor (a to je proces) 10

 • Skup prostih programa čijom se superpozicijom može realizovati bilo koji pravilan program

• Skup prostih programa čijom se superpozicijom može realizovati bilo koji pravilan program nosi naziv baza strukturiranih programa • strukturirani program definiše se kao program sastavljen od skupa prostih programa iz zadate baze. 11

prosti programi sa bar jednim procesom proces sekvenca if-then-else if-then do-while-do ovo su kandidati

prosti programi sa bar jednim procesom proces sekvenca if-then-else if-then do-while-do ovo su kandidati za bazu strukturiranih programa repeat-until 12

Prosti programi u C-u • • • izraz; (proces) naredba 1 naredba 2 (sekvenca)

Prosti programi u C-u • • • izraz; (proces) naredba 1 naredba 2 (sekvenca) if(izraz) naredba while(izraz) naredba do naredba while(izraz); if(izraz) naredba 1 else naredba 2 13

Strukturna teorema • bavi se definisanjem jedne baze strukturiranih programa (koja je, usput, redundantna)

Strukturna teorema • bavi se definisanjem jedne baze strukturiranih programa (koja je, usput, redundantna) • Svaki pravilan program može se transformisati u ekvivalentan, formalno strukturiran program uz korišćenje tri osnovne upravljačke strukture: sekvence, selekcije if-then-else i ciklusa while-do 14

dokaz • označiti sve procese i predikate proizvoljnim simbolima (npr. 1, 2, 3. .

dokaz • označiti sve procese i predikate proizvoljnim simbolima (npr. 1, 2, 3. . . ) • označiti okolinu proizvoljnim simbolom (npr. 0) 0 1 A p B 2 3 0 15

 • formirati matricu prelaza L (kvadratna logička matrica reda k gde je k

• formirati matricu prelaza L (kvadratna logička matrica reda k gde je k broj označenih čvorova • L[i, j] jednako je T ako iz čvora sa oznakom i postoji grana koja vodi u čvor j, a u suprotnom 0 A p 0 B 1 2 3 0 1 2 3 T p p T T u svakoj vrsti tačno jedan element ima vrednost T 16

 • funkcija next(n) koja izračunava oznaku čvora koji se izvršava kao sledeći posle

• funkcija next(n) koja izračunava oznaku čvora koji se izvršava kao sledeći posle čvora sa oznakom n: {j=0; while(!L[n, j]) j++; } • funkcija next(n) realizuje se samo pomoću sekvence i ciklusa while-do! 17

sada je kanonički oblik bilo kojeg pravilnog programa { n=1; //1 je oznaka prvog

sada je kanonički oblik bilo kojeg pravilnog programa { n=1; //1 je oznaka prvog cvora koji se izvrsava while(n!=0) //0 je oznaka okoline if(n==1) {obraditi cvor n; n=next(n); } else if(n==2) {obraditi cvor n; n=next(n); } else if(n==3) {obraditi cvor n; n=next(n); }. . . else if(n==k) {obraditi cvor n; n=next(n); } koriste se samo sekvenca, if-then-else i while- do } 18

još jedna baza strukturiranih programa • prost program if(p) A else B može se

još jedna baza strukturiranih programa • prost program if(p) A else B može se transformisati u ekvivalentnu sekvencu oblika { if(p) A if(!p) B} • sekvenca {}, ciklus while-do i selekcija if-then takođe čine bazu strukturiranih programa 19

Minimalna baza strukturiranih programa • prost program if(p) A else B može se transformisati

Minimalna baza strukturiranih programa • prost program if(p) A else B može se transformisati u ekvivalentnu sekvencu oblika { q=p; r=!p; while(q) {A q=!q; } while(r) {B r=!r; } sadrži samo sekvencu i ciklus while-do } • minimalna baza strukturiranih programa je baza: sekvenca {} i ciklus while-do 20

Strukturna teorema i algoritamski sistemi Kombinovanjem osnovne hipoteze teorije algoritama i Strukturne teoreme zaključujemo

Strukturna teorema i algoritamski sistemi Kombinovanjem osnovne hipoteze teorije algoritama i Strukturne teoreme zaključujemo svaki algoritam može se prikazati na programskom jeziku čije upravljačke strukture obuhvataju bar jednu bazu strukturiranih programa, odnosno svaki algoritam može se prikazati na programskom jeziku koji sadrži bar sekvencu i ciklus while-do 21

Metoda sukcesivne dekompozicije • svrha: izbeći naredbe skoka • primer: ako je a<0 staviti

Metoda sukcesivne dekompozicije • svrha: izbeći naredbe skoka • primer: ako je a<0 staviti x=1 i y=2 if(a>=0) goto 5; x = 1; y = 2; 5: ……. . if(a<0) {x = 1; y = 2; } loše! 22

1. Formulisati problem u obliku pogodnom za računarsko rešavanje. 2. Formulisati osnovnu ideju algoritamskog

1. Formulisati problem u obliku pogodnom za računarsko rešavanje. 2. Formulisati osnovnu ideju algoritamskog rešenja. 3. Napisati osnovne komponente programskog rešenja u vidu niza komentara. 4. Izdvojiti pogodnu manju celinu (iskazanu u vidu komentara) i razložiti je na detaljnije programske zahteve. 5. Ponavljati korak (4) dok se ne dobiju programski zahtevi koji su dovoljno jednostavni da se mogu realizovati kao programski segmenti na nekom pseudojeziku. 6. Odabrati neki od programskih zahteva i realizovati ga na pseudojeziku koristeći pri tome jedino upravljačke strukture iz određene usvojene baze. 7. Sistematski ponavljati korak (6) dok god je to moguće i pri tome povećavati nivo detaljisanja kako za programe tako i za podatke koje program obrađuje. 8. Na kraju, dobijeni program na pseudojeziku prevesti u program na nekom od konkretnih jezika. 23

primer • odrediti proizvod p zbira elemenata niza x dužine m i niza y

primer • odrediti proizvod p zbira elemenata niza x dužine m i niza y dužine n odrediti p ulaz m, n, x i y ulaz m, x ulaz n, y odrediti zbir elemenata x (pod imenom s 1) i y (s 2) odrediti s 1 = zbir elemenata x p = s 1*s 2 izlaz p odrediti s 2 = zbir elemenata y • faza n+1 počinje kada se završi faza i • garantovano nema skokova 24