Polígonos de Thiessen

De Wikipedia, la enciclopedia libre
(Redirigido desde «Diagramas de Voronoi»)
Saltar a: navegación, búsqueda
Diagramas de Voronói

Los polígonos de Thiessen, nombrados en honor al meteorólogo estadounidense Alfred H. Thiessen, son una construcción geométrica que permite construir una partición del plano euclídeo. Estos objetos también fueron estudiados por el matemático Gueorgui Voronói, de donde toman el nombre alternativo de diagramas de Voronói, y por el matemático Gustav Lejeune Dirichlet, de donde toman el nombre de teselación de Dirichlet.

Los polígonos de Thiessen son uno de los métodos de interpolación más simples, basados en la distancia euclidiana, especialmente apropiada cuando los datos son cualitativos. Se crean al unir los puntos entre sí, trazando las mediatrices de los segmento de unión. Las intersecciones de estas mediatrices determinan una serie de polígonos en un espacio bidimensional alrededor de un conjunto de puntos de control, de manera que el perímetro de los polígonos generados sea equidistante a los puntos vecinos y designan su área de influencia.

Diagramas de Voronoi en el plano euclidiano \R^2[editar]

La forma más fácil e intuitiva de visualizar a los diagramas de Voronoi es a través de su representación en el plano euclídeo. En la literatura clásica se supone el hecho de contar con un conjunto de establecimientos que se desean colocar sobre una cierta región geográfica de tal manera que las locaciones sean lo más rentables posible. Por tanto, se debe hallar una configuración que permita que el número de clientes atraídos sea el mayor agible. La suposición lógica indica que los clientes irían al establecimiento más cercano a su domicilio y no a aquellos que sean muy lejanos. Con base en esto, los diagramas de Voronoi otorgan la configuración deseaba por los establecimientos. El diagrama de Voronoi induce una subdivisión del plano euclidiano (la región geográfica) en función de un conjunto de sitios (los establecimientos), donde a cada sitio se le asocia una y solamente una subdivisión. Además, cada subdivisión engloba todos los puntos más cercanos al sitio asociado que a los sitios restantes, a esto se le denomina un modelo de asignamiento de Voronoi [1] .

Definición formal[editar]

Los cuatro sitios más externos tiene asociados regiones de Voronoi abiertas caracterizadas por las semi-aristas.

En primera instancia, denotemos a la distancia euclidiana entre dos puntos p y q por \| p - q \|. En el plano entonces se tiene:

 \| p - q \| = \sqrt{(p_x - q_x)^2 + (p_y - q_y)^2}

Construcción de la región de Voronoi de un sitio debido a la intersección de semi-planos.

Sea P = {p_1, p_2,\dots,p_n} el conjunto de n puntos distintos en el plano que son denominados como sitios. Se define el diagrama de Voronoi de P como la subdivisión del plano en n regiones, una para cada p_i \in P , cumpliendo la propiedad de proximidad en la que un punto q pertenece a la region de un sitio p_i si y sólo si \| q - p_i \| < \|q - p_j \| para cada p_j \in P, j \neq i. Se denotará al diagrama de Voronoi de P mediante Vor(P). Cada región que corresponde a un sitio p_i se denotará como \mathcal{V}(p_i) y será llamada región de Voronoi de p_i.

La región de Voronoi para un sitio p_i está construida a partir de las intersecciones de los semiplanos formados al trazar los bisectores de p_i hacia los sitios p_j,  j \neq i. Tomando el caso donde únicamente hay dos sitios p y q, se traza el segmento de recta \overline{pq} y posteriormente se traza el bisector de \overline{pq}. Este bisector parte el plano en dos semiplanos, donde el semiplano que contiene a p (representado como h(p, q)) representa el lugar geométrico de todos los puntos más cercanos a p que a q; y el semiplano que contiene a q (h(q, p)) alberga a todos los puntos más próximos a q que a p. De acuerdo con esto, entonces se puede establecer de forma general cómo se define la región de Voronoi para un sitio p_i.

