【问题标题】:A* Search Advantages of Dynamic WeightingA* 动态加权的搜索优势
【发布时间】:2017-05-31 02:35:11
【问题描述】:

我在阅读 A* 搜索算法的变体时遇到了动态加权。据我了解,权重应用于搜索方程,随着搜索接近目标节点而减小。我是专门看这篇文章的:http://theory.stanford.edu/~amitp/GameProgramming/Variations.html

谁能告诉我这样做的好处是什么?为什么你不在乎一开始就扩展了哪些节点?是否有助于不一定具有良好启发式的搜索?

谢谢

【问题讨论】:

  • 在 cstheory.stackexchange.com 或 cs.stackexchange.com 上提问可能会更好

标签: search a-star


【解决方案1】:

对于 TLDNR 人群:

动态加权会牺牲解决方案的最优性来加快搜索速度。权重越大,搜索越贪心。

致我的学者们:

动机

来自 Wikipedia A-star 文章: A-star 的可接纳性标准保证了最优解路径,但这也意味着 A* 必须检查 所有 同等有价值的路径以找到最优路径。我们可以通过放宽可接受性标准来加速搜索,但会牺牲最优性以获得近似解。通常我们希望限制这种松弛,以便我们可以保证解路径不差于 (1 + ε) 乘以最优解路径。这种新的保证称为 ε-admissible。

静态加权

在讨论动态加权之前,让我们将 A-star 与最简单的 ε-可容许松弛进行比较:静态加权 A-star。

在静态加权 A 星中,f(n) = g(n) + w·h(n),对于某些 ε>0,w=(1+ε)。为了说明对最优性和搜索速度的影响,请比较以下每个插图中扩展的节点数。空心圆圈代表开放集中的节点;实心圆圈在闭集中。

A-star(左)与 ε=4 的加权 A-star(右)

如您所见,加权 A-star 扩展的节点少得多,完成速度提高了大约 3 倍。但是,由于我们使用 ε=4,加权 A-star 理论上可以返回一个解,即 (1+ε)=(1+4)=5 倍于最优路径。

动态加权

动态加权是一种使启发式权重成为搜索状态函数的技术,即 f(n) = g(n) + w(n)·h(n),其中 w(n) = (1 + ε - (ε*d(n))/N),d(n)是当前搜索的深度,N是搜索深度的上限。

通过这种方式,动态权重 A-Star 最初的行为非常类似于 Greedy Best First 搜索,但随着搜索深度(即图中的跳数)的增加,该算法采用更保守的方法,表现更像是传统的 A-star 算法。

Amit Patel's page

使用动态加权时,您假设在开始时 搜索,更重要的是快速到达(任何地方);在......的最后 搜索,更重要的是达到目标。

他是对的,但我想说的是,对于动态加权,您假设在搜索开始时,遵循您的启发式更为重要;在搜索结束时,考虑路径的长度也变得同样重要。

其他材料和链接:

  1. 助理。艾拉·波尔教授 -- The Avoidance of (Relative) Catastrophe, Heuristic Competence, Genuine DYnamic Weighting and Computational Issues in Heuristic Problem Solving
  2. Dynamic Weighting Amit Patel 的 A* 变体
  3. 维基百科 -- Bounded Relaxation for the A* Search Algorithm

【讨论】:

  • 有没有办法摆脱 N(搜索深度的上限)?在一般情况下,当我无法说出解决方案的预期长度时。
  • @Pavel Tyshevskyi sorta... 尝试在 d(n) 上使用“广义逻辑函数”,而不仅仅是 d(n)/N。通过一些缩放/平移,您可以避免具有硬限制 N 的问题,但是 1. 您可能会失去 epsilon 最优性属性,以及 2. 您仍然会有一个由参数/形状隐式定义的“软”限制逻辑函数的
  • 我明白了,我正在研究这个,但你是对的,我仍然通过逻辑函数参数隐式定义渐近极限。有没有办法摆脱这个,也是吗?很可能 A* 没有用于此目的,但我还没有设法找到要使用的东西。
猜你喜欢
  • 2018-09-21
  • 2014-01-23
  • 2011-02-06
  • 2023-03-29
  • 1970-01-01
  • 1970-01-01
  • 2020-12-27
  • 2021-07-28
  • 2015-03-19
相关资源
最近更新 更多