一、DFS(深度优先搜索)
基本概念:
(英语: Depth-First-Search ,简称 DFS )是一种用于遍历或搜索树或图的算法。沿着树的深度遍历树的节点,尽可能深的搜索树的分支。当节点v的所在边都己被探寻过,搜索将回溯到发现节点v的那条边的起始节点。一直进行到已发现从源节点可达的所有节点为止。在未进行剪枝的情况下DFS=暴力搜索。
(时间复杂度可达O(n!)以上)
算法思想:
回溯法(探索与回溯法)是一种优选搜索法,又称为试探法,按选优条件向下搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回重走的方法叫做回溯法,而满足回溯条件的某个状态点就叫回溯点。
DFS一般用于求解问题有多少种情况,多少条路径,最大路径等。
二、BFS(宽/广度优先搜索方式)
基本概念:
宽度优先搜索算法(又称广度优先搜索)是最简便的图的搜索算法之一,这一算法也是很多重要的图的算法的原型。Dijkstra单源最短路径算法和Prim最小搜索树算法都采用了和宽度优先搜索类似的思想。其别名又叫BFS,属于一种盲目搜寻法,目的是系统地展开并检查图中的所有节点,以找寻结果。换句话说,它并不考虑结果的可能位置,彻底地搜索整张图,直到找到结果为止。
BFS一般用于解决最短路径、最少步骤等最优问题。