\mathcal{V}(p_i) = \bigcap_{j=1,j \neq i}^{n} h(p_i, p_j)


\mathcal{V}(p_i) está compuesta por la intersección de n - 1 semiplanos que conforman una regiónpoligonal convexa que puede ser abierta o cerrada. La región está acotada por a lo más n - 1 vértices y a lo másn - 1 aristas. Se tienen estas cantidades de vértices y aristas debido a que los sitios más lejanos suele tener asociados regiones de Voronoi no acotadas conformadas por aristas y semi-aristas (aristas que tienen un vértice de inicio pero no uno final).

Propiedades[editar]

A continuación se enunciarán un conjunto de propiedades[1] [2] del Diagrama de Voronoi donde se asume que no puede haber cuatro puntos del conjunto original P en posición cocircular. En caso de que esta esta situación no sea contemplada, entonces se deben considerar una gran cantidad de detalles que deben ser agregados a las diferentes propiedades.

  • Teorema 1. Sea P un conjunto de n sitios en el plano. Si todos los sitios son colineales, entonces Vor(P) consiste de n - 1 líneas paralelas. De otra forma, Vor(p) es conexo y sus aristas podrían ser segmentos o semi-líneas.
  • Teorema 2. Para n \ge 3 , el número de vértices en el diagrama de Voronoi de un conjunto de nsitios en el plano es a lo más 2n - 5 y el número de aristas es a lo más 3n - 6.

La siguiente propiedad ayuda a caracterizar los vértices y aristas que componen el diagrama de Voronoi. Sin embargo, es necesario definir qué significa el círculo vacío más grande de q, denotado como C_P(q). Para un punto q, C_P(q) se define como el círculo más grande que tiene a q como su centro y no contiene ningún otro sitio de P en su interior.

  • Teorema 3. Para un diagrama de Voronoi Vor(P) de un conjunto de sitios P lo siguiente se cumple:
    • Un punto q es un vértice de Vor(P) si y sólo si su más grande círculo vacío C_p(q) contiene tres o más sitios en su contorno.
    • El bisector entre los sitios p_i y p_j define una arista de Vor(P) si y sólo si hay un punto q sobre el bisector tal que C_p(q) contiene tanto a p_i y a p_j en su contorno pero no otro sitio.
  • Teorema 4. Cada vecino más cercano del sitio p_i en P define una arista de \mathcal{V}(p_i).
  • Teorema 5. La región de Voronoi \mathcal{V}(p_i) es abierta si y sólo si p_i es un punto en la envolvente convexa del conjunto P.
  • Teorema 6. La gráfica dual del diagrama de Voronoi define la triangulación de Delaunay.

Algoritmos para la construcción del Diagrama de Voronoi[editar]

Algoritmo por fuerza bruta[editar]

Una primera aproximación para la construcción del diagrama de Voronoi consiste en explotar la geometría de cada región de Voronoi. Por cada sitio p_i \in P se construirá su región de Voronoi mediante el cálculo explícito de los n - 1 semiplanos originados debido a los bisectores trazados con respecto a los demás sitios. Posteriormente, se computará la intersección de estos n - 1 semiplanos para, finalmente, dar origen a \mathcal{V}(p_i).

Este algoritmo tiene muchas desventajas de entre las cuales se tienen las que a continuación se describen. En primera instancia, el cálculo explícito de los semi-planos y su intersección puede provocar problemas de precisión en la computadora generado, evidentemente, una versión incorrecta de Vor(P). El segundo inconveniente involucra que no se produce información inmediata y que se pueda aprovechar acerca del vecindario de cada sitio. Finalmente, dado que se trata del algoritmo de un algoritmo ineficiente, no resulta extraño descubrir que su complejidad computacional sea alta. El algoritmo está en el orden de O(n^2\log{n})

Algoritmo divide y vencerás[editar]

