BFS学习心得
今天上午听了y总讲的BFS,受益匪浅,做了一个走迷宫的题目。
BFS的意思是宽度搜索,与DFS不同,DFS的搜索方式是先搜到底,然后回溯,而BFS是一层一层的往下搜,这样子在每条边的权重相等的情况下就可以实现最短路径问题。
而BFS我现在感觉一般都是用一个队列来维护的,把下一层的所有元素全部存放在队列里面,然后再维护这个队列,下一次依次遍历该队列,然后以此类推,每一次都把下一层需要遍历的数据放在队列里面,供下一次遍历。
这种思想是,你想由起点到达终点,必须一步步的去实现,那么BFS就是这么完成的,先由起点走到所有的下一个位置,再由下一个位置走到下下个位置,依次类推。
即如果要走到距离自己为8的点,从0开始,你必须先走到距离为1的点,然后再由距离为1的点走到距离为2的点,以此类推,最终走到终点。
今天上午最大的收获还是发现了原来如此简单的队列数据结构居然有如此神奇的作用,其可以达到一层层遍历的效果,每次都把下一层的放进来,然后下一次遍历的时候又把下一层的放进来,而且这个顺序刚好可以让每层之间不会冲突。
所以感觉原来如此简单的东西居然有如此大的应用,确实挺让我感觉很神奇的。
现在刚入门BFS和DFS,还是得多刷题,巩固一下算法,才能有更好的提高。
好了,每篇博客后面都附上一句话。
有一个人她今天要下课啦!