2015_k2_z12.dvi

Слични документи
Algoritmi SŠ P1

Programiranje 1 drugi kolokvij, 2. veljače Ime i prezime: JMBAG: Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanje,

JMBAG IME I PREZIME BROJ BODOVA 1. (ukupno 6 bodova) MJERA I INTEGRAL 1. kolokvij 4. svibnja (Knjige, bilježnice, dodatni papiri i kalkulatori n

Programiranje 2 popravni kolokvij, 15. lipnja Ime i prezime: JMBAG: Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanj

Microsoft Word - 15ms261

(Microsoft Word - MATB - kolovoz osnovna razina - rje\232enja zadataka)

Grupiranje podataka: pristupi, metode i primjene, ljetni semestar 2013./ Standardizacija podataka Predavanja i vježbe 8 Ako su podaci zadani

1 jmbag ime i prezime Programiranje 2 prvi kolokvij, Rezultati i uvidi u kolokvije: Rezultati u petak, 3.5., navečer na webu, a uvidi u p

Numerička matematika 11. predavanje dodatak Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb NumMat 2019, 11. p

Oblikovanje i analiza algoritama 4. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb OAA 2017, 4. pr

(Microsoft Word - Dr\236avna matura - studeni osnovna razina - rje\232enja)

(Microsoft Word - Dr\236avna matura - kolovoz ni\236a razina - rje\232enja)

Uvod u računarstvo 2+2

1 MATEMATIKA 1 (prva zadaća) Vektori i primjene 1. U trokutu ABC točke M i N dijele stranicu AB na tri jednaka dijela. O

SKUPOVI TOČAKA U RAVNINI 1.) Što je ravnina? 2.) Kako nazivamo neomeđenu ravnu plohu? 3.) Što je najmanji dio ravnine? 4.) Kako označavamo točke? 5.)

Celobrojno programiranje Rešavamo sledeći poblem celobrojnog programiranja: min c T x Ax = b x 0 x Z n Gde pretpostavljamo da je A celobrojna matrica

Microsoft Word - 12ms121

Oblikovanje i analiza algoritama 5. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb OAA 2017, 5. pr

Programiranje 1 9. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2018, 9. predavanje p. 1/6

SVEUČILIŠTE U ZAGREBU PRIRODOSLOVNO MATEMATIČKI FAKULTET MATEMATIČKI ODSJEK Ivana Šore REKURZIVNOST REALNIH FUNKCIJA Diplomski rad Voditelj rada: doc.

Microsoft Word - 24ms221

6-8. ČAS Celobrojno programiranje Rešavamo sledeći poblem celobrojnog programiranja: Gde pretpostavljamo da je A celobrojna matrica dimenzije,. Takođe

