Page 210 - 数学建模算法与应用
P. 210

Mathematical Modeling Algorithms and Applications
             数学建模算法与应用


                  distance(1:n) = inf; % 保存起点到各顶点的最短距离
                  distance(sb) = 0; parent(1:n) = 0;
                  for i = 1: n-1

                   temp=distance;
                   id1=find(visited==1); % 查找已经标号的点
                   temp(id1)=inf; % 已标号点的距离换成无穷
                   [t, u] = min(temp); % 找标号值最小的顶点

                   visited(u) = 1; % 标记已经标号的顶点
                   id2=find(visited==0); % 查找未标号的顶点
                   for v = id2
                     if a(u, v) + distance(u) < distance(v)

                     distance(v) = distance(u) + a(u, v); % 修改标号值
                     parent(v) = u;
                    end
                   end
                  end

                  mypath = [];
                  if parent(db) ~= 0 % 如果存在路 !

                   t = db; mypath = [db];
                   while t ~= sb
                   p = parent(t);
                   mypath = [p mypath];
                   t = p;

                   end
                  end
                  mydistance = distance(db);
                  return

                 (二)两个指定顶点之间最短路问题的数学表达式
                  假设有向图有 n 个顶点,现需要求从顶点 1 到顶点 n 的最短路设                                 为
             赋权邻接矩阵,其分量为



             200
   205   206   207   208   209   210   211   212   213   214   215