Partición de un polígonoEn geometría, una partición de un polígono es un conjunto de unidades primitivas (por ejemplo, cuadrados), que no se superponen y cuya unión es igual a un polígono dado. Un problema de partición poligonal consiste en encontrar una disección que sea mínima en algún sentido, como por ejemplo, una partición con el menor número de unidades o con unidades de longitud lateral total más pequeña. La partición de polígonos es una clase importante de problemas en geometría computacional. Hay muchos problemas diferentes de partición de polígonos, según el tipo de polígono objeto de partición y de los tipos de unidades permitidas en la misma. El término descomposición de polígonos se utiliza a menudo como un término general que incluye tanto el recubrimiento de un polígono como su partición.[1] AplicacionesLa descomposición de polígonos se aplica en varias áreas:[1]
Dividir un polígono en triángulosEl problema de partición de polígonos mejor estudiado es la partición en el menor número de triángulos, también llamado triangulación. Para un polígono sin agujeros y con vértices, se puede calcular una triangulación en el tiempo . Para un polígono con agujeros, existe un límite inferior de . Un problema relacionado es la partición en triángulos con una longitud total de aristas mínima, también llamada triangulación de peso mínimo. Dividir un polígono en pseudotriángulosSe han estudiado las mismas dos variantes del problema para el caso en el que las piezas deberían ser pseudotriángulos: polígonos que, al igual que los triángulos, tienen exactamente tres vértices convexos. Las variantes son: dividir en un número más pequeño de pseudotriángulos y dividir en pseudotriángulos con una longitud total mínima de aristas. Dividir un polígono rectilíneo en rectángulosUna subfamilia especial de problemas de partición de polígonos surge cuando el polígono grande es un polígono rectilineal (también llamado: polígono ortogonal). En este caso, la forma del componente más importante a considerar es el rectángulo.[1] Las particiones rectangulares tienen muchas aplicaciones. En el diseño de integración a muy gran escala, es necesario descomponer las máscaras en las formas más simples disponibles en los generadores de patrones litográficos, y también surgen problemas similares de descomposición de máscaras en el diseño de micromatrices de ácido desoxirribonucleico. Las particiones rectangulares pueden simplificar las operaciones de convolución en el procesamiento digital de imágenes y pueden usarse para comprimir gráficos rasterizados. Se han aplicado problemas de descomposición de matrices estrechamente relacionados con la planificación de los tratamientos de radioterapia, y también se han utilizado particiones rectangulares para diseñar secuencias de autoensamblaje robótico.[2] Minimizar el número de componentesEl problema de minimizar el número de rectángulos componentes es polinómico: se conocen varios algoritmos en tiempo polinómico. Consúltese[1]: 10–13 y[2]: 3–5 para ver desarrollos al respecto. El problema de dividir un polígono rectilíneo en el menor número de "cuadrados" (a diferencia de los rectángulos arbitrarios) es NP-difícil.[3] Minimizar la longitud total de las aristasEn algunas aplicaciones, es más importante minimizar la longitud total de cortes necesarios (por ejemplo, para minimizar el costo de realizar la partición o reducir la cantidad de polvo generado). Este problema se denomina partición rectangular de longitud mínima de borde. Fue estudiado por primera vez por Lingas, Pinter, Rivest y Shamir en 1982.[4][5] La complejidad en tiempo de ejecución de este problema depende crucialmente de si se permite que el polígono en bruto tenga agujeros o no. Si el polígono sin formato está libre de agujeros, entonces se puede encontrar una partición óptima en el tiempo , donde n es el número de vértices del polígono. En el caso especial de un polígono de histograma, la complejidad mejora a .[4] El algoritmo utiliza programación dinámica y se basa en el siguiente hecho: si el polígono no tiene agujeros, entonces tiene una partición de longitud mínima en la que cada segmento de línea máximo contiene un vértice del límite. La razón es que, en cualquier partición de longitud mínima, cada segmento de línea máximo puede ser empujado hasta que llegue a uno de los vértices del límite, sin cambiar la longitud total. Por lo tanto, solo hay candidatos para un segmento de línea en una partición óptima, y se pueden verificar de manera eficiente mediante programación dinámica.[5]: 166–167 Si el polígono en bruto puede tener agujeros, incluso si son agujeros degenerados (es decir, puntos aislados), el problema es NP-difícil. Esto se puede demostrar mediante la reducción Planar SAT.[4][6] Para el caso en el que todos los agujeros son puntos aislados, se han desarrollado varias aproximaciones de factor constante:
Minimizar el número de espacios en blancoEn esta configuración, el polígono grande ya contiene algunos rectángulos separados por pares. El objetivo es encontrar una partición del polígono en rectángulos de modo que cada rectángulo original esté contenido en una de las piezas y, sujeto a esto, el número de espacios en blanco (piezas que no contienen un rectángulo original) sea tan pequeño como sea posible. Se conocen los siguientes resultados:[12]
Dividir un polígono en trapeciosEn los sistemas de procesamiento de imágenes a VLSI, a menudo es necesario dividir una región poligonal en el número mínimo de trapecios, con dos lados horizontales. Un triángulo de lado horizontal se considera un trapezoide de dos lados horizontales, uno de los cuales es degenerado. Para un polígono sin agujeros con lados, se puede encontrar una partición más pequeña en el tiempo .[13] Si el número de trapecios no tiene por qué ser mínimo, se puede encontrar una solución trapezoidal en el tiempo , como subproducto de un algoritmo de triangulación de un polígono.[14] Si el polígono contiene agujeros, el problema es NP-completo, pero se puede encontrar una aproximación de 3 en el tiempo .[13] Dividir un polígono en cuadriláteros convexosUna cuadrilateralización o una cuadrangulación es una partición en cuadriláteros. Una característica recurrente de los problemas de cuadrangulación es si se permiten puntos de Steiner, es decir, si el algoritmo puede sumar puntos que no sean vértices del polígono. Permitir puntos de Steiner puede permitir divisiones más pequeñas, pero entonces es mucho más difícil garantizar que las divisiones encontradas por un algoritmo tengan un tamaño mínimo. Existen algoritmos de tiempo lineal para cuadrangulaciones de polígonos sin agujeros con puntos de Steiner, pero no se garantiza que encuentren una partición más pequeña.[15][16] Dividir un polígono en m-gonosUna generalización de los problemas anteriores es la partición en polígonos que tienen exactamente m lados, o como máximo m lados. Aquí el objetivo es minimizar la longitud total de los bordes. Este problema se puede resolver en tiempo polinómico en n y m.[17][18] Dividir un polígono en polígonos convexosAl dividir un polígono general en polígonos convexos se han estudiado varios objetivos. Minimizar el número de componentesEl problema de partición convexa óptimo es dividir un polígono no convexo en la menor cantidad posible de polígonos convexos, utilizando solo los vértices del polígono inicial. Existen algoritmos exactos y aproximados para este problema.[19] Minimizar el número de espacios en blancoEl polígono original ya contiene algunas figuras convexas disjuntas por pares, y el objetivo es dividirlo en polígonos convexos de manera que cada figura original esté contenida en una de las piezas, y sujeto a esto, el número de espacios en blanco (piezas que no contienen la figura original) sea lo más pequeño posible. Si el polígono grande es convexo, entonces en cualquier disposición máxima de n figuras convexas, todos los agujeros son convexos y su número es como máximo , lo que se trata de una solución ajustada.[12] Igualar el área y el perímetroEl problema de "partición justa de polígonos"[20] consiste en dividir un polígono (convexo) en piezas (convexas) con un perímetro igual y un área igual (este es un caso especial del corte de pastel justo). Cualquier polígono convexo se puede cortar fácilmente en cualquier número n de piezas convexas con un área de exactamente 1/n. Sin embargo, garantizar que las piezas tengan igual área y perímetro igual es más difícil. Existen algoritmos para resolver este problema cuando el número de piezas es una potencia de 2.[21] Una generalización de este problema es cuando las medidas de área y perímetro se reemplazan con una medida en el cuerpo y en el límite del polígono, respectivamente. Este problema fue estudiado para 2 y 3 piezas.[22] Existe una generalización adicional para manejar cualquier número de medidas. Formas de componentes más generalesSe han estudiado formas más generales de piezas, entre ellas: formas espirales, en estrella y polígonos monótonos. Consúltese el trabajo de J. Mark Keil[1] para ver desarrollos al respecto. Véase también
Referencias
|