14.08.2013 Views

Diagrame Voronoi

Diagrame Voronoi

Diagrame Voronoi

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Generalităt¸i<br />

Proprietăt¸i<br />

<strong>Diagrame</strong> <strong>Voronoi</strong> ¸si triangulări Delaunay<br />

Un algoritm eficient<br />

<strong>Diagrame</strong> <strong>Voronoi</strong><br />

Mihai-Sorin Stupariu<br />

Sem. I, 2012-2013<br />

Mihai-Sorin Stupariu <strong>Diagrame</strong> <strong>Voronoi</strong>


Generalităt¸i<br />

Proprietăt¸i<br />

<strong>Diagrame</strong> <strong>Voronoi</strong> ¸si triangulări Delaunay<br />

Un algoritm eficient<br />

Problema oficiiilor po¸stale<br />

◮ Se consideră o mult¸ime de puncte (oficiile po¸stale) din plan.<br />

Care este cel mai apropiat?<br />

Mihai-Sorin Stupariu <strong>Diagrame</strong> <strong>Voronoi</strong>


Formalizare<br />

Generalităt¸i<br />

Proprietăt¸i<br />

<strong>Diagrame</strong> <strong>Voronoi</strong> ¸si triangulări Delaunay<br />

Un algoritm eficient<br />

◮ Fie P = {P1, P2, . . . , Pn} o mult¸ime de puncte din planul R 2 .<br />

Mihai-Sorin Stupariu <strong>Diagrame</strong> <strong>Voronoi</strong>


Formalizare<br />

Generalităt¸i<br />

Proprietăt¸i<br />

<strong>Diagrame</strong> <strong>Voronoi</strong> ¸si triangulări Delaunay<br />

Un algoritm eficient<br />

◮ Fie P = {P1, P2, . . . , Pn} o mult¸ime de puncte din planul R 2 .<br />

◮ Diagrama <strong>Voronoi</strong> a lui P (notată Vor(P)) este o divizare a<br />

planului R 2 în n celule V(P1), . . . , V(Pn) cu proprietatea că<br />

P ∈ V(Pi) ⇔ d(P, Pi) ≤ d(P, Pj), ∀j = 1, . . . , n.<br />

Mihai-Sorin Stupariu <strong>Diagrame</strong> <strong>Voronoi</strong>


Formalizare<br />

Generalităt¸i<br />

Proprietăt¸i<br />

<strong>Diagrame</strong> <strong>Voronoi</strong> ¸si triangulări Delaunay<br />

Un algoritm eficient<br />

◮ Fie P = {P1, P2, . . . , Pn} o mult¸ime de puncte din planul R 2 .<br />

◮ Diagrama <strong>Voronoi</strong> a lui P (notată Vor(P)) este o divizare a<br />

planului R 2 în n celule V(P1), . . . , V(Pn) cu proprietatea că<br />

P ∈ V(Pi) ⇔ d(P, Pi) ≤ d(P, Pj), ∀j = 1, . . . , n.<br />

◮ Două celule adiacente au în comun o muchie sau un vârf<br />

(punct de intersect¸ie a muchiilor).<br />

Mihai-Sorin Stupariu <strong>Diagrame</strong> <strong>Voronoi</strong>


Formalizare<br />

Generalităt¸i<br />

Proprietăt¸i<br />

<strong>Diagrame</strong> <strong>Voronoi</strong> ¸si triangulări Delaunay<br />

Un algoritm eficient<br />

◮ Fie P = {P1, P2, . . . , Pn} o mult¸ime de puncte din planul R 2 .<br />

◮ Diagrama <strong>Voronoi</strong> a lui P (notată Vor(P)) este o divizare a<br />

planului R 2 în n celule V(P1), . . . , V(Pn) cu proprietatea că<br />

P ∈ V(Pi) ⇔ d(P, Pi) ≤ d(P, Pj), ∀j = 1, . . . , n.<br />

◮ Două celule adiacente au în comun o muchie sau un vârf<br />

(punct de intersect¸ie a muchiilor).<br />

◮ Atent¸ie! Vârfurile lui Vor(P) sunt diferite de punctele din P.<br />

Mihai-Sorin Stupariu <strong>Diagrame</strong> <strong>Voronoi</strong>


Formalizare<br />

Generalităt¸i<br />

Proprietăt¸i<br />

<strong>Diagrame</strong> <strong>Voronoi</strong> ¸si triangulări Delaunay<br />

Un algoritm eficient<br />

