stringtranslate.com

Triangulación de polígonos

Triangulación de polígonos

En geometría computacional , la triangulación de polígonos es la partición de un área poligonal ( polígono simple ) P en un conjunto de triángulos , [1] es decir, encontrar un conjunto de triángulos con interiores que no se intersecan por pares cuya unión es P.

Las triangulaciones pueden considerarse casos especiales de grafos de líneas rectas planas . Cuando no hay agujeros ni puntos añadidos, las triangulaciones forman grafos planos exteriores máximos .

Triangulación de polígonos sin vértices adicionales

A lo largo del tiempo, se han propuesto varios algoritmos para triangular un polígono.

Casos especiales

Las 42 triangulaciones posibles para un heptágono convexo (polígono convexo de 7 lados). Este número viene dado por el quinto número de Catalan .

Es trivial triangular cualquier polígono convexo en tiempo lineal en una triangulación de abanico , agregando diagonales desde un vértice a todos los demás vértices vecinos no más cercanos.

El número total de formas de triangular un n -gono convexo mediante diagonales que no se intersecan es el ( n −2)º número de Catalan , que es igual a

,

una fórmula encontrada por Leonhard Euler . [2]

Un polígono monótono se puede triangular en tiempo lineal con el algoritmo de A. Fournier y DY Montuno, [3] o el algoritmo de Godfried Toussaint . [4]

Método de corte de orejas

Una oreja poligonal

Una forma de triangular un polígono simple se basa en el teorema de las dos orejas , como el hecho de que cualquier polígono simple con al menos 4 vértices sin agujeros tiene al menos dos " orejas ", que son triángulos con dos lados siendo las aristas del polígono y el tercero completamente dentro de él. [5] El algoritmo consiste entonces en encontrar dicha oreja, eliminarla del polígono (lo que da como resultado un nuevo polígono que todavía cumple las condiciones) y repetir hasta que solo quede un triángulo.

Este algoritmo es fácil de implementar, pero más lento que otros algoritmos, y sólo funciona en polígonos sin agujeros. Una implementación que mantenga listas separadas de vértices convexos y cóncavos se ejecutará en tiempo O( n 2 ) . Este método se conoce como recorte de orejas y, a veces, recorte de orejas . Hossam ElGindy, Hazel Everett y Godfried Toussaint descubrieron un algoritmo eficiente para cortar orejas . [6]

Triangulación de polígonos monótonos

Descomponer un polígono en polígonos monótonos

Un polígono simple es monótono con respecto a una línea L , si cualquier línea ortogonal a L interseca el polígono como máximo dos veces. Un polígono monótono se puede dividir en dos cadenas monótonas . Un polígono que es monótono con respecto al eje y se llama y-monótono . Un polígono monótono con n vértices se puede triangular en tiempo O( n ) . Suponiendo que un polígono dado es y-monótono, el algoritmo voraz comienza caminando sobre una cadena del polígono de arriba a abajo mientras agrega diagonales siempre que sea posible. [1] Es fácil ver que el algoritmo se puede aplicar a cualquier polígono monótono.

Triangulación de un polígono no monótono

Si un polígono no es monótono, se puede dividir en subpolígonos monótonos en tiempo O( n log n ) utilizando un enfoque de línea de barrido . El algoritmo no requiere que el polígono sea simple, por lo que se puede aplicar a polígonos con agujeros . En general, este algoritmo puede triangular una subdivisión plana con n vértices en tiempo O( n log n ) utilizando espacio O( n ) . [1]

Gráfica dual de una triangulación

Un gráfico útil que suele asociarse a una triangulación de un polígono P es el gráfico dual . Dada una triangulación T P de P , se define el grafo G ( T P ) como el grafo cuyo conjunto de vértices son los triángulos de T P , siendo dos vértices (triángulos) adyacentes si y solo si comparten una diagonal. Es fácil observar que G ( T P ) es un árbol con grado máximo 3.

Complejidad computacional

Hasta 1988, si un polígono simple se puede triangular más rápido que O( n log n ) tiempo era un problema abierto en geometría computacional. [1] Luego, Tarjan y Van Wyk (1988) descubrieron un algoritmo de tiempo O( n log log n ) para triangulación, [7] posteriormente simplificado por Kirkpatrick, Klawe y Tarjan (1992). [8] Siguieron varios métodos mejorados con complejidad O( n log * n ) (en la práctica, indistinguible del tiempo lineal ). [9] [10] [11]

Bernard Chazelle demostró en 1991 que cualquier polígono simple puede triangularse en tiempo lineal, aunque el algoritmo propuesto es muy complejo. [12] También se conoce un algoritmo aleatorio más simple con tiempo esperado lineal. [13]

El algoritmo de descomposición de Seidel [10] y el método de triangulación de Chazelle se analizan en detalle en Li y Klette (2011). [14]

