在看了很多D算法的代码后,还是有点看不懂,于是自己按照书上的步骤写了一个D算法的代码,对于D算法,F算法相对简单理解一点,能力有限,我感觉比别人的代码更加复杂,时间复杂度更大。。。

function [S,R,dis,bp2] = D_search(m,n,D,len)

R = zeros(len);
D0 = D;    %初始距离矩阵
S = D;     %最短距离矩阵
for i=1:len                       
    for j=1:len
        if(D(i,j) ~= Inf)    %对角线矩阵不进行计算
           R(i,j) = j;
        end
    end
end
R
for k=1:len  %经过n-1次循环的比较
    D1 = D;  %更新
    for i=1:len                       
        for j=1:len
            if(i ~= j)    %对角线矩阵不进行计算
                for t=1:len
                    D2(t) = D1(i,t)+D0(t,j);
                end
                [c w]= min(D2);
                 %i到j经过k步的距离最短者
                D(i,j) = c;   
                d = min([S(i,j) D(i,j)]);    %比较经过k步和不经过的更小者
                if(d ~= S(i,j))
                    R(i,j) = w;
                end
                S(i,j) = d;    %更新最短距离矩阵
            end
        end
    end
end
bp = zeros(1,len);
i = 1;
flag = 1;
bp(1,i) = n;
bp1 = bp(1,i);
R(m,bp(i));
while flag
    if(R(m,bp1)~=bp1) 
        bp(i) = R(m,bp1);
        bp1 = bp(1,i);
        i= i+1;
    else
        flag = 0;
    end
    if i>len
        flag = 0;
    end
end
for i=1:len
    if(bp(i))
        bp1(i) = bp(i);
    else
        break;
    end
end
num=length(bp1)
bp2(1) = m;
for j=1:num
    bp2(j+1)=bp1(num-j+1);
end
bp2(num+2) = n;
dis = S(m,n);

Matlab的D算法相关推荐

  1. Matlab人脸检测算法详解

    这是一个Matlab人脸检测算法详解 前言 人脸检测结果 算法详解 源代码解析 所调用函数解析 bwlabel(BW,n) regionprops rectangle 总结 前言 目前主流的人脸检测与 ...

  2. matlab在电力行业中的仿真技术-MATLAB基于EKF算法估计电动汽车蓄电池的SOC

    前言 关于本文的代码请参加,有兴趣的小伙伴可自行订阅. matlab电力系统仿真-MATLAB基于EKF算法估计电动汽车蓄电池的SOC 电动汽车(EV)是未来汽车的一大发展方向.动力锂电池组是电动汽车 ...

  3. ML之RF:基于Matlab利用RF算法实现根据乳腺肿瘤特征向量高精度(better)预测肿瘤的是恶性还是良性

    ML之RF:基于Matlab利用RF算法实现根据乳腺肿瘤特征向量高精度(better)预测肿瘤的是恶性还是良性 目录 输出结果 实现代码 输出结果 更新-- 实现代码 %RF:RF实现根据乳腺肿瘤特征 ...

  4. 光谱分类算法 matlab,Matlab K-means聚类算法对多光谱遥感图像进行分类(一)

    Matlab K-means聚类算法对多光谱遥感图像进行分类 作者: 白艺亭 测试了下matlab自带kmeans函数,作者编写函数,以及ENVI下的Kmeans方法,对比其效果,代码及结果图展示见下 ...

  5. 基于MATLAB的Dijkstra算法实现及案例分析

    摘要:为研究两地点之间距离(或耗时)最短路线规划,采用MATLAB编程的方法来实现,并利用Floyd算法记录距离(或耗时)最短路线.在不考虑各种影响因素的情况下,以随机小样本数据为例进行演示,求得由起 ...

  6. 单纯形表的matlab输出,自编MATLAB版单纯性算法 可以列出单纯形表以及其他相关数据...

    自编MATLAB版单纯性算法 可以列出单纯形表以及其他相关数据 function [dcxb,x,fval,exitflag,flag]=simplex(f,A,b,Aeq,beq) %本程序相关说明 ...

  7. matlab切割肿瘤算法,ML之RF:基于Matlab利用RF算法实现根据乳腺肿瘤特征向量高精度(better)预测肿瘤的是恶性还是良性...

    ML之RF:基于Matlab利用RF算法实现根据乳腺肿瘤特征向量高精度(better)预测肿瘤的是恶性还是良性 目录 输出结果 实现代码 输出结果 更新-- 实现代码 %RF:RF实现根据乳腺肿瘤特征 ...

  8. matlab 流星雨,dijkstra算法及其matlab实现

    http://blog.sina.com.cn/lyqmath 简介 dijkstra算法(迪杰斯特拉算法)是一种经典的优化算法.以其应用的广泛性与简便性,值得我们去研究. Dijkstra算法是典型 ...

  9. 花了1晚上diy的matlab解数独算法,很好理解!

    花了1晚上diy的matlab解数独算法,很好理解! 前言 一.数独的规则 二.算法 1.思路 2.流程图 3.Matlab代码 总结 前言 老婆最近迷上了数独,还给我拍了张照片,初步了解了规则之后, ...

  10. matlab 图像白平衡算法,Matlab常用白平衡算法

    <Matlab常用白平衡算法>由会员分享,可在线阅读,更多相关<Matlab常用白平衡算法(21页珍藏版)>请在人人文库网上搜索. 1.1 灰色世界法灰色世界法(grey wo ...

最新文章

  1. 学习在Unity中创建一个动作RPG游戏
  2. 计算机系统验证课件,回顾性验证及再验证简介(ppt 42页)
  3. 华为9.0以上系统如何没root激活XPOSED框架的流程
  4. jquery 选择时间(小时)区间(四)
  5. 关于read的例子和条件测试
  6. Asp.net MVC调试-使用IP监听
  7. 容易忽视的十大SQL优化方案!
  8. 【宜搭客户说第二期】宜搭助力跨境金融行业实现数字化管理
  9. scala学习笔记-数组转换(8)
  10. 如何识别新加的计算机硬盘,图文解说win10系统无法识别新加的机械硬盘的具体技巧...
  11. Java入门教程[9天快速入门JAVA]
  12. C#小技巧,持续更新中....
  13. android通过手机热点通信
  14. 电容式传感器位移性能试验报告_称重传感器的构成
  15. win7上Android环境搭建以及调试
  16. 关于近期卡巴斯基6.0授权文件被封的解决方案
  17. JAVA101本土精选,Java101系列文章
  18. 奇思妙想,获取对方手机通信录
  19. vue上线后图片不显示_vue开发之图片加载不出来问题解决
  20. 编译项目时报出已经定义了构造器

热门文章

  1. 矩阵维度:几乘几怎么看
  2. MATLAB音频信号处理(一):函数简易用法(audioread,sound函数)
  3. Markdown 图片自动上传
  4. 在MySQL中创建视图的X种方式
  5. 温度采集实时上报——客户端
  6. css属性之padding和margin
  7. 关于lua中显示绝对时间和相对时间
  8. PHPEXCEL 识别公式问题的问题 和解决方案
  9. matlab中各种括号(),[],与{}的区别与认识
  10. EL表达式三目运算符