14.08.2013 Views

Diagrame Voronoi

Diagrame Voronoi

Diagrame Voronoi

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

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!