Está en la página 1de 14

Captulo 3 DIAGRAMAS DE VORONOI

3.1. INTRODUCCIN 3.2. CONCEPTOS TERICOS


3.2.1. Observaciones 3.2.1.1. Observacin 1 3.2.1.2. Observacin 2 3.2.1.3. Observacin 3 3.2.1.4. Observacin 4

3.3. AL ORIT!O DE "ORTUNE


3.3.1. In#ro$%ccin 3.3.2. &isin r'(ica $e) A)*ori#+o $e "or#%ne 3.3.2.1. Even#os $e P%n#o ,Si#e Even#s 3.3.2.2. Even#os $e C.rc%)o ,Circ)e Even#s 3.3.3. Es#ra#e*ia $e) A)*ori#+o $e "or#%ne 3.3.3.1. Es#r%c#%ras $e Da#os 3.3.3.1.1. Es#r%c#%ra DCEL 3.3.3.1.2. /rbo) binario $e b0s1%e$a ba)ancea$o 3.3.3.1.3. Co)a $e even#os 3.3.4. E) a)*ori#+o $e "or#%ne 3.3.2. Co+3)e4i$a$ $e) a)*ori#+o

3.1. INTRODUCCIN.
Un Diagrama de Voronoi de un conjunto de puntos en el plano, no es ms que la subdivisin del mismo en regiones formadas por los lugares ms prximos a cada uno de los puntos. De los Diagramas de Voronoi ya hablaba Descartes cuando afirmaba que el sistema solar estaba formado

por vrtices, pero fueron Dirichlet, Voronoi y hiessen los que profundi!aron en el estudio de estos diagramas. "l siguiente grfico muestra un diagrama de Voronoi de una nube de puntos#

$on muchas las utilidades de los Diagramas de Voronoi entre las que podemos citar# % &osicionamiento de torretas en telefon'a mvil. (a regin de Voronoi de cada una de las torretas determinar'a qu) tel)fonos deber'an reali!ar la conexin a trav)s de la misma. % *ontrol a)reo. "l Diagrama de Voronoi de cada centro de control, determinar'a la !ona de espacio a)reo a controlar por dicha estacin. % Distribucin de servicios p+blicos ,hospitales, centros comerciales...-. (a ubicacin de dichos establecimientos .deber'a ser. ,al menos tericamente- la que tenga la mayor rea de regin de Voronoi con respecto al resto de establecimientos del mismo tipo, para as' aumentar la hipot)tica clientela. *omo comentario a este +ltimo caso, podr'amos reali!ar una serie de modificaciones al planteamiento# pensemos en el caso de la ubicacin de hospitales. / un determinado enfermo siempre le interesar'a acudir al hospital ms cercano a su domicilio seg+n la distancia eucl'dea. &ara saber a cual acudir no tend'a ms que mirar el Diagrama de Voronoi de los puntos que indican la posicin de los hospitales y comprobar en que regin se encuentra su casa. /hora bien, tambi)n podr'a ser interesante considerar a ciertos hospitales como ms cercanos si tienen, por ejemplo, mejor acceso ,autopista...- o si tienen un mayor n+mero de camas. "n este caso cada uno de los puntos ,hospitales en nuestro caso- puede tener asignado un determinado .peso., con lo que el Diagrama de Voronoi de la nube de hospitales podr'a cambiar notablemente al llevarse una mayor !ona de influencia ,cercan'a- el hospital con ms peso. 0ui! un ejemplo grfico ilustre mejor esta idea#

"l hospital h al tener un peso mayor, arrebata a los puntos ms cercanos, !onas que seg+n la distancia eucl'dea estar'an ms prximas a ellos. (a l'neas finas muestran el Diagrama de Voronoi del conjunto de puntos sin peso y la !ona ms gruesa ser'a la resultante de asignar un hipot)tico peso a h. Variedades sobre los Diagramas de Voronoi aparecen utili!ando m)tricas distintas a la eucl'dea. 1o es el objeto de este rabajo de 2in de *arrera en tratar estos Diagramas, existiendo abundante bibliograf'a sobre el tema. 1os centraremos pues, en los Diagramas de Voronoi en el plano y utili!aremos la distancia com+n, la distancia eucl'dea. / parte de las mencionadas utilidades de estos diagramas podemos citar# el posicionamiento de bra!os robticos, posicionamiento de torretas de visin de !onas forestales para el control de fuegos... *omen!aremos despu)s de esta introduccin con los conceptos tericos de los Diagramas de Voronoi.

