Advertisement
Guest User

stijn leenknegt

a guest
Jan 5th, 2010
202
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.10 KB | None | 0 0
  1. function [W,P] = floyd(M)
  2.   //valideer M eerst
  3.   [r,c] = size(M)
  4.   if r ~= c then
  5.     error("Het aantal rijen is niet gelijk aan het aantal kolommen!")
  6.   end
  7.   aantal = 0
  8.   W = M
  9.   P = zeros(r,c)
  10.  
  11.   //het floyd algoritme uitvoeren
  12.   for via = 1:r do
  13.     for i = 1:r do
  14.       //als i gelijk is aan via overslaan
  15.       if via == i then
  16.         continue
  17.       end
  18.       //als D(i,via) gelijk is aan inf ook overslaan omdat niets korter kan dan via i -> via
  19.       if W(i , via) == inf then
  20.         continue
  21.       end
  22.      
  23.       //kijken of het punt D(i,j) niet via het punt via kan.
  24.       for j = 1:c do
  25.         //als i == j ook skippen want dan zeg je kan er nog een kortere weg van 1 naar 1 via 1
  26.         //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
  27.         if (i == j) | (j == via) then
  28.           continue
  29.         end
  30.         //kijken of het korter is via het punt via
  31.         som = W(i,via) + W(via,j)
  32.         if som < W(i,j) then
  33.           W(i,j) = som
  34.           P(i,j) = via
  35.         end
  36.       end
  37.     end
  38.   end
  39. endfunction
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement