Matematiki fakultet Univerziteta u Beogradu Seminarski rad Problem
Matematički fakultet, Univerziteta u Beogradu. Seminarski rad: Problem najudaljenijeg para Mirjana Kostić, Aleksandra Karadžić, Safet Isljami, Stefan Isidorović
Problem najudaljenijeg para 1. Implementacija trivijalnog algoritma za nalaženje najudaljenijeg para reda O(n 2). 2. Implementacija algoritma za nalaženje najudaljenijeg para koristeći Grahamov algoritam za konstrukciju konveksnog omotača, reda O(n log(n) ). 3. Test primeri i upoređivanje dva data algoritma. Mirjana Kostić, Aleksandra Karadžić, Safet Isljami, Stefan Isidorović
Problem najudaljenijeg para Algoritam grube sile – Bruteforce Algoritam lak za implementaciju, ali ima veliku vremensku složenost. Ideja algoritma je da se određuje rastojanje svake tačke sa svakom i pritom pamti najveće rastojanje, sa kojim će se upoređivati svako novo rastojanje. Ukoliko je veće, trenutno rastojanje postaje najveće i prelazi se dalje, ukoliko je manje prelazi se na sledeću tačku. Princip se vidi na animaciji pored. Mirjana Kostić, Aleksandra Karadžić, Safet Isljami, Stefan Isidorović
Problem najudaljenijeg para Algoritam O( n log(n) ) Algoritam se temelji na tome da dve najudaljenije tačke pripadaju konveksnom omotaču datog prostora. (Konveksni omotač skupa S je najmanji konveksan skup koji sadrži S). Stoga se prvo koristi Grahamovo skeniranje za određivanje konveksnog omotača. Grahamovo skeniranje Prvo se nalazi najniža tačka (Pivot) po y koordinati. Ukoliko postoji višetačaka sa Najmanjom y koordinatom uzima se ona sa najmanjom x koordinatom. Pa se onda dati niz tačaka sortira prema uglu koji prava P koja prolazi kroz pivot i datu tačku zaklapa sa x osom. Ali umesto toga smo koristili vektor pravca duži koje obrazuju pivot i data tačka, što je jednako tangensu traženog ugla. Razlog je lakša Implementacija i izbegavanje kompleknijeg računanja. Mirjana Kostić, Aleksandra Karadžić, Safet Isljami, Stefan Isidorović
Problem najudaljenijeg para Grahamovo skeniranje Sledeći korak je proveravanje “levog”, odnosno “desnog” zaokreta. Ukoliko je “levi” zaokret prebacujemo se na sledeću tačku, ukoliko je “desni” tu tačku izbacujemo iz daljeg razmatranja jer ne može biti deo konveksnog omotača. Za proveru da li tri tačke vrše “levi” ili “desni” zaokret, koristili smo vektorski Proizvod te tri tačke. Ako je rezultat manji od nule obrazuju “desni” zaokret ako je veći, obrazuju “levi ” zaokret i ako je jednak nuli onda su te tri tačke kolinearne. (ukoliko su u bilo kom koraku razmatrane tri tačke bile kolinearne, nevažno je da li će se srednja tačka izbaciti iz daljeg razmatranja) Tri tačke su kolinearne ako postoji prava koja ih sadrži. Mirjana Kostić, Aleksandra Karadžić, Safet Isljami, Stefan Isidorović
Problem najudaljenijeg para Grahamovo skeniranje Ukoliko tačke obrazuju “levi ” zaokret, Prelazi se na sledeću tačku i pretpostavlja se da prethodne dve tačke pripadaju konveksnom omotaču. Ukoliko tačke obrazuju “desni” zaokret onda se srednja tačka izbacuje iz razmatranja. Na animaciji pored je ilustrovano Grahamovo skeniranje. Mirjana Kostić, Aleksandra Karadžić, Safet Isljami, Stefan Isidorović
Problem najudaljenijeg para Dalje za određivanje najudaljenijeg para tačaka, koristićemo algoritam „Rotirajućih čeljusti“ (eng. Rotating Calipers), reda O(n) Rotating Calipers Ideja algoritma je da dve prave rotiraju oko poligona, i svaki put kada dve tačke prilikom rotacije se nadju na pravama, te dve tačke daju antipodalan par. Što znači da algoritam „izbacuje“ sve antipodalne parove, datog poligona (konveksnog omotača). A traženi najudaljeniji par tačaka je sigurno i antipodalni par konveksnog omotača datog svemira tačaka. Kako je vremenska složenost algoritma O(n), tj. vreme potrebno da se napravi niz antipodalnih parova poligona, potrebno je još i pretraga dobijenog niza da bi se identifikovao antipodalni par tačaka koji je najveći, odnosno najudaljeniji par tačaka. Pretraga je opet reda veličine O(n) pa ne remeti traženu vremensku složenost. Mirjana Kostić, Aleksandra Karadžić, Safet Isljami, Stefan Isidorović
Problem najudaljenijeg para Ovu metodu je prvi put iskoristio Michael Shamos, 1978 godine. Koja je kasnije postala njegov doktorski rad. Algoritam se koristi za brojne probleme u geometriji (razne trijangulacije, nalaženje min i max rastojanja dva poligona itd. . ) Ilustracija algoritma u Rotating Calipers. Mirjana Kostić, Aleksandra Karadžić, Safet Isljami, Stefan Isidorović
Problem najudaljenijeg para Grafik vremenske složenosti na osnovu testiranja programa ms Broj tačaka Mirjana Kostić, Aleksandra Karadžić, Safet Isljami, Stefan Isidorović
Problem najudaljenijeg para TEST PRIMER 10 tačaka, 100 gornje ograničenje Mirjana Kostić, Aleksandra Karadžić, Safet Isljami, Stefan Isidorović
Problem najudaljenijeg para TEST PRIMER 50 tačaka, 100 gornje ograničenje Mirjana Kostić, Aleksandra Karadžić, Safet Isljami, Stefan Isidorović
Problem najudaljenijeg para TEST PRIMER 100 tačaka, 100 gornje ograničenje Mirjana Kostić, Aleksandra Karadžić, Safet Isljami, Stefan Isidorović
Problem najudaljenijeg para TEST PRIMER 1000 tačaka, 100 gornje ograničenje Mirjana Kostić, Aleksandra Karadžić, Safet Isljami, Stefan Isidorović
Problem najudaljenijeg para TEST PRIMER 5000 tačaka, 100 gornje ograničenje Mirjana Kostić, Aleksandra Karadžić, Safet Isljami, Stefan Isidorović
KRAJ Hvala na pažnji!
- Slides: 15