搜索入门及深搜广搜演示课案.ppt

搜索初探 --赵国振 为什么 搜索 我们有时会碰到一些题目,它们既不能通过建立数学模型解决,又没有现成算法可以套用,或者非遍历所有状况才可以得出正确结果。这时,我们就必须采用搜索算法来解决问题。几乎每次ACM竞赛都要考察到这方面的内容。因此,如何更深入地了解搜索,从而更为有效地运用这个解题的有力武器,是一个值得深入研究的问题。要掌握搜索的应用技巧,就要了解它的分类及其各方面的特点。 一、回溯算法 回溯算法是所有搜索算法中最为基本的一种算法,其采用了一种“走不通就掉头”思想, 一般的,深搜其实用的就是回溯思想,下面来看一下回溯的过程演示 回溯过程演示-起始 Graph map; Void dfs(位置 u) { map[u] = 红色; for (u 的四个方向的位置 v) { //v按照u的右左下上的顺序 if (v可访问) dfs(v); } map[v] = 白色; } 回溯过程演示-1 Graph map; Void dfs(位置 u) { map[u] = 红色; for (u 的四个方向的位置 v) { //v按照u的右左下上的顺序 if (v可访问) dfs(v); } map[v] = 白色; } 回溯过程演示-2 Graph map; Void dfs(位置 u) { map[u] = 红色; for (u 的四个方向的位置 v) { //v按照u的右左下上的顺序 if (v可访问) dfs(v); } map[v] = 白色; } 回溯过程演示-3 Graph map; Void dfs(位置 u) { map[u] = 红色; for (u 的四个方向的位置 v) { //v按照u的右左下上的顺序 if (v可访问) dfs(v); } map[v] = 白色; } 回溯过程演示-4 Graph map; Void dfs(位置 u) { map[u] = 红色; for (u 的四个方向的位置 v) { //v按照u的右左下上的顺序 if (v可访问) dfs(v); } map[v] = 白色; } 回溯过程演示-5 Graph map; Void dfs(位置 u) { map[u] = 红色; for (u 的四个方向的位置 v) { //v按照u的右左下上的顺序 if (v可访问) dfs(v); } map[v] = 白色; } 回溯过程演示-6 Graph map; Void dfs(位置 u) { map[u] = 红色; for (u 的四个方向的位置 v) { //v按照u的右左下上的顺序 if (v可访问) dfs(v); } map[v] = 白色; } 回溯过程演示-7 Graph map; Void dfs(位置 u) { map[u] = 红色; for (u 的四个方向的位置 v) { //v按照u的右左下上的顺序 if (v可访问) dfs(v); } map[v] = 白色; } 回溯过程演示-8 Graph map; Void dfs(位置 u) { map[u] = 红色; for (u 的四个方向的位置 v) { //v按照u的右左下上的顺序 if (v可访问) dfs(v); } map[v] = 白色; } 回溯过程演示-到达 Graph

文档评论(0)

1亿VIP精品文档

相关文档