Algorithm 深度优先搜索的空间复杂度
可能这个问题以前被问过,但是,我不确定如何计算DFS的空间复杂度。例如,在这种情况下,分支因子(b)为3,深度(d)为5,每个节点需要10字节的内存来表示。如何计算空间复杂度?这取决于执行深度优先搜索(DFS)的结构类型:Algorithm 深度优先搜索的空间复杂度,algorithm,artificial-intelligence,Algorithm,Artificial Intelligence,可能这个问题以前被问过,但是,我不确定如何计算DFS的空间复杂度。例如,在这种情况下,分支因子(b)为3,深度(d)为5,每个节点需要10字节的内存来表示。如何计算空间复杂度?这取决于执行深度优先搜索(DFS)的结构类型: 在树上:您无需检查之前是否访问过某个状态,只需存储当前跟踪(在堆栈中),该跟踪的最大深度为$d$。对于跟踪上的每个状态,您需要存储已经遍历的传出转换,这将成为每个状态的最大分支因子$b$。因此,您需要$O(d*b)$空间 在图形上:您还需要通过存储所有已访问的状态(例如,在
- 在树上:您无需检查之前是否访问过某个状态,只需存储当前跟踪(在堆栈中),该跟踪的最大深度为$d$。对于跟踪上的每个状态,您需要存储已经遍历的传出转换,这将成为每个状态的最大分支因子$b$。因此,您需要$O(d*b)$空间
- 在图形上:您还需要通过存储所有已访问的状态(例如,在哈希表中)来检查您以前是否访问过某个状态。因此需要$O(d*b+| V |)$空间,V是顶点集。在互联网上,你通常会看到空间复杂度是$O(| V |)$;通常状态数是主要因素,但是如果您的状态空间有一个大的$b$,请不要忽略这部分空间要求李>