作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
...f(n) = g(n) + h(n)
where n is the last node on the path, g(n) is the cost of the path from the start node to n, and h(n) is a heuristic that estimates the cost of the cheapest path from n to the goal.
为什么我们要考虑从起始节点到我们当前位置的路径成本?我一直在尝试实现这个算法来解决一个问题,并且一直在使用优先级队列,当我执行 g(n) + h(n) 时,它比仅使用严格的 h(n) 花费的时间更长。仅使用 h(n) 是否有意义,因为假设如果启发式算法是准确的,您只关心与目标的距离有多近?
编辑:实际上我刚刚发现我的 g(n) 函数计算错误,但逻辑上我仍然不明白为什么 g(n) + h(n) 会比 h(n) 更好。
最佳答案
了解为什么遗漏 g(n) 会导致算法不正确的一个简单方法是,实际成本永远不会进入算法。它完全依赖于启发式,只能保证是下限。
关于algorithm - 在A*搜索算法中,为什么要加上g(n)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41972765/
我是一名优秀的程序员,十分优秀!