Algoritmo de triangulación voraz
Algoritmo de Triangulación Voraz | ||
---|---|---|
Triangulación del interior de un polígono paso a paso mediante el algoritmo voraz que escoge la diagonal más corta. | ||
Tipo | Algoritmo voraz | |
Problema que resuelve | Triangulación de un polígono | |
Estructura de datos | ||
Clase de complejidad | P | |
Tiempo de ejecución | ||
Peor caso | ||
Mejor caso | ||
El Algoritmo de Triangulación Voraz es un método para calcular una triangulación de un polígono o de una nube de puntos mediante un método voraz, que consiste en añadir aristas a la solución de una en una uniendo el par de vértices más próximos entre sí, con la condición de que una nueva arista no puede cortar a otra previamente añadida al resultado. [1][2]
Propiedades
[editar]Las triangulaciones calculadas mediante el algoritmo de triangulación voraz tienen las siguientes propiedades:
- Son una buena aproximación de la triangulación de peso mínimo de un polígono o nube de puntos, aunque no siempre coinciden.
- Frecuentemente, aunque no siempre, suelen coincidir con la triangulación de Delaunay de los mismos datos de entrada.
- Si la entrada es una nube de puntos, todas las aristas del cierre convexo pertenecen a la triangulación voraz.
- Si la entrada es un polígono, las aristas de la triangulación son un subconjunto de las diagonales internas del polígono.
- La implementación por fuerza bruta del algoritmo es de orden para un conjunto de entrada de puntos.[3]
- Existen implementaciones capaces de calcular la triangulación voraz en tiempo empleando estructuras adicionales para comprobar los cruces entre aristas.[2]
- La triangulación voraz puede calcularse a partir de la triangulación de Delaunay añadiendo una cantidad de tiempo lineal.[4]
Pseudoalgoritmo
[editar]Existen varias posibles estrategias para implementar el algoritmo de triangulación voraz. Tal vez, la más sencilla de todas sea la siguiente:
Algoritmo triangulación voraz |
|
Sin embargo, existen soluciones alternativas que pueden acelerar mucho la construcción en caso de que la entrada tenga un tamaño considerable.[2] Especialmente si el número de vértices en la entrada es grande, se debería evitar la comparación de todos los vértices de entrada dos a dos, ya que es un problema de orden . Para ello debería emplearse alguna versión eficiente del Problema del par de puntos más cercanos (que puede resolverse en tiempo ),[5][6] o bien emplear una triangulación de Delaunay como paso intermedio.[4]
Referencias
[editar]- ↑ Loera, Jesús A.; Rambau, Joerg; Santos, Francisco (2010). Triangulations: Structures and Algorithms. (en inglés). Springer Science & Business Media. pp. 103. ISBN 9783642129711. Consultado el 21 de febrero de 2017. (requiere registro).
- ↑ a b c Dickerson, Matthew T. (1997). «Fast greedy triangulation algorithms». Computational Geometry (Elsevier) 8 (2): 67-86. Consultado el 21 de febrero de 2017.
- ↑ Debido a que existen aristas candidatas iniciales, que deben ser comprobadas.
- ↑ a b Levcopoulos, Christos (1999). «The greedy triangulation can be computed from the Delaunay triangulation in linear time». Computational Geometry (Elsevier) 14 (4): 197-220. Consultado el 21 de febrero de 2017.
- ↑ Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein. Introduction to Algorithms, Second Edition. MIT Press and McGraw-Hill, 2001. ISBN 0-262-03293-7. Pages 957–961 of section 33.4: Finding the closest pair of points.
- ↑ UCSB Lecture Notes