Este algoritmo está fundamentado sobre el paradigma de diseño de algoritmos divide y vencerás. Dado el problema de construir el diagrama de Voronoi para el conjunto P de sitios, ahora se dividirá a éste último en dos subconjuntos P_1 y P_2, con aproximadamente el mismo tamaño, de los que se debe encontrar su diagrama de Voronoi independientemente. Finalmente, Vor(P_1) y Vor(P_2) deben ser unidos para poder obtener Vor(P). Sin embargo, ¿qué razón existe para que se crear que Vor(P_1) y Vor(P_2) tengan alguna relación con Vor(P)?

Para que se pueda contestar la última pregunta, es necesario definir construcciones geométricas que serán de vital importancia.

Definición 1. Dado una petición {P_1 P_2} de P, sea \sigma(P_1, P_2) el conjunto de aristas de Voronoi que son compartidas por pares de regiones de Voronoi <mah>\mathcal{V}(p_i \in P_1)</math> y \mathcal{V}(p_j \in P_2).

La colección de aristas \sigma(P_1, P_2) tiene las siguientes propiedades.

Teorema 7 \sigma(P_1, P_2)es el conjunto de aristas de una subgráfica de Vor(P) con las siguientes propiedades:

  • \sigma(P_1, P_2) consta de ciclos y cadenas de aristas disjuntas. Si una cadena tiene una sola arista, ésta es una línea recta; de otra forma sus dos aristas extremas son rayos semi-infiitos.
  • Si P_1 y P_2 son linealmente separados (si más de un punto pertence a la línea de separación, todos estos puntos son asignados a un mismo conjunto de la partición), entonces \sigma(P_1, P_2) consiste de una sola cadena monotónica.

Con el fin de separar a P en dos subconjuntos se le deberá ordenar con respecto a las abcisas y tomar la recta m que pase por la mediana, de tal suerte que se tengan dos subconjuntos de aproximadamente el mismo tamaño. Adicionalmente, dada esta elección de recta de separación, se puede decir que \sigma parte al plano en una porción izquierda \pi_L y una porción derecha \pi_R. Con base en esto, se tiene la siguiente propiedad:

Teorema 8. Si P_1 y P_2 son linealmente separados por una línea vertical con P_1 a la izquierda y P_2 a la derecha, entonces el diagrama de Voronoi Vor(P) es la unión de Vor(P_1)\cap\pi_L y Vor(P_2)\cap\pi_R.

A partir del último teorema es que se puede responder la pregunta inicial acerca de cómo se vinculan dos diagramas de Voronoi de dos particiones para generar el diagrama de Voronoi de todo el conjunto de sitios. El siguiente algoritmo[2] establece la forma de calcular el diagrama de Voronoi mediante la técnica divide y vencerás.

Procedimiento DIAGRAMA DE VORONOI

Paso 1. Partir a P en dos subconjunto P_1 y P_2, de aproximadamente el mismo tamaño, mediante la mediana en las coordenadas x.

Paso 2. Construir Vor(P_1) y Vor(P_2) recursivamente.

Paso 3. Construir la cadena polígona \sigma, separando a P_1 y P_2.

Paso 4. Descartar todas las aristas de Vor(P_2) que estén a la izquierda de \sigma. El resultado es Vor(P), el diagrama de Voronoi del diagrama entero.

Algoritmo de Fortune (barrido de recta)[editar]

Inspiración[editar]

El algoritmo de fuerza bruta previamente revisado tiene una complejidad O(n^2\log{n}) , sin embargo, debido al teorema 2, se puede suponer que hay una forma mucho más eficiente de encontrar el diagrama de Voronoi pues sus elementos constituyentes tienen complejidad O(n)[1] . En efecto, existe este algoritmo y es llamado Algoritmo de Fortune[3] en honor a Steven Fortune quien lo inventó en 1986 y cuya complejidad es O(n\log{n})[1] .

Cálculo del diagrama de Voronoi con ayuda de la técnica de barrido de recta. Se nota que conforme la recta se mueve, la línea de playa cambia generando las regiones de Voronoi de los sitios.

