以4×4矩阵的迷宫示例,规划从入口到任意位置的最优路径的代码
时间: 2024-02-15 18:04:26 浏览: 63
好的,以下是一个简单的示例代码,使用广度优先搜索算法(BFS):
```python
from queue import Queue
# 定义迷宫的四个方向
directions = [(0, 1), (0, -1), (1, 0), (-1, 0)]
# 定义迷宫地图
maze = [
[0, 0, 0, 0],
[1, 1, 0, 1],
[0, 0, 0, 0],
[0, 1, 1, 0]
]
# 定义起点和终点
start = (0, 0)
end = (3, 3)
def bfs(start, end, maze):
# 定义队列和 visited 集合
q = Queue()
visited = set()
# 将起点加入队列和 visited 集合
q.put(start)
visited.add(start)
# 开始搜索
while not q.empty():
# 取出队列头部的节点
node = q.get()
# 判断是否到达终点
if node == end:
return True
# 遍历当前节点的四个方向
for direction in directions:
x = node[0] + direction[0]
y = node[1] + direction[1]
# 判断是否越界或者是障碍物,如果是则跳过
if x < 0 or x >= len(maze) or y < 0 or y >= len(maze[0]) or maze[x][y] == 1:
continue
# 判断当前节点是否已经访问过,如果是则跳过
if (x, y) in visited:
continue
# 将当前节点加入队列和 visited 集合
q.put((x, y))
visited.add((x, y))
# 没有找到终点
return False
# 测试代码
if bfs(start, end, maze):
print("存在一条从起点到终点的路径")
else:
print("不存在一条从起点到终点的路径")
```
这个示例代码中,我们使用了一个队列和一个 visited 集合来记录已经访问过的节点。我们从起点开始搜索,遍历每个节点的四个方向,并将未访问过的节点加入队列和 visited 集合。如果我们最终能够到达终点,则说明存在一条从起点到终点的路径。否则,说明不存在这样的路径。
阅读全文