Facebook
From Gruff Goose, 1 Year ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 146
  1. clc
  2. clear
  3. time = 0;
  4. licznik = 1;
  5. czas_calosci = 0;
  6. for n = 5:5:100                                     % PÄ™tla wybierajÄ…ca ilość wÄ™złów z krokiem 5
  7.     for l = 1:1:30                                  % Wyznaczanie prawidÅ‚owej Å›redniej - utworzenie krawÄ™dzi
  8.         W = 1+ceil(rand(1)*100 )                     % Losowanie wag dla powstaÅ‚ych wÄ™złów
  9.         for i = 1:n
  10.            for j = 1:n
  11.                 if i==j                             % Jezeli obie wartoÅ›ci sÄ… równe..
  12.                     W(i, j) = 0;                    % Przerwanie pÄ™tli jeÅ›li obie wartoÅ›ci sa takie same
  13.                 end
  14.             end
  15.         end
  16.         s = 1;                                      % WierzchoÅ‚ek startowy
  17.         t = 5;                                      % WierzchoÅ‚ek koÅ„cowy
  18.         newlabel = 0;                               % Zmienna pomocnicza przechowujaca cechÄ™ tymczasowÄ…
  19.        
  20.         for v = 1:n
  21.             dist(v) = inf                           % Ustawienie odlegÅ‚oÅ›ci miÄ™dzy wierzchoÅ‚kami na nieskoÅ„czoność
  22.             final(v) = false                        % Ustawienie drogi na drogÄ™ tymczasowÄ… - false
  23.             pred(v) = -1;                           % Ustawienie poprzedniego wierzchoÅ‚ka na -1
  24.         end
  25.        
  26.         dist(s)=0;                                  % OdlegÅ‚ość od poczÄ…tku do danego wierzchoÅ‚ka
  27.         final(s) = true;                            % Ustawienie drogi na drogÄ™ stałą - true
  28.         recent = s;                                 % Zmienna pomocnicza oznaczajÄ…ca poprzedni wierzchoÅ‚ek
  29.         tic;                                        % RozpoczÄ™cie odliczania czasu
  30.         while final(t)==false                       % PÄ™tla dziaÅ‚ajÄ…ca dopóki algorytm uznaje drogÄ™ tymczasowÄ… dla ostatniego wierzchoÅ‚ka
  31.             for v = 1:n
  32.                 newlabel=dist(recent)+W(recent, v); % Przypisanie odlegÅ‚oÅ›ci poprzednich wartoÅ›ci
  33.                 if newlabel<dist(v)                 % Jezeli powyższa wartość jest mniejsza od aktualnej odlegÅ‚oÅ›ci..
  34.                     dist(v)=newlabel;               % Ustawienie odlegÅ‚oÅ›ci na powyższy wynik
  35.                     pred(v)=recent;                 % Ustawienie poprzedniego wierzchoÅ‚ka na aktualny
  36.                 end
  37.             end
  38.            
  39.             temp = inf;                             % Przypisanie tymczasowej wartoÅ›ci 'nieskoÅ„czoność' dla zmiennej temp
  40.             for  v = 1:n
  41.                 if (final(v)==false)                % Jeżeli aktualna droga jest drogÄ… tymczasowÄ…..
  42.                     if (dist(v)<temp)               % Jezeli aktualna odlegÅ‚ość jest mniejsza od zmiennej temp..
  43.                         y=v;                        % Podstawienie aktualnej wartoÅ›ci pod zmiennÄ… y
  44.                         temp = dist(v);             % Podstawienie aktualnej odlegÅ‚oÅ›ci pod zmiennÄ… temp
  45.                     end
  46.                 end
  47.             end
  48.             if (temp<inf)                           % Jeżeli zmienna temp jest mniejsza od nieskoÅ„czonoÅ›ci..
  49.                 final(y)=true;                      % Ustawienie aktualnej drogi na drogÄ™ stałą
  50.                 recent=y;                           % Ustawienie poprzedniego wierzchoÅ‚ka na aktualny
  51.             else
  52.                 final(t)=true;                      % Ustawienie drogi na drogÄ™ stałą
  53.             end
  54.         end
  55.         czas_calosci = czas_calosci + toc;          % ZakoÅ„czenie liczenia czasu
  56.     end
  57. end