Weighted A* 改进型(1):XDP

本文的主要内容来自于文献[1],总的来说这篇文献给我的感觉就是理论证明非常精妙,最后的实际效果也是提升的非常明显。

在Introduction中作者给出了一般Best first search(BFS,常用的包括A *,weighted A * ,Focal search( A ε ∗ A_{\varepsilon}^{\ *} Aε ),Dynamical Potential search (DPS)和 Bounded suboptimal search(BSS)等在内)的通用框架如下:

在这里插入图片描述

一般来说作为weighted A * 的改进型算法一般都能保证 w w w-optimality,即算法所搜索到的路径代价不超过 w C ∗ w C^{*} wC,其中 C ∗ C^{*} C是一个optimal的路径代价。作者主要的改进在于设计了一种相比于原有启发式函数 f ( n ) f(n) f(n)的新的启发式函数 Φ ( h ( n ) , g ( n ) ) \Phi(h(n),g(n)) Φ(h(n),g(n))用于BFS搜索,避免了open表中结点的重复查找(reopenings),并从理论上证明了该启发式函数的 w w w-optimality性能。

在这里插入图片描述

关于为啥要减少open表中的重复查找呢?作者认为主要是在open表中进行结点的重复查找可能会导致一个大的时间复杂度 O ( N 2 ) O(N^2) O(N2),尤其是当状态结点 N N N的个数非常大的时候,这可能会导致寻路成本的增加。

在这里插入图片描述

全文的主体思路是通过给出了一类 Φ ( h ( n ) , g ( n ) ) \Phi(h(n),g(n)) Φ(h(n),g(n))函数能保证 w w w-optimality的条件,并加以证明。说明了直接在采用这个函数的情况下,可以避免reopenings。对于 f ( n ) = h ( n ) + w g ( n ) f(n)=h(n)+wg(n) f(n)=h(n)+wg(n) 来说,算法由于常权重 w w w,在起终时刻始终保证固定的 w w w-optimality;而对于 Φ ( h ( n ) , g ( n ) ) \Phi(h(n),g(n)) Φ(h(n),g(n)),算法同样也可以保证最终代价的 w w w-optimality,但是在open表搜索过程中的代价却可以不为 w w w-optimality。

w w w-optimality的相关条件

在证明 Φ ( h ( n ) , g ( n ) ) \Phi(h(n),g(n)) Φ(h(n),g(n)) w w w-optimality之前,作者首先证明了在finite state space中,对于任意priority function Φ \Phi Φ在不用re-open的情况下,采用BFS搜索都可以保证完备性(complete,即从起点start到goal如果存在路径,BFS总能找到一条合适的路径),证明见Lemma1:

在这里插入图片描述

在说明了完备性的情况下,作者首先给出了 Φ ( h ( n ) , g ( n ) ) \Phi(h(n),g(n)) Φ(h(n),g(n))函数应当具有的4条性质:
{ ∂ Φ ∂ x > 0 , ∂ Φ ∂ y > 0 ∂ Φ ∂ y ≤ ∂ Φ ∂ x Φ ( 0 , w t ) = Φ ( t , 0 ) = t ∂ Φ ∂ x + ∂ Φ ∂ y ≤ 2 \begin{cases} \frac{\partial \Phi}{\partial x} > 0,\frac{\partial \Phi}{\partial y} > 0\\ \frac{\partial \Phi}{\partial y} \leq \frac{\partial \Phi}{\partial x} \\ \Phi(0,wt)=\Phi(t,0)=t\\ \frac{\partial \Phi}{\partial x} + \frac{\partial \Phi}{\partial y} \leq 2 \end{cases} xΦ>0,yΦ>0yΦxΦΦ(0,wt)=Φ(t,0)=txΦ+yΦ2
另外,作者还给出了 Φ \Phi Φ-inequality的定义: Φ ( h ( p ) , g ( p ) ) ≤ Φ ( 0 , w ( h ( p ) + g ∗ ( p ) ) ) = Φ ( h ( p ) + g ∗ ( p ) , 0 ) \Phi (h(p),g(p))\leq \Phi(0,w(h(p) + g^{*}(p)))=\Phi(h(p) + g^{*}(p),0) Φ(h(p),g(p))Φ(0,w(h(p)+g(p)))=Φ(h(p)+g(p),0)(原文中Definition 1 )。在上面4条性质和1个定义的基础上,作者首先证明了:

Theorem 2)对于满足性质1的函数 Φ \Phi Φ,在搜索过程中,如果对于每个第一次扩展的状态结点 p p p都有 Φ \Phi Φ-inequality成立,那么搜索出的路径具有 w w w-optimality性质,且没必要进行re-open(或者说re-expand)。