3.2. CONCEPTOS TERICOS.


Denotamos la distancia "ucl'dea entre dos puntos del plano como dist(p,q).siendo#

$ea P 3 4p1,p2,...,pn5 un conjunto de n puntos distintos en el plano. Definimos el diagrama de Voronoi de P como la subdivisin del plano en n regiones, cada una correspondiente a un punto de P, cumpliendo, que un punto q pertenece a la regin correspondiente al punto pisi y solamente si dist(q,pi) < dist(q,pj) para cada punto pj P, con j distinto de i. Denotamos el diagrama de Voronoi de P como Vor(P). (a regin correspondiente al punto pi es llamada V(pi). 6bservemos por un momento la estructura de una +nica regin de Voronoi. &ara dos puntos p y q en el plano definimos el bisector de p y q como el bisector perpendicular del segmento pq. "ste bisector divide el plano en dos semiplanos. Denotamos el semiplano que contiene a p como h(p,q) y al semiplano que contiene a q como h(q,p). $e puede observar que r pertenece a h(p,q) si y solamente si dist(r,p) < dist(r,q). &odemos obtener de aqu' las siguientes observaciones#

3.2.1. Observaciones

Veamos algunas observaciones sobre los Diagramas de Voronoi.

3.2.1.1. Observacin 1

"sto es, V(pi) es la interseccin de n78 semiplanos y por tanto una regin poligonal convexa con como mximo n78 vertices y n78 lados. "s decir, que la regin de Voronoi de un determinado punto, consistir en la interseccin de todos los semiplanos h(pi,pj). 6bviamente )ste no ser'a un algoritmo eficiente para el clculo del Diagrama de Voronoi de la nube de puntos completa ya que habr'a que repetir el proceso para los n puntos de la nube.

3.2.1.2. Observacin 2
$i todos los puntos de P son colineales, entonces Vor(P) ,Diagrama de Voronoi de P- estar formada por n78 lineas paralelas y n regiones.

$e observa claramente en el grfico anterior.

3.2.1.3. Observacin 3
Un Diagrama de Voronoi de una nube de puntos en el plano tiene a lo sumo 9n7: v)rtices y ;n7< lados. (a demostracin de )sta y otras propiedades pueden encontrarse en la bibliograf'a que se lista al final de este trabajo.

3.2.1.4. Observacin 4
&ara un conjunto de puntos P del plano, un punto q es v)rtice del Diagrama de Voronoi de P si y solamente si el c'rculo vac'o de mayor tama=o con centro en q contiene tres o ms puntos de P sobre su circunferencia. "n el siguiente grfico se muestra el Diagrama de Voronoi de los puntos p8, p9 y p;, se puede observar

que el punto q es v)rtice del Diagrama de Voronoi ya que la circunferencia mayor vac'a contiene precisamente a los tres puntos.

3.3. AL ORIT!O DE "ORTUNE


3.3.1. In#ro$%ccin
Un primer algoritmo para el clculo del Diagrama de Voronoi en el que podr'amos pensar a la vista de las observaciones anteriores ser'a, el de computar las intersecciones comunes de todos los semiplanos h(pi,pj), para cada punto pi, con i distinto de j. "ste algoritmo tendr'a una complejidad O(n log n) por punto, necesitando O(n2 log n) para computar la totalidad del Diagrama. "xiste un algoritmo basado en el barrido plano, conocido como algoritmo de 2ortune 7debido a su inventor7 o de l'nea de barrido que es capa! de calcular el Diagrama de Voronoi de una nube de puntos en el plano con complejidad 6,n log n-, que es adems complejidad ptima para calcular el diagrama de Voronoi. *omen!aremos con una visin grfica inicial del algoritmo para posteriormente profundi!ar en los conceptos tericos del mismo.

3.3.2. &isin

r'(ica $e) A)*ori#+o $e "or#%ne

