宽搜与深搜的visit数组在最短路与是否存在路的使用区别
有时候会被visited数组搞得头特别昏,特别是深搜的visited数组,我们都知道visit数组在优化搜索时间有很大帮助,还是很好用的,常常就是没有加visit数组导致tle,所以弄清楚visit数组怎么使用还是特别重要的。
- 最短路
-
宽搜:我们都知道宽搜是按层进队列,所以如果在某个点遍历到下一个点已经存在队列中就没有必要再进入队列了,因为是最短路由当前这个点到达终点的距离一定比已经存在于队列中的同一个位置点的距离长,这个还是很简单想到的。不需要还原visit数组
-
深搜:这个就有点头疼了,等我画个图:
- 是否存在路
- 宽搜:这个也是稍微想想,可以知道和最短路一样不需要还原visit数组,由于点已经存在于队列中了,我们只需要判断是否存在路径就行了。
- 深搜:这个也是得画个图