[算法] A*

posted on 2024-04-01 05:52:24 | under | source

以寻路算法为例:

显然可以上 \(\rm dj\),但是复杂度不够好。

定义 \(f(n)=g(n)+h(n)\) 为代价函数,\(g\) 是已知代价,\(h\) 是预估代价。注意要保证 \(h\) 不能大于实际值,否则无法保证正确性。

这就是 \(\rm A*\),通过使用启发函数,加快速度。

正确性:

可以总结出:

  1. \(\rm A*\) 优于 \(\rm dj\)

  2. \(h\) 越小效率越低。当 \(h=0\) 时退化为 \(\rm dj\)

  3. 必须保证 \(f\) 非递减,\(h\) 不超过实际值,否则不正确。

posted @ 2026-01-13 11:20  Zwi  阅读(0)  评论(0)    收藏  举报