博客
关于我
Dijkstra算法之matlab实现
阅读量:503 次
发布时间:2019-03-07

本文共 1417 字,大约阅读时间需要 4 分钟。

感谢“乐观的阿锡”博主分享了K最短路径算法的相关内容。在学习过程中,Dijkstra算法是一个非常实用的工具。为了方便使用,我们将其模块化实现,并注明出处以便引用。

Dijkstra算法,由Leonhard Euler提出的,它以其提出者的人名命名。理论部分可参考教材《最优化技术与数学建模》(董文永等编,清华大学出版社,2010年)。该算法代码已实现模块化处理,可直接调用。

代码注释:

  • 参数说明:netCostMatrix是n×n的矩阵,默认行为起点列为终点,断开路径时请赋值为无穷大。
  • 初始化:默认行为起点列为终点,初始化已到达矩阵全为0,起点距离为0,其余为无穷大。
  • 算法执行:通过松弛操作逐渐找到最短路径,使用路标标记当前最短路径节点。
  • 代码实现:

    function [pathout cost] = dijkstra(netCostMatrix, source, destination)
    if ~is-empty(destination)
    return [pathout cost]
    else
    return [destination_col, permanent_number]
    end
    m = size(netCostMatrix, 1);
    n = size(netCostMatrix, 2);
    cost = ones(m, 1);
    distance = inf * ones(m, 1);
    distance(source) = 0;
    pathnode = zeros(m, 1);
    count = 1;
    while count <= m
    u = find(min(distance), 1);
    if distance(u) < cost(u)
    cost(u) = distance(u);
    pathnode(u) = 0;
    else
    pathnode(u) = 0;
    end
    for v = 1:m
    if netCostMatrix(u,v) == inf
    continue;
    end
    if distance(v) > cost(u) + netCostMatrix(u, v)
    distance(v) = cost(u) + netCostMatrix(u, v);
    pathnode(v) = u;
    end
    if distance(v) == cost(u) + netCostMatrix(u, v)
    ...
    end
    end
    count = count + 1;
    end
    if ~is-empty(destination)
    ...
    end
    end

    代码注释已完毕,为开发者提供清晰的使用指南。

    转载地址:http://txdjz.baihongyu.com/

    你可能感兴趣的文章
    NOIP2011T1 数字反转
    查看>>
    NOIP2014 提高组 Day2——寻找道路
    查看>>
    noip借教室 题解
    查看>>
    NOIP模拟测试19
    查看>>
    NOIp模拟赛二十九
    查看>>
    Vue3+element plus+sortablejs实现table列表拖拽
    查看>>
    Nokia5233手机和我装的几个symbian V5手机软件
    查看>>
    non linear processor
    查看>>
    Non-final field ‘code‘ in enum StateEnum‘
    查看>>
    none 和 host 网络的适用场景 - 每天5分钟玩转 Docker 容器技术(31)
    查看>>
    None还可以是函数定义可选参数的一个默认值,设置成默认值时实参在调用该函数时可以不输入与None绑定的元素...
    查看>>
    NoNodeAvailableException None of the configured nodes are available异常
    查看>>
    Vue.js 学习总结(16)—— 为什么 :deep、/deep/、>>> 样式能穿透到子组件
    查看>>
    nopcommerce商城系统--文档整理
    查看>>
    NOPI读取Excel
    查看>>
    NoSQL&MongoDB
    查看>>
    NoSQL介绍
    查看>>
    NoSQL数据库概述
    查看>>
    Notadd —— 基于 nest.js 的微服务开发框架
    查看>>
    NOTE:rfc5766-turn-server
    查看>>