如何在 Prolog 中制作迷宫?
How to make a maze in Prolog?
对于一个项目,我必须在 Prolog 中编写一个基本的迷宫。唯一的问题是下图中代表迷宫的KB我不知道怎么写。
这是我目前拥有的,但我应该能够逐字逐句地找到拍拍。
% size of maze, including barriers.
mazeSize(7,7)
barrier(1,6).
barrier(2,2).
barrier(2,3).
barrier(3,2).
barrier(3,6).
barrier(4,1).
barrier(5,4).
barrier(5,6).
barrier(6,1).
barrier(7,4).
它应该是这样的:
希望有人能帮助我!提前致谢!
您的方法是合理的,但您还需要 node_name(1, 1, a)
之类的事实来映射节点名称和坐标。此外,7x7 迷宫显然与所示的 4x4 迷宫不对应。
一个根本不需要坐标的更简单的解决方案是只枚举连接的节点,而不是障碍:
connection(a, b).
connection(b, f).
等等,但不是 connection(b, c)
。请注意,您可能需要表达连接是双向的,因此 b
和 a
也是连接的。
对于一个项目,我必须在 Prolog 中编写一个基本的迷宫。唯一的问题是下图中代表迷宫的KB我不知道怎么写。
这是我目前拥有的,但我应该能够逐字逐句地找到拍拍。
% size of maze, including barriers.
mazeSize(7,7)
barrier(1,6).
barrier(2,2).
barrier(2,3).
barrier(3,2).
barrier(3,6).
barrier(4,1).
barrier(5,4).
barrier(5,6).
barrier(6,1).
barrier(7,4).
它应该是这样的:
希望有人能帮助我!提前致谢!
您的方法是合理的,但您还需要 node_name(1, 1, a)
之类的事实来映射节点名称和坐标。此外,7x7 迷宫显然与所示的 4x4 迷宫不对应。
一个根本不需要坐标的更简单的解决方案是只枚举连接的节点,而不是障碍:
connection(a, b).
connection(b, f).
等等,但不是 connection(b, c)
。请注意,您可能需要表达连接是双向的,因此 b
和 a
也是连接的。