欢迎您进入某某科技有限公司

澳门威尼斯人网址_【官方授权网站】

革命性扬尘治理系统,扬尘终结者

专业工程扬尘治理设备实力制造商

全国咨询热线

400-123-4567
当前位置:主页»客户评价»

科学网基于Dijkstra的双源最短路算法

文章出处:正规威尼斯人 人气:发表时间:2020-03-06

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);

同类文章排行

最新资讯文章