科学网基于Dijkstra的双源最短路算法
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);
同类文章排行
- 李克强作出重要批示强调 紧密结合“一带一路”
- 山西高平规上企业全部复工复产
- 稳步推进金融改革开放
- 定海新建社区党员群众
- 重磅!揭开神秘面纱 央行详解人民币中间价形成
- 西宁至成都铁路(四川段)施工正式启动
- 张德江会见斯洛文尼亚国民委员会主席
- 王健林又悄悄卖了几家万达广场!保险、信托接
- 利率市场化改革要健全完善央行政策利率体系
- 浙江职业教育创新发展纪事
最新资讯文章
- “车电包”拉动4万余辆新能源汽车消费
- 西宁至成都铁路(四川段)施工正式启动
- 国际邮轮巨头积极布局市场复苏
- 长春新区“视频签约”7个项目 总投资135亿元
- 福建省发改委落实降低企业用电用气成本政策
- 解燃眉之急 点希望之灯—— “四无忧”助力疫情防控和企业加
- 江西宜春高安:农技专家“学雷锋” 防疫春耕来帮忙
- 国资委副主任翁杰明:国企要下更大功夫推动产业数字化智能化
- 多地加码基建投资 二季度重大建设项目审批料提速
- 江西推出“电十条”助力企业复工复产
- 青海至河南特高压直流输电工程青海段复工
- 雅中直流有序复工 加快建成“西电东送”大动脉
- 山西高平规上企业全部复工复产
- 宁夏三条外送通道送电助“工”华东企业
- 广东预计2020年三季度末完成5万座5G基站建设
- 全国有线电视网络整合和广电5G建设一体化发展工作启动
- 山西高平餐饮企业“无接触”服务保安全
- 2020年3月6日国内新闻简报
- 上海老字号:疫情之下以变应变 化危为机谋发展
- 福建泉州:督导银行业机构帮扶受疫情影响企业及支持复工复产