Bonsoir a tous
je veux implémenter l'algorithme Dijkstra sous matlab
je trouve ce code à l'internet et j'ai essayé de l'exécuter
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
function [sp, spcost] = dijkstra(matriz_costo, s, d)
% This is an implementation of the dijkstras algorithm, wich finds the 
% minimal cost path between two nodes. Its supoussed to solve the problem on 
% possitive weighted instances.
 
% the inputs of the algorithm are:
%farthestNode: the farthest node to reach for each node after performing
% the routing;
% n: the number of nodes in the network;
% s: source node index;
% d: destination node index;
 
%For information about this algorithm visit:
%http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm
 
%This implementatios is inspired by the Xiaodong Wang's implememtation of
%the dijkstra's algorithm, available at
%http://www.mathworks.com/matlabcentral/fileexchange
%file ID 5550
 
%Author: Jorge Ignacio Barrera Alviar. April/2007
 
 
n=size(matriz_costo,1);
S(1:n) = 0;     %s, vector, set of visited vectors
dist(1:n) = inf;   % it stores the shortest distance between the source node and any other node;
prev(1:n) = n+1;    % Previous node, informs about the best previous node known to reach each  network node 
 
dist(s) = 0;
 
 
while sum(S)~=n
    candidate=[];
    for i=1:n
        if S(i)==0
            candidate=[candidate dist(i)];
        else
            candidate=[candidate inf];
        end
    end
    [u_index u]=min(candidate);
    S(u)=1;
    for i=1:n
        if(dist(u)+matriz_costo(u,i))<dist(i)
            dist(i)=dist(u)+matriz_costo(u,i);
            prev(i)=u;
        end
    end
end
 
 
sp = [d];
 
while sp(1) ~= s
    if prev(sp(1))<=n
        sp=[prev(sp(1)) sp];
    else
        error;
    end
end;
spcost = dist(d);
Mais j'ai obtenu cet erreur:
??? Input argument "matriz_costo" is undefined.

Error in ==> dijkstra at 24
n=size(matriz_costo,1);
pouvez vous m'aider svp
cordialement