最近需要用最短路径算法,很久没写了,很是生疏了,好歹是实现了基本功能了,至于性能什么的暂时也顾不上这么多了,先记录下,以备后用。
(当网络规模达到一定数量的时候,发现写的这个算法有问题,调试了2天,本质原因还是因为对算法没有理解透彻,所幸终于是找到了问题所在,由此也
顺便想到一种测试dj算法的正确性的方法: 生成一个均匀分布的网络,然后对算法进行测试,将每对节点对之间的最短路径绘制成图,最后应该得到的是一幅完整的
栅格图状图片,如果出现了孤立节点,则说明算法有问题!改动之处在代码中标注。)
https://code.csdn.net/hainan89/myalgorithm/tree/master/minRoute.m
%% dij 距离矩阵
%% pij 前一跳矩阵
%% nij 下一跳矩阵
function[dij , pij , nij]=minRoute()
% 网络拓扑结构
topo = [0 , 7 , 9 , inf , inf , 14;
7 , 0 , 10 , 15 , inf , inf;
9 , 10 , 0 , 11 , inf , 2;
inf , 15 , 11 , 0 , 6 , inf;
inf , inf, inf, 6 , 0 , 9;
14 , inf, 2 , inf , 9 , 0];
dij = ones(size(topo)) * inf; % 距离矩阵