Proof. 首先由Lemma1,我们知道一定可以扩展出一条以代价 g ( g o a l ) g(goal) g(goal)到goal的路径,那么对于目标状态 g o a l goal goal而言,由 Φ \Phi Φ-inequality不等式:
Φ ( h ( g o a l ) , g ( g o a l ) ) = Φ ( 0 , g ( g o a l ) ) ≤ Φ ( 0 , w ( h ( g o a l ) + g ∗ ( g o a l ) ) ) = Φ ( 0 , w g ∗ ( g o a l ) ) \Phi(h(goal),g(goal))=\Phi(0,g(goal)) \\ \leq \Phi(0,w(h(goal)+g^{*}(goal))) \\ =\Phi(0,wg^{*}(goal)) Φ(h(goal),g(goal))=Φ(0,g(goal))Φ(0,w(h(goal)+g(goal)))=Φ(0,wg(goal))
由于性质1说明了 Φ ( h ( n ) , g ( n ) ) \Phi(h(n),g(n)) Φ(h(n),g(n))对于 g g g的单调递增性,因此 g ( g o a l ) ≤ w g ∗ ( g o a l ) g(goal) \leq w g^{*}(goal) g(goal)wg(goal),说明最后的搜索路径具有 w w w-optimality性质。

对于这个不用re-open的说明,我实在没看懂,希望后面能有机会再看看。

下面给出Deepl机翻的结果:

在这里插入图片描述

因此,我们只需证明 Φ-inequality 对每个以给定优先级函数展开的状态都成立。图 4(b) 是证明这一点的高级方法。假设我们计划扩展一个状态 q,其中 p 是通往 q 的最优路径上扩展的最后一个状态。与之前一样,p 下方的蓝色点代表通往 p 的最优路径,(a) 处的曲线是该点的隔离线。根据 Φ-inequality 我们可以知道,p 在(a)点开始的隔离线之下。因此,如果搜索以最优方式从 p 移动到 q,那么 q(以及从 p 到 q 的最优路径上的所有状态)仍应位于 h 轴上 (b) 点的 h(q) + g∗(q) 分割线之下,因为最优路径不会积累任何额外的次优状态。如果这一点成立,那么总有至少一条路径(最优路径的剩余部分)可以在最优约束下达到目标,而无需重新扩展先前扩展的状态。虽然在实践中搜索可能会扩展出一条不那么理想的路径,但所探索的路径仍能保证在 Φ 允许的范围内。

因此,对于Theorem 2而言,如果我们能证明在满足某些性质的条件下,对于每个第一次扩展的状态结点 p p p都有 Φ \Phi Φ-inequality成立,哪么根据Theorem 2的结论, w w w-optimality和不需要re-open的性质就能得到满足。下面的Theorem 8给出了 Φ \Phi Φ所需要满足的条件:

Theorem 8)假设BFS所采用的优先级函数 Φ \Phi Φ满足性质1-4,哪么对于所有的扩展结点都有 Φ \Phi Φ-inequality成立。

Proof. 首先需要不加证明(证明见原论文)的给出以下引理作为证明条件,