◮ Fie P = {P1, P2, . . . , Pn} o mult¸ime de puncte din planul R 2 .<br />

◮ Diagrama <strong>Voronoi</strong> a lui P (notată Vor(P)) este o divizare a<br />

planului R 2 în n celule V(P1), . . . , V(Pn) cu proprietatea că<br />

P ∈ V(Pi) ⇔ d(P, Pi) ≤ d(P, Pj), ∀j = 1, . . . , n.<br />

◮ Două celule adiacente au în comun o muchie sau un vârf<br />

(punct de intersect¸ie a muchiilor).<br />

◮ Atent¸ie! Vârfurile lui Vor(P) sunt diferite de punctele din P.<br />

◮ Uneori, prin abuz de limbaj, este precizată doar împărt¸irea în<br />

muchii / vârfuri.<br />

Mihai-Sorin Stupariu <strong>Diagrame</strong> <strong>Voronoi</strong>


Generalităt¸i<br />

Proprietăt¸i<br />

<strong>Diagrame</strong> <strong>Voronoi</strong> ¸si triangulări Delaunay<br />

Un algoritm eficient<br />

Proprietăt¸i elementare<br />

◮ Celula asociată unui punct este o intersect¸ie de semiplane:<br />

V(Pi) = <br />

h(Pi, Pj),<br />

unde h(Pi, Pj) este semiplanul determinat de mediatoarea<br />

segmentului [PiPj] care cont¸ine punctul Pi.<br />

j=i<br />

Mihai-Sorin Stupariu <strong>Diagrame</strong> <strong>Voronoi</strong>


Generalităt¸i<br />

Proprietăt¸i<br />

<strong>Diagrame</strong> <strong>Voronoi</strong> ¸si triangulări Delaunay<br />

Un algoritm eficient<br />

Proprietăt¸i elementare<br />

◮ Celula asociată unui punct este o intersect¸ie de semiplane:<br />

V(Pi) = <br />

h(Pi, Pj),<br />

unde h(Pi, Pj) este semiplanul determinat de mediatoarea<br />

segmentului [PiPj] care cont¸ine punctul Pi.<br />

◮ În particular: fiecare celulă este o mult¸ime convexă.<br />

j=i<br />

Mihai-Sorin Stupariu <strong>Diagrame</strong> <strong>Voronoi</strong>


Generalităt¸i<br />

Proprietăt¸i<br />

<strong>Diagrame</strong> <strong>Voronoi</strong> ¸si triangulări Delaunay<br />

Un algoritm eficient<br />

Proprietăt¸i elementare<br />

◮ Celula asociată unui punct este o intersect¸ie de semiplane:<br />

V(Pi) = <br />

h(Pi, Pj),<br />

unde h(Pi, Pj) este semiplanul determinat de mediatoarea<br />

segmentului [PiPj] care cont¸ine punctul Pi.<br />

◮ În particular: fiecare celulă este o mult¸ime convexă.<br />

◮ Aplicabilitate: algoritm (lent) de determinare a diagramei<br />

<strong>Voronoi</strong>.<br />

j=i<br />

Mihai-Sorin Stupariu <strong>Diagrame</strong> <strong>Voronoi</strong>


Generalităt¸i<br />

Proprietăt¸i<br />

<strong>Diagrame</strong> <strong>Voronoi</strong> ¸si triangulări Delaunay<br />

Un algoritm eficient<br />

Proprietăt¸i elementare<br />

◮ Celula asociată unui punct este o intersect¸ie de semiplane:<br />

V(Pi) = <br />

h(Pi, Pj),<br />

unde h(Pi, Pj) este semiplanul determinat de mediatoarea<br />

segmentului [PiPj] care cont¸ine punctul Pi.<br />

◮ În particular: fiecare celulă este o mult¸ime convexă.<br />

◮ Aplicabilitate: algoritm (lent) de determinare a diagramei<br />

<strong>Voronoi</strong>.<br />

◮ Comentariu. Forma celulelor depinde de funct¸ia distant¸ă<br />

aleasă.<br />

j=i<br />

Mihai-Sorin Stupariu <strong>Diagrame</strong> <strong>Voronoi</strong>


Generalităt¸i<br />

Proprietăt¸i<br />

<strong>Diagrame</strong> <strong>Voronoi</strong> ¸si triangulări Delaunay<br />

Un algoritm eficient<br />

Structura unei diagrame <strong>Voronoi</strong><br />

◮ Fie P = {P1, P2, . . . , Pn} o mult¸ime de puncte din planul R 2 .<br />

