English 中文(简体)
A* 寻找优素
原标题:Finding good heuristic for A* search

I m试图找到一个叫做Twiddle的微粒游戏的最佳解决办法(见。 该游戏有3x3矩阵,从1到9个。 目标是利用最低流动量将数字按正确的顺序排列。 在每次行动中,你可以轮换2×2平方米,或是锁定或反锁。

页: 1

6 3 9
8 7 5
1 2 4

并且由您轮流担任2x2平方圆板。

8 6 9
7 3 5
1 2 4

I m利用A*搜索寻找最佳解决办法。 我的(f)只是需要轮换的数量。 我的犹豫不决已经导致最佳解决办法(如果我修改通知,看看通知结束),但我不认为这是你所能找到的最佳办法。 我目前的犹豫不决,看一角,计算出这个数目在已解决的国家(这使我能够把人数推到这一态势所需的轮调次数)的距离,并计算出所有这些数值。 页: 1 您举以下例子:

6 3 9
8 7 5
1 2 4

并且

1 2 3
4 5 6
7 8 9 

当时,神学确实是:

6 is currently at index 0 and should by at index 5: 3 rotations needed
9 is currently at index 2 and should by at index 8: 2 rotations needed
1 is currently at index 6 and should by at index 0: 2 rotations needed
4 is currently at index 8 and should by at index 3: 3 rotations needed

h = 3 + 2 + 2 + 3 = 10

此外,如果是0,但国家不是完全命令的,而不是 h=1。

但问题是,你一度轮换了4个要素。 因此,很少有人能够做两件(更多)估计一次轮班的轮调。 这意味着,这些冷酷的过高估计了解决办法的距离。

我目前的工作是,把一个角落排除在至少为我的试场解决这一问题的计算之外。 如果really解决该问题,或者如果这种冷漠态度在某些边点仍然高估,我就没有进行过任何研究。

因此,我的问题是: 你们能带上什么样的最优素?

(争端: 这是大学项目,因此是家庭工作的一部分。 但是,我可以自由使用任何资源,如果能够这样做的话,那就不敢问你。 我还将借重Stackover流程帮助我;)

最佳回答

简单化往往最为有效。 将9位数(按第一行顺序排列)视为单一分类。 解决办法由最小的分类(g)=123456789组成。 因此,我建议采用下列观光=i(s)- i(g)。 例如, h(s)=639875124 - 123456789。

问题回答

你们可以通过考虑到所有数字,从你的方法中获得一种可接受的(即,不过度估计)犹豫不决,并且四分五裂,直至下一个愤怒。

为了改善温和,你可以看一看数字。 例如,如果在顶端留下第1和第2号数字,你至少需要进行3次轮换,以确定两者,这比单独审议更具有价值1+1。 最后,你仍需要分四。 你们可以任意地配上数字,甚至会尝试所有的奶制品,并找到最好的配对。

在计算距离时,不应仅仅考虑每个要素。 想象,每个角落的1、3、7、9人都在家中,但所有其他人都不是。

可以认为,在最后状态中相邻的那些因素在每一步骤中往往更加接近,因此,相邻的距离也可能是犹豫不决的一部分,但可能具有比同最终状态相距较弱的影响。





相关问题
How to add/merge several Big O s into one

If I have an algorithm which is comprised of (let s say) three sub-algorithms, all with different O() characteristics, e.g.: algorithm A: O(n) algorithm B: O(log(n)) algorithm C: O(n log(n)) How do ...

Grokking Timsort

There s a (relatively) new sort on the block called Timsort. It s been used as Python s list.sort, and is now going to be the new Array.sort in Java 7. There s some documentation and a tiny Wikipedia ...

Manually implementing high performance algorithms in .NET

As a learning experience I recently tried implementing Quicksort with 3 way partitioning in C#. Apart from needing to add an extra range check on the left/right variables before the recursive call, ...

Print possible strings created from a Number

Given a 10 digit Telephone Number, we have to print all possible strings created from that. The mapping of the numbers is the one as exactly on a phone s keypad. i.e. for 1,0-> No Letter for 2->...

Enumerating All Minimal Directed Cycles Of A Directed Graph

I have a directed graph and my problem is to enumerate all the minimal (cycles that cannot be constructed as the union of other cycles) directed cycles of this graph. This is different from what the ...

Quick padding of a string in Delphi

I was trying to speed up a certain routine in an application, and my profiler, AQTime, identified one method in particular as a bottleneck. The method has been with us for years, and is part of a "...

热门标签