帮我分析一下就行
<p>以前上课做的一道题,现在需要这个程序,可是却忘了怎么写程序开头。</p><p>关于最短路径的问题。</p><p>function =Dijkstra(w,u0,ui);<br/>if nargin=0;<br/> w=[];<br/> u0=1;</p><p>上面的是我自己加上去的,可是不行,你们帮我改下,谢谢了。</p><p>后面的是:</p><p>w=<br/> n=size(w,1);<br/> w1=w(1,:);<br/><br/>
<br/> %赋初值<br/> for i=1:n<br/> l(i)=w1(i);<br/> z(i)=1;<br/> end<br/> s=[];<br/> s(1)=1;<br/> u=s(1);<br/> k=1<br/> l<br/> z<br/>
</p><p>while k<n<br/> % 更新 l(v) 和 z(v)<br/> for i=1:n<br/> for j=1:k<br/> if i~=s(j) <br/> if l(i)>l(u)+w(u,i)<br/> l(i)=l(u)+w(u,i);<br/> z(i)=u;<br/> end<br/> end<br/> end<br/> end<br/> l<br/> z<br/>
<br/> %求v*<br/> ll=l;<br/> for i=1:n<br/> for j=1:k<br/> if i~=s(j)<br/> ll(i)=ll(i);<br/> else <br/> ll(i)=inf;<br/> end<br/> end<br/> end<br/>
<br/> lv=inf;<br/> for i=1:n<br/> if ll(i)<lv<br/> lv=ll(i);<br/> v=i;<br/> end<br/> end <br/> lv<br/> v<br/>
<br/> s(k+1)=v<br/> k=k+1<br/> u=s(k)<br/>
<br/>end<br/>l<br/>z</p> <p><font face="Verdana">w=<br/> n=size(w,1);<br/> w1=w(1,:);<br/> <br/> %赋初值<br/> for i=1:n<br/> l(i)=w1(i);<br/> z(i)=1;<br/> end<br/> s=[];<br/> s(1)=1;<br/> u=s(1);<br/> k=1<br/> l<br/> z<br/> </font></p>
<p><font face="Verdana">while k<n<br/> % 更新 l(v) 和 z(v)<br/> for i=1:n<br/> for j=1:k<br/> if i~=s(j) <br/> if l(i)>l(u)+w(u,i)<br/> l(i)=l(u)+w(u,i);<br/> z(i)=u;<br/> end<br/> end<br/> end<br/> end<br/> l<br/> z<br/> </font></p> <p>试下这个程序....</p>
页:
[1]