Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

不要总是不动脑子的去Copy!你知道IDA*的最大上界是怎么确定的吗?!

Posted by 3Dnn at 2013-09-07 13:08:55 on Problem 1077
关于poj 1077的IDA*作法,网上关于判定无解的情况最多的有两种方法。

第一种,就是根据题目特性通过奇偶剪枝来判断,这个我们就不用说了;
http://www.cnblogs.com/steady/archive/2011/01/16/1936551.html


第二种,就是直接设定一个最大上界(比如下面)
http://www.cnblogs.com/liyongmou/archive/2010/07/19/1780861.html

    while(!ans && bound <= 100)
        bound = DFS(sx, sy, 0, -10);


我自己也刚学IDA*,本来在考虑怎么确定启发函数的最大上界的,后来大概看了一下网上的,全部都是 <=100 之类的,而没有一个人说明原因!

在这道八数码难题中,我测到的在poj最大边界(F值)是最小可以设定到31(如果按格据为 1 来算)就会AC,但其实目前我知道测试到的状态边界可以达到33,比如这种状态的时候(可能不唯一):

8 6 7
9 2 4
3 5 1
(x用9替代了)

如果有测试到边界更大的,欢迎指针OTZ...



但是反过来想(先不考虑奇偶剪枝的方法),最开始的时候我们怎么知道最大上界是多少呢?IDA*本来很快的,其最大的时间开销就是在迭代加深上,如果最大边界越精确就越节约时间了!

有的人可能会说,我首先直接测9!=362880个状态中最大边界值不久好了。好吧,那你最好再去交一下zoj1217 相同的题目。
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1217

姑且这样暂时可以,那么如果是UVA 1122十五数码难题
  http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1122
难道要提前测试16!=20922789888000个状态中最大边界值?



所以我发此贴的目的其实就是想让大家谈论一下有没有什么好的方法可以更精确(或者比较接近的)的找到最大边界值!

还望路过大牛不吝赐教OTZ....

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator