目前有A*算法、BFS、DFS、Dijkstra和GBFS(贪婪最佳优先)。
random_map.py
包含了节点类和地图类,有随机地图与固定地图2种;
search_algorithm.py
包含了AStar
类,即A*算法;BFS
类,即BFS算法……
main.py
为入口文件。
使用方法:运行main.py
即可。
使用matplotlib的交互模式,实现搜索节点时的map动态刷新功能。
最终保存寻找到的路径图片到img文件夹。
代价函数 $ f(n) = g(n)+h(n) $ ,其中g(n) = x_dis + y_dis + round(float((math.sqrt(2) - 2)*min(x_dis, y_dis)), 3)
即对角距离,使用对角距离是为了控制路线靠近中心线,h(n) = x_dis + y_dis
即曼哈顿距离。
蓝色+绿色为经过的点,绿色为回溯时寻找的路径。
由于格子之间的路径是一致的,所以看起来会和BFS一样。
TODO:
- BFS
- DFS
- Dijkstra
- GBFS