迭代加深深度首先使用有限的内存进行搜索

时间:2009-06-28 14:31:20

标签: depth-first-search iterative-deepening

这是Find first null in binary tree with limited memory的后续行动。

维基百科说,迭代加深深度优先搜索将找到最短路径。我想在内存中限制k个节点并以最少的次数访问树。

例如,如果我的二叉树是:

           0
    1             2
 3    4        5      6
7 8  9 10    11 12  13 14

我的搜索顺序仅限于5个内存节点:

mem[0] = read node 0
mem[1] = read node 1
mem[2] = read node 2
mem[3] = read node 3
mem[4] = read node 4 //Now my memory is full.  I continue...
mem[3] = read node 5 //overwrite where I stored node 3
mem[4] = read node 6 //overwrite where I stored node 4

现在,如果我的下一次读取是7,我需要重新读取3.但如果我将下一次读取设为14,那么我还不需要重新读取3。如果解决方案是14,这将使我的算法更快一点!

我正在寻找一般的解决方案;适用于任何大小的内存和每个节点的分支数量的东西。

1 个答案:

答案 0 :(得分:0)

如果您的节点链接到其父节点,并且节点的子节点将始终以相同的顺序枚举,您可以跟踪您的步骤而无需保存它们。