<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/249897</link>
    <title>MATLAB Central Newsreader - Logic error in simple Dijkstra code</title>
    <description>Feed for thread: Logic error in simple Dijkstra code</description>
    <language>en-us</language>
    <copyright>&amp;copy;1994-2012 by MathWorks, Inc.</copyright>
    <webmaster>webmaster@mathworks.com</webmaster>
    <generator>MATLAB Central Newsreader</generator>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <ttl>60</ttl>
    <image>
      <title>MathWorks</title>
      <url>http://www.mathworks.com/images/membrane_icon.gif</url>
    </image>
    <item>
      <pubDate>Sat, 25 Apr 2009 05:44:01 -0400</pubDate>
      <title>Logic error in simple Dijkstra code</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/249897#645309</link>
      <author>Ongun Palaoglu</author>
      <description>NoOfNodes  = 5; %ask user the number of nodes&lt;br&gt;
rand();&lt;br&gt;
figure(1);&lt;br&gt;
clf; %clear figure&lt;br&gt;
hold on;&lt;br&gt;
%rand generates random numers between [0 1]. to make it &amp;gt;1, Multply by&lt;br&gt;
%50.&lt;br&gt;
xaxis = rand(1,NoOfNodes)*100;&lt;br&gt;
yaxis = rand(1,NoOfNodes)*100;&lt;br&gt;
plot(xaxis,yaxis,'.'); grid on; hold on; &lt;br&gt;
&lt;br&gt;
for i = 1:NoOfNodes&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;nodes{i}.x = xaxis(i);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;nodes{i}.y = yaxis(i);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;nodes{i}.visited = 0;&lt;br&gt;
end&lt;br&gt;
numNotVisitedNodes  = NoOfNodes - 1;&lt;br&gt;
nodes{1}.visited = 0;&lt;br&gt;
sourcenode  = nodes{1};&lt;br&gt;
text(sourcenode.x,sourcenode.y, num2str('Starting Node'));&lt;br&gt;
text(nodes{NoOfNodes}.x,nodes{NoOfNodes}.y, num2str('Ending Node'));&lt;br&gt;
i = 1;&lt;br&gt;
while (numNotVisitedNodes &amp;gt; 0)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (nodes{i}.visited == 0)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;distance(1:NoOfNodes) = 0;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;count = 1;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for k = 1:NoOfNodes&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (k ~= i)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if ((nodes{k}.visited == 0) &amp;&amp; (nodes{i}.visited == 0))&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;distance(count) = sqrt((((nodes{k}.x - nodes{i}.x)) ).^2 + (nodes{k}.y - nodes{i}.y).^2); % distances of the nodes&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;count = count + 1;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[minDistance, nextNode] = min(distance(1:NoOfNodes-numNotVisitedNodes));&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;nodes{i}.nextNode = nextNode;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;nodes{nextNode}.visited = 1;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;line([nodes{i}.x nodes{nodes{i}.nextNode}.x], [nodes{i}.y nodes{nodes{i}.nextNode}.y], 'Color','r','LineWidth',1); &lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hold on;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;text(nodes{nodes{i}.nextNode}.x,nodes{nodes{i}.nextNode}.y, num2str('i+1'));&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sourcenode = nodes{nodes{i}.nextNode};&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;nodes{i}.visited = 1;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;i = nextNode;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;numNotVisitedNodes  = numNotVisitedNodes - 1;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;i = i+1;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end&lt;br&gt;
end&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
Hello I wam workin on my project. there is a logic error on the&lt;br&gt;
&amp;nbsp;[minDistance, nextNode] = min(distance(1:NoOfNodes-numNotVisitedNodes));&lt;br&gt;
&lt;br&gt;
part of my code. it suppose to ignore the visited nodes. however it starts again from the very first node amd goes to second shortest node.  &lt;br&gt;
Can somepne help me out for this part. thank you </description>
    </item>
  </channel>
</rss>

