¿Cuál es la justificación rigurosa de la exactitud de la segunda formulación de la solución DP de corte de varillas en CLRS?

Piense en dos etapas: primero hará todos los cortes, luego venderá todas las piezas finales.

Las longitudes de las piezas al final del proceso de corte suman n (nunca se crea o destruye material). Tenga en cuenta que sujeto a esta restricción, siempre puede lograr cualquier combinación que desee de tamaños de pieza a través de alguna secuencia de cortes.

Ahora, cualquiera que sea la combinación óptima, tiene al menos una pieza. Toma esa pieza, llama su longitud i y véndela. En cuanto a las piezas restantes, tienen una longitud total ni, y están necesariamente cortadas de la manera óptima para una varilla de longitud ni. Esto se desprende de un argumento de “cortar y pegar”: si las piezas restantes no se cortaron de manera óptima para una varilla de longitud ni, su combinación original no podría haber sido óptima, ya que la porción de “piezas restantes de longitud total ni” de esto podría ser reemplazado con las piezas óptimas, mejorando la solución.

Este tipo de argumentos de “cortar y pegar” son muy comunes para justificar la corrección de las soluciones de programación dinámica. A medida que los domines, tendrán un sentido intuitivo para ti.

Bueno, “riguroso” no es tan fácil de lograr publicar en Quora con un teléfono, pero veamos qué podemos hacer. Si miras la nota al pie un par de páginas antes, hay una simetría en el corte de varillas basada en la conmutatividad de la adición. La programación dinámica siempre trata de evitar hacer el mismo cálculo dos veces, por lo que nos importa la simetría.

Para mí, ambos son bastante intuitivos, ya que la primera ecuación dice “para cada corte posible, incluido el trivial, tome el precio de la barra completa o tome los cortes al mejor precio de cada par posible después de un solo corte. ” Sin embargo, hay repetición allí, ya que para cada tamaño pido dos “cortes al mejor precio”, por lo que no estaría satisfecho.

La intuición para la segunda ecuación sería más como “Para cada corte posible, incluido el trivial, puedo obtener el precio de un trozo y luego obtener los mejores precios para el otro trozo”. No debería ser difícil demostrar que ambos están haciendo lo mismo (i = n obviamente está cubierto, r_1 = p_1, inducción hacia arriba), pero la sutileza radica en cómo solo tenemos que recurrir a r_n una vez por cada opción de corte en lugar de dos veces.

More Interesting

Cómo obtener una sólida base matemática

¿Qué conceptos matemáticos difíciles se pueden entender fácilmente mediante la programación?

¿Para qué se utiliza una serie de Fourier?

Dadas N monedas, colocadas en una fila, indexadas 1 a N de izquierda a derecha. Inicialmente todas las monedas muestran cabeza. En cada turno, dos enteros, no necesariamente distintos, A y B entre 1 y N (inclusive) se eligen de manera uniforme al azar. Todas las monedas con un índice de A a B (inclusive) se voltean. ¿Cuál es el número esperado de monedas que muestran la cabeza después de que M gira?

¿Cuándo usamos los sistemas numéricos decimal, binario, octal y hexadecimal?

Si g (x) es una función unidireccional débil, ¿es f (x) = x (exclusivo o) g (x) una función unidireccional? Si es así, ¿puede ser fuerte?

Cómo calcular la probabilidad de un carácter dado en una cadena usando partes de esta cadena

Dado un conjunto de n rectángulos alineados en el eje en el plano, ¿qué tan grande es el subconjunto más grande de estos rectángulos que contienen un punto común en O (n ^ 3) y luego en el orden O (nlogn)?

Matemática discreta: ¿Cuál es la diferencia entre ser un elemento de un conjunto o ser un subconjunto de un conjunto?

¿Se pueden modelar todos los algoritmos iterativos de forma recursiva y viceversa?

¿Qué significa T (n) en relación con O (n)?

¿Por qué la investigación sobre el problema P vs NP no está más financiada?

¿Cuál es el nivel más alto de matemáticas requerido para el desarrollo del juego?

Para aquellos que son buenos en programación pero no en matemáticas, ¿qué les resulta difícil de las matemáticas?

¿Cuál es la mejor manera de resolver una matriz de 5 × 5?