我目前有一个问题,我正在努力。
我正在尝试重新创建Korf的算法(http://www.cs.princeton.edu/courses/archive/fall06/cos402/papers/korfrubik.pdf)来解决3x3x3 rubik的立方体。
问题是,在生成模式数据库时,我想要一种方法只存储节点的深度(代表A *中的h函数)。我目前识别节点的方法是使用如下字符串:“wwooyyrrwwooyyrrggggbbbb”。
有没有人对我如何索引我的模式数据库有任何想法,这样我就不必存储(类似于)每条记录的怪物?
谢谢,
Ť
答案 0 :(得分:0)
您可以将字符串表示为两个64位数字。我记得,Ribik的立方体有~10 ^ 20个状态,两个int64变量给你2 ^ 128个组合。我相信有很多方法可以做到这一点,但我想到的第一件事就是迭代你的字符串的1..length / 2个符号,并将符号代码(0..5)添加到结果值中,并将其乘以每次都是6次。并以length / 2..length重复它。两个int64变量将比我认为的字符串更好