Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function min ( a, b )
- if a < b then return a else return b end
- end
- function solve ( iniN, iniM )
- A = { peso = 0, n = iniN, m = iniM, path = { t [ iniN ][ iniM ] } } -- Contiene el último camino recorrido y su peso
- B = { peso = 0, n = iniN, m = iniM, path = { t [ iniN ][ iniM ] } } -- Contiene e camino actual y su peso
- repeat
- -- Calcula
- izq = t[B.n+1][B.m] -- Calcula el hijo izquierdo
- der = t[B.n+1][B.m+1] -- Calcula el hijo derecho
- men = min ( izq, der ) -- Calcula el mínimo de los dos
- -- Asigna
- B.peso = B.peso + men -- Asigna el nuevo peso
- B.path [ #B.path+1 ] = men -- Guarda el nodo elegido
- B.n = B.n + 1 -- Avanza
- if izq > der then B.m = B.m + 1 end -- Actualiza el valor m
- -- Comprueba
- if B.peso > A.peso then -- Si B > A, cambia sus valores
- B = A
- A = A
- end
- until B.n >= #t
- print ( "el peso es " .. B.peso )
- for i = 1, #B.path do
- io.write ( B.path [i] .. " " )
- end
- end
- solve ( 1, 1 )
- print ""
- solve ( 1, 2 )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement