什么是最短路问题:
我们先举一个例子:
A是起点,I是终点。我们从A到I有以上好多种路径,并且点与点之间的距离是一样的,上面例子距离都为1.而这个距离我们也把它叫做边权。
我们此专题就解决的是边权为1的最短路问题,同时我们也可以解决边权相同的最短路问题。
两者是同类型题目。
如何解决最短路问题
那么介绍了什么是最短路问题,那么我们如何解决它呢?
其实很简单:
我们从起点开始,进行一次BFS即可
那么肯定首先需要一个队列来存储信息,其次我们还需要一个数组,可以是一个bool数组也可以是哈希表,其目的都是用来标记当前位置是否已经被遍历过了。
接下来我们模拟一下这个过程:
从A AA到I II:
先把A AA这个点扔到队列里面,丢进队列后进行标记,弹出对头元素,
把对头元素能去到地方加入到队列里面,从A AA可以到达B BB和C CC,将B BB和C CC丢进队列,相当于在A AA基础上向外扩展一层,然后统计队列里面有多少个元素,同时讲这些元素弹出去(在循环里)然后再同时向外扩展,依次内推…
当走到I II位置时,走到终点。最短路我们也就找到了。
最短路径我们知道是那一条,那么这个最短路是多少呢?
其实不难发现,我们层序遍历是一层一层剥开,那么这个扩展的层数其实就是我们的最短路的长度。
介绍到这,我们的最短路就基本介绍差不多了,其实就是用BFS来进行寻找最短路径。