Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
1
Geometriai Algoritmusok
Konvex burok
2
Csóka Boglárka - Konvex burok
Miről lesz szó? Bevezetés: miért fontos, gyakorlati alkalmazások Elmélet, algoritmusok Graham- féle pásztázás Jarvis menetelése Egyéb algoritmusok Példakódok, videók Csóka Boglárka - Konvex burok
3
Csóka Boglárka - Konvex burok
Bevezetés ’70-es évek: algoritmus kutatók elkezdenek érdeklődni a geometriai problémák iránt. Gyakorlati alkalmazása: például: alakfelismerés, képfeldolgozás, statisztika, földrajzi információs rendszerek, játékelmélet, fázisdiagramok előállítása eszközként, építőelemként is szolgál más számítási geometriai algoritmusok részeként, például: a ponthalmaz szélességét és átmérőjét megállapító forgó tolómérce módszer részeként Csóka Boglárka - Konvex burok
4
Autóknál ütközés megakadályozása Anomália detektálás Méret elemzés
Konkrét példák: Autóknál ütközés megakadályozása Anomália detektálás Méret elemzés Csomagolás: legkisebb doboz kiszámítása Csóka Boglárka - Konvex burok
5
Csóka Boglárka - Konvex burok
Elmélet Konvex síkidom: olyan síkidom, amely bármely két pontját összekötő egyenes szakasz minden pontját tartalmazza. (Az ilyen udvarban nem lehet elbújni.) Konvex burok: egy Q ponthalmaz konvex burka az a legkisebb P konvex poligon, amelyre Q minden pontja vagy P határán van, vagy a belsejében. Csóka Boglárka - Konvex burok
6
Csóka Boglárka - Konvex burok
Poláris szög: a polárkoordináta-rendszer olyan kétdimenziós koordináta-rendszer, mely a sík minden pontját egy szög és egy távolság adattal látja el. Keresztszorzat (vektoriális szorzat): Az eredményvektor állása merőleges mind a-ra, mind b-re iránya olyan, hogy a,b és c jobbsodrású rendszert alkot Csóka Boglárka - Konvex burok
7
Csóka Boglárka - Konvex burok
Forgásirány: keresztszorzat segítségével meg tudjuk állapítani jobbsodrású balsodrású Előnye: nem kell kiszámolni pontos szöget, meg lehet mondani anélkül is előbb-utóbb, hogy a konvex burok csúcsa- e az adott pont. Csóka Boglárka - Konvex burok
8
Csóka Boglárka - Konvex burok
Algoritmusok Általánosságban: N elemű ponthalmaz konvex burkát határozzák meg 2 legismertebb: Graham-féle pásztázás (1972) Jarvis-menetelés (1973) Mindkettő használja a „forgásos söprés” technikát, amely a csúcsokat egy vonatkoztatási csúcs körüli poláris szög szerinti sorrendben dolgozza fel. Output: konvex burok csúcsai óramutató járásával ellentétes sorrendben Csóka Boglárka - Konvex burok
9
Algoritmusok Graham-féle pásztázás
Alapötlet: Minden Q − beli pontot beírunk egyszer az S verembe. Azokat a pontokat, amelyek nem csúcsai a konvex buroknak, előbb-utóbb kivesszük a veremből. Amikor az algoritmus véget ér, S pontosan CH(Q) csúcsait tartalmazza. Csóka Boglárka - Konvex burok
10
Csóka Boglárka - Konvex burok
Csóka Boglárka - Konvex burok
11
Csóka Boglárka - Konvex burok
Vizuális példa videó: Csóka Boglárka - Konvex burok
12
Futásideje: O (n*logn)
Kezdőpont (kódban: első sor): O(n). Rendezés (második sor): O(n*logn) (ha a poláris szögek rendezésére az összefésülő vagy kupacrendezést használjuk, a szögek összehasonlítására pedig a keresztszorzatos módszert). P0, P1 és P2 verembe tétele O(1). Mivel m ≤ n − 1, a for ciklusok magját legfeljebb n − 3 alkalommal (P0,P1,Pm nem) hajtjuk végre. A ciklusmag mindegyik végrehajtása O(1) ideig tart, kivéve a while ciklusban töltött időt. Egész for ciklus O(n) ideig tart, kivéve a beágyazott while ciklust. While ciklus összesen O(n) ideig tart. Csóka Boglárka - Konvex burok
13
Algoritmusok Jarvis mentelés
Ajándék csomagolás néven is ismert Lépései: Jobb oldali lánc (amíg el nem érjük a legfelső pontot): P0 kiválasztása (has. Graham) P1 aminek a legkisebb a P0 körüli poláris szöge (vagy ezek közül a legtávolabbi) Hasonlóan a P2 a P1 körül legkisebb poláris szögű pont és így tovább Csóka Boglárka - Konvex burok
14
Csóka Boglárka - Konvex burok
Bal oldali lánc: Induljunk Pk -ból és legyen Pk+1 az a pont, amelynek a negatív x-tengelytől mérve legkisebb a poláris szöge Pk körül. Folytatjuk, míg vissza nem érünk P0-ba. Jarvis menetelését a konvex burok körül egyetlen fordulóban is megírhatnánk --> az utoljára kiválasztott oldalának szögét tartanánk nyilván és azt követelnénk meg, hogy az oldalak szöge szigorúan monoton növekedjen (a [0, 2π) tartományban, radiánban). Vizuális példa videó: Csóka Boglárka - Konvex burok
15
Csóka Boglárka - Konvex burok
Futásideje: O (n*h) CH(Q) minden h csúcsára megkeressük a legkisebb poláris szögű csúcsot. A poláris szögek közötti minden összehasonlítás O(1) idő. n érték minimumát O(n) időben kereshetjük, ha minden összehasonlítás O(1) idejű. Csóka Boglárka - Konvex burok
16
Csóka Boglárka - Konvex burok
Egyéb módszerek: Növekvényes, oszd-meg-és-uralkodj, eltávolító és kereső, Chan-algoritmus Chan- algoritmus (1993): Graham, Jarvis és az oszd-meg-és-uralkodj kombinációjából Keressünk egy "mágikus" m értéket, amely minden pontot n/m részhalmazba oszt, ahol minden részhalmaz m pontot tartalmaz (rendezés nélkül). m legyen h-hoz minél közelebbi. Minden részhalmazra használjuk Graham algoritmusát a részburok kiszámítására. Minden részburokra használjuk Jarvis algoritmusát a végső konvex burok meghatározására Futási idő az output méretétől függ: O (n*log h) Python kód: „ló becsomagolása” Csóka Boglárka - Konvex burok
17
Csóka Boglárka - Konvex burok
Források Előadás diák: Könyv: Új algoritmusok (Geometriai algoritmusok fejezet) 2003 .Uj.algoritmusok.pdf Python kód: image.org/docs/dev/auto_examples/edges/plot_convex_hull.html#sphx-glr- download-auto-examples-edges-plot-convex-hull-py Csóka Boglárka - Konvex burok
18
Köszönöm szépen a figyelmet!
Csóka Boglárka - Konvex burok
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.