深度优先搜索算法(Depth First Search),是搜索算法的一种。是沿着树的深度遍历树的节点,尽可能深的搜索树的分支。
当节点v的所有边都己被探寻过,搜索将回溯到发现节点v的那条边的起始节点。这一过程一直进行到已发现从源节点可达的所有节点为止。如果还存在未被发现的节点,则选择其中一个作为源节点并重复以上过程,整个进程反复进行直到所有节点都被访问为止。
二叉树的深度优先遍历和先序遍...
分类:
其他好文 时间:
2015-03-20 10:57:09
阅读次数:
150
POJ 2449 Remmarguts' Date (第k短路 A*搜索算法模板)...
分类:
编程语言 时间:
2015-03-18 01:17:56
阅读次数:
169
题目意思
1、给定有序数组A和关键字key,判断A中是否存在key,如果存在则返回下标值,不存在则返回-1。
2、给定无序数组A和关键字key,判断A中是否存在key,如果存在则返回1,不存在则返回0。
对于1、2问题,我们都可以简单的写出O(n)的从头到尾为的扫描算法,这里就不在累赘,这里我们讨论的是基于二分查找的算法,使其时间在渐进意义上达到O(logn)。
对于有序的数组,很“容...
分类:
编程语言 时间:
2015-03-15 23:46:44
阅读次数:
446
题目描述 Description
一个大小为N(N<=17)的质数环是由1到N共N个自然数组成的一个数环,数环上每两个相邻的数字之和为质数。如下图是一个大小为6的质数环。为了方便描述,规定数环上的第一个数字总是1。如下图可用1 4 3 2 5 6来描述。若两个质数环,数字排列顺序相同则视为本质相同。现在要求你求出所有本质不同的数环。输入描述 Input Description只有一个数N,表示需求...
分类:
其他好文 时间:
2015-03-15 23:44:11
阅读次数:
325
启发式搜索算法 所谓启发式搜索,就在于当前搜索结点往下一个结点搜索时候,通过一个启发函数来进行指导,选择代价最少的作为下一步搜索结点。 DFS和BFS在展开结点时候都属于盲目型的搜索,也就是说,它不会选择哪个结点在下一次搜索中更优而去跳转到该结点进行下一步的搜索。在运气不好的情况下,均需要试探完.....
分类:
编程语言 时间:
2015-03-15 22:35:10
阅读次数:
225
A knight moves on a chessboard two squares up, down, left, or right followed by one square in one of the two directions perpendicular to the first part of the move (i.e., the move is L-shaped). Suppos...
分类:
编程语言 时间:
2015-03-15 12:27:03
阅读次数:
181
一. 爬山算法 ( Hill Climbing ) 介绍模拟退火前,先介绍爬山算法。爬山算法是一种简单的贪心搜索算法,该算法每次从当前解的临近解空间中选择一个最优解作为当前解,直到达到一个局部最优解。 爬山算法实现很简单,其主要缺点是会陷入局部最优解,而不一定能搜索到全局最优解。如图1所示:假设C点...
分类:
编程语言 时间:
2015-03-13 22:19:47
阅读次数:
213
遗传算法 ( GA , Genetic Algorithm ) ,也称进化算法 。 遗传算法是受达尔文的进化论的启发,借鉴生物进化过程而提出的一种启发式搜索算法。因此在介绍遗传算法前有必要简单的介绍生物进化知识。一.进化论知识 作为遗传算法生物背景的介绍,下面内容了解即可: 种群(Populat.....
分类:
编程语言 时间:
2015-03-13 22:13:57
阅读次数:
235
/* * 二分查找算法也称为折半搜索、二分搜索,是一种在有序数组中查找某一特定元素的搜索算法。 * 请注意这种算法是建立在有序数组基础上的。 * */public class BinarySearch { public static void main(String[] args) { ...
分类:
编程语言 时间:
2015-03-11 17:06:42
阅读次数:
115
本文大多技术围绕调整磁盘文件 I/O,但是有些内容也同样适合网络 I/O 和窗口输出。第一部分技术讨论底层的I/O问题,然后讨论诸如压缩,格式化和串行化等高级I/O问题。然而这个讨论没有包含应用设计问题,例如搜索算法和数据结构,也没有讨论系统级的问题,例如文件高速缓冲。Java语言采取两种截然不同....
分类:
编程语言 时间:
2015-03-10 00:09:43
阅读次数:
216