Vamos a reali!ar una primera justificacin grfica del mecanismo que utili!a el algoritmo de 2ortune para generar el Diagrama de Voronoi de un conjunto de puntos en el plano. &artimos de un conjunto S de n puntos en el plano x-y, cumpli)ndose de no existen cuatro puntos cocirculares. *reamos para cada punto un cono opaco, id)ntico a todos los dems, creciendo hacia el eje z.

$eg+n esto y observando el grfico anterior podemos afirmar# % Dos conos intersectan en una hip)rbola que cae en un plano vertical al x-y. % 6bservando desde arriba ,por encima del plano x-y-, la interseccin entre dos conos es una l'nea recta. % "sta l'nea es la mediatri! en dos dimensiones de los dos puntos. % 1o todos los puntos de esta l'nea son visibles, ya que pueden ser ocultados por el crecimiento de otros conos. De todo esto se puede deducir que, proyectando la interseccin visible de todos los conos sobre el plano x-y se obtiene el diagrama de Voronoi del conjunto de puntos. Vemamos ahora el mecanismo de barrido de este algoritmo# &artimos de un plano de barrido que se mueve de i!quierda a derecha sobre el plano x-y con un ngulo de inclinacin igual al de los conos, seg+n se muestra en el siguiente grfico#

"l plano de barrido intersecta con el plano x-y en lo que llamamos l'nea de barrido. (a interseccin del plano de barrido con el cono proyectada sobre el plano x-y es una parbola con foco en el punto p ,seg+n el grfico- y directri! la l'nea de barrido. $i hacemos ahora hacemos tambi)n opaco el plano de barrido podemos observar# % "l plano de barrido oculta los conos que nacen a la derecha de la l'nea de barrido. % (os conos visibles que todav'a no han sido totalmente barridos por el plano de barrido proyectarn sobre el plano x7y un conjunto de parbolas apuntando hacia la i!quierda, con ejes paralelos y distintas anchuras. "n el siguiente grfico podemos observar la proyeccin en el eje x-y#

