• Nem Talált Eredményt

GEOMETRIAI ALGORITMUSOK

N/A
N/A
Protected

Academic year: 2022

Ossza meg "GEOMETRIAI ALGORITMUSOK"

Copied!
18
0
0

Teljes szövegt

(1)

GEOMETRIAI

ALGORITMUSOK

Konvex burok

(2)

Miről lesz szó?

1. Bevezetés: miért fontos, gyakorlati alkalmazások 2. Elmélet, algoritmusok

Graham- féle pásztázásJarvis menetelése

Egyéb algoritmusok

3. Példakódok, videók

(3)

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

(4)

■ Konkrét példák:

Autóknál ütközés megakadályozásaAnomália detektálás

Méret elemzés

Csomagolás: legkisebb doboz kiszámítása

(5)

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.

(6)

■ 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

(7)

■ 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.

(8)

Algoritmusok

Általánosságban:

N elemű ponthalmaz konvex burkát határozzák meg2 legismertebb:

o Graham-féle pásztázás (1972) o 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

(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.

(10)
(11)
(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.

(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

(14)

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ó:

https://en.wikipedia.org/wiki/G ift_wrapping_algorithm#/media/F ile:Animation_depicting_the_gif

(15)

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ű.

(16)

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=ZnTiWcIznEQ

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”

(17)

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_SZ001/Cormen-Lieserson- Rivest-Stein.-.Uj.algoritmusok.pdf

Python kód:

■ http://scikit-

image.org/docs/dev/auto_examples/edges/plot_convex_hull.html#sph x-glr-download-auto-examples-edges-plot-convex-hull-py

(18)

Köszönöm szépen a

figyelmet!

Hivatkozások

KAPCSOLÓDÓ DOKUMENTUMOK

A harmadik legjelentősebb változtatás a védett számítógép definíciójának (B) pontját érintette, amelyet a hatályos törvény is tartalmaz a (B) pont szerint:

Azért választottam tanulmányom centrális elemének Arany balladáját, mert ezzel olyan kultikus pontját érintjük az irodalomtörténetnek, amely kvázitörténelmi

Most, hogy a függvények konvex, illetve konkáv mivoltát is el tudjuk dönteni, módunk nyílik arra, hogy ábrázoljuk a függvények grafikonját.. g) –-ben

felülről korlátos -ban, akkor korlátos -ban. Legyen gyengén konvex a nyílt intervallumban. Legyen gyengén konvex a nyílt intervallumban, és legyen. Bizonyítsuk

Egy Hilbert-tér bármely korlátos konvex zárt részhal- maza gyengén

törvénycikket először olvassa, hiheti- e, hogy ezek képezik kiinduló pontját és szabályait a századokon át fejlő- dő családi hitbizomány intézményének?” Véleménye

4. fejezetben konvex testek approxim´ aci´oj´ at vizsg´ alja be´ırt, ill. k¨ or¨ ul´ırt konvex polit´opokkal. Ezen azt ´erti, hogy a polit´ op a test r´esze, ill. fejezet

értékeket felvevő (amelyek a K-dimenziós egységkocka csúcsai, ami egy konvex poliéder és így itt alkalmazhatók az approximációs tételek eredményei egy ideális