Mihai-Sorin Stupariu <strong>Diagrame</strong> <strong>Voronoi</strong>


Generalităt¸i<br />

Proprietăt¸i<br />

<strong>Diagrame</strong> <strong>Voronoi</strong> ¸si triangulări Delaunay<br />

Un algoritm eficient<br />

Structura unei diagrame <strong>Voronoi</strong><br />

◮ Fie P = {P1, P2, . . . , Pn} o mult¸ime de puncte din planul R 2 .<br />

◮ Dacă toate punctele sunt coliniare, atunci diagrama <strong>Voronoi</strong><br />

asociată Vor(P) cont¸ine n − 1 drepte paralele între ele (în<br />

particular, pentru n ≥ 3, ea nu este conexă).<br />

Mihai-Sorin Stupariu <strong>Diagrame</strong> <strong>Voronoi</strong>


Generalităt¸i<br />

Proprietăt¸i<br />

<strong>Diagrame</strong> <strong>Voronoi</strong> ¸si triangulări Delaunay<br />

Un algoritm eficient<br />

Structura unei diagrame <strong>Voronoi</strong><br />

◮ Fie P = {P1, P2, . . . , Pn} o mult¸ime de puncte din planul R 2 .<br />

◮ Dacă toate punctele sunt coliniare, atunci diagrama <strong>Voronoi</strong><br />

asociată Vor(P) cont¸ine n − 1 drepte paralele între ele (în<br />

particular, pentru n ≥ 3, ea nu este conexă).<br />

◮ În caz contrar, diagrama este conexă, iar muchiile sale sunt fie<br />

segmente, fie semidrepte (cui corespund acestea?).<br />

Mihai-Sorin Stupariu <strong>Diagrame</strong> <strong>Voronoi</strong>


Generalităt¸i<br />

Proprietăt¸i<br />

<strong>Diagrame</strong> <strong>Voronoi</strong> ¸si triangulări Delaunay<br />

Un algoritm eficient<br />

Structura unei diagrame <strong>Voronoi</strong><br />

◮ Fie P = {P1, P2, . . . , Pn} o mult¸ime de puncte din planul R 2 .<br />

◮ Dacă toate punctele sunt coliniare, atunci diagrama <strong>Voronoi</strong><br />

asociată Vor(P) cont¸ine n − 1 drepte paralele între ele (în<br />

particular, pentru n ≥ 3, ea nu este conexă).<br />

◮ În caz contrar, diagrama este conexă, iar muchiile sale sunt fie<br />

segmente, fie semidrepte (cui corespund acestea?).<br />

◮ Legătură între numărul de vârfuri, respectiv de muchii ¸si<br />

numărul de puncte (nv ≤ 2n − 5, nm ≤ 3n − 6).<br />

Mihai-Sorin Stupariu <strong>Diagrame</strong> <strong>Voronoi</strong>


Generalităt¸i<br />

Proprietăt¸i<br />

<strong>Diagrame</strong> <strong>Voronoi</strong> ¸si triangulări Delaunay<br />

Un algoritm eficient<br />

Legătura cu triangulările unghiular optime<br />

◮ Mult¸ime de puncte P<br />

Mihai-Sorin Stupariu <strong>Diagrame</strong> <strong>Voronoi</strong>


Generalităt¸i<br />

Proprietăt¸i<br />

<strong>Diagrame</strong> <strong>Voronoi</strong> ¸si triangulări Delaunay<br />

Un algoritm eficient<br />

Legătura cu triangulările unghiular optime<br />

◮ Mult¸ime de puncte P<br />

◮ Diagrama <strong>Voronoi</strong> Vor(P)<br />

Mihai-Sorin Stupariu <strong>Diagrame</strong> <strong>Voronoi</strong>


Generalităt¸i<br />

Proprietăt¸i<br />

<strong>Diagrame</strong> <strong>Voronoi</strong> ¸si triangulări Delaunay<br />

Un algoritm eficient<br />

Legătura cu triangulările unghiular optime<br />

◮ Mult¸ime de puncte P<br />

◮ Diagrama <strong>Voronoi</strong> Vor(P)<br />

◮ Graful dual G(P)<br />

Mihai-Sorin Stupariu <strong>Diagrame</strong> <strong>Voronoi</strong>


Generalităt¸i<br />

Proprietăt¸i<br />

<strong>Diagrame</strong> <strong>Voronoi</strong> ¸si triangulări Delaunay<br />

