Estoy buscando un algoritmo aquí, independientemente del lenguaje de programación específico.Óptimo conjunto de rectángulos sucios
El problema:
Tenemos un área de visualización de 2 dimensiones (piensa búfer sencilla de píxeles). Periódicamente, algunos de los píxeles han cambiado . Necesitamos encontrar un conjunto de rectángulos que encapsulan todos los píxeles cambiados .
Sería trivial, pero indeseable, para calcular una sola, potencialmente grande, rectángulo que encapsula todas píxeles modificados. Preferimos tener múltiple, más pequeño, de ajuste hermético rectángulos abajo a un determinado mínimo (que es una variable que puede ser cambiada ).
Por ejemplo, supongamos que dentro de toda el área de visualización , unos pocos píxeles en la esquina superior izquierda cambiados y un pocos píxeles en la esquina inferior derecha cambiaron. NO queremos calcular un rectángulo sucia único de toda el área ; en su lugar, queremos dos rectángulos sucios : uno pequeño en la parte superior a la izquierda y uno pequeño en la parte inferior derecha.
El rendimiento es fundamental, de ahí esta pregunta.
Este problema surge todo el tiempo, sin duda, en los códecs de vídeo y las zonas de compresión de escritorio remoto, supongo. En mi caso, es un problema recurrente durante las manipulaciones de imágenes gráficas que involucran a múltiples usuarios dibujando simultáneamente en un área compartida.
¿Alguien sabe de algoritmos publicados por esto o sabe de una solución que ha utilizado en el pasado?
Gracias!
¿Cómo define el "rendimiento"? ¿Cuáles son tus otras limitaciones? ¿Tiene una métrica concreta para juzgar buenas soluciones? – Karmastan
Como pido un algoritmo que sea independiente de un idioma o plataforma específicos, es difícil concretar con una métrica, pero lo que quiero decir es que es un algoritmo que encuentra la respuesta en el menor número posible de operaciones, en lugar de algo que realiza múltiples escaneos de fuerza bruta de cada píxel en el área, por ejemplo. Yo mediría esto de la misma manera que medimos algoritmos como el dibujo de líneas de Bresenham: encuentra la respuesta correcta en un número de operaciones lo suficientemente pequeño como para que sea difícil pensar en cómo usarlo menos. –