软件的首要技术使命就是管理复杂度。以简单性作为努力目标的设计方案对此最有帮助。 简单性可以通过两种方式来获取:一是减少在同一时间所关注的本质性复杂度的量,二是避免生成不必要的偶然的复杂度。 设计是一种启发式的过程。固执于某一种单一方法会损害创新能力,从而损害你的程序。 好的设计都是迭代的。你尝试设计 ...
分类:
其他好文 时间:
2016-11-05 14:09:11
阅读次数:
138
许多工业与科学计算问题都可以转化为在图中寻路问题。启发式的寻路方法将问题表示为一个图,然后利用问题本身的信息,来加速解的搜索过程。一个典型的例子是有一些通路连接若干城市,找出从指定起点城市到指定终点城市的路径。但是有些问题不存在如此明显的事先定义好的图,它们的图是隐式图,也就是说,问题给定了搜索起点... ...
分类:
编程语言 时间:
2016-11-01 21:13:46
阅读次数:
291
题目链接:http://poj.org/problem?id=1703 题意:有n个人分别属于两个团伙,接下来m组形如 ch, x, y的数据,ch为“D"表示 x, y属于不同的团伙,ch为"A"表示询问x,y书否属于同一个团伙; 解法1:我们可以用jion(x, y)属于同一个团伙,jion(x ...
分类:
其他好文 时间:
2016-10-28 20:37:37
阅读次数:
229
传送门 名字起得很高端实际上很简单的算法hhh 启发式合并 简单讲就是一些合并一堆队列的题可以用启发式合并,或者说这是一个思想。每次把小的合并到大的部分,均摊复杂度$O(MlogN)$。 ...
分类:
其他好文 时间:
2016-10-25 14:33:35
阅读次数:
170
关于剪枝问题 前面讲到的通过Alpha-Beta剪枝和启发式搜索可以将4层搜索的平均时间降低到1秒以下。只有这两个优化方式其实目前最多可以做到6层搜索,就是把AI和玩家各向后推算三步。 6层搜索的棋力其实相当弱,碰到经常玩五子棋的人基本都会输,更不要说对五子棋有研究的玩家。以目前的平均一个节点有50 ...
分类:
编程语言 时间:
2016-10-21 16:10:49
阅读次数:
403
启发式算法区别于盲目搜索算法,是搜索策略的一种。主要特点是 可以利用问题自身的一些特征信息(启发式信息)来指导搜索的过程,从而可以缩小搜索范围,提高搜索效率。 实际上,启发式算法也代表了"大拇指准则"(在大多数情况下是成功的,但不能保证一定成功的准则)。 启发式算法离不开启发式信息,而启发式信息反映... ...
分类:
编程语言 时间:
2016-10-11 18:30:54
阅读次数:
250
背景: 李航的《统计学习方法》一书中提到:决策树算法通常采用启发式算法,故了解之 问题解答: 时间有限,这里也只是将算法和启发式算法的区别和简单发展摘录如下: 一、算法和启发式方法之间的差别很微妙,两个术语的意思也有一些重叠。就本书的目的而言,它们之间的差别就在于其距离最终解决办法的间接程度:算法直 ...
分类:
编程语言 时间:
2016-10-07 13:40:00
阅读次数:
232
优化算法入门系列文章目录(更新中): 1. 模拟退火算法 2. 遗传算法 遗传算法 ( GA , Genetic Algorithm ) ,也称进化算法 。 遗传算法是受达尔文的进化论的启发,借鉴生物进化过程而提出的一种启发式搜索算法。因此在介绍遗传算法前有必要简单的介绍生物进化知识。 一.进化论知 ...
分类:
编程语言 时间:
2016-10-06 00:24:54
阅读次数:
216
sunday算法核心思想:启发式移动搜索步长! SUNDAY 算法描述: 字符串查找算法中,最著名的两个是KMP算法(Knuth-Morris-Pratt)和BM算法(Boyer-Moore)。这里介绍一种比BM算法更快一些的sunday查找算法。 例如我们要在"substring searchin ...
分类:
编程语言 时间:
2016-09-19 23:58:48
阅读次数:
814
给n组操作,每组操作形式为x y p。 当p为1时,如果第x变量和第y个变量可以相等,则输出YES,并限制他们相等;否则输出NO,并忽略此次操作。 当p为0时,如果第x变量和第y个变量可以不相等,则输出YES,并限制他们不相等 ;否则输出NO,并忽略此次操作。 Input Output Input示 ...
分类:
其他好文 时间:
2016-09-17 12:06:38
阅读次数:
318