Algoritmi i strukture podataka

Σχετικά έγγραφα
Algoritmi i strukture podataka - 1.cas

3.1 Granična vrednost funkcije u tački

PRAVA. Prava je u prostoru određena jednom svojom tačkom i vektorom paralelnim sa tom pravom ( vektor paralelnosti).

Osnovni primer. (Z, +,,, 0, 1) je komutativan prsten sa jedinicom: množenje je distributivno prema sabiranju

Elementi spektralne teorije matrica

Teorijske osnove informatike 1

SISTEMI NELINEARNIH JEDNAČINA

DISKRETNA MATEMATIKA - PREDAVANJE 7 - Jovanka Pantović

PARCIJALNI IZVODI I DIFERENCIJALI. Sama definicija parcijalnog izvoda i diferencijala je malo teža, mi se njome ovde nećemo baviti a vi ćete je,

IZVODI ZADACI ( IV deo) Rešenje: Najpre ćemo logaritmovati ovu jednakost sa ln ( to beše prirodni logaritam za osnovu e) a zatim ćemo

Osnovne teoreme diferencijalnog računa

UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET SIGNALI I SISTEMI. Zbirka zadataka

Računarska grafika. Rasterizacija linije

Ispitivanje toka i skiciranje grafika funkcija

IZVODI ZADACI (I deo)

Sortiranje prebrajanjem (Counting sort) i Radix Sort

41. Jednačine koje se svode na kvadratne

Iskazna logika 3. Matematička logika u računarstvu. novembar 2012

Zadaci sa prethodnih prijemnih ispita iz matematike na Beogradskom univerzitetu

Računarska grafika. Rasterizacija linije

IZRAČUNAVANJE POKAZATELJA NAČINA RADA NAČINA RADA (ISKORIŠĆENOSTI KAPACITETA, STEPENA OTVORENOSTI RADNIH MESTA I NIVOA ORGANIZOVANOSTI)

Univerzitet u Nišu, Prirodno-matematički fakultet Prijemni ispit za upis OAS Matematika

MATRICE I DETERMINANTE - formule i zadaci - (Matrice i determinante) 1 / 15

18. listopada listopada / 13

Konstruisati efikasan algoritam znači dati skup preciznih uputstava kako doći do rešenja zadatog problema Algoritmi se mogu opisivati:

Operacije s matricama

Trigonometrijske nejednačine

2log. se zove numerus (logaritmand), je osnova (baza) log. log. log =

a M a A. Može se pokazati da je supremum (ako postoji) jedinstven pa uvodimo oznaku sup A.

numeričkih deskriptivnih mera.

Deljivost. 1. Ispitati kada izraz (n 2) 3 + n 3 + (n + 2) 3,n N nije deljiv sa 18.

PID: Domen P je glavnoidealski [PID] akko svaki ideal u P je glavni (generisan jednim elementom; oblika ap := {ab b P }, za neko a P ).

KOMUTATIVNI I ASOCIJATIVNI GRUPOIDI. NEUTRALNI ELEMENT GRUPOIDA.

