stijn leenknegt
By: a guest | Jan 6th, 2010 | Syntax:
C | Size: 1.21 KB | Hits: 114 | Expires: Never
function [W,P] = leenknegt_floyd(M)
//valideer M eerst
[r,c] = size(M)
if r ~= c then
error("Het aantal rijen is niet gelijk aan het aantal kolommen!")
end
W = M
P = zeros(r,c)
aantal = 0
//het floyd algoritme uitvoeren
for via = 1:r do
for i = 1:r do
//als i gelijk is aan via overslaan
if via == i then
continue
end
//als D(i,via) gelijk is aan inf ook overslaan omdat niets korter kan dan via i -> via
if W(i , via) == inf then
continue
end
//kijken of het punt D(i,j) niet via het punt via kan.
for j = 1:c do
//als i == j ook skippen want dan zeg je kan er nog een kortere weg van 1 naar 1 via 1
//of als j == via dan ook skippen want dan vraag je je af of je kortere weg kan vinden van 2 naar 1 via 1
//of als er geen verbinding is tussen via en j W(via,j) is oneindig
if (i == j) | (j == via) | (W(via,j) == inf) then
continue
end
//kijken of het korter is via het punt via
som = W(i,via) + W(via,j)
if som < W(i,j) then
W(i,j) = som
P(i,j) = via
end
end
end
end
endfunction