双向搜索的时间复杂性

时间:2016-09-23 01:37:28

标签: artificial-intelligence time-complexity bidirectional

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

1 个答案:

答案 0 :(得分:0)

如果要解析给定集合中的所有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.