[算法] A*
posted on 2024-04-01 05:52:24 | under | source
以寻路算法为例:
显然可以上 \(\rm dj\),但是复杂度不够好。
定义 \(f(n)=g(n)+h(n)\) 为代价函数,\(g\) 是已知代价,\(h\) 是预估代价。注意要保证 \(h\) 不能大于实际值,否则无法保证正确性。
这就是 \(\rm A*\),通过使用启发函数,加快速度。
正确性:

可以总结出:
-
\(\rm A*\) 优于 \(\rm dj\)。
-
\(h\) 越小效率越低。当 \(h=0\) 时退化为 \(\rm dj\)。
-
必须保证 \(f\) 非递减,\(h\) 不超过实际值,否则不正确。

浙公网安备 33010602011771号