图的最短路径

文章目录

  • 最短路径概念

最短路径概念

在许多应用领域,带权图都被用来描述整个网络,比如通信网络、交通网络等。这种情况下,各边的权重对应于两点之间通信的成本或交通费用。此时,一类典型的问题就是:在任意指定的两点之间如果存在通路,那么最小的消耗是多少。这类问题实际上就是带权图中两点之间最短路径的问题。

问题一:计算V1到V8的最短路径
图的最短路径_第1张图片

  1. 最短路径1:段数最少的最短路径:
    生活案例:换成最少
    解决方案:适用广度优先搜索即可
    类似问题:编写国际象棋AI,计算最少多少步就可获胜,根据你的人际关系找到关系最近的以上类似于树的层次遍历,需要借助于队列来实现

    对于已经检查过结点,应该标记为已检查,且不再检查它。否则可能会导致无限循环,可以适用另外一个列表存放已经检查过的结点找到即为可达,第一次找到,即为跳转最少,如果到最后队列为空,表示没有路径可以到达。

  2. 最短路径2:权值最小的最短路径;
    生活案例:时间最少,距离最短
    解决方案:适用狄克斯特拉算法
    -1代表无穷大
    图的最短路径_第2张图片
    将v1到其他节点的距离算出,并选出最小的一个放入数组
    图的最短路径_第3张图片
    在将v2到其他结点的距离加3算出v1到新的结点的距离,然后再选一个最小的值加入到s数组中
    图的最短路径_第4张图片
    图的最短路径_第5张图片
    图的最短路径_第6张图片
    图的最短路径_第7张图片
    图的最短路径_第8张图片
    图的最短路径_第9张图片图的最短路径_第10张图片

你可能感兴趣的:(Java数据结构)