La complejidad temporal de la triangulación de un polígono de n vértices con agujeros tiene un límite inferior Ω( n log n ) , en modelos de cálculo de árboles algebraicos. [1] Es posible calcular el número de triangulaciones distintas de un polígono simple en tiempo polinomial utilizando programación dinámica y (basándose en este algoritmo de conteo) generar triangulaciones uniformemente aleatorias en tiempo polinomial. [15] Sin embargo, contar las triangulaciones de un polígono con agujeros es #P-completo , por lo que es poco probable que se pueda hacer en tiempo polinomial. [16]

Objetos y problemas relacionados

Véase también

Referencias

  1. ^ abcde Mark de Berg , Marc van Kreveld , Mark Overmars y Otfried Schwarzkopf (2000), "3: Triangulación de polígonos", Geometría computacional (2ª ed.), Springer-Verlag , págs. 45–61, ISBN 3-540-65620-0{{citation}}: CS1 maint: multiple names: authors list (link)
  2. ^ Pickover, Clifford A. (2009), El libro de matemáticas , Sterling, pág. 184
  3. ^ Fournier, Alain ; Montuno, Delfin Y. (1984), "Triangulación de polígonos simples y problemas equivalentes", ACM Transactions on Graphics , 3 (2): 153–174, doi : 10.1145/357337.357341 , ISSN  0730-0301, S2CID  33344266
  4. ^ Toussaint, Godfried T. (1984), "Un nuevo algoritmo lineal para triangular polígonos monótonos", Pattern Recognition Letters , 2 (3): 155–158, Bibcode :1984PaReL...2..155T, doi :10.1016/0167-8655(84)90039-4
  5. ^ Meisters, Gary Hosler (1975), "Los polígonos tienen orejas", American Mathematical Monthly , 82 (6): 648–651, doi :10.2307/2319703, JSTOR  2319703
  6. ^ ElGindy, Hossam; Everett, Hazel; Toussaint, Godfried T. (1993), "Cortar una mazorca con el método de poda y búsqueda", Pattern Recognition Letters , 14 (9): 719–722, Bibcode :1993PaReL..14..719E, doi :10.1016/0167-8655(93)90141-y
  7. ^ Tarjan, Robert E. ; Van Wyk, Christopher J. (1988), "Un algoritmo de tiempo O( n log log n ) para triangular un polígono simple", SIAM Journal on Computing , 17 (1): 143–178, CiteSeerX 10.1.1.186.5949 , doi :10.1137/0217010, MR  0925194 
  8. ^ Kirkpatrick, David G. ; Klawe, Maria M. ; Tarjan, Robert E. (1992), "Triangulación de polígonos en tiempo O( n log log n ) con estructuras de datos simples", Geometría discreta y computacional , 7 (4): 329–346, doi : 10.1007/BF02187846 , MR  1148949
  9. ^ Clarkson, Kenneth L. ; Tarjan, Robert ; van Wyk, Christopher J. (1989), "Un algoritmo rápido de Las Vegas para triangular un polígono simple", Geometría discreta y computacional , 4 (5): 423–432, doi : 10.1007/BF02187741
  10. ^ ab Seidel, Raimund (1991), "Un algoritmo aleatorizado incremental simple y rápido para calcular descomposiciones trapezoidales y para triangular polígonos", Computational Geometry , 1 : 51–64, CiteSeerX 10.1.1.55.5877 , doi : 10.1016/0925-7721(91)90012-4 
  11. ^ Clarkson, Kenneth L .; Cole, Richard; Tarjan, Robert E. (1992), "Algoritmos paralelos aleatorios para diagramas trapezoidales", International Journal of Computational Geometry & Applications , 2 (2): 117–133, doi :10.1142/S0218195992000081, MR  1168952
  12. ^ Chazelle, Bernard (1991), "Triangulación de un polígono simple en tiempo lineal", Geometría discreta y computacional , 6 (3): 485–524, doi : 10.1007/BF02574703 , ISSN  0179-5376
  13. ^ Amato, Nancy M. ; Goodrich, Michael T. ; Ramos, Edgar A. (2001), "Un algoritmo aleatorio para la triangulación de un polígono simple en tiempo lineal", Geometría discreta y computacional , 26 (2): 245–265, doi : 10.1007/s00454-001-0027-x , ISSN  0179-5376
  14. ^ Li, Fajie; Klette, Reinhard (2011), Los caminos euclidianos más cortos , Springer , doi :10.1007/978-1-4471-2256-2, ISBN 978-1-4471-2255-5
  15. ^ Epstein, Peter; Sack, Jörg-Rüdiger (1994), "Generación de triangulaciones al azar", ACM Transactions on Modeling and Computer Simulation , 4 (3): 267–278, doi :10.1145/189443.189446, S2CID  14039662
  16. ^ Eppstein, David (2019), "Contar triangulaciones de polígonos es difícil", Proc. 35.º Simposio Internacional de Geometría Computacional , Leibniz International Proceedings in Informatics (LIPIcs), vol. 129, Schloss Dagstuhl, págs. 33:1–33:17, arXiv : 1903.04737 , doi : 10.4230/LIPIcs.SoCG.2019.33 , ISBN 9783959771047, Número de identificación del sujeto  75136891

Enlaces externos