(a frontera de la unin de todas las parbolas es lo que se denomina frente p r !"li#o o l$ne de pl y . &odemos observar que hacia la derecha de la l'nea de barrido el plano de barrido al ser opaco oculta todos los conos y bloquea su visin desde abajo, en cambio hacia la i!quierda el plano de barrido cae por encima de uno o ms conos y por tanto no bloquea sus vistas desde abajo.

$i observamos por debajo del plano x7y# % *ada arco del frente p r !"li#o cae en una regin de Voronoi. % *ada punto de corte entre dos arcos consecutivos del frente p r !"li#o cae en uno de los lados del Diagrama de Voronoi.

&odemos afirmar que cada punto de un lado del Diagrama de Voronoi, ser un punto de corte entre dos arcos consecutivos del frente parablico, en alg+n momento, durante el proceso de barrido. "s decir, estamos construyendo el Diagrama de Voronoi. "n la evolucin del frente parablico surgen dos tipos de eventos que trataremos a continuacin# % "ventos de &unto ,$ite "vents% "ventos de *'rculo ,*ircle "vents-

3.3.2.1. Even#os $e P%n#o ,Si#e Even#s*uando la l'nea de barrido pasa justamente por encima de un punto, una parbola degenerada ,ancho >- se une al frente p r !"li#o, esta parbola parte una arco existente en el frente parablico en dos. (a evolucin posterior de esta parbola durante el proceso de barrido dar lugar a un nuevo lado del Diagrama de Voronoi. "l siguiente grfico muestra la evolucin en la creacin de un lado de Voronoi#

"n la figura 8 la l'nea de barrido no ha llegado al punto, en la 9 justamente est sobre el punto, se crea la parbola degenerada que divide en dos uno de los arcos del frente parablico y en la figura ; ha pasado la l'nea y se observa la evolucin del nuevo lado del Diagrama Voronoi. (lamaremos pues, e%ento de p&nto (site e%ent) cuando la l'nea de barrido pasa justamente por encima de uno de los puntos de la nube. "ste es el +nico modo de a=adir un nuevo arco al frente parablico y provoca la aparicin de un nuevo lado del Diagrama de Voronoi.

3.3.2.2. Even#os $e C.rc%)o ,Circ)e Even#sVeamos ahora que ocurre cuando una arco va decreciendo en el frente parablico hasta convertirse en un punto y desaparecer de dicho frente. Vemoslo con un grfico#

"n la figura 8 se observa que /8, /9 y /; son tres arcos consecutivos del frente parablico correspondientes a los puntos p8, p9 y p; respectivamente. "l arco /9 se va estrechando debido al crecimiento de /8 y /9. "n la figura 9 se observa justo el momento en el que el arco /9 abandona el frente parablico formando un punto de corte entre /8 y /; que hemos llamado &, & es equidistante de p8, p9 y p;, es decir, es el centro de la circunferencia que pasa por p8, p9 y p;. /l mismo tiempo esta circunferencia es tangente a la l'nea de barrido en un punto que hemos llamado ?, justamente este punto es lo que llamaremos e%ento de #$r#&lo (#ir#le e%ent). *uando la l'nea de barrido est sobre este punto ,'se est generando un v)rtice del Diagrama de Voronoi y a partir de este momento comien!a a crecer a partir de )l un nuevo lado del Diagrama de Voronoi, tal y como se puede apreciar en la figura ;.

Un #ir#le e%ent es la +nica forma de que un arco abandone el frente parablico. (a cuestin ahora es# despu)s de esta primera aproximacin grfica, @qu) estructuras de datos optimas debo utili!arA y @qu) partes del frente parablico debo guardar durante el proceso de barrido para conseguir finalmente el Diagrama de Voronoi de la nube de puntos inicialA. &ara ello comen!aremos, ahora s', con los conceptos tericos necesarios para contestar a estas preguntas.

3.3.3. Es#ra#e*ia $e) A)*ori#+o $e "or#%ne


(a estrategia de este algoritmo consiste, como hemos comentado anteriormente, en reali!ar un barrido con una l'nea recta desde arriba a abajo del plano ,cambiamos el orden del barrido con respecto a la visin grfica, sin que ello influya en los ra!onamientos-. Bientras la l'nea se va moviendo, la informacin no cambia, excepto en ciertos puntos llamados puntos evento, que tambi)n fueron comentados en el apartado anterior. "l algoritmo pretende mantener la parte del diagrama de Voronoi por encima de la l'nea de barrido que no se ve afectada por puntos situados por debajo de dicha l'nea. Denotamos l a la l'nea de barrido y l( al semiplano por encima de l. "s claro que la distancia de un punto q perteneciente a l( a cualquier lugar por debajo de l es mayor que la distancia de q a l, esto significa que los puntos ms cercanos a q no pueden estar por debajo de l si q es al menos tan cercano a alg+n pi perteneciente a l( como q lo es a l. (os puntos que son mas cercanos a alg+n punto pi perteneciente a l( que a l estn limitados por una parbola, por lo tanto el lugar de los puntos que son mas cercanos a alg+n punto por encima de l que a l mismo est limitado por arcos parablicos. / la secuencia de estos arcos parablicos es lo que llamaremos l'nea de playa o frente parablico. 6tra forma de visuali!ar la l'nea de playa ser'a# cada punto pi define una parbola completa )i, la l'nea de playa ser'a la funcin que para cada coordenada x pasa por el punto ms bajo de todas las parbolas. $e puede observar que cada l'nea vertical intersecta exactamente en un +nico punto del frente parablico y que los puntos de corte entre arcos consecutivos del frente parablico caen encima de los lados del Diagrama de Voronoi. "n lugar de mantener la interseccin de VO*(P) con l, mantendremos la l'nea de playa cuando la l'nea de barrido se va despla!ando hacia abajo. ambi)n comentamos en la visin grfica del algoritmo que cuando la l'nea de barrido pase exactamente por encima de uno de los puntos, una parbola de ancho > se unir al frente parablico y a medida que la l'nea de barrido siga avan!ando, un lado del Diagrama de Voronoi ir creciendo. "ste punto es lo que denominamos Site +%ent. (a +nica forma de que apare!ca un nuevo arco en el frente parablico es a trav)s de un Site +%ent. $i denotamos ly a la coordenada y de la l'nea de barrido, la ecuacin de la parbola )j para el punto pj3,pj,x,p,jy- ser#

ambi)n vimos en la visin grfica del algoritmo, que la +nica forma de que un arco abandone el frente

parablico es la aparicin de un ,ir#le +%ent, que formar'a un v)rtice del Diagrama de Voronoi y a partir de ese momento un nuevo lado del Diagrama de Voronoi comen!ar'a a crecer. Bientras que todos los Site +%ents son conocidos al comien!o del barrido, durante el mismo, aparecern nuevos ,ir#le +%ents y otros sern eliminados al no poderse producir en la posicin actual de la l'nea de barrido. (a idea es, mantener el frente parablico en los puntos evento, actuali!ado estructuras ptimas para el manejo de dichos eventos. Veamos las estructuras de datos que nos pueden ser +tiles.

3.3.3.1. Es#r%c#%ras $e Da#os


&ara mantener los cambios del frente parablico seg+n va movi)ndose la l'nea de barrido necesitaremos las siguientes estructuras de datos estndar# % Una estructura para almacenar el Diagrama de Voronoi en construccin ,D*"(% Una estructura del estado de la l'nea de playa ,Crbol binario de b+squeda equilibrado-. % Una cola de eventos ,*ola con prioridades-

3.3.3.1.1. Es#r%c#%ra DCEL


D*"( son las siglas inglesas de lista de lados doblemente enla!ados, )sta ser la estructura de datos que utili!aremos para almacenar la parte del Diagrama de Voronoi que vamos generando. (a estructura D*"(, est formada por tres colecciones de registros# % (ista de v)rtices# Un registro para un v)rtice %, almacena las coordenadas de % y un puntero a un lado arbitrario con origen en %. % (ista de caras# Un registro para una cara #, almacena un puntero a un lado exterior a la cara y otro a uno interior. &odemos ver, que es necesario aplicar una determinada orientacin a los lados, ya que hablamos de medios7lados orientados, de esta forma un lado podr'a considerarse interno a una cara si est orientado en sentido contrario a las agujas del reloj con respecto a la cara. % (ista de lados# Un registro para un lado l, almacenara un puntero al v)rtice origen, un puntero a su lado en sentido contrario, un puntero a la cara en la que se encuentra, un puntero al lado siguiente y otro al anterior, todos ellos en el sentido contrario a las agujas del reloj ,por ejemplo-. /dems, estas estructuras pueden almacenar otras informaciones no necesariamente topolgicas, como colores...

3.3.3.1.2. /rbo) binario $e b0s1%e$a ba)ancea$o


Dsta ser la estructura que utili!aremos para almacenar el estado de la l'nea de playa seg+n va avan!ando la l'nea de barrido y se van tratando los eventos. (as hojas en este rbol corresponden a los arcos del frente parablico de manera ordenada ,la hoja ms a la i!quierda representa el arco ms a la i!quierda-. *ada hoja tiene un puntero al punto que define esa parbola y los nodos internos representan los puntos de corte entre arcos consecutivos del frente parablico.

*ada hoja mantiene un puntero al nodo de la cola de eventos que representa el ,ir#le +%ent que har que este arco desapare!ca del frente parablico. /dems en cada nodo interno se almacena otro puntero al lado de Voronoi que est generando el punto de corte que representa.

3.3.3.1.3. Co)a $e even#os


"n ella guardaremos los eventos, a=adiremos nuevos y eliminaremos los que ya no se puedan ejecutar, debido a que puede que ya sean obsoletos. $e implementa como una cola de prioridades, donde la prioridad de un evento queda determinada por su coordenada y. &ara un Site +%ent se almacena su propia coordenada y, en cambio en un ,ir#le +%ent se almacenar el punto ms bajo del c'rculo. "n el caso de un ,ir#le +%ent, adems se almacenar un puntero a la hoja del rbol binario que representa al arco que desaparecer del frente parablico en este evento.

3.3.4. E) a)*ori#+o $e "or#%ne


