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

本文共 1379 字,大约阅读时间需要 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)        ...    endend

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

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

    你可能感兴趣的文章
    Mysql学习总结(58)——深入理解Mysql的四种隔离级别
    查看>>
    Mysql学习总结(59)——数据库分库分表策略总结
    查看>>
    Mysql学习总结(60)——并发量大、数据量大的互联网业务数据库设计规范总结
    查看>>
    Mysql学习总结(61)——MySQL优化之DBA级优化整理汇总
    查看>>
    Mysql学习总结(64)——Mysql配置文件my.cnf各项参数解读
    查看>>
    Mysql学习总结(65)——项目实战中常用SQL实践总结
    查看>>
    Mysql学习总结(66)——设置MYSQL数据库编码为UTF-8
    查看>>
    Mysql学习总结(68)——MYSQL统计每天、每周、每月、每年数据 SQL 总结
    查看>>
    Mysql学习总结(69)——Mysql EXPLAIN 命令使用总结
    查看>>
    Mysql学习总结(6)——MySql之ALTER命令用法详细解读
    查看>>
    Mysql学习总结(70)——MySQL 优化实施方案
    查看>>
    Mysql学习总结(71)——MySQL 重复记录查询与删除总结
    查看>>
    Mysql学习总结(73)——MySQL 查询A表存在B表不存在的数据SQL总结
    查看>>
    Mysql学习总结(77)——温故Mysql数据库开发核心原则与规范
    查看>>
    Mysql学习总结(78)——MySQL各版本差异整理
    查看>>
    Mysql学习总结(79)——MySQL常用函数总结
    查看>>
    Mysql学习总结(7)——MySql索引原理与使用大全
    查看>>
    Mysql学习总结(80)——统计数据库的总记录数和库中各个表的数据量
    查看>>
    Mysql学习总结(81)——为什么MySQL不推荐使用uuid或者雪花id作为主键?
    查看>>
    Mysql学习总结(82)——MySQL逻辑删除与数据库唯一性约束如何解决?
    查看>>