teoria teorema siguiente ruta resueltos problema máximo minimo maximo mas flujo ejercicios determinar costo corta algoritmo algorithm networking optimization matrix graph-theory

algorithm - teorema - Algoritmos: uso del flujo máximo para calcular los valores correctos de la matriz



ruta mas corta (1)

Me dan una matriz A con tamaño N x M con N,M <= 100 . La matriz A consta de valores enteros A (i, j) donde i y j son 0 < i < M y 0 < j < N . También me dan las sumas de las columnas "correctas" y las sumas de fila de la matriz. Los valores dados A (i, j) son "incorrectos" (no coinciden con las sumas "correctas") y, por lo tanto, se nos proporcionan los correspondientes valores de "incorrección" B (i, j), donde B (i, j) oscila de 0 a A (i, j).

El objetivo es calcular los valores "correctos" C (i, j) en la matriz, donde A(i,j) - C(i,j) =< B(i,j) , el C (i, j) los valores también deben coincidir con las sumas de fila y columna dadas. Creo que tengo que usar el flujo máximo, pero mis intentos no han funcionado. ¿Cómo puedo conseguir esto?


Te daré un ejemplo aquí.

matrix A: 10 10 10 10 10 10 10 10 10 matrix B: 2 3 4 5 6 4 3 2 1 matrix A-B: 8 7 6 5 4 6 7 8 9

Entonces tienes la fórmula A [i, j] - C [i, j] <= B [i, j]. Puedes transformarlo en A [i, j] - B [i, j] <= C [i, j] lo que significa que B [i, j] es lo más pequeño que necesitas restar de A [i, j ] para obtener algo más pequeño o igual a C [i, j]. Desde aquí sabes que necesitas agregar algo a las entradas en la matriz AB.

Veamos ahora qué y dónde agregar.

Supongamos que tiene los siguientes tamaños de filas y columnas:

c1 = 20/20 c2 = 19/21 c3 = 21/24 r1 = 21/21 r2 = 15/17 r3 = 24/27

Arriba escribí cosas en forma de:

(current flow through column or row) / (goal flow through column or row).

Ahora construyamos una red:

Ahora tenga en cuenta que la suma total de filas = suma total de columnas. Entonces intenta presionar ''suma dada de entradas'' - ''suma actual de entradas'' de ''s'' a ''t''.

Ahora, supongamos que los nodos se enumeran de izquierda a derecha por números naturales. Ahora, cuando empuja algo desde un nodo de segundo nivel a un nodo de tercer nivel, por ejemplo, empuja algo desde el nodo i, al nodo j, también agrega lo que empujó a NewMatrix [i, j], donde NewMatrix es la matriz AB y obtienes la matriz que quieres.

También tenga en cuenta que al principio, en la matriz AB, tenía la C [i, j] más pequeña que tenía que restar de A [i, j] para obtener algo más pequeño o igual a B [i, j], y ahora que agregaste algo a esa C [i, j] la desigualdad A [i, j] -C [i, j] <= B [i, j] aún se cumple.