原创文章,转载请联系作者
时光只解催人老,不信多情,长恨离亭,泪滴春衫酒易醒。
前言
最近接触了一个挺有意思的小课题,跟大家分享一下。就是利用A*
算法,来计算迷宫可行路径。有关这个算法的知识,大家可以看看A*算法维基百科以及A星算法详解来稍作了解。
代码地址在此Maze,喜欢Python
的小可爱们可以拿去练练手。
提要说明
本题中的迷宫,是以宫格类型呈现的,在代码中的呈现为二维数组
。其次在迷宫中的移动,也只有上、下、左、右四个动作可选。如下所示:
其中1代表入口,2代表障碍物不可通行,3代表出口
[[3, 2, 2, 2, 2, 2, 2, 2, 1],
[0, 0, 2, 2, 2, 2, 2, 0, 0],
[2, 0, 0, 2, 2, 2, 0, 0, 2],
[2, 2, 0, 0, 2, 0, 0, 2, 2],
[2, 2, 2, 0, 0, 0, 2, 2, 2]]
其实在A*算法
中,对单位搜索区域的描述为–节点nodes
。在本题中,我们可以把搜索区域视为正方形,会更简单一点。