跳转至

搜索

递归回溯

**原理:**采用递归的方式遍历所有可能的解空间,当发现当前路径不满足条件时,回溯到上一步,尝试其他路径。通过递归函数的参数来记录当前的状态,如已选的元素、当前的位置等。

**应用:**解决排列组合问题(如全排列、子集生成)、迷宫求解问题、数独求解问题等。

二进制枚举

**原理:**将问题中的状态用二进制数表示,每一位代表一个元素是否被选中或某种状态是否存在,然后枚举所有可能的二进制数(从 0 到 2^n-1,n 为元素个数),对应不同的状态组合,判断是否满足条件。

**应用:**处理状态压缩问题,如集合的子集问题、资源分配问题(每个资源是否被使用)等。

DFS

**原理:**从图的某个顶点出发,沿着一条路径尽可能深地搜索下去,直到无法继续,然后回溯到上一个顶点,搜索其他路径。通常使用递归或栈来实现。

**应用:**图的遍历(如查找图中的所有连通分量)、求解连通性问题、迷宫路径搜索、求解所有可能的解(如排列组合问题的另一种解法)等。

BFS

**原理:**从图的某个顶点出发,先访问其所有相邻顶点,再依次访问这些相邻顶点的相邻顶点,按照层的顺序进行搜索,通常使用队列来实现。

**应用:**图的遍历(如求最短路径问题,在无权图中,BFS 可以找到从起点到终点的最短路径)、寻找连通分量、解迷宫问题(求最短出口路径)等。