Algunas notas demasiado grandes para poner en un comentario (aunque esto no sugiere un algoritmo obvio):
La clave (EDITADO): Al menos dos vértices del rectángulo de área máxima deben estar en el límite del polígono (es decir, a lo largo de un borde, o en un vértice). Y si el rectángulo de área máxima no es un cuadrado, entonces al menos tres vértices deben estar en el límite del polígono.
Lo probé a mí mismo en cuatro pasos:
Nota #1: Al menos un vértice del rectángulo de área máxima siempre estará en el límite del polígono. Esto es bastante obvio, pero una demostración podría ser así (por contradicción): Supongamos que tuvieras un rectángulo "máximo" sin ningún vértice en el límite del polígono. Eso significa que habría un poco de espacio alrededor de cada uno de sus vértices. Así que podrías expandir tu rectángulo un poco, contradiciendo su máximo.
Nota #2: Al menos dos vértices del rectángulo de área máxima siempre estarán en el límite del polígono. Una demostración podría ser así (de nuevo por contradicción): Supongamos que tuvieras un rectángulo "máximo" con solo un vértice en el límite (garantizado por la Nota #1). Considera los dos bordes no adyacentes a ese vértice. Dado que sus extremos NO están en el límite, hay un poco de espacio alrededor de cada uno. Así que cualquiera de esos bordes podría ser "extraído" un poco, expandiendo el área del polígono y contradiciendo su máximalidad.
Nota #3: Hay dos vértices diagonalmente opuestos del rectángulo de área máxima que están en el límite del polígono. (Sabemos por la Nota #2 que hay al menos dos, pero no necesariamente que estén uno frente al otro). Pero nuevamente, por contradicción, si los únicos dos vértices de límite fueran adyacentes, entonces el borde opuesto (cuyos vértices no están en el límite) podría ser extraído un poco, aumentando el área del rectángulo y contradiciendo su máximalidad.
Nota #4: (EDITADO) Si el rectángulo de área máxima no es un cuadrado, entonces tres de sus vértices estarán en el límite del polígono.
Para probarlo, supongamos que ese no es el caso, es decir, que el rectángulo de área máxima no es un cuadrado, pero solo dos de sus vértices están en el límite del polígono. Mostraré cómo construir un rectángulo más grande, contradiciendo la máximalidad.
Llama a los vértices del rectángulo A
, B
, C
y D
. Sin pérdida de generalidad, supongamos que B
y D
son los dos que están en el límite del polígono. Dado que A
y C
están en el interior del polígono, hay algo de margen alrededor de ellos (representado con círculos alrededor de A
y C
en la imagen de abajo). Ahora dibuja un círculo alrededor del rectángulo, y desliza los puntos A
y C
un poco alrededor del círculo por la misma cantidad (para hacer A'
y C'
, como se muestra abajo) para que el nuevo rectángulo A'BC'D
sea más cuadrado que el rectángulo original. Este proceso crea un nuevo rectángulo que también está dentro del polígono original y tiene un área más grande. Esto es una contradicción, así que la demostración está hecha.
Para creer esa prueba, debes convencerte de que el área de un rectángulo inscrito en un círculo aumenta a medida que se vuelve "más cuadrado" (es decir, la diferencia entre las longitudes de los bordes disminuye). También necesitas que el polígono sea convexo para que las nuevas líneas estén todas dentro de él. Y probablemente hay otros pequeños detalles que se pasan por alto, pero estoy bastante seguro de que todos funcionan.
1 votos
¿Podrías especificar qué software estás utilizando? Además, publica tu trabajo hasta ahora o el enfoque general que has ideado para resolver esto. Tal vez alguien pueda mejorar lo que ya has hecho. En mi experiencia, eso dará como resultado respuestas mucho más útiles que simplemente publicar una pregunta "de la nada".
1 votos
Estrechamente relacionado: gis.stackexchange.com/questions/22895/….
0 votos
@Martin Software: Programando en
Python
luego será enFortran
si es necesario. Tenemos la sospecha de que, basándonos en nuestra publicación anterior aquí también mencionada anteriormente porwhuber
que tal vez un rectángulo con un borde en común con el polígono sería una respuesta.0 votos
@Desarrollador El rectángulo de área máxima no tiene que tener un borde común con el polígono. Si tomas el polígono que tienes ahora y cambias el borde izquierdo por dos bordes (como si estuvieras construyendo un triángulo en ese lado), la respuesta no cambiará aunque ya no tengas un borde común.
0 votos
@JakubKania Hemos actualizado la publicación. Nos referíamos a estar alineados en un borde, no necesariamente tener la misma longitud de borde, así que. De todos modos, esto es solo una suposición, aún no hay pruebas o experimentos.
0 votos
@Desarrollador Bueno, todo lo que quería decir es que no tiene que tocar el borde. Mi suposición es que lo único seguro es que tocará el polígono con al menos dos de sus esquinas.
1 votos
Tu problema es realmente interesante, y creo que logré encontrar un algoritmo de solución aquí y aquí.
1 votos
@nickves Gracias por los enlaces. ¿Podrías por favor colocar esta información como respuesta con una pequeña explicación de los algoritmos? Podría ser una buena respuesta para ser aceptada.