He tenido este problema durante algunos años. Fue en un concurso de informática en mi ciudad hace un tiempo. No pude resolverlo, y mi maestro no pudo resolverlo. No he conocido a nadie que haya podido resolverlo. Nadie que yo conozca sabe la manera correcta de dar la respuesta, por lo que decidí publicar aquí: problemaCubra por completo un rectángulo con una cantidad mínima de círculos de radio fijo
Ze
Dado un rectángulo, X por Y, encontrar la cantidad mínima de círculos N con una fija dado el radio R, necesario para cubrir completamente cada parte del rectángulo.
He pensado en maneras de resolverlo, pero no tengo nada definitivo. Si cada círculo define un rectángulo interno, entonces R^2 = Wi^2 + Hi^2
, donde Wi
y Hi
son el ancho y la altura del área práctica cubierta por cada círculo i
. Al principio pensé que debería hacer Wi
igual a Wj
para cualquier i
= j
, lo mismo para H
. De esta forma, podría simplificar el problema haciendo que las relaciones ancho/alto sean iguales al rectángulo principal (Wi/Hi
= X/Y
). De esa manera, N=X/Wi
. Pero esa solución seguramente es incorrecta en el caso de que X
exceda en gran medida Y
o viceversa.
La segunda idea fue que Wi
= Hi
para cualquier i
dado. De esta forma, los cuadrados llenan el espacio de manera más eficiente. Sin embargo, si queda una tira muy angosta, es mucho más óptimo usar rectángulos para rellenarla, o mejor aún, usar rectángulos para la última fila antes de eso también.
Luego me di cuenta de que ninguna de las ideas es la óptima, ya que siempre puedo encontrar mejores formas de hacerlo. Siempre será cercano al final, pero no final.
Editar
En algunos casos (rectángulo grande) que une hexágonos parece ser una solución mejor que las plazas de unión.
Además Editar
Aquí hay una comparación de 2 métodos: trébol vs hexagonal. Hexagonal es, obviamente, mejor, para superficies grandes. Sin embargo, creo que cuando el rectángulo es lo suficientemente pequeño, el método rectangular puede ser más eficiente. Es una corazonada. Ahora, en la imagen, verá 14 círculos a la izquierda y 13 círculos a la derecha. Aunque la superficie difiere mucho más (doble) que un círculo. Es porque a la izquierda se superponen menos, por lo tanto, desperdician menos superficie.
Las preguntas siguen siendo:
- Es el propio patrón de hexágono regular óptima? O ciertos ajustes deben hacerse en partes del rectángulo principal.
- ¿Hay razones para no usar formas regulares como "solución definitiva"?
- ¿Esta pregunta tiene una respuesta? :)
Esto se parece más a las matemáticas que a la programación. –
Sugiero que pregunte eso en math.SE http://math.stackexchange.com/ – yoozer8
Y si no es una fórmula que puede resolverlo, ¿pero un complejo algoritmo? Voy a volver a etiquetarlo. – AlexanderMP