状态图中的启发式有序搜索
1. 问题引入与现有算法局限
在解决状态图中的路径搜索问题时,如寻找从起点 (s) 到终点 (t) 的最短路径,有许多经典算法。以 (n\times n) 拼图问题为例,对于 (3\times 3) 拼图,其目标状态通常规定为空单元格位于左上角,数字 1 到 8 按从左到右、从上到下的顺序排列。研究发现,该拼图状态图的直径为 31,即任意两个节点间最短链的最大边数为 31。
IDA 算法是一种经典的启发式搜索算法,它具有空间复杂度低的优点,但也存在明显缺陷。它不充分利用计算机的内存,且会重复进行大量计算。不过,IDA 启发了一系列新算法的诞生,如 MREC、DFA 、RFBS、IE、BIDA 、DBIDA 和 BDBIDA 等。在解决 (4\times 4) 拼图问题时,以曼哈顿距离 (P) 为启发式函数,这些算法尤其是 BIDA* 取得了显著的性能提升。
然而,当面对 (5\times 5) 拼图问题时,IDA 及其衍生算法(均以 (h = P) 为引导)的速度变得极慢。这表明,要解决更复杂的 ((n^2 - 1)) 拼图问题,关键不在于替换 IDA 算法,而在于改进启发式函数 (P)。
2. 新启发式函数的发明
2.1 实验情况
Korf 和 Taylor 在 1996 年进行了实验,他们使用 IDA* 结合一种新的启发式函数,成功解决了 10 个随机抽取的 (5\times 5) 拼图问题中的 9 个(目标状态为标准状态)。实验使用的 Sun Ultra Sparc 工作站比 Reinefeld
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