Lemma 3. 对于 p p p的后继(descendant)结点 q q q而言,其在 h h h- g g g坐标系下分别为 ( h ( p ) , g ( p ) ) (h(p),g(p)) (h(p),g(p)) ( h ( q ) , g ( p ) + d ( p , q ) ) (h(q),g(p)+d(p,q)) (h(q),g(p)+d(p,q))。对于任意从 p p p q q q上位于optimal path上的中间结点 p 1 p_1 p1,其必位于 p p p q q q所处的矩形对角点上,如Figure 4(b)所示。

根据原文中Definition 2中定义的最右角点 ( x r , y r ) (x_r,y_r) (xr,yr)
{ x r = h ( p ) + d ( p , q ) + h ( q ) − h ( p ) 2 y r = g ( p ) + d ( p , q ) + h ( q ) − h ( p ) 2 \begin{cases} x_r = h(p) + \frac{d(p,q) + h (q) - h(p)}{2}\\ y_r = g(p) + \frac{d(p,q) + h (q) - h(p)}{2}\\ \end{cases} {xr=h(p)+2d(p,q)+h(q)h(p)yr=g(p)+2d(p,q)+h(q)h(p)
原文Lemma 6说明了对于从 p p p q q q的所有在optimal path上的状态 s s s,角点是使 Φ \Phi Φ最大的点,即: Φ ( h ( s ) , g ( p ) + d ( p , s ) ) ≤ Φ ( x r , y r ) \Phi(h(s),g(p)+d(p,s)) \leq \Phi(x_r,y_r) Φ(h(s),g(p)+d(p,s))Φ(xr,yr)

另外,有Corollary 7: Φ ( x + t , y + t ) ≤ Φ ( x , y ) + 2 t \Phi(x+t,y+t)\leq \Phi(x,y) + 2t Φ(x+t,y+t)Φ(x,y)+2t。证明利用了性质4和 Φ \Phi Φ的Lipschitz连续性条件。

下面进入正式的论证,采用数学归纳法证明 Φ \Phi Φ-inequality的成立:

首先Base case: 对于初始状态start,必然有 Φ ( h ( s t a r t ) , g ( s t a r t ) ) = Φ ( h ( s t a r t ) + g ∗ ( s t a r t ) , 0 ) \Phi (h(start),g(start))=\Phi(h(start) + g^{*}(start),0) Φ(h(start),g(start))=Φ(h(start)+g(start),0)成立,因为 g ( s t a r t ) = g ∗ ( s t a r t ) = 0 g(start)=g^{*}(start)=0 g(start)=g(start)=0

再对于Inductive step:假设对于所有已扩展的路径(expanded paths)上的结点都有 Φ \Phi Φ-inequality成立,并且状态 q q q是从open表中选出来的要扩展的下一个结点,我们需要证明结点 q q q满足 Φ \Phi Φ-inequality,即: Φ ( h ( q ) , g ( q ) ) ≤ Φ ( h ( q ) + g ∗ ( q ) , 0 ) \Phi(h(q),g(q))\leq \Phi(h(q)+g^{*}(q),0) Φ(h(q),g(q))Φ(h(q)+g(q),0)
作为在closed表中optimal path上的, q q q的上一个结点 p p p,由递推假设满足:
Φ ( h ( p ) , g ( p ) ) ≤ Φ ( h ( p ) + g ∗ ( p ) , 0 ) = h ( p ) + g ∗ ( p ) \Phi(h(p),g(p))\leq \Phi(h(p)+g^{*}(p),0) = h(p)+g^{*}(p) Φ(h(p),g(p))Φ(h(p)+g(p),0)=h(p)+g(p) 这里必然存在一个在open表中,由 p p p所扩展出的successor结点 p x p_x px,其位于从 p p p q q q的optimal path上,满足 Φ ( h ( q ) , g ( q ) ) ≤ Φ ( h ( p x ) , g ( p x ) ) \Phi(h(q),g(q))\leq \Phi(h(p_x),g(p_x)) Φ(h(q),g(q))Φ(h(px),g(px))。这是因为BFS在结点扩展时会先扩展 Φ \Phi Φ最小的 q q q,而不是 p x p_x px。令 t = ( d ( p , q ) + h ( q ) − h ( p ) ) / 2 t=(d(p,q)+h(q)-h(p))/2 t=(d(p,q)+h(q)h(p))/2,根据Lemma6有:
Φ ( h ( q ) , g ( q ) ) ≤ Φ ( h ( p x ) , g ( p ) + d ( p , p x ) ) ≤ Φ ( h ( p ) + t , g ( p ) + t ) ≤ Φ ( h ( p ) , g ( p ) ) + 2 t = Φ ( h ( p ) , g ( p ) ) + d ( p , q ) + h ( q ) − h ( p ) ≤ g ∗ ( p ) + h ( q ) + d ( p , q ) ≤ g ∗ ( q ) + h ( q ) = Φ ( g ∗ ( q ) + h ( q ) , 0 ) \Phi(h(q),g(q))\leq \Phi(h(p_x),g(p)+d(p,p_x)) \\ \leq \Phi(h(p) + t,g(p)+t) \\ \leq \Phi(h(p),g(p))+2t \\ =\Phi(h(p),g(p)) + d(p,q)+h(q)-h(p) \\ \leq g^*(p)+h(q) + d(p,q) \\ \leq g^{*}(q) + h(q) =\Phi(g^{*}(q) + h(q),0) Φ(h(q),g(q))Φ(h(px),g(p)+d(p,px))Φ(h(p)+t,g(p)+t)Φ(h(p),g(p))+2t=Φ(h(p),g(p))+d(p,q)+h(q)h(p)g(p)+h(q)+d(p,q)g(q)+h(q)=Φ(g(q)+h(q),0)这对 q q q证明了 Φ \Phi Φ-inequality的成立,因此假设成立。

上面的Theorem2和Theorem8综合起来说明了,对于满足4条性质的 Φ ( h ( n ) , g ( n ) ) \Phi(h(n),g(n)) Φ(h(n),g(n)),其能保证 w w w-optimality和避免reopening。

XDP函数

XDP函数是一类特殊的 Φ \Phi Φ函数 Φ X D P ( x , y ) = U \Phi_{XDP}(x,y)=U ΦXDP(x,y)=U,其具有 y = a x 2 + b x + c y=ax^2+bx+c y=ax2+bx+c的二次函数形式,并且满足 Φ \Phi Φ的4条性质,同时经过 ( 0 , w U ) (0,wU) (0,wU) ( U , 0 ) (U,0) (U,0)点。在 ( U , 0 ) (U,0) (U,0)处的斜率为 − 1 -1 1。得到:
{ c = w U a U 2 + b U + c = 0 2 a U + b = − 1 \begin{cases} c = wU\\ aU^2+bU+c=0 \\ 2aU + b =-1 \end{cases} c=wUaU2+bU+c=02aU+b=1解算出的:
Φ X D P ( x , y ) = U = y + ( 2 w − 1 ) x + ( y − x ) 2 + 4 w y x 2 w \Phi_{XDP}(x,y)=U=\frac{y+(2w-1)x+\sqrt{(y-x)^2+4wyx}}{2w} ΦXDP(x,y)=U=2wy+(2w1)x+(yx)2+4wyx

参考文献

[1] Chen, J., Conditions for Avoiding Node Re-expansions in Bounded Suboptimal Search, in Proceedings of the . AAAI Conference on Artificial Intelligence. 2019, Proceedings of the . AAAI Conference on Artificial Intelligence.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/26866.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TK防关联引流系统:全球多账号运营,一“键”掌控!

在TikTok的生态系统中,高效管理多个账号对于品牌推广的成功起着决定性的作用。TK防关联引流系统,作为一款专门为TikTok用户打造的强大工具,为全球范围内的多账号运营提供了坚实的支持。 TK防关联引流系统的核心优势体现在以下几个方面&#x…

anaconda安装pytorch-快速上手99%可以(可以虚拟环境OR不进行虚拟环境)

一、预备工作 先检查自己是否有anaconda 在cmd里面输入conda --version查看 二、在anaconda中创建虚拟环境 1.1 打开Anaconda Prompt 1.2 进行自定义安装python 将其中的自定义地址和版本换成自己想安装的地址和版本 我这里安装的地址是E:\Anaconda\DL,python版本是3.8.3…

uniapp地图自定义文字和图标

这是我的结构&#xff1a; <map classmap id"map" :latitude"latitude" :longitude"longitude" markertap"handleMarkerClick" :show-location"true" :markers"covers" /> 记住别忘了在data中定义变量…

Sqoop学习详细介绍!!

一、Sqoop介绍 Sqoop是一款开源的工具&#xff0c;主要用于在Hadoop(HDFS/Hive/HBase)与传统的数据库(mysql、postgresql...)间进行数据的传递&#xff0c;可以将一个关系型数据库&#xff08;例如 &#xff1a; MySQL ,Oracle ,Postgres等&#xff09;中的数据导进到Hadoop的H…

虚拟声卡实现音频回环

虚拟声卡实现音频回环 一、电脑扬声器播放声音路由到麦克风1. Voicemeeters安装设置2. 音频设备选择 二、回声模拟 一、电脑扬声器播放声音路由到麦克风 1. Voicemeeters安装设置 2. 音频设备选择 以腾讯会议为例 二、回声模拟 选中物理输入设备“Stereo Input 1”和物理输出设…

GlusterFS企业分布式存储

GlusterFS 分布式文件系统代表-nfs常见分布式存储Gluster存储基础梳理GlusterFS 适合大文件还是小文件存储&#xff1f; 应用场景术语Trusted Storage PoolBrickVolumes Glusterfs整体工作流程-数据访问流程GlusterFS客户端访问流程 GlusterFS常用命令部署 GlusterFS 群集准备环…

修改版的VectorDBBench更好用

原版本VectorDBBench的几个问题 在这里就不介绍VectorDBBench是干什么的了&#xff0c;上官网即可。 1.并发数设置的太少 2.测试时长30秒太长 3.连接milvus无用户和密码框&#xff0c;这个是最大的问题 4.修改了一下其它参数 由于很多网友发私信问一些milvus的相关技术问…

【机器学习】支持向量机(个人笔记)

文章目录 SVM 分类器的误差函数分类误差函数距离误差函数C 参数 非线性边界的 SVM 分类器&#xff08;内核方法&#xff09;多项式内核径向基函数&#xff08;RBF&#xff09;内核 源代码文件请点击此处&#xff01; SVM 分类器的误差函数 SVM 使用两条平行线&#xff0c;使用…

基于flask的网站如何使用https加密通信

文章目录 内容简介网站目录示例生成SSL证书单独使用Flask使用WSGI服务器Nginx反向代理参考资料 内容简介 HTTPS 是一种至关重要的网络安全协议&#xff0c;它通过在 HTTP 协议之上添加 SSL/TLS 层来确保数据传输的安全性和完整性。这有助于防止数据在客户端和服务器之间传输时…

高考志愿专业选择:计算机人才需求激增,人工智能领域成热门

随着2024年高考的落幕&#xff0c;数百万高三学生站在了人生新的十字路口&#xff0c;面临着一个重要的抉择&#xff1a;选择大学专业。这一选择不仅关乎未来四年的学习生涯&#xff0c;更可能决定一个人一生的职业方向和人生轨迹。在众多专业中&#xff0c;计算机相关专业因其…

如何用Xinstall CPS结算系统打破传统营销桎梏,实现用户增长?

在互联网流量红利逐渐衰退的今天&#xff0c;App推广和运营面临着前所未有的挑战。如何快速搭建起满足用户需求的运营体系&#xff0c;成为了众多企业急待解决的问题。而在这个关键时刻&#xff0c;Xinstall CPS结算系统应运而生&#xff0c;以其独特的优势帮助企业解决了一系列…

深度学习500问——Chapter11:迁移学习(2)

文章目录 11.2 迁移学习的基本思路有哪些 11.2.1 基于样本迁移 11.2.2 基于特征迁移 11.2.3 基于模型迁移 11.2.4 基于关系迁移 11.2 迁移学习的基本思路有哪些 迁移学习的基本方法可以分为四种。这四种基本方法分别是&#xff1a;基于样本的迁移&#xff0c;基于模型的迁移&a…

Sa-Token鉴权与网关服务实现

纠错&#xff1a; 在上一部分里我完成了微服务框架的初步实现&#xff0c;但是先说一下之前有一个错误&#xff0c;就是依赖部分 上次的学习中我在总的父模块下引入了spring-boot-dependencies&#xff08;版本控制&#xff09;我以为在子模块下就不需要再引用了&#xff0c;…

Opencv图像梯度计算

Opencv图像梯度计算 Sobel算子 可以理解为是做边缘检测的一种方法。 首先说明自己对图像梯度的简单理解&#xff1a;简单理解就是图像的颜色发生变化的边界区域在X方向和Y方向上的梯度值 Gx Gy 而Gx和Gy处的梯度的计算—使用下面的公式来进行计算。 G x [ − 1 0 1 − 2 0 …

【计算机毕业设计】258基于微信小程序的课堂点名系统

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

总结【GetHub的WebAPI,ASSET_ID】,【Linux的jq命令】(草稿版+实际操作)

目录 1.介绍一下github中的 asset_id 2. GitHub 的 asset_id相关操作 2.1.获取特定 repository 的 release 列表&#xff1a; 2.2.获取特定 release 中的 asset 列表&#xff0c;并找到 asset_id&#xff1a; 2.3.使用ASSET_ID获取资材 3.返回的 assets 的信息 是什么样样…

【STM32CubeIDE -使用-调试过程中-遇到的“弹窗”报错问题-部分总结-处理方式】

【STM32CubeIDE -使用-调试过程中-遇到的“弹窗”报错问题-部分总结-处理方式】 1、前言2、软件环境问题1&#xff1a;Confirm Perspective Switch&#xff08;确认视角切换&#xff09;&#xff08;1&#xff09;问题描述:This kind of launch is configured to open the Debu…

14、modbus poll 使用教程小记1

开发平台&#xff1a;Win10 64位 Modbus Slave版本&#xff1a;64位 7.0.0 Modbus Poll版本&#xff1a;64位 7.2.2 因为项目中经常会用到modbus协议&#xff0c;所以就避免不了的要使用modbus测试工具&#xff0c;Modbus Slave/Poll无疑是众多测试工具中应用最广泛的。 文章目…

C语言的数据结构:串、数组、广义表

一、串 1、串的定义 串是一个线性表&#xff0c;但其节点中的内容只能为字符&#xff0c;所以也称为字符串。 字符串中可以有多个字符&#xff0c;也可以没有字符。没有字符的叫作&#xff1a;空串。 空串&#xff1a;""。 有值的串&#xff1a;"1123"。 只…

yolov3 详解

文章目录 1、yolov3原理2、损失函数3、yolov3改进4、使用opencv实现yolov35、卷积神经网络工作原理 1、yolov3原理 参考视频 darknet53&#xff1a;52个卷积层和1个全联接层 输入图像为416416 1313 -》 下采样32倍 2626 -》 下采样16倍 5252 -》 下采样8倍 由标注框中心点落在…