Tengo un plano rectangular de dimensión entera. Dentro de este plano tengo un conjunto de rectángulos que no se intersecan (de dimensión entera y en coordenadas enteras).Invertir un conjunto de rectángulos en un plano 2D
Mi pregunta es ¿cómo puedo encontrar de manera eficiente la inversa de este conjunto; es decir, las partes del plano que no están contenidas en un sub-rectángulo. Naturalmente, esta colección de puntos forma un conjunto de rectángulos --- y es esto lo que me interesa.
Mi solución actual e ingenua usa una matriz booleana (el tamaño del plano) y funciona configurando un apunte i, j a 0 si está dentro de un sub-rectángulo y 1 de lo contrario. Luego repito a través de cada elemento de la matriz y si es 1 (libre) intento de 'crecer' un rectángulo hacia afuera desde el punto. La unicidad no es una preocupación (cualquier conjunto adecuado de rectángulos está bien).
¿Hay algún algoritmo que pueda resolver este problema de manera más efectiva? (Es decir, sin necesidad de recurrir a una matriz booleana.
[aquí] (http://stackoverflow.com/questions/4239675/inverting-a-set-of-rectangles- on-a-2d-plane/4240134 # 4240134) – Eric
@Eric: genial - Aún no he probado tu código, pero es bueno ver una implementación (posiblemente operativa). Ya tengo código C en funcionamiento para esto, pero desafortunadamente es parte de un proyecto propietario, así que no estoy en libertad de compartirlo. –