寻路算法
好的,我们来详细解释一下寻路算法。
顾名思义,寻路算法就是用来在由节点(Node/Vertices)和连接线(Edge/Link)构成的图(Graph)中,找到从一个起始点到目标点的可行路径(如果存在)的算法。这里的“图”可以是:
- 网格地图(Grid): 最常见于游戏(如策略游戏、RPG)中的地图,由一个个正方形或六边形格子组成。节点是格子中心或格子本身,连接线代表相邻格子之间的移动。
- 例子: 在《星际争霸》中,单位需要避开障碍物到达指定位置;在迷宫游戏中找到出口。
- 导航网格(NavMesh): 常用于3D游戏场景或机器人导航。地图被划分为凸多边形区域(通常是三角形)。节点是多边形,连接线代表相邻多边形之间的可行走边界。
- 例子: 《英雄联盟》中角色绕过墙壁和地形;自动驾驶汽车在城市道路网中规划路线。
- 点对点网络(Waypoint Network): 地图上人工设置了一系列关键点(航点)。节点是航点,连接线代表航点之间允许移动的路径(通常是直线或预定义的曲线)。
- 例子: 飞行模拟中飞机沿着预设航路点飞行;一些游戏中NPC沿着固定路线巡逻。
- 任意图(Graph): 最抽象的形式,节点可以代表任何事物(如城市),连接线代表事物之间的关系或移动成本(如道路、距离、时间、费用)。
- 例子: GPS导航找到城市A到城市B的最快/最短路;网络路由器寻找数据包传输的最佳路径。
核心目标:
- 找到路径: 首要任务是确定是否存在一条从起点通往终点的连通路径。
- 找到最优路径: 在存在多条路径的情况下,根据特定的代价(Cost) 标准找到最优(或接近最优)的那一条。常见的代价包括:
- 路径长度: 物理距离最短。
- 移动时间: 预估耗时最少(可能受地形速度加成/减益影响)。
- 消耗资源: 燃料、金币等消耗最少。
- 综合代价: 结合距离、时间、风险等因素计算出的综合成本。
常见的主要寻路算法
-
广度优先搜索:
- 原理: 像水波纹一样,一层一层(等距)地从起点向外探索所有相邻节点。使用队列(Queue) 数据结构(先进先出)。
- 特点:
- 保证找到最短路径(步数最少)(如果所有移动成本都为1)。
- 在探索到目标点时,路径自然就是最短的。
- 通常不考虑移动成本差异(所有移动成本视为1)。
- 可能会探索大量不必要的节点,效率较低,尤其是在大图中。
- 适用场景: 寻找步数最少的路径(如迷宫),或当图中所有边的代价相同时。
-
深度优先搜索:
- 原理: 沿着一条路径一直深入探索,直到走不通再回头(回溯)。使用栈(Stack) 数据结构(后进先出)。
- 特点:
- 不保证找到最短路径,很可能找到一条非常绕远的路径。
- 很可能非常快找到某条路径(但不一定好)。
- 探索方向具有很大的随机性(取决于邻居访问顺序)。
- 适用场景: 单纯判断两点是否连通,或寻找所有可能路径(非最优路径)。在寻路中实际应用较少,常作为其他算法的基础或用于图遍历。
-
迪杰斯特拉算法:
- 原理: 计算从起点到达所有其他节点的最小累积代价。使用优先队列(Priority Queue) (最小堆),总是优先探索当前已知累积代价最小的节点。
- 特点:
- 保证找到起点到图中所有可达节点的最小累积代价路径(如果移动代价非负)。
- 是解决加权图(边有权重/代价)上单源最短路径问题的经典算法。
- 比广度优先搜索慢,因为它需要处理优先队列。
- 适用场景: 需要知道起点到所有点或者到某个点的确切最小代价路径,且图中不存在负权重边。例如交通网络中查找最短距离或最低费用路线(假设费用不为负)。
-
A* 搜索算法:
- 原理: 迪杰斯特拉算法的智能优化版。同样使用优先队列,但选择下一个探索节点的依据不仅仅是当前累积代价
g(n)(从起点到节点n的实际代价),还加上一个启发式函数h(n)(估计从节点n到目标的剩余代价)。f(n) = g(n) + h(n)是优先级。 - 特点:
- 只要启发函数
h(n)可接受(即h(n)永远不大于n到目标的实际代价,通常是预估直线距离),A* 就能保证找到最优路径。 - 高效的秘诀在于
h(n):好的启发式函数(如曼哈顿距离、欧几里得距离)能显著引导搜索方向,大幅减少需要探索的节点数量,效率远高于迪杰斯特拉。 - 是游戏AI、机器人导航和许多地图应用中最常用、最高效的寻路算法。
- 只要启发函数
- 适用场景: 绝大多数需要高效寻找最优路径的场景,尤其是在具有空间信息(能估算剩余距离/代价)的图中。游戏开发中的基石算法。
- 原理: 迪杰斯特拉算法的智能优化版。同样使用优先队列,但选择下一个探索节点的依据不仅仅是当前累积代价
-
跳点搜索:
- 原理: 专门针对均匀代价网格地图优化的算法。它利用了网格的结构化特性,智能地跳过大量中间节点(“跳点”),只关注路径方向可能发生改变的关键节点(如拐角、障碍物旁边)。
- 特点:
- 在大规模、开放的网格地图上,性能通常远优于 A*,因为它跳过了大量不必要的节点。
- 基于 A*,但利用网格对称性进行剪枝。
- 主要优化了节点扩展过程,但在开放区域速度提升显著。
- 适用场景: 大型网格地图(如开放世界游戏、策略游戏)且移动代价均匀(或接近均匀)。
选择哪种算法?
- 需要最优解且图有空间信息? -> A* (首选)
- 需要最优解但图无空间信息或代价复杂? -> 迪杰斯特拉
- 只在乎步数最少(等权网格)? -> 广度优先 (简单)
- 大型均匀网格地图? -> 考虑 跳点搜索 (对 A* 的优化)
- 只需要判断连通性或任意路径? -> 深度优先 (但结果可能非常差)
关键概念总结
- 节点: 图中的位置点。
- 边/连接: 节点之间的通路,通常有权重(移动代价)。
- 开放列表: (A*/Dijkstra) 存储待探索的候选节点。
- 封闭列表: (A*/Dijkstra/BFS) 存储已探索过的节点,避免重复处理。
- 代价
g(n): 从起点到节点n的实际累积代价。 - 启发函数
h(n): (A*) 估计从节点n到目标的剩余代价。 - 评估函数
f(n): (A*)f(n) = g(n) + h(n),用于决定探索优先级。 - 回溯: 找到目标后,沿父节点指针反向追溯到起点,形成路径。
总之,寻路算法是计算机科学和人工智能(特别是游戏AI、机器人学)的基石之一。理解它们的原理和适用场景对于开发智能移动行为至关重要。A* 因其高效和最优性保证,是实践中应用最广泛的算法。
动态避障-图扑自动寻路 3D 可视化
自动寻路是机器人导航的核心技术,其原理主要涉及机器人与环境之间的复杂信息交互与处理。在自动寻路过程中,机器人依靠先进的传感器系统,如高清摄像头、
2024-10-22 11:56:35
可提升全局寻优精度的改进灰狼优化算法
在标准灰狼优化算法寻优的中后期,由于衰减因子减小,灰狼群体中的个体均向领导层灰狼所在区域靠近,导致算法的全局
资料下载
佚名
2021-05-17 16:51:49
一种基于遗传算法的并行参数自动寻优方法
分割,程序性能难以得到保证。针对申威26010处理器硬件特性提岀一种基于遗传算法的并行参数自动寻优方法。对消息传递接口数据规模参教和从核数据规模参数进行自动寻
资料下载
佚名
2021-04-07 10:18:48
如何结合粒子群寻优与遗传重采样实现RBPF算法
里程计信息和激光传感器采集的距离信息进行融合,在算法中引入粒子群寻优策略,通过粒子间能效吸引力来调整采样粒子集,同时对重采样中权值较小的粒子进行遗传变异操作,缓解粒子枯竭现象,提高机器人位姿估计一致性,并维持
资料下载
佚名
2020-09-30 17:29:46
如何制作一个智能寻路+避障的小车?
本项目利用D1 Dock Pro的USB拍照程序,结合L298N电机驱动模块和红外探测循迹光电传感器模块,制作了一个拥有智能寻路+避障功能的小车。该项目为“玄铁杯第二届RISC-V应用创新大赛”活动中的优秀作品。
2022-12-22 14:27:08
熟悉RTK算法原理和调试
为了解决公司某型号芯片是否满足千寻RTK要求,测试单频RTK在不同卫星系统下模糊度固定率。因此,熟悉RTK算法原理和调试rtklib后处理程序是必要的。
伺服控制系统常用参数寻优的算法
参数寻优——转自mishidemudong 参数寻优背景 参数寻优问题随处可见,举几个例子。 1. 小明假期结束回校,可以坐火车,可以坐汽
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 芯片的工作原理是什么?
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- 什么是蓝牙?它的主要作用是什么?
- ssd是什么意思
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- dtmb信号覆盖城市查询
- EDA是什么?有什么作用?
- 中科院研发成功2nm光刻机
- 苹果手机哪几个支持无线充电的?
- type-c四根线接法图解
- 华为芯片为什么受制于美国?
- 怎样挑选路由器?
- 元宇宙概念股龙头一览
- 锂电池和铅酸电池哪个好?
- 如何进行编码器的正确接线?接线方法介绍
- 什么是场效应管?它的作用是什么?
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- amoled屏幕和oled区别
- 苹果nfc功能怎么复制门禁卡
- 单片机和嵌入式的区别是什么
- 复位电路的原理及作用
- BLDC电机技术分析
- dsp是什么意思?有什么作用?
- 苹果无线充电器怎么使用?
- iphone13promax电池容量是多少毫安
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 传感器常见类型有哪些?
- 自举电路图
- 苹果笔记本macbookpro18款与19款区别
- 通讯隔离作用
- 新斯的指纹芯片供哪些客户
- 伺服电机是如何进行工作的?它的原理是什么?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 手机nfc功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机