Kirkpatrick algoritmusa

Konvex hajótest építése az "oszd meg és uralkodj" módszerrel  - egy konvex hajótest felépítésének algoritmusa .

Leírás

Adott egy pontkészlet .

  1. Ha (  valami kis egész szám), akkor az ismert módszerek egyikével készítsen konvex hajótestet, és álljon meg, ellenkező esetben folytassa a 2. lépéssel.
  2. Osszuk fel az eredeti halmazt tetszőlegesen két, megközelítőleg egyforma méretű részhalmazra és (legyen benne pont, és tartalmazzon pontokat).
  3. Keresse meg rekurzívan az egyes részhalmazok konvex héját és .
  4. Az eredeti halmaz konvex héját két konvex sokszög és .

Mivel: , ennek az algoritmusnak a bonyolultsága a rekurzív reláció megoldása , ahol  két konvex sokszög unió konvex burkának építési ideje, amelyek mindegyikének van közeli csúcsa. Legközelebb ez lesz látható .

Definíciók

A konvex sokszög támaszvonala egy olyan egyenes , amely a sokszög valamely csúcsán megy át úgy, hogy a sokszög minden belső pontja az egyenes ugyanazon az oldalán fekszik .

Egy konvex sokszöghez támasztóvonalakat építhet olyan pontból , amely nem tartozik hozzá. Azt a tényt használjuk, hogy a vonal , ahol  a sokszög valamely csúcsa, akkor és csak akkor támasztóvonal, ha az élek és az élek ugyanabban a félsíkban vannak, amelyet ez az egyenes határol. Könnyen belátható, hogy legrosszabb esetben a sokszög csúcsainak egyszeri bejárása szükséges a támaszvonalak felépítéséhez , azaz lineáris időben keresik őket.

Megvalósítás

Legyen már megszerkesztett konvex hajótestünk és .

  1. Keressük meg a sokszög valamely belső pontját (például bármelyik három csúcs súlypontját ). Egy ilyen pont belső pont lesz .
  2. Két eset lehetséges:
    1. A pont nem a sokszög belső pontja . A ponton átmenő sokszögre két referenciavonalat rajzolunk . Ezek a referenciavonalak áthaladnak a csúcsokon és a sokszögön . A háromszög belsejében lévő összes pont nem tartozik a konvex hajótest határához . Az összes többi pontot a ponthoz viszonyított poláris szög szerint rendezzük úgy, hogy a két rendezett csúcslistát időben összevonjuk , majd a Graham bejárási módszert alkalmazzuk a kapott listára , amely csak lineáris időt igényel.
    2. A pont a sokszög belső pontja . Rendezze mindkét sokszög csúcsait a középpont körül úgy, hogy összevonja a két rendezett csúcslistát és azon túl .
  3. Most Graham algoritmusa alkalmazható a kapott csúcslistára, kivéve a pontok poláris koordináta szerinti rendezési fázisát, akkor lineáris időben kerül végrehajtásra.

Most megkapjuk a konvex sokszögek uniójának konvex héját .

Az algoritmus összetettsége

Összességében az algoritmus mindhárom fázisa időben befejeződik . Így megkapjuk a relációt , amelynek megoldása, mint ismeretes , , amely meghatározza az algoritmus bonyolultságát.

Linkek