文章目录
最短路径概念
在许多应用领域,带权图都被用来描述整个网络,比如通信网络、交通网络等。这种情况下,各边的权重对应于两点之间通信的成本或交通费用。此时,一类典型的问题就是:在任意指定的两点之间如果存在通路,那么最小的消耗是多少。这类问题实际上就是带权图中两点之间最短路径的问题。
问题一:计算V1到V8的最短路径
-
最短路径1:段数最少的最短路径:
生活案例:换成最少
解决方案:适用广度优先搜索即可
类似问题:编写国际象棋AI,计算最少多少步就可获胜,根据你的人际关系找到关系最近的以上类似于树的层次遍历,需要借助于队列来实现对于已经检查过结点,应该标记为已检查,且不再检查它。否则可能会导致无限循环,可以适用另外一个列表存放已经检查过的结点找到即为可达,第一次找到,即为跳转最少,如果到最后队列为空,表示没有路径可以到达。
-
最短路径2:权值最小的最短路径;
生活案例:时间最少,距离最短
解决方案:适用狄克斯特拉算法
-1代表无穷大
将v1到其他节点的距离算出,并选出最小的一个放入数组
在将v2到其他结点的距离加3算出v1到新的结点的距离,然后再选一个最小的值加入到s数组中