El algoritmo de Fortune está basado en una de as técnicas clave dentro de la geometría computacional y que se denomina: barrido de recta. Le esencia de está técnica yace en suponer que existe una recta \ell que recorre el plano de arriba hacia abajo (o de izquierda a derecha, incluso en direcciones opuestas) y que a lo largo de su recorrido intersecta las estructuras que deseamos procesar. Cuando se da esta intersección, cierta información es guardada de tal forma que ayude en la computación. La invariante que se cumple es que la información que se haya obtenido en regiones ya visitadas por la recta nunca va a cambiar. Es muy común que está técnica utilice dos tipos de estructuras de datos: cola de prioridades donde se guardan eventos que no son más que puntos donde la recta debe detenerse y un árbol binario de búsqueda donde se depositan los elementos geométricos que la recta ha intersectado y necesita recordar para el futuro procesamiento. Cabe resaltar que debido a que en la computadora no se puede emular tal cual el movimiento continuo de la recta de barrido, se requiere idear una forma de discretización del movimiento de la recta que sea procesable en la computadora y de ahí que los eventos sean tal discretización.

Propiedades combinatorias[editar]

Para aplicar el barrido de recta al diagrama de Voronoi, intuitivamente, se podría tomar al conjunto de sitios P ={p_1,\dots,p_n} como los eventos y de esta manera llevar la intersección de la recta de barrido con el diagrama de Voronoi. No obstante, debido a que el cálculo de \mathcal{V}(p_i) depende de la intersección de n - 1 planos, entonces no se podría mantener el invariante de la técnica ya que aún cuando \ell ya haya procesado un sitio, la información con respecto a su región de Voronoi seguirá cambiando debido a los sitios restantes por procesar. Con base en esto, es imperativo cambiar la perspectiva y en lugar de mantener la intersección de \ell con Vor(P) se necesita mantener la información acerca de aquellos sitios sobre \ell que ya no podrá cambiar debido a los sitios debajo de \ell.

Línea de playa para el diagrama de Voronoi.

Se denotará al semi-plano cerrado sobre \ell como \ell^+. Se busca cuál es la parte del diagrama de Voronoi sobre \ell que ya no podrá cambiar jamás, para lo cual se tiene lo siguiente. Dado un punto q \in \ell^+, la distancia de éste a cualquier punto debajo de \ell es más grande que la distancia de q a \ell propiamente. Además, el sitio más cercano q no puede estar debajo de \ell si q es al menos tan cercano a algún sitio p_i \in \ell^+ como q lo es a \ell. Por tanto, el lugar geométrico de puntos más cercanos de algún sitio que a \ell está limitado por una parábola. Siguiendo esta línea, el lugar geométrico de todos los puntos más cercanos a algún sitio sobre \ell que a \ell en sí misma está acotado por un conjunto de a lo más 2n - 1[1] arcos parabólicos. Este conjunto de arcos se denomina línea de playa. Cada sitio p_i sobre la línea de barrido define una parábola completamente. La línea de playa cuenta con la propiedad de monotonicidad ya que si se hace pasar cualquier recta vertical por ella, ésta la intersecta en exactamente un punto[1] .

Entonces, en lugar de mantener la intersección de Vor(P) con \ell, se mantendrá la línea de playa conforme la línea de barrido se mueva. Evidentemente, no se puede representar explícitamente la línea de playa ya que es continua y se transforma cada que \ell cambia de posición.

Generación de un nuevo arco en la línea de playa.

Un arco puede aparecer en la línea de playa cuando \ell procesa un nuevo sitio, de ahí que esto tome el nombre de evento de sitio. En este momento una nueva parábola (en forma de línea vertical pues el lado recto es infinitesimalmente pequeño) rompe sobre la línea de playa. Conforme la línea de playa comienza a bajar, la recientemente creada parábola comienza a hacerse más amplía. Además, conforme va creciendo la parábola se generan intersecciones con otras parábolas en la línea de playa, lo cual comienza a trazar las aristas[1] del diagrama de Voronoi.

