A*算法(python)

本文介绍了使用A*算法的背景,并推荐了两个学习资源,包括一个直观的A*算法介绍网站和一个算法对比的GitHub仓库。作者还分享了自己的Python实现,并提到在上下左右移动的应用场景中采用了曼哈顿距离来计算h值。未来计划在图中寻找两条不冲突的路径。
摘要由CSDN通过智能技术生成

最近要用A star算法
推荐一个非常直观的学习A算法的网站
https://www.redblobgames.com/pathfinding/a-star/introduction.html
还有一个各种算法的对比
https://github.com/zhm-real/PathPlanning
下面是自己写的A
算法

"""
@Date:  2021/11/10
@Author:Xmmm0569
@Brief: Path Planning:A Star Algorithm
"""
import numpy as np
import matplotlib.pyplot as plt
import copy


maps = np.full((10, 10), 8)  # maps[0][0] 起点  maps[9][9] 终点
for i in range(10):
    for j in range(10):
        if (i == 0 and j == 0) or (j == 9 and i == 9):
            continue
        if np.random.uniform(0, 10) < 3:
            maps[i][j] = 0
# print(maps)


class Astar:
    def __init__(self):
        self.start = [0, 0]
        self.end = [9, 9]
        self.open = []  # open表[x, y, detax, detay, g, f]
        self.close = []  # 同open表
        self.best_path = []

    def h_value(self, now):
        return abs(now[0] - self.end[0]) + abs(now[1] - self.end[1]
A*算法是一种启发式的搜索算法,用于在图形或网络中找到最短路径。它是基于深度优先算法和广度优先算法的一种融合算法,通过使用启发式函数来评估每个节点的优先级,以确定下一个要扩展的节点。\[2\] 在A*算法中,每个节点都有一个估计的成本,由两部分组成:从起始节点到当前节点的实际成本(g值)和从当前节点到目标节点的估计成本(h值)。通过将这两个成本相加,可以得到一个节点的总成本(f值)。算法会选择具有最低总成本的节点进行扩展,直到找到目标节点或搜索完整个图形。\[1\] A*算法的步骤包括预处理、开始搜索、继续搜索和确定实际路径。在预处理阶段,需要初始化起始节点和目标节点,并计算起始节点的f值。然后,在开始搜索阶段,将起始节点添加到一个优先队列中,并按照f值的顺序进行扩展。在继续搜索阶段,算法会选择具有最低f值的节点进行扩展,并更新其邻居节点的f值。最后,在确定实际路径阶段,可以通过回溯从目标节点到起始节点,以找到最短路径。\[3\] A*算法可以使用Python或C++等编程语言进行实现。在Python中,可以使用优先队列和适当的数据结构来实现A*算法。具体的实现细节可以参考相关的参考资料和代码示例。\[4\] #### 引用[.reference_title] - *1* *2* *3* [【路径规划】全局路径规划算法——A*算法(含python实现 | c++实现)](https://blog.csdn.net/weixin_42301220/article/details/125140910)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值