寻路算法的可视化解释 关于 Dijkstra A* BFS (寻路算法的可行性)

文章编号:36850 资讯动态 2024-11-30 寻路算法

译者:AI研习社( 季一帆 )

双语原文链接: Interactive pathfinding


点此链接进入交互展示页面:

广度优先搜索、Dijkstra和A*是图上的三种典型路径规划。它们都可用于图搜索,不同之处在于队列和启发式函数两个参数。

本项目探索并可视化不同算法如何根据选择参数进行图搜索。

算法的一般性原理如下:

将边界初始化为包含起始节点的队列。

当边界队列不为空时,从队列中“访问”并删除一个“当前”节点,同时将访问节点的每个邻居节点添加到队列,其成本是到达当前节点的成本加上从当前节点访问邻居的成本再加上邻居节点和目标节点的启发式函数值。其中,启发式函数是对两个节点的路径成本的估计。

存储访问路径(通常存储在cameFrom图中),以便后续重建路径。如果邻居节点已经在列表中,同时新路径的成本较低,那么更改其成本。

找到目标路径(提前退出)或列表为空时,停止算法。

使用先进先出队列实现BFS。这种队列会忽略路径中链接的开销,并根据跳数进行扩展,因此可以确保找到最短路径的跳数,而跳数相关的成本。启发式函数的选择是任意的,因为在这个过程中其并不起作用。

使用数组可实现先进先出,即将元素附加到末尾并从头删除。

关于 A*、Dijkstra、BFS 寻路算法的可视化解释

在图上使用优先级队列和始终返回0的启发式函数,便得到Dijkstra。

相比于BFS,Dijkstra最大的不同在于考虑了成本。通过该算法,可以根据节点到节点的成本找到最短路径。

优先级队列使用数组实现,在每次插入新节点后对该数组进行排序。尽管实现优先级队列还有其他更高效的方式,但在我们的场景中,数组是足够快的,而且实现起来也简单。

关于 A*、Dijkstra、BFS 寻路算法的可视化解释

为实现A*,需要传递一个实际启发式函数,例如两个节点之间的欧式距离。通过“节点成本”+“节点到目标节点的估算成本”对节点进行加权,通过优先搜索更大可能的节点加快搜索速度。

关于 A*、Dijkstra、BFS 寻路算法的可视化解释

非允许的启发式函数

只有应用可允许启发式函数,A*才能找到最短路径,这也意味着永远不会高估实际路径长度。由于欧氏距离是两点之间的最短距离/路径,因此欧氏距离绝不会超出。

但如果将其乘以常数k>0会怎样呢?这样会高估距离,成为非允许的启发式函数。

关于 A*、Dijkstra、BFS 寻路算法的可视化解释

实现

本项目通过script实现,以便读者在Web上进行访问。另外,我使用react渲染UI,使用react-konva渲染图形。

路径发现是指接受队列类型和启发式函数,并返回另一个函数,即真实路径发现(称为currying)。

这样,用户每次更改设置后,都会使用确定参数创建一个新的路径发现函数,并将之用于图搜索。

为可视化路径发现的步骤,我使用javascript生成器,这意味着函数返回一个迭代器,而不仅仅是一个值。因此,访客在每一步都可以生成算法的整个状态,并将其保存到数组,然后通过页面顶部的滑块显示特定状态。


AI研习社是AI学术青年和AI开发者技术交流的在线社区。我们与高校、学术机构和产业界合作,通过提供学习、实战和求职服务,为AI学术青年和开发者的交流互助和职业发展打造一站式平台,致力成为中国最大的科技创新人才聚集地。

如果,你也是位热爱分享的AI爱好者。欢迎与 译站 一起,学习新知,分享成长。

关于 A*、Dijkstra、BFS 寻路算法的可视化解释

版权文章,未经授权禁止转载。详情见 转载须知 。

关于 A*、Dijkstra、BFS 寻路算法的可视化解释


本文地址: https://www.gpxz.com/article/d18e54c799879e3bb758.html
全局中部横幅
全局中部横幅
IT之家

IT之家,青岛软媒旗下的前沿科技门户网站。快速播报科技行业新闻头条快讯和手机数码产品评测,关注智能车电动车、AR/VR虚拟现实、苹果iOS/iPadOS、鸿蒙OS、谷歌Android、微软Win11/Win10/Win7,紧盯iPhone/iPad、安卓智能设备手机等数码潮流。

潍坊永诚国际劳务有限公司

潍坊永诚国际劳务有限公司是一家专业从事劳务派遣的公司。永诚人坚持“我们多努力,让您更满意”的服务理念,以创新的管理理念,全新的管理模式,优秀的服务水准,形成了独具特色的以“以人为本”为主要内涵的企业文化。展望未来,永诚人人将一如既往地用真心铸造品质,用热忱创造价值,为中国劳务服务行业的发展做出更大贡献。

福建省华宝智能科技有限公司

福建省华宝智能科技有限公司,是一家专注于制鞋全产业链的装备制造与设计、鞋业信息化、工业机器人、数字化车间、脚部扫描仪、足部大数据研发,柔性智能鞋业生产流水线研发的科技型智能装备公司。已在智能装备和工业机器人领域的工业自动化产品,包括各种控制系统、机器人控制系统、机器视觉系统、传感器等核心部件及电气控制等,都有着成熟的配套技术,并且在这几大方面都拥有多项自主知识技术产权。

轴流泵

盐城市海洋水泵有限公司主营轴流泵,混流泵,立式轴流泵,成立于2001年,现拥有员工40余人,包括管理人员10人,技术人员5人。

自动化生产

AGV AGV小车 AGV自动搬运小车 自动搬运AGV小车 搬运机器人 非标智能自动化生产线 机床自动化产线 机床自动化生产线 自动化加工生产线 车床自动化生产线 自动化机加工生产线 数控加工智能生产线 机器人集成应用产线 焊接自动生产线 重工行业重力搬运产线 上下料机械手 重力搬运机械手 智能机床生产线

74手游发布网

找传奇手游就上74sy.com手游发布网,是目前国内最新开热血传奇手游私服发布网,为玩家提供安卓手游、IOS手机游戏下载以及最热门软件应用,并收集整理全网最热门的传奇私服手游、传奇世界私服手游、正版手机游戏的热门攻略,新闻,资讯,欢迎广大手机游戏爱好者参观体验。

云舍农夫(江苏)农业科技发展有限公司

云舍农夫(江苏)农业科技发展有限公司云舍农夫(江苏)农业科技发展有限公司,作为国家特色农业发展战略的先行执行企业。于江苏省镇江市丹阳屯甸村姚庄丹句路999号,建立规模达870,000平方米的特色农业庄园,水面积共200,000平米,养殖禽类约50,000只,养殖水产约50,000公斤。。项目

腾云信息

腾云信息阿里云企业邮箱,东莞企业邮箱,东莞网站建设,东莞网站设计,东莞网站推广,东莞短视频运营,东莞抖音推广,东莞网络营销,东莞小程序制作

淘宝客是什么

淘宝客是什么,用淘宝优惠券怎么赚钱?推券客官网提供开源免费淘宝客软件是大淘客首选程序,自动采集淘宝内部优惠券商品,自动申请高佣金计划让你的收益飙升10倍。

振动给料机

江苏振强机械科技股份有限公司主要生产振动输送机,振动给料机,振动筛分机,振动喂料机等矿山、建材机械设备,公司产品质量可靠,型号多样。


全局底部横幅