GEOMETRIAI ALGORITMUSOK Konvex burok Mirl lesz sz 1
GEOMETRIAI ALGORITMUSOK Konvex burok
Miről lesz szó? 1. Bevezetés: miért fontos, gyakorlati alkalmazások 2. Elmélet, algoritmusok – Graham- féle pásztázás – Jarvis menetelése – Egyéb algoritmusok 3. Példakódok, videók 2021. 09. 10. Csóka Boglárka - Konvex burok 2
Bevezetés ■ ’ 70 -es évek: algoritmus kutatók geometriai problémák iránt. elkezdenek érdeklődni a ■ 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 2021. 09. 10. Csóka Boglárka - Konvex burok 3
■ 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 2021. 09. 10. Csóka Boglárka - Konvex burok 4
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. 2021. 09. 10. Csóka Boglárka - Konvex burok 5
■ 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 2021. 09. 10. Csóka Boglárka - Konvex burok 6
■ 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. 2021. 09. 10. Csóka Boglárka - Konvex burok 7
Algoritmusok Általánosságban: – N elemű ponthalmaz konvex burkát határozzák meg – 2 legismertebb: o o 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 2021. 09. 10. Csóka Boglárka - Konvex burok 8
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őbbutóbb kivesszük a veremből. Amikor az algoritmus véget ér, S pontosan CH(Q) csúcsait tartalmazza. 2021. 09. 10. Csóka Boglárka - Konvex burok 9
2021. 09. 10. Csóka Boglárka - Konvex burok 10
Vizuális példa videó: https: //www. youtube. com/watch? v=Ps 1 idz. Ox 6 LA 2021. 09. 10. Csóka Boglárka - Konvex burok 11
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). ■ P 0, P 1 és P 2 verembe tétele O(1). ■ Mivel m ≤ n − 1, a for ciklusok magját legfeljebb n − 3 alkalommal (P 0, P 1, 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. 2021. 09. 10. Csóka Boglárka - Konvex burok 12
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): – P 0 kiválasztása (has. Graham) – P 1 aminek a legkisebb a P 0 körüli poláris szöge (vagy ezek közül a legtávolabbi) – Hasonlóan a P 2 a P 1 körül legkisebb poláris szögű pont és így tovább 2021. 09. 10. Csóka Boglárka - Konvex burok 13
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 P 0 -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ó: https: //en. wikipedia. org/wiki/Gift_wra pping_algorithm#/media/File: Animati on_depicting_the_gift_wrapping_alg orithm. gif 2021. 09. 10. Csóka Boglárka - Konvex burok 14
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ű. 2021. 09. 10. Csóka Boglárka - Konvex burok 15
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 https: //www. youtube. com/watch? v=Zn. Ti. Wc. Izn. EQ • 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” 2021. 09. 10. Csóka Boglárka - Konvex burok 16
Források Előadás diák: ■ http: //cs. bme. hu/~friedl/algbony/konvexburok. pdf Könyv: Új algoritmusok (Geometriai algoritmusok fejezet) 2003 ■ http: //www. informatom. hu/sze/01/LGB_SZ 001/Cormen-Lieserson-Rivest-Stein. . Uj. algoritmusok. pdf Python kód: ■ http: //scikitimage. org/docs/dev/auto_examples/edges/plot_convex_hull. html#sphx-glrdownload-auto-examples-edges-plot-convex-hull-py 2021. 09. 10. Csóka Boglárka - Konvex burok 17
Köszönöm szépen a figyelmet! 2021. 09. 10. Csóka Boglárka - Konvex burok 18
- Slides: 18