Un segundo evento de la línea de barrido surge cuando un arco \beta se hace tan pequeño que se convierte en un punto. Cuando se presenta esto, las intersecciones que tenía \beta con los otros arcos (\beta' a la izquierda y \beta'' a la derecha) se juntan. Este encuentro de los puntos de intersección implica que dos aristas del diagrama se están encontrado. En consecuencia, se ha formado un vértice q del diagrama de Voronoi. Gráficamente, q es el centro de un círculo que pasa por los sitios p', p y p'' correspondientes a \beta', \beta y \beta'', respectivamente. Cuando \ell alcanza el punto más bajo de este círculo, se ostenta un evento de círculo.

Estructuras de datos y algoritmo[editar]

El algoritmo de Fortune necesita de tres tipos de estructuras de datos:

  1. Estructura de datos que ayude a guardar la porción del diagrama calculada hasta el momento. Para esto se emplea una lista doblemente conectada de aristas DCEL[1] . Se referirá a éste como \mathcal{D}.
  2. Cola de prioridades \mathcal{Q} que permita guardar los eventos de sitio y de círculo que debe procesar la línea de barrido.
  3. Árbol de búsqueda binario balanceado \mathcal{T} que guarde la línea de playa. Dado que no se puede guardar directamente la línea de playa debido a su naturaleza continua, se hace lo siguiente. En las hojas \mathcal{T}, se guardan los arcos de la línea de playa, caracterizados por el sitio que los define, manteniendo el orden como el que se apreciaría en la línea de playa realmente. Por su parte los nodos intermedios representan los puntos de quiebre (donde un arco rompe en la línea de playa) como túpalas <p_i, p_j>, donde p_i denota la parábola a la izquierda y p_j la correspondiente a la derecha.

El siguiente pseudocódigo se basa en el que se presenta en la obra de Mark de Berg et al[1] .

Algoritmo DiagramaVoronoi(P)

Entrada. Conjunto de sitios P = {p_1,\dots,p_n} en el plano.

Salida Vor(P) dentro de una caja de restricción en \mathcal{D}.

Inicializar \mathcal{Q} con todos los sitios; inicializar \mathcal{T} como vacío y una DCEL \mathcal{D} vacía.
while \mathcal{Q} no esté vacía
Remover el evento con la coordenadana y más grande de \mathcal{Q}.
if el evento es un evento de sitio en p_i then
ManejarEventoSitio(p_i)
else ManejarEventoCirculo(\gamma), donde \gamma representa la hoja de \mathcal{T} representando el arco que desaparecerá.
Computar caja de restricción que contenga todos los vértices de Vor(P) dentro y una las semi-aristas hacia la caja.


ManejarEventoSitio(p_i)

Si \mathcal{T} está vacío, insertar p_i. De lo contrario hacer los siguientes pasos.
Buscar en \mathcal{T} el arco \alpha verticalmente sobre p_i. Si la hoja \alpha tiene un puntero hacia \mathcal{Q}, entonces es una falsa alarma y debe ser eliminado de \mathcal{Q}.
Reemplazar la hoja de \mathcal{T} que representa a \alpha con un subárbol con tres hojas. La hoja en el centro guarda el sitio p_i y otras dos guardan a p_j que originalmente estaba en \alpha. Guardar las túplas <p_j, p_i> y <p_i, p_j> representando los nuevos puntos de quiebre.
Crear nuevos registros de semi-aristas en \mathcal{D} para la arista que separa a \mathcal{V}(p_i) y \mathcal{V}(p_j), que será trazada debido a los puntos de quiebre.
Checar las tripleta de arcos consecutivos donde el nuevo arco de p_i es el arco izquierdo para ver si los puntos de quiebre convergen.


ManejarEventoCirculo(\gamma)

Borrar la hoja \gamma que representa el arco a desaparecer \alpha de \mathcal{T}. Actualizar túplas que representan los puntos de quiebre. Reebalancear \mathcal{T}. Eliminar de \mathcal{Q} todos los eventos que involucren a \alpha.
Añadir el centro del círculo causante del evento como un registro de vértice en \mathcal{D}. Crear dos semi-aristas correspondientes a los nuevos puntos de quiebre de la línea de playa.
Checar la nueva triplete de arcos consecutivos que tenía a \alpha en el medio si los dos puntos de quiebre convergen. De ser así, insertarlo el evento correspondiente en \mathcal{Q}. Hacer lo mismo para la triplete donde \alpha estaba a la derecha.
Complejidad[editar]

El algoritmo se ejecuta en O(n\log{n}) y usa O(n) almacenamiento. Esto se debe a que las operaciones sobre \mathcal{T} y en \mathcal{Q} toman O(\log{n})[4] . Las operaciones en la DCEL toman tiempo constante[1] . Cuando se procesa un evento se ejecuta un número constante de operaciones de tales operaciones. Y dado que se tiene O(n) eventos (debido al teorema 2), entonces la complejidad es O(n\log{n}). Por su parte, el almacenamiento es lineal nuevamente debido al teorema 2.


Generalización a \R^n[editar]

Teselación de Voronói de un conjunto de puntos aleatorio sobre el plano.

Para cada conjunto topológico discreto S de puntos en un espacio euclídeo y para casi todo punto x, existe un punto de S que es el más cercano a x. (Aquí, el término casi se usa para indicar que existen excepciones en las cuales x puede equidistar de dos o más puntos de S.)

Si S contiene sólo dos puntos, a y b, entonces el conjunto de todos los puntos que equidistan de ambos es un hiperplano de codimensión 1. Ese hiperplano es la frontera entre los puntos más cercanos a a que a b, y los puntos más cercanos a b que a a. De hecho, ese hiperplano es el plano bisector del segmento que une a y b. Más en general, el conjunto de puntos más cercanos a un punto c de S que a ningún otro punto de S (cuenca de atracción de c) es el interior de un politopo convexo (posiblemente no acotado) llamado dominio de Dirichlet o celda de Voronói de c. El conjunto de todos esos politopos constituye una teselación completa del espacio euclídeo, llamada teselación de Voronói asociada a S.

Si la dimensión del espacio euclídeo es sólo 2, como en el plano euclídeo, entonces resulta muy sencillo dibujar teselaciones de Voronoi, como las de la figura adjunta.

Aplicaciones[editar]

Proceso llevado a cabo en un Sistema de Información Geográfica (SIG) para la obtención de ejes de calles mediante el uso de polígonos de Thiessen

Inicialmente los polígonos de Thiessen se utilizaron para el análisis de datos meteorológicos (estaciones pluviométricas), aunque en la actualidad también se aplican en estudios en los que hay que determinar áreas de influencia (centros hospitalarios, estaciones de bomberos, bocas de metro, centros comerciales, control del tráfico aéreo, telefonía móvil, análisis de poblaciones de especies vegetales, etcétera). Es una de las funciones de análisis básicas en los Sistemas de Información Geográfica (SIG).

Véase también[editar]

Enlaces externos[editar]


Referencias[editar]

  1. a b c d e f g h i j de Berg, Mark; Cheong, Otfried; van Kreveld, Marc; Overmars, Mark (2008). «7». Computational Geometry: Algorithms and Applications (en inglés) (tercera edición). Springer-Verlag Berlín Heidelberg. pp. 147–171. ISBN 978-3-540-77973-5. 
  2. a b Preparata, Franco P.; Shamos, Michael Ian (1985). «5». En David Gries. Computational Geometry: an introduction (en inglés). Springer-Verlag. pp. 204–223. ISBN 0-387-96131-3. 
  3. Steven Fortune. A sweepline algorithm for Voronoi diagrams. Proceedings of the second annual symposium on Computational geometry. Yorktown Heights, New York, United States, pp.313–322. 1986. ISBN 0-89791-194-6. ACM Digital LibrarySpringerLink
  4. Cormen, Thomas H.; Leiserson, Charles E.; Rivest, Ronald L.; Clifford, Stein (2009). Introduction to Algorithms (en inglés) (tercera edición). MIT Press. ISBN 978-0-262-03384-8.