【C++算法】83.BFS解决最短路径问题_最短路径问题简介
文章目录
- 最短路问题
最短路问题
和图论有点关系。
一个个圈就是点,一条条线就是边,有的时候还会给边加上权值,权值可以认为是边的长度。
边权全部都相同就是边权为1的最短路问题。
然后求某个点到另一个点的最短路径。
边权为1的最短路问题,可以从起点来一次BFS就可以了。
层序遍历模拟:
先把A丢进队列,然后弹出A,把A能去的地方B,C丢进队列。类似于一层一层的。
然后同时把这两个元素弹出去(这里的同时指的是在一个for循环里面依次把B,C弹出去),相当于同时往外面扩充一层,把D,E丢进去。
然后同时把这两个元素弹出去,相当于同时往外面扩充一层,(因为从D扩展的时候已经把E加进去了),把F,G丢进去。
然后同时把这两个元素弹出去,相当于同时往外面扩充一层,把I丢进去。这个时候就已经找到终点了,就不需要进行了。
这个时候最短路径就是ACEFI