230 likes | 426 Views
STRATEGIJA PODELI-I-SAVLADAJ. I DEO. O podeli-i-savladaj strategiji. Strategija podeli-i-savladaj se sastoji u sledećem Opšti problem delimo na podprobleme koji su sami po sebi samo manje instance, istog tipa, tog opšteg problema Rekurzivno rešavamo te podprobleme
E N D
O podeli-i-savladaj strategiji • Strategija podeli-i-savladaj se sastoji u sledećem • Opšti problem delimo na podprobleme koji su sami po sebi samo manje instance, istog tipa, tog opšteg problema • Rekurzivno rešavamo te podprobleme • Na pogodan način kombinujemo njihova rešenja • Na samom kraju rekurzije podproblemi su toliko mali da je njihovo rešenje neposredno
Opet o množenju brojeva • Na ranijim predavanjima dali smo algoritam za množenje brojeva koji radi u kvadratnom vremenu u odnosu na broj bitova tih brojeva • Ovde ćemo dati jedno poboljšanje tog algoritma, upotrebom strategije podeli-i-savladaj • Gausov trik: naizgled, kod proizvoda kompleksnih brojeva su neophodna četiri množenja realnih brojeva. Međutim, Gaus je uočio da se broj množenja može redukovati na tri:, i , jer je
Opet o množenju brojeva (nastavak) • Ovakvo poboljšanje možda izgleda skromno, ali kada se primeni rekurzivno može biti veoma značajno • Neka su data dva -bitna broja i , i jednostavnosti radi, pretpostavimo da je neki stepen broja • Prepolovimo i na po dva -bitna broja • Proizvod se sada može zapisati u obliku
Opet o množenju brojeva (nastavak) • Sabiranje je linearno, kao i množenje stepenima broja (levi šiftovi) • Značajne operacije su četiri -bitna množenja: • Dakle, problem veličine smo sveli na 4 problema veličine • Ako je vreme realizacije množenja -bitnih brojeva, onda je • Kasnije ćemo videti da iz ovog sledi da ovakav algoritam radi u vremenu , što je isto vreme kao i za raniji standardni algoritam • Gausovtrik: dovoljnasu 3 množenja jer
Opet o množenju brojeva (nastavak) • Sada je (jer brojevi i mogu biti dugi -bita), i dobijamo bolje vreme ovde se ne zahteva da budestepenbroja 2, već se i dele na dva dela koja ne moraju biti jedna-kih dužina, levi deo može biti za jednu cifru duži
Stablopodproblema veličina problema faktor grananja – faktor smanjenja veličine dubina stabla širina stabla
Master teorema • Opšti šablon podeli-i-savladaj algoritama: • problem veličine delimo na podproblema veličine • kombinujemo rešenja tih podproblema u vremenu • Prema tome, vreme rada algoritma može se izraziti jednačinom Master teorema:Ako je , za neke konstante , i , tada je
Dokaz Master teoreme Dokaz: Ne umanjujući opštost dokaza možemo uzeti da je stepen broja . U tom slučaju na prvom nivou imamo da je . Ako ovu formulu primenimo na dobijamo odakle sledi da je i nastavljajući dalje isti postupak, posle koraka dobijamo da je Postupak se završava kada bude (toliko je nivoa u stablu).
Dokaz Master teoreme(nastavak) Dakle, na kraju, za ,imamo da je (vreme kombinovanja rešenja podproblema u poslednjem nivou) pa je Poslednja suma je suma geometrijskog niza i zavisi od količnika . Ako je (tj. ), tada je niz opadajući i u sumi dominira prvi član , što znači da je .
Dokaz Master teoreme(nastavak) Ako je (tj. ), onda je niz rastući i u sumi dominira poslednji član što znači da je Konačno, ako je (tj. ), onda imamo sumu jedinica, pa je (ovde se u logaritmu osnova može zameniti bilo kojom drugom osnovom, na primer osnovom , jer se i asimptotski isto ponašaju). Ovim je dokaz Master teoreme završen.
Napomena o logaritmima U dokazu Master teoreme koristili smo sledeće svojstvoalgoritama koje neposredno sledi iz poznatog svojstva promene osnove algoritma ili, ekvivalentno,
Binarno pretraživanje Binarno pretraživanje (binary search): Pronaći ključ u velikom fajlu koji sadrži ključeve sortiranepoveličini. Počinjemo tako što upoređujemo sa . U zavisnosti od dobijenih rezultata dalje procesiramnoilisamo prvu polovinu fajla ,ili samo drugu polovinu . Kako procesiramo samo jednu polovinu fajla, to faktor grananja iznosi , veličina problema se polovi, tj. a kombinovanje rešenja se realizuje u konstantnom vremenu , tj. . Dakle, prema Master teoremi, vreme realizacije algoritma iznosi .
Mergesort Problem: Sortirati listu brojeva. Ideja: Podeliti listu na dve polovine, rekurzivno sortirati svaku od njih, a zatim smešati (merge) te dve sortirane podliste. Ovde se javlja procedura merge koju posebno definišemo.
Mergesort (nastavak) Ovde kružić označava konkatenaciju. Jasno, faktor grananja je , veličina problema se polovi, tj. a rešenja se kombinuju procedurom mergekoja se realizuje u vremenu , tj. . Prema tome, algoritam radi u vremenu (to vreme je i optimalno).
Medijana Medijana (median) liste brojeva je broj te liste koji je u njoj srednji po veličini. Ukoliko je broj elemenata paran, onda postoje dva srednja elementa, pa se mo-žemo dogovoriti da, na primer, izaberemo manji od ta dva srednja elementa. Medijana nije isto što i srednja vrednost (mean, average), i njena prednost u mnogim primenama je u tome što je ona uvek jedna od vrednosti u listi. Medijanu bi mogli jednostavno izračunati tako što prethodno sortiramo listu. Međutim, u tom slučaju bi vreme realizacije bilo , a mi bi smo želeli da bude linearno (videćemo da je to izvodljivo). Opštiji problem je selekcija: U listi brojeva naći -ti najmanji element. Na primer, za je reč o najmanjem elementu, a za je reč o medijani.
Selekcija Za proizvoljan broj zamislimo da smo podelili listu na tri dela • - elementi manji od • - elementi jednaki (može ih biti više) • - elementi veći od Na primer, za listu i imamo Ako sada, na primer, želimo da nađemo osmi najmanji element u listi, onda treba da tražimo treći najmanji u listi , jer znamo da je . Drugim rečima, .
Selekcija (nastavak) U opštem slučaju Podliste , i mogu se izračunati iz u linearnom vremenu. Štaviše, to izračunavanje se može obaviti u mestu, bez alokacije nove memorije (vidi primer na sledećem slajdu). Napomenimo da broj biramo slučajnim izborom iz liste. Složenost ovog algoritma je linearna (to nećemo dokazivati).
Selekcija (primer) Izračunavanje podlisti , i krećemo sa pokazivačem na prvoj ćeliji proveravamo da li je broj u tekućoj ćeliji manji, veći ili jednak 5 ukoliko je broj manji od 5, onda se taj broj premešta u prvu ćeliju, sadržaj ćelija levo od nje se pomera za jedno mesto udesno, a pokazivač se takođe pomera za jedno mesto udesno ukoliko je broj veći od 5, onda se taj broj premešta u poslednju ćeliju, sadržaj ćelija desno od nje se pomera za jedno mesto ulevo, a pokazivač ostaje na istoj ćeliji ako je broj jednak 5, samo se pokazivač pomera zajedno mesto udesno
Matrično množenje Nekasu date dve matrice i . Njihovproizvod je treća matrica definisana sa Drugim rečima, je skalarni proizvod -te vrste matrice i -te kolone matrice
Strassenov algoritam Ako matrice i množimo po definiciji, jasno je da ćemo dobiti algo-ritam – imamo vrednosti u , i svaka od njih se računa u vremenu . Da li postoji bolji algoritam? Nemački matematičar Volker Strassen je 1969. godine predložio efikasniji algoritam, koji se svodi na podeli-i-savladaj strategiju. Strassen je primetio da se matrično množenje može obaviti po blokovima, tj. matrice i možemo razbiti na po četiri bloka (za parno ) i onda se njihov proizvod može predstaviti na sledeći način
Strassenov algoritam (nastavak) Ovde možemo razmišljati o podeli-i-savladaj strategiji: Imamo proizvod osam matrica, uz četiri sabiranja tih proizvoda, koja se realizuju u vremenu , pa je Međutim, prema Master teoremi, ovo vodi do istog vremena , kao i kod množenja po definiciji. Pa gde je onda Strassenov doprinos? Koristeći trik sličan Gausovom (mada mnogo manje očigledan) problem se može svesti na množenje samo sedammatrica!
Strassenov algoritam (nastavak) gde je U ovom slučaju je što daje vreme realizacije .