Boris Nikolajevic Delone, 1890 - 1980 Boris Nikolajevic Delone

Delaunė trianguliacija

Kas yra Delaunė trianguliacija?

1-2 paveikslėlis. Plokštumos taškų Delaunė trianguliacija

Delaunė (Delaunay) trianguliacija vadinama toks plokštumos taškų Mi trejetų sujungimas trikampiais, kad nubrėžtame per bet kurio trikampio viršūnes apskritimo viduje nėra nei vieno taško Mi.

Delaunė trianguliacija padalina plokštumos sritį į trikampius. Delaunė trianguliacijos sąvoką galima apibendrint daugiamačiu atveju. Pavyzdžiui trimačiai Mi taškai yra talpinami į tokių tetraedrų viršūnes, kad nubrėžtos per bet kurio teatraedro viršūnes sferos viduje nėra nei vieno taško Mi.

Delaunė trianguliacija yra duali Voronojaus (Voronoi) diagramai.

3-4 paveikslėlis. Stačiakampio viršūnių dvi galimos skirtingos Delaunė trianguliacijos

Jei tarp Mi taškų atsiras keturi ir daugiau taškų per kuriuos galima nubrėžti apskritimą kurio viduje nėra kitų taškų, tai tokių taškų aibei Delaunė trianguliaciją galima atlikti nevienareikšmiškai. Pateiktas paveikslėlis iliustruoja paprasčiausią nevienareikšmės Delaunė trianguliacijos atvejį kai duoti trianguliacijai keturi taškai yra plokštumos stačiakampio viršūnės. Nevienareikšmė Delaunė trianguliacija galima tik tokiu "išsigimusių" duomenų atveju ir todėl praktiškai ji pasitaiko retai. "Išsigimusių" duomenų atveju galima nežymiai pakeisti daugiau nei trijų vienam apskritimui priklausančių taškų koordinates taip, kad modifikuotiems duomenims gautųsi vienareikšmė Delaunė trianguliacija.

Taikymai

Delaunė trianguliacija (DT) yra taikoma:

Čia išvardinome tik keletą DT taikymo pavyzdžių. Kodėl DT yra taip plačiai taikoma? Tam tikra prasme DT yra artima rūšiavimui.

5-6 paveikslėlis. Vienmačių ir dvimačių duomenų "sutvarkymas"

Surūšiavus skirtingus viemačius (tiesės) taškus (pvz. didėjimo tvarka) kiekvienam taškui (išskyrus mažiausiąjį ir didžiausiąjį) surandame jo kaimynus. Taško Mi kaimynas iš kairės yra didžiausias iš mažesnių už jį, o kaimynas iš dešinės yra mažiausias iš didesnių už jį. "Kairės" ir "dešinės" sąvokos yra susitarimo reikalas; po rūšiavimo gautus taško kaimynus galėjome pavadinti "pirmu" ir "antru" kaimynu.

Žinia dvimačius (plokštumos) taškus surūšiuoti "didėjimo" ar "mažėjimo" tvarka negalima. Tačiau žiūrint į rūšiavimo rezultatą surandamų kaimynų prasme šią procedūrą galima apibendrinti ir daugiamačių taškų atveju. Tuo tikslu atliekama daugiamačių taškų Delaunė trianguliaciją. Apibrėžtumo dėklei tarkime, kad Mi yra dvimačiai (plokštumos) taškai. Apibendrinsime taško "pirmojo" ir "antrojo" kaimyno sąvoką plokštumos taško Mi kaimynais pavadindami aibę visų viršūnių, kurios pasiekiamos viena trianguliacijos tiesės atkarpa iš taško Mi.

Dėl "kairės" ir "dešinės" plokštumos atveju taip pat galime susitarti. Tuo tikslu taško Mi kaimynus sunumeruojame taip, kad numerio didėjimo tvarka žiūrint iš "centrinio" taško Mi jie būtų išsidėstę pagal laikrodžio rodyklę.

Vienmatis "mažiausias" arba "didžiausias" taškas yra kraštinis. Plokštumos tašką Mi vadinsime kraštiniu, jei iš trianguliacijos atkarpų, kurių abi viršūnės yra taško kaimynai, nesusidarys uždaras kontūras.

Delaunė trianguliacijos taikymas taškų retinimui ir artmiausiojo kaimyno paieškai. Pavyzdžiui toks uždavinys natūraliai kyla grupuojant pirštų atspaudų požymius ("minutes").

                                   

Piršto atspaudo pradinis vaizdas , "Meksikietiška skrybėle" filtruotas pirštas, ekstremalių taškų kontūrai.

Delaunė trianguliacija neblogai tinka mastelio keitimui. Pvz. vienmačiu atveju taškus galima surūšiuoti reikšmių didėjimo arba mažėjimo tvarka ir išmesti kas antrą. Kadangi Delaunė trianguliacija apibrėžia vieną plokštumos taškų rūšiavimo būdų, galime elgtis analogiškai. Iš duotųjų plokštumos taškų pasirenkame tokius, kad atstumas tarp jų būtų dvi Delaunė trianguliacijos kraštinės. Likusiems taškams galima vėl atlikti Delaunė trianguliaciją ir kartoti procedūrą rekurentiškai. Gausime hierarchinę pradinių taškų išretinimo struktūrą.

Panaudojant hierarchinę taškų išretinimo struktūrą galime greitai rasti koks yra artimiausias taškas iš pradinės taškų aibės bet kokiam duotam (tačiau iš anksto nežinomam) plokštumos taškui. Fiksuotas taškas, kuriam norime rasti "artimiausią kaimyną", paveikslėlyje pažymėtas klaustuku. Iš pradžių rasime kokiam trianguliacijos trikampiui priklauso duotasis taškas stambiausioje Delaunė trianguliacijoje, o po to rekurentiškai tikslinsime vietą mažinant mastelį. Radus kokiam smulkiausio mastelio trianguliacijos trikampiui priklauso taškas, pakaks apskaičiuoti atstumus iki trijų to trikampio viršūnių ir išsirinkti iš trijų taškų tašką su mažiausia atsumo reikšme. Aprašyto artimiausiojo kaimyno paieškos algoritmo sudėtingumas yra O(log N), kas žymiai geriau nei O(N) tiesioginio paieškos algoritmo, kai skaičiuojami atstumai iki visų taškų ir išrenkamas taškas su mažiausia atstumo reikšme. Kadangi Delaunė trianguliacijos sudėtingumas yra didesnis nei O(N), tokią schemą tikslinga taikyti, jei reikia rasti greitai atstumą iki daugelio nežinomų iš anksto taškų.

Algoritmai

Ieškant Delaunė trianguliaciją svarbu sudaryti patogias taškų, kraštinių ir trikampių duomenų struktūras bei mokėti greitai patikrinti ar plokštumos taškas D=(Dx,Dy) priklauso apskritimo nubrėžto per taškus A=(Ax,Ay), B=(Bx,By) ir C=(Cx,Cy) viduje. Jei taškai A,B ir C sutvarkyti (sužymėti) taip, kad jie guli apskritime prieš laikrodžio rodyklę, tai D bus apskritimo viduje tada ir tik tada kai matricos  

Ax   Ay   Ax2 + Ay2   1

Bx   By   Bx2 + By2   1

Cx   Cy   Cx2 + Cy2   1

Dx   Dy   Dx2 + Dy2   1
 
determinantas bus teigiamas.

Bet kokios plokštumos taškų aibei galima atlikti Delaunė trianguliaciją. Galimas toks tiesioginis M0, M1, ..., MN-1 taškų Delaunė trianguliacijos algoritmas.