好的,我有一个叫做CuFrog的难题,它包括在一个3x3x3立方体的每个位置填充一个数字,但是当从一个位置跳到另一个位置时,它会跳过一个位置。例如,考虑一个展平的立方体,边1上(1,1)右侧的有效位置将是边1上的(3,1)。
所以我使用Prolog中的约束来做这件事,我已经给出了每个变量的域(1到54),我已经说过它们必须都是不同的,并且对于每个位置,集合right-left-down-up中的一个位置必须是这个位置+ 1的当前值。
问题是,当我标记变量时,SICStus没有给我找到答案。:(似乎我一定是遗漏了某处的限制,或者我做错了什么。有人能帮上忙吗?
谢谢。
发布于 2015-09-02 02:17:14
因此,您说CLP(FD)没有找到解决方案。你是说它以"no“结束,还是说它不会结束?
这个问题看起来像是Hamiltonian path问题。这可能是搜索需要指数时间,而不是简单地在实际时间内终止。
在这种特殊情况下,给出对称破坏启发式等限制,实际上可以减少搜索时间!例如,从你的起点开始,你可以将搜索固定在两个方向上,其他方向可以在以后派生。
因此,如果答案是“不”,这意味着有太多的限制。如果答案是它不会终止,这意味着没有足够的限制或不可能实际解决。
尽管你在搜索一条路径时付出了所有的蛮力,但后来可能会发现,解决方案是系统的。或者你可能会自己领会到这个想法。
再见
https://stackoverflow.com/questions/13789362
复制相似问题