Un algoritm eficient<br />

Legătura cu triangulările unghiular optime<br />

◮ Mult¸ime de puncte P<br />

◮ Diagrama <strong>Voronoi</strong> Vor(P)<br />

◮ Graful dual G(P)<br />

◮ Triangulare TP (triangulare Delaunay)<br />

Mihai-Sorin Stupariu <strong>Diagrame</strong> <strong>Voronoi</strong>


Generalităt¸i<br />

Proprietăt¸i<br />

<strong>Diagrame</strong> <strong>Voronoi</strong> ¸si triangulări Delaunay<br />

Un algoritm eficient<br />

Legătura cu triangulările unghiular optime<br />

◮ Mult¸ime de puncte P<br />

◮ Diagrama <strong>Voronoi</strong> Vor(P)<br />

◮ Graful dual G(P)<br />

◮ Triangulare TP (triangulare Delaunay)<br />

◮ Teoremă. Triangularea Delaunay este unghiular optimă.<br />

Mihai-Sorin Stupariu <strong>Diagrame</strong> <strong>Voronoi</strong>


Generalităt¸i<br />

Proprietăt¸i<br />

<strong>Diagrame</strong> <strong>Voronoi</strong> ¸si triangulări Delaunay<br />

Un algoritm eficient<br />

Legătura cu triangulările unghiular optime<br />

◮ Mult¸ime de puncte P<br />

◮ Diagrama <strong>Voronoi</strong> Vor(P)<br />

◮ Graful dual G(P)<br />

◮ Triangulare TP (triangulare Delaunay)<br />

◮ Teoremă. Triangularea Delaunay este unghiular optimă.<br />

◮ Întrebare: Ce se poate spune despre această construct¸ie în<br />

cazul în care punctele mult¸imii P sunt (de exemplu) vârfurile<br />

unui pătrat?<br />

Mihai-Sorin Stupariu <strong>Diagrame</strong> <strong>Voronoi</strong>


Generalităt¸i<br />

Proprietăt¸i<br />

<strong>Diagrame</strong> <strong>Voronoi</strong> ¸si triangulări Delaunay<br />

Un algoritm eficient<br />

Algoritmul lui Fortune [1987]<br />

◮ Complexitate: O(n log n).<br />

Mihai-Sorin Stupariu <strong>Diagrame</strong> <strong>Voronoi</strong>


Generalităt¸i<br />

Proprietăt¸i<br />

<strong>Diagrame</strong> <strong>Voronoi</strong> ¸si triangulări Delaunay<br />

Un algoritm eficient<br />

Algoritmul lui Fortune [1987]<br />

◮ Complexitate: O(n log n).<br />

◮ Principiu (paradigmă): sweep line / linie de baleiere.<br />

Mihai-Sorin Stupariu <strong>Diagrame</strong> <strong>Voronoi</strong>


Generalităt¸i<br />

Proprietăt¸i<br />

<strong>Diagrame</strong> <strong>Voronoi</strong> ¸si triangulări Delaunay<br />

Un algoritm eficient<br />

Algoritmul lui Fortune [1987]<br />

◮ Complexitate: O(n log n).<br />

◮ Principiu (paradigmă): sweep line / linie de baleiere.<br />

◮ Inconvenient: la întâlnirea unui vârf al diagramei, linia de<br />

baleiere nu a întâlnit în că toate siturile (puncte din P) care<br />

determină acest vârf!<br />

Mihai-Sorin Stupariu <strong>Diagrame</strong> <strong>Voronoi</strong>


Generalităt¸i<br />

Proprietăt¸i<br />

<strong>Diagrame</strong> <strong>Voronoi</strong> ¸si triangulări Delaunay<br />

Un algoritm eficient<br />

Algoritmul lui Fortune [1987]<br />

◮ Complexitate: O(n log n).<br />

◮ Principiu (paradigmă): sweep line / linie de baleiere.<br />

◮ Inconvenient: la întâlnirea unui vârf al diagramei, linia de<br />

baleiere nu a întâlnit în că toate siturile (puncte din P) care<br />

determină acest vârf!<br />

◮ Adaptare: nu ret¸inem informat¸ia legată de intersect¸ia dintre<br />

linia de baleiere ¸si diagramă, ci doar informat¸ia legată de<br />

partea diagramei care nu mai poate fi influent¸ată de punctele<br />

situate de dincolo de linia de baleiere.<br />

Mihai-Sorin Stupariu <strong>Diagrame</strong> <strong>Voronoi</strong>


