Me gustaría disculparme por todas las publicaciones a continuación. Elegí el foro equivocado para publicar esto originalmente. Sin embargo, en lugar de hacer de esto un desperdicio completo, he reelaborado la pregunta para que sea un verdadero problema de "Ciencia de la Computación Teórica".
Problema: cree un algoritmo que tome un conjunto de n puntos ordenados en un plano 2D que forme el contorno de un polígono A simple que puede ser cóncavo o no y cree un nuevo polígono B con m puntos de manera que:
- todos los puntos en A están contenidos dentro de B
- 3 <= m <n
- B es el polígono en el conjunto de todos los B con el área más pequeña
- B debe ser un polígono simple (es decir, sin intersecciones propias).
- La entrada al algoritmo es el polígono A y "m".
- Se permite la coincidencia de segmentos en B con segmentos en A.
Algunos ejemplos de entradas y salidas esperadas:
- Si A es un cuadrado ym es 3, entonces B sería el triángulo con el área de superficie más pequeña que contiene A.
- Si A es un hexágono ym es 4, entonces B sería un cuadrilátero con el área de superficie más pequeña que contiene A.
Buena suerte a todos los que prueben este problema. Puedo prometerle que esto será muy difícil, especialmente ahora que la solución debe ser óptima.
ds.algorithms
cg.comp-geom
polygon
Thirlan
fuente
fuente
Respuestas:
No sé cómo se ven sus polígonos, pero tal vez una versión simplificada del algoritmo Ramer-Douglas-Peucker sea suficiente:
El borde del polígono ( triángulos verdes , triángulos rojos ). A la derecha, el borde después de la eliminación de dos puntos.B k
Para algoritmos más complejos, puede buscar " técnicas de generalización de polígonos " aunque su primera condición (los puntos en A están contenidos en B) implica algunas operaciones de escalado adicionales.
fuente
Hace mucho tiempo escribí un artículo que detallaba un algoritmo de tiempo lineal para encontrar el triángulo de área más pequeño que encierra un conjunto de puntos (o un polígono):
Nuestro trabajo fue seguido por un algoritmo general:
Puede usar Google Scholar para rastrear esos documentos posteriores que los citan para encontrar mejoras y trabajos relacionados.
fuente