• 最短路径算法专题1----弗洛伊德


    由于最短路径算法我认为比较重要,所以分成几个专题来慢慢细化去磨它,不能一口气吃个胖子嘛。

    首先在说算法之前,先说清楚什么叫做最短路径。

    题目一般会给你一张图,然后告诉你很多地方,然后告诉你各个地方之间的路程有多远,要你求出,两点间的最短距离,注意,题目给出的两点间的距离未必是最短的,可能通过第三个点转换之后达到更短。实际其实也是这样的,有时候两个地方并没有直线的道路只有曲线的绕路。

    算法的思路:

    1、用二维数组列出所有的距离,达到不了的用最大距离表示,如9999999

    2、循环数组上面的每一个点,因为数组上面的一个点就代表了两点之间的现在距离,如map【3】【2】表示2到3的距离,然后对于这个点,尝试在其中插入一个点使其距离缩短,如map【3】【1】 + map【1】【2】< map【3】【2】表示,先走3到1再走1到2会比直接从3到2更近,然后更新map

    3、最后输出任意两点间的距离

    算法的要点:

    1、三层循环,第一层,中间插入的点,二三层,地图上面的任意点

    2、if(map【3】【1】 + map【1】【2】< map【3】【2】)map【3】【2】= map【3】【1】 + map【1】【2】;

    3、达到不了的用最大距离表示,如9999999,那么就有可能出现两个9999999相加和点比较的情况,那么久要在if中间判断是否有无穷大的值存在,如果存在不需要更新

    算法的使用:

    1、时间复杂度显而易见O(N^3);

    2、如果要求写出全部的任意两点最短,用这个算法可行。

    3、数据范围小的话,时间要求不高,这个算法的编码速度最快,简单的说就是解题速度很快,代码量小。

    顺便说一下,这个算法里面有动态规划的思想在里面,简单的说就是,动态的去更新已有的值,让解慢慢优化。

  • 相关阅读:
    SQL的介绍及MySQL的安装
    git中级技能
    git基本用法
    git基本语法
    出租车数据分析
    使用Spark MLlib进行情感分析
    增量式编码器专题
    vue-loader的简单例子
    node爬虫(转)
    fs-extra 文件管理
  • 原文地址:https://www.cnblogs.com/linkstar/p/5289846.html
Copyright © 2020-2023  润新知