Python 迷宫求解和状态空间搜索问题

迷宫问题,给定一个迷宫图,包括一个入口与一个出口,要求在图中找到一条从入口到出口的路径。
映射到二维0/1矩阵,0表示空位置,1表示障碍

辅助结构

dirs = [(0, 1), (1, 0), (0, -1), (-1, 0)]


def mark(maze, pos):                    # 给迷宫maze的位置pos标2 表示“到过了”
    maze[pos[0]][pose[1]] = 2


def passable(maze, pos):                # 检查迷宫maze的位置pos是否可行
    return maze[pos[0]][pos[1]] == 0

递归求解

  • 每个时刻总有一个当前位置,开始时这个位置是迷宫入口
  • 如果当前位置就是出口,问题已解决
  • 否则,如果从当前位置已无路可走,当前的探查失败,退回一步
  • 取一个可行相邻位置用同样方式探查,如果从那里可以找到通往出口的路径,那么从当前位置到出口的路径也就找到了

算法过程:

  • 1.用mark函数标记当前位置
  • 2.检查当前位置是否为出口,如果是则成功结束
  • 3.逐个检查当前位置的四邻是否可以到达出口(递归调用自身)
  • 4.如果对四邻的探索都失败,报告失败
def find_path(maze, pos, end):
    mark(maze
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值