ACM•搜索
文章平均质量分 79
kksleric
这个作者很懒,什么都没留下…
展开
-
DLX精确覆盖解数独问题
关于Dancing Links的介绍最好仔细阅读一下Knuth的论文,那篇翻译的文章也不错,这位仁兄的 博客比较易懂http://blog.csdn.net/sunny606/article/details/7833551通过阅读论文主要有如下几点体会:1.精确覆盖的最基本模型是:在一个01矩阵中选择若干个行,使得没列都包含且仅包含一个12.Dangcing links的逻辑与原创 2012-08-23 10:16:26 · 2075 阅读 · 0 评论 -
DLX解决3-SAT问题
1.关于DLX的重复覆盖:根据与精确覆盖概念的区别可知,只需改变remove()和resume()函数控制删除和恢复的过程即可实现,对于求解最少步数问题,可借助ida*中的h()函数优化。2.重复覆盖+精确覆盖:某些元素可重复覆盖(目标),而某些元素只能精确覆盖(每类元素只能使用一次),这是要对前m列进行重复覆盖的删除回复操作,对后面的列进行精确覆盖的操作,也有一些特殊情况可直接使用重复覆盖代原创 2012-08-26 16:27:25 · 1434 阅读 · 1 评论 -
poj 4007 \ hdu 4127 Flood-it!
题意:一个n*n的矩阵,每次将左上角元素染色,则所有与它连通(两元素连通的条件是有公共边)的元素都被染为相同颜色,问至少需要多少次操作使得所有元素颜色相同解法:明显的ida*,估价函数为当前矩阵元素的种类数减一,如果每次向外扩展状态时都暴力枚举会tle,因为很多状态是无用的(即不会使连通块扩大),因此用一个vis数组记录每个元素的状态,1代表已与左上角元素连通(无需扩展),2代表不与左上角连通原创 2012-10-04 16:03:10 · 1246 阅读 · 0 评论 -
poj 3460 Booksort(IDA*)
题目大意:有N(1 ≤ N ≤ 15)本书,每本与每本的高度都不一样。现在可以按照以下的办法整理书:抽出一摞书,再保持原来的顺序插进一个位置。这样的话我们称之为“一次操作”。现在你需要求出至少需要经过几次操作才能让书变成按高度升序的状态。如果需要5次或者多于5次,只需要输出“5 or more”。解法:IDA*是一种特殊的dfs,每次dfs都设置一个阀值,一旦解的深度超出阀值就回溯。只不过ID原创 2012-10-03 19:36:32 · 908 阅读 · 0 评论 -
极大极小搜索α-β剪枝(poj 1568)
极大极小搜索: A和B对弈,轮到A走棋了,那么我们会遍历A的每一个可能走棋方法,然后对于前面A的每一个走棋方法,遍历B的每一个走棋方法,然后接着遍历A的每一个走棋方法,如此下去,直到得到确定的结果或者达到了搜索深度的限制。当达到了搜索深度限制,此时无法判断结局如何,一般都是根据当前局面的形式,给出一个得分,计算得分的方法被称为评价函数,不同游戏的评价函数差别很大,需要很好的设计。原创 2012-10-05 15:38:35 · 3854 阅读 · 0 评论