mingtian911的个人博客分享 http://blog.sciencenet.cn/u/mingtian911

博文

基于Dijkstra的双源最短路算法

已有 1751 次阅读 2020-3-6 13:20 |系统分类:论文交流


preNode=Dijkstra(totalNodes,nodeDistance,routeStops,startPoint,endPoint);

totalNodes 网络总节点数

nodeDistance 网络节点距离表

routeStops 遍历的访问客户点

startPoint 起始点

endPoint 结束点

函数的目的是从起始点出发startPoint ,访问routeStops 的全部点,到达endPoint ,可以用来求解旅行商问题,当startPoint =endPoint 时

主要代码如下:

------------------------------------------------------------------------------------------

function preNode=Dijkstra(totalNodes,nodeDistance,routeStops,startPoint,endPoint);

% totalNodes

% routeStops

% startPoint

% endPoint

%totalNodes->起点 终点  和 候选节点 的数量 即 nodeDistance的行和列 数

global NumberofCandidate

n=size(routeStops,2);

distance(1:totalNodes)=1000000;

preNode(1:n)=-1;

markedNodes(1:n)=-1;

distance(startPoint)=0;

currentNode=startPoint;



adjacentNodes=FindAdjacentNodes(routeStops,markedNodes);%未标记的点,即需要搜索的点

sizeOfAdjacentNodes=size(adjacentNodes,2);


while sizeOfAdjacentNodes>=1

    temp=0;

    for i=1:sizeOfAdjacentNodes

%         currentNode

%         adjacentNodes(i)

        

        if distance(currentNode)+nodeDistance(currentNode,adjacentNodes(i))+nodeDistance(adjacentNodes(i),endPoint)<distance(adjacentNodes(i))

            distance(adjacentNodes(i))=distance(currentNode)+nodeDistance(currentNode,adjacentNodes(i))+nodeDistance(adjacentNodes(i),endPoint);

        end

        temp(i)=distance(adjacentNodes(i));

    end

    %------------------------------------------------------------------

    

    [minValue,index]=min(temp);

  

    preNode(ReturnOrderElementInSet(routeStops,adjacentNodes(index)))=currentNode;%%%%%%%%%%%%%%%%%%%%%%%%

    markedNodes=MakeNodeTags(markedNodes,routeStops,adjacentNodes(index));%标记语言

   

    currentNode=adjacentNodes(index);%标记


    adjacentNodes=FindAdjacentNodes(routeStops,markedNodes);

    sizeOfAdjacentNodes=size(adjacentNodes,2);

end




https://blog.sciencenet.cn/blog-3419274-1222084.html

上一篇:旅行商问题&车辆路径问题-遗传算法
收藏 IP: 118.28.46.*| 热度|

1 张鹰

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-5-22 12:53

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部