Dada una matriz de números con valores reales, A[1..n,1..n]
, deseo de encontrar el sub-conjuntoLa suma máxima de una forma rectangular sub-array
B = A[i..j,s..t]
con 1 <= i <= j <= n,
y 1 <= s <= t <= n
de tal manera que la suma de los números en B
está maximizada. ¿Es posible resolver esto usando programación dinámica? Hablé con uno de los profesores de quirófano de la Universidad de Aarhus, y él no sabía cómo hacerlo, y dijo que tenía dificultades para ver cómo podía tener la calidad óptima de la subestructura.
¿Pero es posible? Si es así, ¿cómo? Si no, ¿por qué?
que ya sé de un algoritmo que se ejecuta en O(n^3)
tiempo, reduciéndola a n(n+1)/2
subproblemas de complejidad O(n)
, pero que parece que es un poco lento. Sé que un algoritmo óptimo funcionaría en el tiempo Omega(n)
, pero espero que la programación dinámica se pueda usar para hacerlo funcionar en el tiempo O(n^2)
.
pregunta original resumen
añadí esta sección, porque sentía que algunas personas han malinterpretado el punto de mi pregunta. La pregunta original fue:
- ¿Es posible utilizar la programación dinámica para resolver el problema anterior en
O(n^2)
vez? Si es así, ¿cómo? Si no, ¿por qué no?
preguntas adicionales:
I añadido una nueva preguntas aquí. Más podría agregarse más tarde:
- Para utilizar la programación dinámica, necesito hacer uso de soluciones para resolver fácilmente los subproblemas (o el punto es irrelevante). La estructura del problema es tal, que si tomamos un subarreglo
B = A[1..m,1..m]
deA[1..n,1..n]
dondem < n
, entonces la solución óptima para la matrizB
es como mucho buena enA
, trivialmente, ya que la misma solución es factible enA
. Para utilizar la programación dinámica, es razonable preguntarse: ¿Cuál es la relación entre el subcampo óptimo deA[1..i,1..i]
y el subcampo óptimo deA[1..i+1,1..i+1]
?
sí, hay una solución O (N^2). Trataré de explicarlo cuando tenga tiempo para eso si nadie lo hace antes que yo (me temo que no podré hacerlo en las próximas 24 horas) –
¿Este algoritmo tiene un nombre? – Undreren
Ooohhh, qué emocionante. ¡Will @izomorphius morirá en las próximas 24 horas y nos dejará en vilo por un par de siglos como el pobre y viejo Fermat! Espero que no, pero me temo (s) que está tentando al destino. Volveré mañana para echar un vistazo. –