320 likes | 457 Views
Problem najbli@eg para ta^aka. Darko Sto { i }. or|e Dan~etovi }. Ugqe {a Panti }. Nikola Nestorovi }. Najbli`i par : Problem ra~unarske geometrije . Fundamentalan u mnogim aplikacijama . Od n objekata treba odrediti dva sa najmawim rastojawem izme|u wih .
E N D
Problem najbli@egparata^aka DarkoSto{i} • \or|eDan~etovi} Ugqe{a Panti} Nikola Nestorovi}
Najbli`i par: • Problem ra~unarskegeometrije. • Fundamentalan u mnogimaplikacijama. • Odnobjekatatrebaodreditidvasanajmawimrastojawemizme|uwih. • Oviobjektimogubiti, npr: • delovimikroprocesorskog ~ipa, • zvezde u galaksiji, • sistemizanavodwavawe… • Mi }emorazmotritisamojednuvarijantuovogproblema, kaopredstavnika {ire klase.
Problem najbli`egparata~aka: • Datje nbrojta~aka. • Prona}idveta~kekojesunajbli`ejednadrugoj. • U slu~aju da ima vi{e parovanajbli`ihta~aka, trebaihsveidentifikovati. Ulaz: • Skup od n ta~aka Izlaz: • Najbli`i par ta~aka (ili vi{e takvihparova)
AlgoritamBrute Force • Slo`enost: O(n2) Divide and Conquer algoritam • Slo`enost: O(n log n) • Podsetnik: zan = 1,000,000 • n2 = 1,000,000,000,000 • n log n = 20,000,000
Brute Force O(n2) algoritam u ravni(2-D)
Finding Closest Pair in 2-D • Ta~ka u 2-Dpredstavqaure|en par (x, y). • Rastojaweizme|udveta~ke: • Pi = (xi, yi); Pj = (xj, yj); • d(pi, pj) = sqrt((xi − xj)2 + (yi − yj)2) • Brute force algoritamporedirastojawaizme|usvakedveta~ake, ivra}a najmawe. • Savet: Mo`emodaizbegnemosuvi{no ra~unawekorenatako {to }emoupore|ivatikvadratrastojawa.
Brute Force Approach: Finding Closest Pair in 2-D Vremenskaslo`enost: BruteForce(P) mind ∞ for i 1 to n do for j 1 to n if i j do d ((xi−xj)2+(yi−yj)2) if d < mind then mind d mini i minj j return mind, p(mini, minj)
Divide and Conquer O(n log n) u ravni(2-D)
Closest Pair: Divide and Conquer Approach • Umesto da razmatramota~kejednupojednu, mo`emoskupta~aka da podelimonadvajednakadela. • Sortiramopremax-koordinati i podelimoravanpravomparalelnomsay-osom, koja deli skupnadvajednakadela. 6 11 16 4 7 12 15 14 1 3 8 10 13 2 9 5
Closest Pair: Divide and Conquer Approach • Neka je P skup ta~aka, inekaP1 i P2predstavqajudvaistobrojnapodskupa. • Neka je d1 minimalno rastojawe u P1, id2 minimalno rastojawe u P2. • Mo`e se pretpostaviti da je d1<d2. 16 6 11 4 14 15 7 1 12 3 8 10 13 2 9 5
Closest Pair: Divide and Conquer Approach • Potrebnoje ustanovitida li u P1 postoji ta~ka na rastojawu mawem od d1 od neke ta~ke u P2. • Dovoqno je razmatratita~ke u {irini2d1. • Ostale ta~ke ne mogubitinarastojawumawem od d1.
Iskoristi}emo ~iwenicuda je . • Neka je saypozna~enay-koordinatata~kep. • Konstrui{emopravougaonikvisinei {irine u suprotnojtraci.
Podelimogajednom vert. idvehorizontalnepravena6jednakihkvadratastranice0,7d1(kojima je dijagonalamawa od d1!). • Ta~kakandidatsay-koordinatomyqmoradazadovoqiiuslov|yp– yq| < d1, pa se moranalaziti u jednom od 6 kvadrata.
Closest Pair: Divide and Conquer Approach PodeliVladaj(P, l, r) if r – l < 3 then return BruteForce(P) q ¬é(l+r)/2ù dl ¬PodeliVladaj(P, l, q-1) dr ¬PodeliVladaj(P, q, r) d ¬ min(dl, dr) for i ¬ l to r do if P[q].x - d £ P[i].x £ P[q].x + dthen dodaj P[i] na S Sortiraj S po y-kordinati for j ¬ 1 to size_of(S)-1 do Proveri da li je neki od d(S[j],S[j]+1), ..., d(S[j],S[j]+7) manji od d, ako jeste postavi d kao najmanji return d
Closest Pair: Divide and Conquer Approach Vremenskaslo`enost: • Vremenskaslo`enostdivide and conquer algoritmamo`e se opisatirekurencijom: • Podela =O(1) • Kombinovawe = O(n log n) • Ovodaje: • Krajwevremeizvr{avawa: O(n log n)
Improved Version: Divide and Conquer Approach • Sortiratisveta~kepoxi y koordinatijednom. • Pre rekurzivnihpoziva, particioni{emosortiraneliste u dvesortiranepodlistezalevuidesnupolovinu, gde je potrebnovremeO(n) • Kadakombinujemo, prolazimokrozysortiranulistujednomibiramosveta~kekoje se nalaze u traci (2d {irine) okolinije, tako|e u vremenuO(n) • Nova rekurencija:
0 Ulaz: Skup ta~aka u ravni (2-D) 1. korak: Sortiramo ta~ke u 1-D
0 Sortiramo po X osi koriste}iquicksortilimergesort 4 9 13 6 2 14 11 7 3 10 5 1 8 12
0 2. korak: Podelimo ta~ke, npr.Nacrtamo pravu izme|u 7 i 8 4 9 13 6 2 14 11 7 3 10 5 1 8 12 Pod-problem 1 Pod-problem 2
0 Bezpodelemoralibismodaupore|ujemosvakuod14ta~akajednusadrugom. (n-1)n/2 = 13*14/2 = 91pore|ewe 4 9 13 6 2 14 11 7 3 10 5 1 8 12 Pod-problem 1 Pod-problem 2
0 Sadaimamodva pod-problemaduplomaweveli~ine. Dakle, trebanam2puta6*7/2pore|ewa, {to je ustvari42pore|ewa. re{ewed = min(d1, d2) 4 9 13 d1 6 2 d2 14 11 7 3 10 5 1 8 12 Pod-problem 1 Pod-problem 2
0 Sa samojednompodelom, brojpore|ewa je duplomawi. O~igledno, dobijamojo{ ve}u efikasnostakonastavimodadelimoi pod-probleme. d = min(d1, d2) 4 9 13 d1 6 2 d2 14 11 7 3 10 5 1 8 12 Pod-problem 1 Pod-problem 2
0 Ipak, {taakosudvenajbli`eta~keizrazli~itih pod-problema? 4 9 13 d1 6 2 d2 14 11 7 3 10 5 1 8 12 Pod-problem 1 Pod-problem 2
0 Primer gdeporedimota~keiz pod-problema 1 sata~kamaiz pod-problema2: 4 13 d1 6 2 d2 9 14 11 7 3 10 8 5 1 12 Pod-problem 1 Pod-problem 2
0 Mo`emodaporedimosamota~keunutarobele`enetrake. d = min(d1, d2) 4 9 d d 13 d1 6 2 d2 14 11 7 3 10 5 1 8 12 Pod-problem 1 Pod-problem 2
0 Korak 3: Ali, mo`emoidaiskoristimoprednostdeqewa pod-problema. 4 9 13 6 2 14 11 7 3 10 5 1 8 12
0 Dakle, nastavqamodadelimo pod-problemesvedoksvakiodwih ne postanetrivijalan, tj. potrebno je samojednopore|ewe. 4 9 13 6 2 14 11 7 3 10 5 1 8 12
0 Kona~no: Re{ewasvih pod-problemakombinujemodok ne dobijemokona~no re{ewe. 4 9 13 6 2 14 11 7 3 10 5 1 8 12
0 U posledwemkoraku, traka }e najverovatnijebitivrlo mala. Zbog toga, kombinovawedvanajve}a pod-problema ne}e zahtevatiprevi{e posla. 4 9 13 6 2 14 11 7 3 10 5 1 8 12
0 • U ovom primeru, bilo je potrebno 22 pore|ewa da bismo na{li najbli`i par ta~aka. • Brute force algoritam bi zahtevao 91 pore|ewe. • Naravno, razlika je MNOGO ve}a kada na ulazu imamo milione ta~aka. KRAJ 4 9 13 6 2 14 11 7 3 10 5 1 8 12