Matalab代码 实现 Dijkstra求 有向图及无向图之间,任意两点之间的最短路径
来源:互联网 发布:ps4 pro 优化的游戏 编辑:程序博客网 时间:2024/05/04 08:45
<span style="font-family: Arial, Helvetica, sans-serif;">%% Dijkstra </span>
function minWeightMatrix=shortestPath(G,nodeNum)minWeightMatrix=zeros(nodeNum,nodeNum);for i=1:nodeNum %获取每个顶点到其它节点最短路径权值,Dijkstra 源点遍历 D=G(i,:); %初始化节点到各个邻居节点的权值 D(D==0)=inf; tag=zeros(1,nodeNum); %0 为对应位置节点未求出最大路径 tag(i)=1; while sum(tag,2)~=nodeNum noTag=find(tag==0); %还未获得最短距离的节点 minValue=min(D(noTag)); if minValue~=inf tempIndex=find(D==minValue); %找出候选节点,更新值 tag(tempIndex)=1; % 将候选节点去掉 for candidateNode=1:length(tempIndex) noTag(noTag==tempIndex(candidateNode))=[]; end % 修改源点到各个未标记的顶点间的距离 for j=1:length(noTag) %对所有未获得最短距离的节点进行更新 minTemp=D(noTag(j)); for k=1:length(tempIndex) if minTemp>(minValue+G(tempIndex(k),noTag(j)))&&G(tempIndex(k),noTag(j))~=0 minTemp=minValue+G(tempIndex(k),noTag(j)); end end D(noTag(j))=minTemp; end else break; end end minWeightMatrix(i,:)=D;endminWeightMatrix(isinf(minWeightMatrix))=0;minWeightMatrix=minWeightMatrix-diag(diag(minWeightMatrix));
测试数据:
clear;clc;%% 测试数据%有向图范例G=[0 0 10 0 30 100;0 0 5 0 0 0;0 0 0 50 0 0;0 0 0 0 0 10;0 0 0 20 0 60;0 0 0 0 0 0];%% 无向图范例G=[0 0 10 0 30 100; 0 0 5 0 0 0; 10 5 0 50 0 0; 0 0 50 0 20 10; 30 0 0 20 0 60; 100 0 0 10 60 0];minPath=shortestPath(G,6);disp('测试完毕');
0 0
- Matalab代码 实现 Dijkstra求 有向图及无向图之间,任意两点之间的最短路径
- Dijkstra单源最短路径实现 及 Floyd任意两点之间的最短路径
- 根据无向图的边邻接矩阵求任意一点到其他所有点之间的最短路径。
- 求有向网中任意一对顶点之间的最短路径 Floyd算法
- 求无向图顶点之间的所有最短路径
- 迪杰斯特拉算法处理无向图中最短路径的(dijkstra)Java实现(指定两点,求最短距离及路径)
- 无向网图的最短路径--Dijkstra算法
- POJ1125 求有向图中两点的最短路径问题
- 有向加权图的最短路径算法-Dijkstra
- dijkstra算法求两点之间最短路径
- 求无向图的最短路径问题
- 有向图某顶点到其他顶点最短路径的C程序实现代码(Dijkstra算法)
- 有向图中单个源点到终点的最短路径--Dijkstra算法与实现
- Dijkstra 最短路径算法详解 无向图
- 运用Floyd算法求得带权有向图任意两点间的最短路径C/C++
- 任意两点之间最短路径
- 无向图的最短路径算法(队列实现 )
- Dijkstra最短路径算法(针对加权有向图)
- Maven生成WAR包时自动更新版本号version
- velocity第11个应用例子---null处理
- cuda未定义标识符等一些问题
- linux c程序获取cpu使用率及内存使用情况关闭
- Android 省市县 三级联动(android-wheel的使用)
- Matalab代码 实现 Dijkstra求 有向图及无向图之间,任意两点之间的最短路径
- Hadoop学习笔记系列文章导航【持续更新中...】
- 关于java 中的 File.separator
- 指针参数传递
- 小胖说事31------iOS 真机编译错误"“XXX”的 iPod" and run "XXX" again, or if "XXX" is still running
- 连接数据库问题
- D3.js中文版api
- 索引和主键
- IE input X 去掉文本框的叉叉和密码输入框的眼睛图标