1. 树(深度优先搜索树) 上图右图是左图以 为起点进行 时产生的生成树。 有向图的 生成树主要有 种边(不一定全部出现): 1. 树边( ):绿色边,每次搜索找到一个还 没有访问过的结点 ( 白点 )的时候就形成了一条树边。 2. 返祖边( ):黄色边,也被叫做回边,即 指向祖先 结点( 灰点 ) ...
分类:
其他好文 时间:
2020-04-29 15:04:19
阅读次数:
69
深度优先搜索的思想是思想是从一个顶点V0开始,沿着一条路一直走到底,如果发现不能到达目标解,那就返回到上一个节点,然后从另一条路开始走到底。 即:往深处走。 例:从这个图中,深度优先搜索的顺序就是1->2->3->2->4->2->1->5->1->6->7->8->7->6->1->9->10 代 ...
分类:
其他好文 时间:
2020-04-25 23:45:21
阅读次数:
64
什么是回溯 在求解诸如八皇后、全排列等问题时,我们通常使用深度优先搜索dfs在解空间内搜索满足条件的解,dfs的搜索过程可以看做是在一棵搜索树上遍历的过程。例如,求数字[1,2,3]的全排列的搜索树如下: 当我们搜索到树的深层向浅层返回的过程就是回溯。 (我认为可以这样理解:从上往下搜索是递归,从下 ...
分类:
编程语言 时间:
2020-04-25 23:13:57
阅读次数:
105
饭前点心: DFS序,闻名知意就知道这是个跟 DFS 相关的东东,通俗一点说就是 DFS 的序列。 如果您 DFS 不太懂的话,建议先去搞几道走迷宫的题目练练手。 什么是DFS序? 如你当前看到的这幅图,如果我们按照 DFS(深度优先搜索)走这棵树时, 路径就是我们 绿色 所代表的路径。 即我们这个 ...
分类:
其他好文 时间:
2020-04-22 20:21:02
阅读次数:
83
深度优先搜索和广度优先搜索广泛运用于树和图中,但是它们的应用远远不止如此。 BFS 广度优先搜索一层一层地进行遍历,每层遍历都是以上一层遍历的结果作为起点,遍历一个距离能访问到的所有节点。需要注意的是,遍历过的节点不能再次被遍历。 第一层: 0 -> {6,2,1,5} 第二层: 6 -> {4} ...
分类:
其他好文 时间:
2020-04-20 18:54:14
阅读次数:
63
以前自学数据结构和算法的时候,回溯算法一直没涉及到,当时只听过,也没用过,这两天看到一个数独问题的博客,看下来居然一脸懵逼,这肯定是不能接受的,所以一鼓作气把回溯算法好好品了品,赶紧记下来,巩固一下。 回溯算法,简单来说,其实就是对解空间的一种深度优先搜索(DFS:Depth-First-Searc ...
分类:
编程语言 时间:
2020-04-19 01:04:55
阅读次数:
73
栈的用途比较广 如:子进程调用,递归调用,表达式转换,二叉树遍历,深度优先搜索 等等 实现思路: 1)top=-1时栈为空,top=maxsize-1栈满 C#代码实现: 1 using System; 2 3 namespace 数据结构 4 { 5 public class ArrayStack ...
分类:
编程语言 时间:
2020-04-16 09:18:27
阅读次数:
73
DFS基本思想:从一个顶点V0开始,沿着一条路一直走到底,如果发现不能到达目标解,那就返回到上一个节点,然后从另一条路开始走到底,这种尽量往深处走的概念即是深度优先的概念。在树中则是往一个方向走到底,不能到达目标解,则返回上一个节点,往另一个节点走到底。 缺点:难以寻找最优解,仅仅只能寻找有解。优点 ...
分类:
其他好文 时间:
2020-04-10 21:13:40
阅读次数:
67
给定一个整数矩阵,找出最长递增路径的长度。 对于每个单元格,你可以往上,下,左,右四个方向移动。 你不能在对角线方向上移动或移动到边界外(即不允许环绕)。 示例 1: 输入: nums = [ [9,9,4], [6,6,8], [2,1,1]] 输出: 4 解释: 最长递增路径为 [1, 2, 6 ...
分类:
编程语言 时间:
2020-04-04 11:47:34
阅读次数:
96
dfs:深度优先搜索(深搜) 思路是把一种可能性走到底,在回头到上一个路口,走另一种可能性。 数独游戏:有一个9个3*3的小格子,拼成了一个9*9的矩阵,预输入1~9这种数字到某个格子上,其余格子是0。我们要做的就是把没有数字的格子上添上数字,使得这个9*9的矩阵每一行每一列的数字都是1~9不重复, ...
分类:
其他好文 时间:
2020-03-31 14:39:29
阅读次数:
56