Generalităt¸i<br />

Proprietăt¸i<br />

<strong>Diagrame</strong> <strong>Voronoi</strong> ¸si triangulări Delaunay<br />

Un algoritm eficient<br />

Algoritmul lui Fortune [1987]<br />

◮ Complexitate: O(n log n).<br />

◮ Principiu (paradigmă): sweep line / linie de baleiere.<br />

◮ Inconvenient: la întâlnirea unui vârf al diagramei, linia de<br />

baleiere nu a întâlnit în că toate siturile (puncte din P) care<br />

determină acest vârf!<br />

◮ Adaptare: nu ret¸inem informat¸ia legată de intersect¸ia dintre<br />

linia de baleiere ¸si diagramă, ci doar informat¸ia legată de<br />

partea diagramei care nu mai poate fi influent¸ată de punctele<br />

situate de dincolo de linia de baleiere.<br />

◮ Concepte:<br />

Mihai-Sorin Stupariu <strong>Diagrame</strong> <strong>Voronoi</strong>


Generalităt¸i<br />

Proprietăt¸i<br />

<strong>Diagrame</strong> <strong>Voronoi</strong> ¸si triangulări Delaunay<br />

Un algoritm eficient<br />

Algoritmul lui Fortune [1987]<br />

◮ Complexitate: O(n log n).<br />

◮ Principiu (paradigmă): sweep line / linie de baleiere.<br />

◮ Inconvenient: la întâlnirea unui vârf al diagramei, linia de<br />

baleiere nu a întâlnit în că toate siturile (puncte din P) care<br />

determină acest vârf!<br />

◮ Adaptare: nu ret¸inem informat¸ia legată de intersect¸ia dintre<br />

linia de baleiere ¸si diagramă, ci doar informat¸ia legată de<br />

partea diagramei care nu mai poate fi influent¸ată de punctele<br />

situate de dincolo de linia de baleiere.<br />

◮ Concepte:<br />

◮ beach line / linie parabolică<br />

Mihai-Sorin Stupariu <strong>Diagrame</strong> <strong>Voronoi</strong>


Generalităt¸i<br />

Proprietăt¸i<br />

<strong>Diagrame</strong> <strong>Voronoi</strong> ¸si triangulări Delaunay<br />

Un algoritm eficient<br />

Algoritmul lui Fortune [1987]<br />

◮ Complexitate: O(n log n).<br />

◮ Principiu (paradigmă): sweep line / linie de baleiere.<br />

◮ Inconvenient: la întâlnirea unui vârf al diagramei, linia de<br />

baleiere nu a întâlnit în că toate siturile (puncte din P) care<br />

determină acest vârf!<br />

◮ Adaptare: nu ret¸inem informat¸ia legată de intersect¸ia dintre<br />

linia de baleiere ¸si diagramă, ci doar informat¸ia legată de<br />

partea diagramei care nu mai poate fi influent¸ată de punctele<br />

situate de dincolo de linia de baleiere.<br />

◮ Concepte:<br />

◮ beach line / linie parabolică<br />

◮ site event / eveniment de tip locat¸ie (apare un arc de parabolă)<br />

Mihai-Sorin Stupariu <strong>Diagrame</strong> <strong>Voronoi</strong>


Generalităt¸i<br />

Proprietăt¸i<br />

<strong>Diagrame</strong> <strong>Voronoi</strong> ¸si triangulări Delaunay<br />

Un algoritm eficient<br />

Algoritmul lui Fortune [1987]<br />

◮ Complexitate: O(n log n).<br />

◮ Principiu (paradigmă): sweep line / linie de baleiere.<br />

◮ Inconvenient: la întâlnirea unui vârf al diagramei, linia de<br />

baleiere nu a întâlnit în că toate siturile (puncte din P) care<br />

determină acest vârf!<br />

◮ Adaptare: nu ret¸inem informat¸ia legată de intersect¸ia dintre<br />

linia de baleiere ¸si diagramă, ci doar informat¸ia legată de<br />

partea diagramei care nu mai poate fi influent¸ată de punctele<br />

situate de dincolo de linia de baleiere.<br />

◮ Concepte:<br />

◮ beach line / linie parabolică<br />

◮ site event / eveniment de tip locat¸ie (apare un arc de parabolă)<br />

◮ circle event / eveniment de tip cerc (dispare un arc de<br />

parabolă)<br />

Mihai-Sorin Stupariu <strong>Diagrame</strong> <strong>Voronoi</strong>

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!