Advertisement
Guest User

stijn leenknegt

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