深度优先搜索

基本思想:它的思想是从一个顶点V0开始,沿着一条路一直走到底,如果发现不能到达目标解,那就返回到上一个节点,然后从另一条路开始走到底,这种尽量往深处走的概念即是深度优先的概念

V0->V1->V4->V3->V5->V6,先从v0到V1,再从V1到V4,发现到了终点,就退回到V1继续寻找

代码

注意恢复初始状态十分重要,在一种情况走不了的情况下它可以使其恢复初始状态试下一条路

例题:

遍历连通图,能否从v0到v6

答案

说明,重要的便是模板,先判断当前情况是否满足,如果满足则退出,不满足则遍历所有情况,如果某一位置到了头便会返回false,然后返回到分叉点,搜索下一步(遍历作用在这),而最后一定要回到初始状态,因为别的搜索也可能用

广度优先搜索

广度优先搜索是最简便的图的搜索算法之一,别名又叫BFS,属于一种盲目搜寻法,目的是系统地展开并检查图中的所有节点,以找寻结果。换句话说,它并不考虑结果的可能位置,彻底地搜索整张图,直到找到结果为止。所有因为展开节点而得到的子节点都会被加进一个先进先出的队列中

模板

说明:从某一个起始节点开始,看是否满足,如果不满足, 遍历所有可能的情况,这里便是tt,如果tt存在,那么就把它送入队列中,之后继续遍历可能情况,这里需要两个数组,一个数组是用来确定这点是否已经走过,另外一个数组是用来记录步数的。另外,有些题可能会导致数组超过范围,这时就要写一个判断条件排除掉越界的