关于二叉树的遍历有很多的方法, 下面介绍两个经典的遍历算法: BFS和DFS。一个是深度优先遍历, 一个是广度有优先遍历。 这两种遍历算法均属于盲目的遍历算法, 一般而言, 启发式的遍历搜索算法比较好一些。 。 关于各种遍历算法的对比, 将会在后面逐一提及。 这里不在赘述。
由于树是一个非线性的数据结构, 显然不能像linked list , 或者Array那样通过从头像最末尾移动去实现遍历每一...
分类:
编程语言 时间:
2014-07-20 23:14:21
阅读次数:
387
A*搜寻算法,俗称A星算法,作为启发式搜索算法中的一种,这是一种在图形平面上,有多个节点的路径,求出最低通过成本的算法。常用于游戏中的NPC的移动计算,或线上游戏的BOT的移动计算上。该算法像Dijkstra算法一样,可以找到一条最短路径;也像BFS一样,进行启发式的搜索。 A*算法最为核心的部分....
分类:
其他好文 时间:
2014-07-07 11:09:01
阅读次数:
212
爬山法是一种局部搜索算法,也属一种启发式方法。但它一般只能得到局部最优,并且这种解还依赖于起始点的选取。现在有各种版本的爬山法,下面给出的是一种简单迭代爬山法。开始时,当前解的所有可能邻域都被考虑,并且将且有最好评估值eval_r(vn)的串vn与当前串vc作比较。如果eval_r(vc)比eval...
分类:
其他好文 时间:
2014-06-23 06:44:17
阅读次数:
507
算法定义 最大期望算法(Exception Maximization Algorithm,后文简称EM算法)是一种启发式的迭代算法,用于实现用样本对含有隐变量的模型的参数做极大似然估计。已知的概率模型内部存在隐含的变量,导致了不能直接用极大似然法来估计参数,EM算法就是通过迭代逼近的方式用实际的.....
分类:
其他好文 时间:
2014-06-20 17:39:58
阅读次数:
215
原先就看过这道题,觉得很复杂。不知道为什么今天一看觉得好水啊……难道这就是并查集的启发式合并?数组d【i】表示i到其父节点的距离,即中间隔了多少船舰。数组sum【i】记录以i为根的集合总共有多少个元素,将新节点插入的时候距离设为sum【i】就好了。代码:
1 var fa,d,sum:array[....
分类:
其他好文 时间:
2014-06-12 09:45:29
阅读次数:
145
TSP问题目前有多种解法:搜索解法,动归解法,启发式解法。这里就针对poj 3311问题给出了前两种解法。
搜索解法:这种解法其实就是计算排列子集树的过程。从0点出发,要求遍历1,2,3点后回到0点。以不同的顺序来依次遍历1,2,3点就会导出不同的路径(0->1->2->3->0;0->1->3->2->0等等),总共有3!=6条路径需要考虑,从中选出最短的那条就是所求。搜索解法的时间复杂度为O(n!)。
动归解法:仔细观察搜索解法的过程,其实是有很多重复计算的。比如从0点出发,经过1,2,3,4,5点后回...
分类:
其他好文 时间:
2014-06-02 19:02:01
阅读次数:
436
A*搜索算法(A Star Search
Algorithm)A*算法主要用于在二维平面上寻找两个点之间的最短路径。在从起始点到目标点的过程中有很多个状态空间,DFS和BFS没有任何启发策略所以穷举所有的状
态空间,不适合仅需对局部进行搜索的应用。启发式搜索的关键在于:当前节点在选择下一步节点的时候...
分类:
其他好文 时间:
2014-05-29 13:10:48
阅读次数:
227
概述: 最大团问题(Maximum Clique Problem,
MCP)是图论中一个经典的组合优化问题,也是一类NP完全问题。最大团问题又称为最大独立集问题(Maximum Independent Set
Problem)。目前,求解MCP问题的算法主要分为两类:确定性算法和启发式算法。确定性....
分类:
其他好文 时间:
2014-05-26 23:39:27
阅读次数:
421
1 启发式查询转换所有的启发式查询转换都是基于一套优化器内建的规则。在查询转换阶段,转换器会逐个针对这些规则对查询进行检查,确定其是否满足转换规则,一旦满足,转换器就对其进行转换。1.1 简单视图合并我们知道,视图(View)的实质就是一条查询语句。在解析阶段,语句中的每个视图都会被展开至一个查询块...
分类:
其他好文 时间:
2014-05-21 04:14:09
阅读次数:
242