双向搜索的时间复杂度

Time Complexity of Bidirectional Search

给出连接两者的测试时双向搜索的时间复杂度 搜索是通过将前向新生成的状态与所有状态进行比较来完成的 向后方向生成的状态,一次一个。

如果要解析给定集合中的所有 n 个节点或状态,则在 n 个状态的每次迭代中,这将是 n*n 或 n^2。

但是,如果您只解析到当前节点的每个节点,那么它是所有节点到 n 的总和。

直到 n 的所有节点的总和将是线性的,特别是 1+2+3+...(n-1)+n = n(n+1)/2

你的申请我认为是后者,倒过来反而更好理解。考虑本次迭代的当前前向节点为 n,(n-1) 是向后的第一个节点,(n-2) 是向后的第二个节点,依此类推,直到 1,即向后的最后一个节点:

N + (n-1) + (n-2) + ... + 3 + 2 + 1 = n(n+1)/2

所以:

[a, b, c, d, e, f]
1,a:  a,b,c,d,e,f
2,b: a,b,c,d,e,f
... this would be n^2

并且:

1,a:  []
2,b: [a]
3,c: [a,b]
4,d: [a,b,c]
..... this would be linear as described above.