Witam,
mam problem z kodem do polecenia poniżej w screenie. Jest prawie cały, brakuje paru rzeczy, których nie mogę przeskoczyć.
Z góry dziękuje za pomoc.
Kod ma być w języku scilab.
Tam gdzie jest wykropkowane to znaczy, że czegoś brakuje
function [D,R]=dijkstra(S,b)
// S -- macierz symetryczna odleglosci miedzy wezlami, n x n
// b -- wezel poczatkowy
// D -- wektor odl. od poczatkowego do pozostalych
// R -- drogi z b do pozostalych wezlow
// macierz n x n o formacie k-tego wiersza
// [b,w1,w2,w3,...,wp,k,0,0,..,0] gdzie
// b-w1-w2-...-wp-k to droga z b do k
n=size(S,1);
big=1.0e12;
R=zeros(n,n); R(b,1)=b; // b -- numer wezla poczatkowego
D=big*ones(n,1); D(b)=0; // odleglosci z b do pozostaly
P=[b]; K=1:n; K(b)=[]; // zbiory celow i poczatkow
while K~=[]
S1=S(P,K); // macierz odl. miedzy pocz. i celami
for i=1:size(P,2)
S1(i,:)=S1(i,:)+....... // dodajemy do odlegl. celow odl. poczatkow
end
[S1k,pos]=min(S1,'r'); // te trzy linijki konieczne w ogolnym przyp.
[S1kr,k]=.....; // nr. kolumny gdzie min
r=pos(k); // nr. wiersza gdzie min
D(K(k))=....; // odlegl. do znalezionego
R(K(k),:)=R(P(r),:); // przepisujemy pocz. drogi
R(K(k),sum(R(K(k),:)>0)+1)=K(k); // dopisujemy wezel konc.
P=[P,K(k)]; // usuwamy ostatni znaleziony z celow
K(k)=....;
end
endfunction
