有什么区别吗?有人告诉我贪婪选择具有最高值的子 启发式功能,即本地最佳继任者。我的困惑是,贪婪的最佳第一算法不会跟踪其访问的节点,却在不同的路径上遇到相同的节点会发生什么?我会画出问题以清楚地描述它;
贪婪的最佳优先算法通过B,C(x)或C(y)到达C时,它将扩展到哪个节点C,输出路径将是什么? ABCG或ACG?
注意:该树是网格的最短路径评估的图形表示,子节点是网格中父节点的有效相邻节点。< / p>
答案 0 :(得分:0)
通常,如果算法只采取局部最佳步骤并且从不考虑决策,则将其称为“贪婪”算法。 “最好的第一”将是某种详尽的搜索,您可以按某种试探法(“听起来很合理,不能保证”)来排序替代步骤,然后依次尝试。仅当您结合一些截止标准时才有意义,即,您有某种方法可以淘汰可以证明不会给出期望结果的替代方案。
检查例如$ A ^ * $(A星)搜索。
答案 1 :(得分:0)
通过这种方式表示A-B-C-G首先是贪婪的最佳路径 提供?由于它将只考虑节点B的子节点 下一个选择?
是:严格的“贪婪”算法在每个关口都将 视为最佳的短期选择。第一步,B
比C
便宜,因此它沿着那条路走了。从这里开始,它将B
视为起始节点。从那里最便宜的举动是到C
,然后到G。
相比之下,诸如A*
或Dijkstra的“最佳优先”算法将使总路径最便宜。它以状态(A,0)开头-到达A
不需要花费任何费用。然后,它生成移动(AB,2),(AC,3)和(AD,手);它采取最便宜的举动(AB,2),但将其他举动保留在列表中。现在,它以{em>总成本从B
生成移动:(ABE,7)和(ABC,5)。此时,它下降了(ABC,5),因为有一条通往C
的便宜路径。
现在列表中最便宜的路径是(AC,3),该算法将从那里生成移动:(ACG,3 + unknown)。
这对您来说足够清除了吗?