Trigonometrija 2. Adicijske formule. Formule dvostrukog kuta Formule polovičnog kuta Pretvaranje sume(razlike u produkt i obrnuto

7 Algebarske jednadžbe

Pismeni ispit iz matematike Riješiti sistem jednačina i diskutovati rješenja sistema u zavisnosti od parametra: ( ) + 1.

Zavrxni ispit iz Matematiqke analize 1

MATEMATIKA 2. Grupa 1 Rexea zadataka. Prvi pismeni kolokvijum, Dragan ori

DRUGI KOLOKVIJUM IZ MATEMATIKE 9x + 6y + z = 1 4x 2y + z = 1 x + 2y + 3z = 2. je neprekidna za a =

5 Ispitivanje funkcija

KVADRATNA FUNKCIJA. Kvadratna funkcija je oblika: Kriva u ravni koja predstavlja grafik funkcije y = ax + bx + c. je parabola.

IspitivaƬe funkcija: 1. Oblast definisanosti funkcije (ili domen funkcije) D f

Dvanaesti praktikum iz Analize 1

IZVODI ZADACI (I deo)

M086 LA 1 M106 GRP. Tema: Baza vektorskog prostora. Koordinatni sustav. Norma. CSB nejednakost

(P.I.) PRETPOSTAVKA INDUKCIJE - pretpostavimo da tvrdnja vrijedi za n = k.

Zadaci iz Osnova matematike

ASIMPTOTE FUNKCIJA. Dakle: Asimptota je prava kojoj se funkcija približava u beskonačno dalekoj tački. Postoje tri vrste asimptota:

Pismeni ispit iz matematike GRUPA A 1. Napisati u trigonometrijskom i eksponencijalnom obliku kompleksni broj, zatim naći 4 z.

INTEGRALNI RAČUN. Teorije, metodike i povijest infinitezimalnih računa. Lucija Mijić 17. veljače 2011.

4 Numeričko diferenciranje

Sistemi veštačke inteligencije primer 1

Linearna algebra 2 prvi kolokvij,

5. Karakteristične funkcije

ELEKTROTEHNIČKI ODJEL

Strukture podataka i algoritmi 1. kolokvij 16. studenog Zadatak 1

9. GRANIČNA VRIJEDNOST I NEPREKIDNOST FUNKCIJE GRANIČNA VRIJEDNOST ILI LIMES FUNKCIJE

Fakultet tehničkih nauka, Softverske i informacione tehnologije, Matematika 2 KOLOKVIJUM 1. Prezime, ime, br. indeksa:

Kontrolni zadatak (Tačka, prava, ravan, diedar, poliedar, ortogonalna projekcija), grupa A

TRIGONOMETRIJSKE FUNKCIJE I I.1.

OBLAST DEFINISANOSTI FUNKCIJE (DOMEN) Pre nego što krenete sa proučavanjem ovog fajla, obavezno pogledajte fajl ELEMENTARNE FUNKCIJE, jer se na

SKUPOVI I SKUPOVNE OPERACIJE

KVADRATNA FUNKCIJA. Kvadratna funkcija je oblika: Kriva u ravni koja predstavlja grafik funkcije y = ax + bx + c. je parabola.

Program testirati pomoću podataka iz sledeće tabele:

1 Promjena baze vektora

Algoritmi zadaci za kontrolni

Riješeni zadaci: Limes funkcije. Neprekidnost

APROKSIMACIJA FUNKCIJA

( ) ( ) 2 UNIVERZITET U ZENICI POLITEHNIČKI FAKULTET. Zadaci za pripremu polaganja kvalifikacionog ispita iz Matematike. 1. Riješiti jednačine: 4

4.7. Zadaci Formalizam diferenciranja (teorija na stranama ) 343. Znajući izvod funkcije x arctg x, odrediti izvod funkcije x arcctg x.

RAČUNSKE VEŽBE IZ PREDMETA POLUPROVODNIČKE KOMPONENTE (IV semestar modul EKM) IV deo. Miloš Marjanović

2 tg x ctg x 1 = =, cos 2x Zbog četvrtog kvadranta rješenje je: 2 ctg x

Matematička analiza 1 dodatni zadaci

Prvi pismeni zadatak iz Analize sa algebrom novembar Ispitati znak funkcije f(x) = tgx x x3. 2. Naći graničnu vrednost lim x a

radni nerecenzirani materijal za predavanja R(f) = {f(x) x D}

Neka su A i B proizvoljni neprazni skupovi. Korespondencija iz skupa A u skup B definiše se kao proizvoljan podskup f Dekartovog proizvoda A B.

Kaskadna kompenzacija SAU

Verovatnoća i Statistika I deo Teorija verovatnoće (zadaci) Beleške dr Bobana Marinkovića

Determinante. Inverzna matrica

Klasifikacija blizu Kelerovih mnogostrukosti. konstantne holomorfne sekcione krivine. Kelerove. mnogostrukosti. blizu Kelerove.

SOPSTVENE VREDNOSTI I SOPSTVENI VEKTORI LINEARNOG OPERATORA I KVADRATNE MATRICE

VJEŽBE 3 BIPOLARNI TRANZISTORI. Slika 1. Postoje npn i pnp bipolarni tranziostori i njihovi simboli su dati na slici 2 i to npn lijevo i pnp desno.

Jednodimenzionalne slučajne promenljive

III VEŽBA: FURIJEOVI REDOVI

PROBNI TEST ZA PRIJEMNI ISPIT IZ MATEMATIKE

Linearna algebra 2 prvi kolokvij,

Betonske konstrukcije 1 - vežbe 3 - Veliki ekscentricitet -Dodatni primeri

radni nerecenzirani materijal za predavanja

Prvi kolokvijum. y 4 dy = 0. Drugi kolokvijum. Treći kolokvijum

Iskazna logika 1. Matematička logika. Department of Mathematics and Informatics, Faculty of Science, University of Novi Sad, Serbia.

XI dvoqas veжbi dr Vladimir Balti. 4. Stabla

Riješeni zadaci: Nizovi realnih brojeva

Elektrotehnički fakultet univerziteta u Beogradu 17.maj Odsek za Softversko inžinjerstvo

ZANIMLJIVI ZADACI O BROJU 2014 (I)

Apsolutno neprekidne raspodele Raspodele apsolutno neprekidnih sluqajnih promenljivih nazivaju se apsolutno neprekidnim raspodelama.

RIJEŠENI ZADACI I TEORIJA IZ

Algoritmi i strukture podataka (450)

METODA SEČICE I REGULA FALSI

Algebarske strukture sa jednom operacijom (A, ): Ako operacija ima osobine: zatvorenost i asocijativnost, onda je (A, ) polugrupa

1. zadatak , 3 Dakle, sva kompleksna re{ewa date jedna~ine su x 1 = x 2 = 1 (dvostruko re{ewe), x 3 = 1 + i

Transcript:

Algoritmi i strukture podataka vežbe 1 Mirko Stojadinović 6. oktobar 2015 1 1 Složenost algoritama Postoje 3 mere na osnovu kojih se porede efikasnosti algoritama: 1. najgori mogući slučaj 2. prosečan slučaj 3. brzina izvršavanja na unapred odredenom skupu instanci (eng. benchmarks) Za merenje u druga 2 slučaja potrebno je imati više informacija o problemu: koji je to prosečan ulaz i koliko se često javlja, kakva je priroda problema i kakve instance problema se najčešće susreću. U prvom slučaju prednost je što se pomoću matematičkog proračuna često lako odredi efikasnost nekog algoritma; prvi način se pokazao dobar i zato je opšte prihvaćen. 1.1 Oznake O, Ω, Θ Veliko O notacija koristi se za procenu efikasnosti algoritama. Definicija 1: Neka su f :N N i g:n N proizvoljne funkcije argumenta n. Kažemo da je g(n)=o(f(n)) ako postoje pozitivne konstante c R i N N, takve da n N važi: g(n) c f(n). Napomena: U profesorovoj knjizi prethodna definicija je data za n > N (što je suštinski isto). Slika pokazuje odnos funkcija g(n) i f(n): g(n) ne raste brže od c f(n). Oznaka O(f(n)) u stvari se odnosi na klasu funkcija, tako da je g(n) = O(f(n)) drugi zapis za g(n) O(f(n)). Uočimo i da je O(1) oznaka za klasu ograničenih funkcija. Takode važi: O(f(n)) + O(g(n)) = O(f(n) + g(n)) O(f(n)) O(g(n)) = O(f(n) g(n)) Primer: 5n 2 + 8 = O(n 2 ) jer je 5n 2 + 8 11 2 n2 za n 4, tj. c = 11 2, N = 4. 1 Materijali velikim delom preuzeti od Jelene Hadži-Purić: www.math.rs/~jelenagr 1

Dakle, kada je potrebno dokazati da jedna funkcija pripada nekoj klasi funkcija, traže se konstante c i N da bude zadovoljena nejednakost. Prvo se traži c, a potom dovoljno veliko N. Obično postoji veliki (neograničen) broj kombinacija c i N pomoću kojih se može dokazati tvrdenje. Funkcije se smeštaju u različite klase u zavisnosti od njihove brzine rasta. U prethodnom primeru se pokazuje da funkcija 5n 2 + 8 ne raste brže od 6 n 2. Vidimo da nam multimplikativne konstante ne igraju bitnu ulogu, pa ćemo uvek umesto O(a n + b) koristiti O(n), gde su a i b proizvoljne konstante (isto važi za O(n 2 ), O() itd). Osnova logartima nam nije bitna, što sledi iz jednakosti log a n = log a (b logbn ) = log b n log a b = log b n c, gde log a b menjamo oznakom c za konstantu. Definicija 2: Neka su f :N N i g:n N proizvoljne funkcije argumenta n. Kažemo da je f(n) asimptotska donja granica funkcije g(n) i pišemo g(n) = Ω(f(n)) ako postoje pozitivne konstante c R i N N, takve da n N važi: g(n) c f(n). Definicija 3: Ako za funkcije f(n) i g(n) istovremeno važi g(n) = O(f(n)) i g(n) = Ω(f(n)) onda pišemo g(n) = Θ(f(n)). 1. Dokazati da važi: T (n) = 2n 2 + n 1 = Θ(n 2 ) DOKAZ: Potrebno je dokazati da postoje konsante c 1, c 2, N, takve da n N važi: c 1 n 2 2n 2 + n 1 c 2 n 2, to jest c 1 2 + 1 n 1 n 2 c 2 Pronalazimo prvo konstante c 1 i N 1 za koje je zadovoljena leva nejednakost, pa konstante c 2 i N 2 za koje je zadovoljena desna nejednakost. Odatle dobijamo c 1, c 2 i N = max{n1, N2. Jedno rešenje je c 1 = 2, c 2 = 3, N = 1. 2. Dokazati da važi:17n log 2 n 23n 10 = Θ(n log 2 n) DOKAZ: Potrebno je dokazati da postoje konsante c 1, c 2, N tako da n N važi: c 1 n log 2 n 17n log 2 n 23n 10 c 2 n log 2 n, to jest c 1 17 23 log 2 n 10 n log 2 n c 2 Poslednja nejednakost važi za c 1 = 4, c 2 = 17, N = 4. Obrazložiti zašto nejednakost važi. 1.2 Broj koraka Svaku od osnovnih operacija (sabiranje, oduzimanje, množenje, deljenje, povećanje za jedan, dodela, poredenje, šiftovanje) ćemo radi jednostavnosti smatrati jednim korakom. Veliko O notacija je nastala za potrebe matematike, ali se danas dosta koristi i u algoritmici da bi se izrazila procena zauzeća memorije ili vreme izvršavanja algoritma. Postavlja se pitanje da li je opravdano koristiti je zbog zanemarivanja multiplikativnih konstanti ali sledeći razlozi govore u prijenom korišćenju: 1. jednostavna je za korišćenje. 2. konstantni faktori se mogu zanemarivati jer se prilikom konkretne implementacije pseudokoda brojevi koraka menjaju u zavisnosti od toga koji se programski jezik koristi, koji programer piše kod, itd. 3. iako ne oponaša efikasnost na malim dimenzijama, ona sa velikom preciznošću pokazuje efikasnost algoritma kada veličina ulaza (broj n) postane velika. To i jeste interesantno jer se na malim ulazima svi algoritmi brzo izvršavaju. 3. Odrediti vreme izvršavanja sledećeg programskog fragmenta. Rešenje prikazati polinomijalnim izrazom i u O notaciji. for (i=1; i<=n; i++) suma = suma + i; 2

Rešenje: i=1 - izvršava se 1 korak i<=n - izvršava se n+1 put (n puta je ispunjen uslov ulaska u petlju, ali n+1. put nije) i++ - izvršava se n puta (onoliko puta koliko se ude u petlju) suma = suma + i - izvršava se n puta, sadrži 2 operacije, sabiranje i dodelu, pa sadrži ukupno 2n koraka Dakle ukupno: 1 + n+1 + n + 2n = 4n + 2 koraka, što je u O notaciji O(n). 4. Odrediti vreme izvršavanja sledećeg programskog fragmenta. Rešenje prikazati polinomijalnim izrazom i u O notaciji. i=0; k=1; while (k<=n) { k = 2*k; i = i+1; Rešenje: Broj koraka je 1 + 1 + log 2 n + 2 + 4( log 2 n + 1) = 8 + 5 log 2 n što je u O notaciji O() (oznaka k se odnosi na najveći ceo broj manji ili jednak od realnog broja k, npr. 2.12 =2, 3 =3). 1.3 Klase složenosti Cilj nam je da za svaki problem napišemo što je efikasniji alogritam i procenimo njegovu složenost u O notaciji. Algoritmi se grubo mogu podeliti u sledeće klase složenosti (n je veličina ulaza): konstantna složenost (O(1)). Ovo znači da algoritam uopšte ne zavisi od dimenzije ulaza n. Idealan slučaj koji se retko javlja u praksi (npr. pristup prvom elementu liste). sublinearna složenost (npr. O(), O( n)). Ovo je klasa vrlo efikasnih algoritama kod kojih je vreme izvršavanja manje od vremena potrebnog da se pročita ulaz (O(n)). Primer je binarna pretraga. linearna složenost (O(n)). Ovo su efikasni algoritmi. Vreme izvršavanja je u rangu vremena potrebnog da se pročita ulaz. Primer je linearna pretraga. superlinearna složenost (npr. O(n ), O(n 2 )). Ovi algoritmi se smatraju dovoljno dobrim za implementaciju na računaru. eksponencijalna složenost (npr. O(2 n ), O(n n )). Njihova implementacija je nepraktična za veće dimenzije ulaza n. Pogledati grafike prethodnih funkcija. 1.4 Rekurentne relacije Detaljno objašnjenje za rešavanje diferencnih jednačina naći u profesorovoj knjizi. 5. Rešiti diferencnu jednačinu T (n) = 3T (n 1) + 2 za n 2, T (1) = 1 Rešenje: Ovo nije homogena linearna diferencna jednačina pa je moramo transformisati u taj oblik. To ćemo postići oduzimanjem date jednačine od jednačine za računanje n-1. člana niza: T (n 1) = 3T (n 2)+2. Dobijamo jednačinu: T(n)-4T(n-1)+3T(n-2)=0 Rešavamo odgovarajuću karakterističnu jednačinu r 2 4r + 3 = 0 i dobijamo da su rešenja: r 1 = 3 i r 2 = 1. Rešenje tražimo u obliku: T (n) = k i=1 c iri n. U našem slučaju je k=2, pa je rešenje oblika T (n) = c 1 3 n + c 2 1 n = c 1 3 n + c 2 Da bismo našli c 1 i c 2 potrebne su nam dve jednačine. Iz početne jednačine dobijamo T(2)=5, pa imamo sistem: 3c 1 + c 2 = 1 9c 1 + c 2 = 5 Rešavanjem dobijamo c 1 = 2 3, c 2 = 1, tj. rešenje je T (n) = 2 3 n 1 1. 3

6. Rešiti diferencnu jednačinu T (n) = 5T (n 1) 8T (n 2) + 4T (n 3) za n 4, pri čemu je dato da je T(1)=2, T(2)=4, T(3)=12. Rešenje: Ovo je već homogena jednačina pa rešavamo karakterističnu jednačinu Dobijamo r 1 = 1, r 2 = 2, r 3 = 2. Rešenje tražimo u obliku r 3 5r 2 + 8r 4 = 0. (videti knjigu za detaljno objašnjenje), tj. T (n) = c 1 r n 1 + (c 2 + c 3 n)r n 2 T (n) = c 1 + (c 2 + c 3 n)2 n. Za ovo su nam potrebne 3 jednačine, koje dobijamo iz uslova T(1)=2, T(2)=4, T(3)=12. Na kraju dobijamo rešenje T (n) = 4 + ( 2 + n)2 n 7. Odrediti broj koraka sledećeg pseudokoda: Algoritam Fibonaci (n) Ulaz ceo broj n Izlaz n-ti član Fibonačijevog niza { if (n > 2) return Fibonaci (n-1) + Fibonaci (n-2); else return 1; Ideja rešenja: Postaviti diferencnu jednačinu i rešiti je. Obraditi n 1 i n 2 kao dve posebne naredbe. Zadatak uraden u profesorovoj knjizi, sa modifikacijom da se traži vrednost n-tog člana niza. NAPOMENA: Lako se može proveriti da li je dobijeno dobro rešenje diferencne jednačine tako što se pomoću rekurentne formule i pomoću rešenja izračunaju npr. T (2), T (3), T (4),... i proveri da li se dobijaju iste vrednosti. 8. Dati primer algoritma čija se složenost izračunava pomoću formule T (n) = T (n 1) + c, gde je c neka konstanta. Naći rešenje ove jednačine za c = 3 i T (1) = 2. 1.5 Zadaci za vežbu 9. Sledećih 9 funkcija poredati u niz f 1, f 2,..., f 9 tako da za svako i = 1..8 važi f i = O(f i+1 ): (a) n n 2 n n n n 3 + 7n 5 n 2 + n 2 n 3 (b) n 1/3 + () 2 n! ln n n log ( 1 3 )n ( 3 2 )n 6. Rešenje: U više slučajeva treba koristiti da n α brže raste od () β kad god je α, β > 0. Na primer, poredenje funkcija n n i je ekvivalentno poredenju n n i, to je ekvivalentno poredenju n i n, a to poredenju i n = n 1/2. Na osnovu gornje nejednakosti sledi da druga raste brže od prve. Rešenje kada su sve funkcije uključene: ( 1 3 )n 6 log ln n () 2 + n 1/3 n n n n n 2 n 2 + n 3 n n 3 + 7n 5 ( 3 2 )n 2 n n!. 10. Za svaki par funkcija f(n) i g(n) važi ili f(n) = O(g(n)) ili g(n) = O(f(n)). Odrediti koja od ove 2 relacije važi i pokazati zašto važi. (a) f(n) = n2 n 2, g(n) = 6n. (b) f(n) = n + 2 n, g(n) = n 2. (c) f(n) = n +, g(n) = n n. 4

11. Odrediti vreme izvršavanja sledećeg programskog fragmenta. Rešenje prikazati polinomijalnim izrazom i u O notaciji. Smatrati da će se kod uslova unutrašnje petlje inicijalizacija n-1 izvršiti pre nego što se prvi put ude u tu pelju, tj. izvršiće se svaki put kada se tačno onoliko puta koliko i inicijalizacija j=0. for (i=0; i<n; i++) for (j=0; j<n-1; j++){ pom = i + j; s = s + pom; 12. Rešiti diferencnu jednačinu T (n) = 3T (n 1) 15 za n 2, T (1) = 8. 13. Rešiti diferencnu jednačinu T (n) = T (n 1) + n 1 za n 2, T (1) = 2 (Upustvo: 2 puta ponoviti postupak iz zadatka 6). Rešenje: T (n) = 2 1 2 n + 1 2 n2. 14. Pokazati da važi: (a) a k n k +... + a 1 n + a 0 = O(n k ). (b) n k O(n k 1 ). (c) 2 10n O(2 n ). (d) max(f, g) = θ(f + g) 15. Da li je tačno sledeće tvrdenje: ako f(n) = O(n) onda f(n) = O(n 2 )? 5