enemos ya todas las herramientas necesarias para atacar el algoritmo completamente. Veamos el algoritmo en pseudocdigo#

DIAGRAMA_VORONOI (P)
Entrada: P := {p1,...,pn} un conjunto de n puntos en el plano. Salida: El Diagrama de Voronoi Vor(P) dentro de un rectngulo en una estructura DCEL. 1. Inicializar la cola de eventos Q con todos los Site Events. 2. mientras Q no est vacio 3. hacer Considerar el evento con mayor coordenada y de Q. 4. si el evento es un Site Event del punto pi 5. entonces T !T! "#ITE"EVE$T %pi& 6. en caso contrario T !T! "CI C'E"EVE$T%pl&( donde pl es el punto ms )ajo del c*rculo +ue causa el evento. . Eliminar el evento de Q. !. 'os nodos internos presentes todav*a en T %,r)ol )inario& pertenecen a los medios-lados in.initos del Diagrama de Voronoi. Calcular un rectngulo +ue contenga todos los vrtices del Diagrama de Voronoi en su interior(unindole los medios-lados in.initos( modi.icando la estructura DCEL apropiadamente.

1os han surgido dos nuevos procedimientos# % E/ /EF$G "F"V"1 ,pi% E/ /EF*GE*("F"V"1 ,plVemoslos detenidamente# TRATAR5SITE5E&ENT ,pi Huscar en - ,Crbol de b+squeda- el arco que cae verticalmente sobre pi, y borrar todos los ,ir#le +%ents que involucran a de la cola .. Eeempla!ar la hoja de - que representa a por un subrbol con tres hojas. "n la hoja central almacenaremos el nuevo punto pi y en las otras dos hojas almacenaremos el pj que originalmente estaba almacenado con . /lmacenamos las tuplas Ipj,piJ y Ipi,pjJ que representan los nuevos puntos de corte de los dos nuevos nodos internos. Eeali!ar operaciones de rebalanceado de - si es necesario. *rear nuevos registros en la estructura del Diagrama de Voronoi ,/,+0- para los dos nuevos medios7lados. *hequear las tripletas de arcos consecutivos que involucren uno de los tres nuevos arcos. Gnsertar el correspondiente ,ir#le +%ent solamente si el c'rculo intersecta la l'nea de barrido y el ,ir#le +%ent no estaba ya en .. TRATAR5CIRCLE5E&ENT,pl Huscar en - ,Crbol de b+squeda- el arco que cae verticalmente sobre pl, que es el va a desaparecer, y borrar todos los ,ir#le +%ents que involucran a de la cola .. Horrar la hoja que representa a de -. /ctuali!ar las tuplas que representan los puntos de corte en los nodos internos. Eeali!ar operaciones de rebalanceado de - si es necesario. /=adir el centro del c'rculo que causa el evento como un registro v)rtice en la estructura del Diagrama de Voronoi ,/,+0- y crear dos nuevos medios7lados correspondientes al nuevo punto de corte del Diagrama de Voronoi. *olocar los punteros entre ellos adecuadamente. *hequear las nuevas tripletas de arcos consecutivos que surgen debido a la desaparicin del arco . Gnsertar el correspondiente ,ir#le +%ent en . solamente si el c'rculo intersecta la l'nea de barrido y el ,ir#le +%ent no estaba ya en ..

3.3.2. Co+3)e4i$a$ $e) a)*ori#+o


"l algoritmo de 2ortune corre con una complejidad O(n log n) y usa O(n- almacenamiento. Vemoslo ms detenidamente#

(as operaciones primitivas sobre el rbol de b+squeda - y la cola de eventos ., tales como, insertar o borrar un elemento toman O(log n) tiempo cada una. (as operaciones primitivas en las estructura /,+0 toman tiempo constante. &ara tratar un evento, reali!amos un n+mero constante de dichas operaciones primitivas, por tanto gastamos O(log n) tiempo en procesar un evento. 6bviamente tenemos n Site +%ents. "n cuanto a los ,ir#le +%ents observamos que cada uno que es procesado define un v)rtice del Diagrama de Voronoi y que las falsas alarmas son borradas de . antes de ser procesadas. "sts falsas alarmas son creadas y borradas mientras se procesa un evento real, empleando un tiempo despreciable con respecto al tiempo de proceso del evento. De esta forma el n+mero mximo de ,ir#le +%ents a procesar es de 2n-1. De todas estas apreciaciones es sencillo deducir la complejidad anteriormente afirmada.

También podría gustarte