2014.07.08 22:43简介: “搜索”与“剪枝”几乎是如影随形的。此处的“搜索”指的是带有回溯算法的深度优先搜索。 在之前的“Minimax策略”中我们给出了一个三连棋的程序,运行后你就知道计算一步棋要花多少时间。 为了计算最优的一步棋,我们可能需要递归9万多次。如果毫无疑问这种阶乘...
分类:
编程语言 时间:
2014-07-12 13:01:38
阅读次数:
728
拓扑排序虽是一种排序,但是它跟平时所接触的sort或者qsort不同,排序的意义不同。拓扑排序针对有向无回路图(DAG)而言的,不应用与存在回路的有向图。【图论】广度优先搜索和深度优先搜索 有说到了BFS和DFS,拓扑排序是DFS的一个应用。有向无回路图能说明事件的发生的先后的顺序。比如穿衣服,士兵...
分类:
其他好文 时间:
2014-07-11 20:11:54
阅读次数:
298
写在最前面的这篇文章并没有非常详细的算法证明过程。导论里面有非常详细的证明过程。本文只阐述“广度优先和深度优先搜索的思路以及一些简单应用”。两种图的遍历算法在其他图的算法当中都有应用,并且是基本的图论算法。广度优先搜索广度优先搜索(BFS),可以被形象的描述为“浅尝辄止”,具体一点就是每个顶点只访问...
分类:
其他好文 时间:
2014-07-11 19:59:06
阅读次数:
247
搜索一个图是有序地沿着图的边访问所有定点, 图的搜索算法可以使我们发现很多图的结构信息, 图的搜索技术是图算法邻域的核心。
e...
分类:
其他好文 时间:
2014-07-09 10:30:48
阅读次数:
233
深度优先搜索(DFS)是搜索算法的一种。最早接触DFS应该是在二叉树的遍历里面,二叉树的先序、中序和后序遍历实际上都属于深度优先遍历,实质就是深度优先搜索,后来在图的深度优先遍历中则看到了更纯正的深度优先搜索算法。
通常,我们将回溯法和DFS等同看待,可以用一个等式表示它们的关系:回溯法=DFS+剪枝。所以回溯法是DFS的延伸,其目的在于通过剪枝使得在深度优先搜索过程中如果满足了回...
分类:
其他好文 时间:
2014-07-08 20:34:20
阅读次数:
271
回溯法在问题的解空间树中,按深度优先策略,从根结点出发搜索解空间树。算法搜索至解空间树的任意一点时,先判断该结点是否包含问题的解。如果肯定不包含,则跳过对该结点为根的子树的搜索,逐层向其祖先结点回溯;否则,进入该子树,继续按深度优先策略搜索。
回溯法:为了避免生成那些不可能产生最佳解的问题状态,要不断地利用限界函数(bounding function)来处死那些实际上不可能产生所需解的活结点...
分类:
其他好文 时间:
2014-07-08 16:53:41
阅读次数:
256
就是按照一定顺序输出排序。
比如a欠b的钱就不能先输出a然后输出b。
本题的技巧就是,要求的是不能先输出a然后输出b,但是可以先输出b然后输出a。
故此可以按照a欠b的钱的关系,建立图,然后DFS深度优先搜索,然后逆向记录点,输出这些逆向点,也就是a欠b的钱,就先输出b然后输出a,那么这个顺序就满足要求了。
很狡猾的题意。要细心。不然就搞半天都白搞了。
题目连接:http://codef...
分类:
其他好文 时间:
2014-07-08 15:17:14
阅读次数:
143
2014.07.04 18:24简介: 给定一个有向图,你可以认为每条边长度都是1(所以叫无权值)。下面的算法可以求出从特定的起点到终点的最短路径长度。描述: 从起点出发,根据当前顶点出发的边进行广度优先搜索,直至找到终点即可。如果搜索结束了仍然没有找到终点,那么起点无法到达终点。实现: 1 /.....
分类:
编程语言 时间:
2014-07-06 19:15:17
阅读次数:
255
DFS 深度优先BFS 广度优先DFS或者BFS都是在联通区域内遍历节点的方法用在二叉树上DFS有preOreder,inOrder,postOrder,BFS就是层次遍历。在二叉树上的节点,只有两个选择,left 和right,即,对于每一个节点,in 有1个, out 有两个,有向图在矩阵的节点...
分类:
其他好文 时间:
2014-07-01 21:32:46
阅读次数:
278
POJ 1979 题解
很简单的一道上手的深搜题目,题目意思很简单,就是不能走红色的砖。从起点开始深搜就行了。...
分类:
其他好文 时间:
2014-06-30 17:47:49
阅读次数:
228