prolog - 解决rubik立方体问题的BFS算法

时间:2017-04-29 16:04:22

标签: algorithm search tree prolog breadth-first-search

我想知道如何为我的函数的输入参数rubik cube运行BFS算法。到目前为止,我已经创建了函数rotateUp(cubeIn, cubeOut), rotateDown(cubeIn, cubeOut2), rotateFront(cubeIn, cubeOut), rotateBack(cubeIn, cubeOut), rotateLeft(cubeIn, cubeOut), rotateRight(cubeIn, cubeOut)来旋转rubik立方体的每一面。

现在我要运行一些递归函数,我可以在每个可能的方式旋转我的立方体,然后在解决rubik立方体时chceck。

我已经尝试过这个解决方案,但它只会越走越深:

bfs(cubeIn) :-
        rotateUp(cubeIn, cubeOut1), bfs(cubeOut1),
        rotateDown(cubeIn, cubeOut2), bfs(cubeOut2),
        rotateFront(cubeIn, cubeOut3), bfs(cubeOut3),
        rotateBack(cubeIn, cubeOut4), bfs(cubeOut4),
        rotateLeft(cubeIn, cubeOut5), bfs(cubeOut5),
        rotateRight(cubeIn, cubeOut6), bfs(cubeOut6).

所以我想为我的rubik cube问题实现BFS算法,我做了这个:

bfs(cubeIn) :-
        rotateUp(cubeIn, cubeOut1),
        rotateDown(cubeIn, cubeOut2),
        rotateFront(cubeIn, cubeOut3),
        rotateBack(cubeIn, cubeOut4),
        rotateLeft(cubeIn, cubeOut5),
        rotateRight(cubeIn, cubeOut6),
        bfs(cubeOut1),bfs(cubeOut2),bfs(cubeOut3),
        bfs(cubeOut4),bfs(cubeOut5),bfs(cubeOut6).

但最终它仍然不像BFS那样工作。 难道你不知道我在那里做错了吗?

0 个答案:

没有答案