[AI] LRTA*(K) 搜索算法

LRTA*(K)是LRTA*算法的改进版,通过限制每次最多更新K个位置的h值实现有界传播,解决了LRTA*的计算量不固定和远离当前状态的问题。该算法在有限计算时间内找到更优解,且收敛速度更快,解的稳定性更高。实际应用中,以网格问题为例,展示了LRTA*(K)的搜索步骤,逐步更新节点的h值直至找到目标路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、理论

LRTA*(K) 是LRTA* 算法的进阶版,关于LRTA*的回顾请点此处, LRTA*(K) 论文请点此处

该文作者把LRTA算法归为 无界传播(unbounded propagation, 中文用谷歌翻译的。。。囧),LRTA(K)归为有界传播(bounded propagation)

所谓无界传播:先让agent移动到新的位置,然后更新上一个位置的 h(n), 这样并不会立即更新该新位置的 h(n),而是指望未来再次移动后才会更新该位置的值。被更改 h 后的位置的影响会进一步传播给其后继,依此类推。 该过程不断迭代,直到没有执行进一步的更改。

有界传播:限制一步最多只能更新有限K个位置的h ,这样用于传播的计算量就是有界的。在此说明:这k个位置只能是从初始位置到当前位置的路径之间的位置

LRTA* 算法的缺点如下:

  • 在有限的时间内移动。无界传播中涉及的状态数在连续步骤中可能不同,因此所需的计算量可能会在步骤之间发生变化(说实话,这里我没看懂)。 这违背了实时搜索必须在限定时间内执行单个移动的要求。

  • 作用于附近。 无界传播可以远离当前状态。 这违反了实时搜索的基本假设,即前瞻和更新操作只能在当前状态附近完成。(我没明白,无界传播不也是在当前状态附近来回震荡直到跳出局部最小值吗?)

LRTA*(K)优势如下:

  • 初解:如果第一个解不涉及循环,LRTA*(K)将表现为LRTA*,然而,这种情况很少发生。实验上,LRTA*(K)在较短的计算时间内发现了比LRTA更短的解。

  • 收敛:LRTA*(K)记录的h值更接近精确值,这导致LRTA*(K)在测试基准中比LRTA*(步骤数、试验次数和总CPU时间)更快地收敛。其他算法(FALCONS)也会出现这种情况。

  • 解的稳定性:获得更高质量的解使解决方案和增加的稳定性之间的差异更小。

二、实际应用步骤

在这里插入图片描述

题目介绍:

  • 如图A左侧,有这么一个网格,每个格子都用字母标了号便于说明

  • 右侧是每个格子初始的h值,“-” 表示墙,数字表示可走的路径。

  • 格子m是起点,p是终点,每个格子之间的代价 g = 1。

在这里插入图片描述

使用 LRTA*(K) 算法的步骤如下:

  • 首先先设定 k=5, 那么m的h值就直接更新到 h(m) = 5。由于路径上没有其他位置,也就没有传播。在这次迭代中,1个位置(m)被考虑更新

  • Agent移动到位置 i, h(i) 直接更新 h(i) = h(m) + g(m, i) = 5 + 1 = 6。 此时考虑当前位置 i 的前一个位置 m 的 h 值,考虑 m 的 h 值更新 h(m)=6+1=7,考虑 m 的后继 h(i)的值,h(i)不变。在这次迭代中,3个位置(i, m, i) 被考虑到

  • Agent移动到位置 e,h(e) 更新到h(e) = h(i) + g(i, e) = 6+1 = 7。考虑当前位置 e 的前一个位置 i 的h值,h(i) = 7+1=8, i 有两个后继 m 和 e(均在路径上),h(e) 不更新,h(m) = 8+1=9。然后考虑m的后继 i,h(i)不变。在这次迭代中,5个位置(e, i, e, m, i) 被考虑到。

  • Agent移动到a,最终移动到目标 g

写在最后,其实我也理解的不是很深,具体算法如下:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是土豆大叔啊!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值