【问题标题】:Greedy search algorithm贪心搜索算法
【发布时间】:2019-04-27 02:17:25
【问题描述】:

目前,我是人工智能的新手。我对贪心搜索算法有疑问。我在教程中看到一个问题,但不明白如何回答。请帮我。非常感谢任何帮助。

考虑给定的图 1。每个节点中的值代表 从该节点到目标节点 (G) 的启发式成本以及其中的值 弧线表示两个节点之间的路径成本。

  1. 如果 B 是起始节点,G 是目标节点,
  • 使用贪心搜索算法查找遍历。
  • 使用 A* 搜索算法查找遍历
  1. 使用第 (1) 部分的结果表明贪婪搜索不是最优的。

【问题讨论】:

  • 贪心算法不会考虑启发式值:在每个节点上,算法将尽可能降低成本。 B -> C -> D -> H -> G = 5+6+4+3 = 18
  • 贪心算法遵循路径B -> C -> D -> H -> G,代价为18,启发式算法遵循路径B -> E -> F -> H -> G,代价为25。这个具体例子表明启发式搜索代价更高。这个例子没有很好地表明贪婪搜索的解决方案不是最优的。
  • 感谢您的及时回复。但是关于那个最佳解决方案。如何识别?如何计算?非常感谢您的帮助。

标签: artificial-intelligence


【解决方案1】:

我假设您所指的贪心搜索算法具有如下贪心选择策略:选择与当前节点相邻且与当前节点的成本/距离最小的下一个节点。 请注意,贪心解决方案根本不使用启发式成本。

请考虑以下精心制作的图,它证明贪婪解决方案不是最优的。

红色突出显示的路径表示贪心算法采用的路径,绿色突出显示的路径表示启发式A*算法采用的路径。

解释:

贪心算法

  • 从节点 B 开始,贪心算法查看路径成本(A 为 6,C 为 6,E 为 5)
  • 我们贪婪地移动到节点 E,因为它的路径值最小。
  • 从 E 到 F,我们只有一个选择
  • 从 F 我们再次只有一个选项可以移动到 H 并且从 H 我们移动到 G(目标状态/节点)

贪心算法的路径成本(以红色突出显示):B -> E -> F -> H -> G = 5+6+6+3 = 20

A* 算法(如果您还没有理解这个概念,请先查看 wiki 的 A* 算法页面,了解 g(n)h(n) 是什么):

  • 从节点 B 开始,我们有三个选项 A、C 和 E。对于每个节点,我们计算 f(n) = g(n) + h(n)。这里 g(n) 是弧上的直接成本,h(n) 是节点上的启发式值
    • 对于节点 A,f(n) = 6 + 12 = 18
    • 对于节点 B,f(n) = 6 + 10 = 16
    • 对于节点 C,f(n) = 5 + 14 = 19
  • 我们选择继续处理具有最少f(n) 的节点。所以我们移动到节点 B。
  • 我们以类似的方式继续并找到以绿色突出显示的路径。
  • A*算法的路径是B -> C -> D -> H -> G,它的代价是6+6+4+3 = 19

通过上面的例子我们可以看出启发式路径的代价小于贪心算法。因此贪心算法并不总是最优的。

【讨论】:

  • @MohamedNasik 我已经在答案中解释了我是如何为贪婪算法和 A* 算法选择路径的。如果你问我如何为 Greedy 选择策略,这只是策略之一。您可以使用Dijkstra algorithm,这也是贪婪的(并且总是为单源非负权重边缘提供最佳解决方案)。但在这里,我认为我描述的策略就足够了。
  • 亲爱的,我想问你的另一个问题,在我上面提到的示例(顶级原创)中,很难找到最佳解决方案。它需要更高的价值。如何证明哪个不是最佳解决方案
  • 对于一般图表,您可以进行详尽的搜索并找到最佳解决方案,但大多数时候(就像您的情况一样)您可以使用 Dijkstra Algorithm 找到最佳解决方案。请注意,贪婪和 A* 都不能保证它会给你一个最佳解决方案。 HTH :)
猜你喜欢
  • 2023-04-02
  • 1970-01-01
  • 1970-01-01
  • 2022-12-07
  • 1970-01-01
  • 1970-01-01
  • 2019-04-09
  • 1970-01-01
  • 2013-01-20
相关资源
最近更新 更多