JMBAG IME I PREZIME BROJ BODOVA MJERA I INTEGRAL 2. kolokvij 29. lipnja (Knjige, bilježnice, dodatni papiri i kalkulatori nisu dozvoljeni!) 1. (

Microsoft Word - predavanje8

(Microsoft Word - Dr\236avna matura - svibanj osnovna razina - rje\232enja)

Microsoft PowerPoint - C-4-1

Numeričke metode u fizici 1, Projektni zadataci 2018./ Za sustav običnih diferencijalnih jednadžbi, koje opisuju kretanje populacije dviju vrs

Državna matura iz informatike

(Microsoft Word vje\236ba - LIMES FUNKCIJE.doc)

Microsoft Word - 6ms001

Tutoring System for Distance Learning of Java Programming Language

Microsoft Word - Rjesenja zadataka

Sadržaj 1 Diskretan slučajan vektor Definicija slučajnog vektora Diskretan slučajan vektor

Microsoft Word - NULE FUNKCIJE I ZNAK FUNKCIJE.doc

(Microsoft Word - Rje\232enja zadataka)

Funkcije predavač: Nadežda Jakšić

JMBAG IME I PREZIME BROJ BODOVA MJERA I INTEGRAL završni ispit 6. srpnja (Knjige, bilježnice, dodatni papiri i kalkulatori nisu dozvoljeni!) 1.

8. razred kriteriji pravi

Microsoft Word - IZVODI ZADACI _2.deo_

8 2 upiti_izvjesca.indd

ŽUPANIJSKO NATJECANJE IZ MATEMATIKE 28. veljače razred - rješenja OVDJE SU DANI NEKI NAČINI RJEŠAVANJA ZADATAKA. UKOLIKO UČENIK IMA DRUGAČIJI

Dinamičko programiranje Primer 1: Za dati niz naći njegov najduži neopadajući podniz. Defnicija: podniz nekog niza je niz koji se dobija izbacivanjem

(Microsoft Word - 1. doma\346a zada\346a)

Programiranje 2 0. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 0. predavanje p. 1/4

Programiranje 1 IEEE prikaz brojeva sažetak Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2018, IEEE p

Elementarna matematika 1 - Oblici matematickog mišljenja

PLAN I PROGRAM ZA DOPUNSKU (PRODUŽNU) NASTAVU IZ MATEMATIKE (za 1. razred)

Dvostruki integrali Matematika 2 Erna Begović Kovač, Literatura: I. Gusić, Lekcije iz Matematike 2

PowerPoint Presentation

Programski jezik QBasic Kriteriji ocjenjivanja programiranje(b) - QBasic razred 42

Programski jezik QBasic Kriteriji ocjenjivanja programiranje(b) - QBasic razred 42

Microsoft Word - ASIMPTOTE FUNKCIJA.doc

Problemi zadovoljavanja ogranicenja.

Programiranje 2 1. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 1. predavanje p. 1/7

1 Konusni preseci (drugim rečima: kružnica, elipsa, hiperbola i parabola) Definicija 0.1 Algebarska kriva drugog reda u ravni jeste skup tačaka opisan

Konstrukcija i analiza algoritama vežbe 10 Nina Radojičić 15. decembar Algoritamske strategije - podeli pa vladaj (divide and conquer) Ova stra

Skalarne funkcije više varijabli Parcijalne derivacije Skalarne funkcije više varijabli i parcijalne derivacije Franka Miriam Brückler

(Microsoft Word - Dr\236avna matura - lipanj osnovna razina - rje\232enja)

Optimizacija

Univerzitet u Novom Sadu Tehnički fakultet Mihajlo Pupin Zrenjanin Seminarski rad Predmet: Konkuretno programiranje doc. dr Dejan Lacmanovic Zorica Br

Slide 1

(Microsoft Word - Dr\236avna matura - rujan osnovna razina - rje\232enja)

Microsoft Word - Mat-1---inicijalni testovi--gimnazija

Microsoft PowerPoint - 03-Slozenost [Compatibility Mode]

7. predavanje Vladimir Dananić 14. studenoga Vladimir Dananić () 7. predavanje 14. studenoga / 16

Logičke izjave i logičke funkcije

knjiga.dvi

Hej hej bojiš se matematike? Ma nema potrebe! Dobra priprema je pola obavljenog posla, a da bi bio izvrsno pripremljen tu uskačemo mi iz Štreberaja. D

3. Neprekinute funkcije U ovoj to ki deniramo neprekinute funkcije. Slikovito, graf neprekinute funkcije moºemo nacrtati a da ne diºemo olovku s papir

P11.3 Analiza zivotnog veka, Graf smetnji

Matematika 1 - izborna

MAT B MATEMATIKA osnovna razina MATB.38.HR.R.K1.20 MAT B D-S

(Microsoft Word - Dr\236avna matura - lipanj osnovna razina - rje\232enja)

Програмирај!

Newtonova metoda za rješavanje nelinearne jednadžbe f(x)=0

MATEMATIKA viša razina MATA.29.HR.R.K1.24 MAT A D-S MAT A D-S029.indd :30:29

(Microsoft Word - Dr\236avna matura - kolovoz osnovna razina - rje\232enja)

Sveučilište u Zagrebu Fakultet prometnih znanosti Zavod za inteligentne transportne sustave Katedra za primijenjeno računarstvo Vježba: #7 Kolegij: Ba

(Microsoft Word - Dr\236avna matura - kolovoz osnovna razina - rje\232enja)

Programiranje 1

Natjecanje 2016.

(Microsoft Word - Dr\236avna matura - lipanj vi\232a razina - rje\232enja)

Slide 1

PowerPoint Presentation

Microsoft Word - KVADRATNA FUNKCIJA.doc

Infokup - Školsko Osnovne škole Algoritmi BaPaCpp

Matrice. Algebarske operacije s matricama. - Predavanje I

Funkcije predavač: Nadežda Jakšić

Algebarski izrazi (4. dio)

Рачунарска интелигенција

Pripreme 2016 Indukcija Grgur Valentić lipanj Zadaci su skupljeni s dva predavanja na istu temu, za učenike od prvog do trećeg razreda i za MEMO

2. Globalna svojstva realnih funkcija Denicija 2.1 Za funkciju f : A kaemo da je:! R; A R ome dena odozgor ako postoji M 2 R takav da je (8x 2 A) (f (

(Microsoft Word - Dr\236avna matura - lipanj osnovna razina - rje\232enja)

Računarski praktikum I - Vježbe 09 - this, static

(Microsoft Word - Dr\236avna matura - svibanj vi\232a razina - rje\232enja)

ЕКОНОМСКИ ФАКУЛТЕТ УНИВЕРЗИТЕТА У ПРИШТИНИ КОСОВСКА МИТРОВИЦА

Računarski praktikum I - Vježbe 07 - Podstrukture, const, reference

ALIP1_udzb_2019.indb

Test ispravio: (1) (2) Ukupan broj bodova: 21. veljače od 13:00 do 14:00 Županijsko natjecanje / Osnove informatike Osnovne škole Ime i prezime

Транскрипт:

OBLIKOVANJE I ANALIZA ALGORITAMA 2. kolokvij 27. 1. 2016. Skice rješenja prva dva zadatka 1. (20) Zadano je n poslova. Svaki posao je zadan kao vremenski interval realnih brojeva, P i = [p i,k i ],zai = 1,...,n,gdjejep i početak, ak i kraji-togposla. Pretpostavljamo da svi poslovi imaju pozitivno trajanje, tj. da je p i < k i, za i = 1,...,n. Različiti poslovi smiju imati presjek pozitivne duljine (trajanja). Ove poslove treba rasporediti na m izvršitelja, i to tako da se poslovi koje radi svaki pojedini izvršitelj smiju preklapati u samo jednoj točki (kraj jednog posla smije biti početak drugog posla). Možete zamisliti da jedan posao predstavlja nastavu iz nekog kolegija (zadanu početkom i krajem), a izvršitelji su predavaonice u koje treba rasporediti svu zadanu nastavu, tako da nema preklapanja nastave ni u jednoj predavaonici. (a) Koliki je najmanji broj izvršitelja m P potreban da se korektno izvrše svi poslovi, uz zadani uvjet? Precizno argumentirajte! Sastavite algoritam koji, za zadani niz poslova P, nalazi i vraća najmanji potreban broj izvršitelja m P. Nadite složenost tog algoritma u ovisnosti o n. Zadan je niz poslova P i raspoloživi broj izvršitelja m. Izvršitelje numeriramo brojevima od 1 do m, a posao P i dodjeljujemo izvršitelju j, tako da u izlaznom polju radi postavimo radi[i] = j. (b) Sastavite algoritam koji rasporeduje zadane poslove na zadani broj izvršitelja, takodavraćapoljeradi odnelemenata. Akojem m P, algoritamtrebaiskoristiti samo prvih m P izvršitelja. U protivnom, za m < m P, onim poslovima P i koje nije moguće izvršiti treba postaviti radi[i] = 0. Nije potrebno minimizirati broj ili trajanje poslova koje je nemoguće izvršiti (samo ih označite). Nadite složenost tog algoritma u ovisnosti o n. Napomena: oba algoritma morajuimati složenost O(n 2 ) uovisnosti o n. Dozvoljeno je koristiti iste pomoćne algoritme (funkcije) u oba algoritma (ne treba ih dva puta pisati, jednom je dovoljno). Rješenje. (a) Koliko izvršitelja trebamo? Gledamo bilo koji vremenski trenutak t izmedu najranijeg početka i najkasnijeg kraja. Izbrojim u koliko intervala se t nalazi (recimo, ne brojim interval ako mu je t krajnja točka). Onda nadem maksimum po svim tako dobivenim brojevima, za sve t-ove. Naravno, to ne ide algoritamski t-ova je (neprebrojivo) beskonačno. Dovoljno je gledati samo rubove svih intervala u koliko intervala se oni nalaze. Dakle, dovoljno za t-ove uzeti točke p i, k i, za i = 1,...,n (njih je 2n, tj. konačno mnogo). Kod pripadnog brojanja u koliko intervala se točka nalazi, treba samo paziti na to da presjek bude pozitivne duljine (recimo, intervale treba gledati kao poluotvorene početak mu pripada, a kraj ne).

Baš zbog toga, čini se da je zgodnije zaista gledati presjeke intervala, tj. brojati presjeke pozitivne duljine. Oprez kad prelazim na presjeke intervala, ne valja brojati ovako: Za dani P i, pogledam broj svih intervala P j, uz j i, takvih da je presjek P i i P j pozitivne duljine (i još dodam 1, za sam P i ). Naime, P i moze sijeći dva intervala koji se medusobno ne sijeku, pa je dovoljno 2 izvršitelja (predavaonice), a ne 3. Kako treba gledati? Odgovor = točno onako kako bih punio predavaonice na ruke. 1. Sortirati sve intervale uzlazno po vremenu pocetka p i. Nakon toga prolazim po P i u tom uzlaznom poretku. 2. Za svaki i (idemo od 1 do n), nadem broj m i = s koliko prethodnih intervala P j (j i), interval P i ima neprazan presjek (pozitivne duljine) tu brojim i njega samog! Ova funkcija za presjek s prethodnima se lako napiše. Nadem m P = maksimum od m i, po svim i = 1,...,n. To je najmanji broj izvršitelja. Očito je da manje ne može. Tvrdim da je to dovoljno, tj. da s m P ide. Dokaz ide algoritmom za raspored (pretpostavljamo da su P i već sortirani). U nastavku su dvije varijante algoritma (bitna razlika je u poretku petlji). (b1) Varijanta 1: Imam jedno polje kraj, u kojem pamtim trenutni kraj aktivnosti za k-tog izvršitelja (do tada). Inicijaliziram broj izvršitelja kmax na 1 i njegov kraj na kraj prvog posla P 1, tj. stavim kraj[kmax] = 1. Petlja po poslovima P i, za i = 2,...,n: Stavi radi[i] = 0; Nadi slobodnog izvršitelja medu postojećim, tj. za k = 1,...,kmax Ako je kraj[k] početak p i // dodijeli ga k-tom radi[i] = k; kraj[k] = k i ; break; Ako je (nakon petlje) radi[i] = 0, onda treba novi izvršitelj (ako ga ima) Ako je kmax < m onda // ima još izvršitelja kmax++; radi[i] = kmax; kraj[kmax] = k i ; // kraj petlje po i Ako je radi[i] = 0 nakon prve petlje, to upravo znači da P i ima presjek pozitivne duljine s točno kmax prethodnih intervala (onih s j < i) i onda nam treba novi izvršitelj (to je onaj +1 za njega samog). Potreban broj izvršitelja je m P = kmax. (b2 Varijanta 2: Inicijalizacija = svima stavim radi[i] = 0, za i = 1,..., n. Okrenem petlje, tako da vanjska ide po izvršiteljima. Onda nam ne treba cijelo polje kraj (za sve izvršitelje), već je dovoljna jedna varijabla kraj, koja pamti kraj za trenutnog izvršitelja. Varijabla ima nerasp (logičkog tipa) pamti ima li još nerasporedenih poslova ili ne.

Petlja po izvršiteljima, za k = 1,...,m ima nerasp = false; Petlja po poslovima P i, za i = 1,...,n: Ako je radi[i] = 0 // nerasporeden Ako je ima nerasp = false // ovo je prvi takav radi[i] = k; kraj (k-tog) = k i ; ima nerasp = true; else // nije prvi takav Ako mu je p i kraj rasporedi ga na k-tog (inače ga preskoči) radi[i] = k; kraj (k-tog) = k i ; // kraj petlje po i Ako je ima nerasp = false m P = k 1; break; // prekid petlje po k // kraj petlje po k Može i malo elegantnije, tako da brojim sve do tada rasporedene (kad ga rasporedim, povećam globalni brojac za 1). Ako je taj broj = n (na kraju petlje za dani k), onda stavim m P = k i break.

2. (30) Promatramo problem segmentnih najmanjih kvadrata : zadan je niz od n točaka u ravnini, P = (P 1,...,P n ), gdje je P i = (x i,y i ), za i = 1,...,n, s tim da je x 1 < x 2 < < x n. Ovaj niz treba podijeliti (particionirati) u neki broj segmenata. Svaki segment je neki podniz uzastopnih točaka iz P (gledano po indeksima ili x-koordinatama), tj. dovoljno je gledati prvu i zadnju točku Segment smije biti i jednočlan. S i,j = (P i,p i+1,...,p j 1,P j ), i j. Ideja je naći takvu particiju zadanih točaka da točke u svakom pojedinom segmentu približno leže na istom pravcu, a ti pravci se smiju razlikovati za razne segmente. Svakom segmentu S i,j pridružen je realni broj e i,j 0, kojeg možemo interpretirati kao grešku najbolje aproksimacije pripadnih točaka iz S i,j na primjer, pravcem po metodi najmanjih kvadrata. Grešku e i,j dobivamo pozivom funkcije err na sljedeći način e i,j = err(i,j,p), i j. Funkciju ne treba napisati! Pretpostavljamo da je složenost ovog poziva linearna u broju točaka u segmentu, tj. Θ(j i+1). Segmenti u nekoj particiji od P moraju sadržavati sve točke iz P i ne smiju se sjeći. ZabilokojuparticijuodP, kaznenafunkcija teparticijedefinirasekaozbroj grešaka po svim segmentima u toj particiji i tom zbroju još dodamo kazneni član = broj segmenata u particiji, pomnožen s unaprijed zadanom realnom konstantom C > 0. Broj C je kazna za lomljenje jednog komada pravca u dva komada (bez te kazne, segmentima duljine najviše 2, dobivamo ukupnu grešku nula). Sastavite algoritme koji nalaze: (a) najmanju vrijednost kaznene funkcije po svim particijama od P, (b) neku particiju koja daje najmanju vrijednost kaznene funkcije (dovoljno je vratiti broj segmenata u toj particiji i indekse početnih točaka tih segmenata, uzlazno ili silazno sortirano). Složenost ovih algoritama mora biti polinomna u n. Analizirajte složenost algoritama i pokažite da zadovoljavaju ovaj uvjet. Uputa: Iskoristite dinamičko programiranje, tj. nadite rekurziju za minimalnu vrijednost kaznene funkcije na odgovarajućim potproblemima. U algoritmima iskoristite memoizaciju = pamćenje poznatih najmanjih vrijednosti kaznene funkcije za potprobleme. Rješenje. Prema uputi, rješenje ide dinamičkim programiranjem. Prvo parametriziramo problem, tako da uvijek krećemo od prve točke P 1, idemo redom po zadanim točkama, do točke P j, tj. imamo varijabilni kraj. Za 1 j n, definiramo opt(j) = minimum kaznene funkcije na potproblemu za točke P 1,...,P j, tj. zadnji segment u particiji završava u točki P j.

Ako je zadnji segment u optimalnoj particiji za potproblem do P j jednak S i,j (pokriva točke od P i do P j ), onda je (princip optimalnosti) opt(j) = e i,j +C +opt(i 1), tj. morao sam optimalno stići do P i 1, inače ne može biti optimalno do točke P j (jer je iza P i 1 ). Inicijalizacija je opt(0) = 0. Sad minimiziram gornji izraz po svim mogućim vrijednostima za i, tj. po i = 1,...,j. Onaj indeks i na kojem se minimum dostiže zadnji segment mora biti S i,j. (a) Dalje je očito petlja po j od 1 do n, uz pamćenje optimalne vrijednosti (memoizacija za potprobleme), tj. redom računamo tablicu vrijednosti opt(j), za sve j. Rezultat je opt(n). Složenost je sigurno u O(n 3 ). (b) Ovdje treba, za svaki j, pamtiti i pripadni indeks i = i j, na kojem se dostiže minimum za opt(j).