Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 深度优先搜索的空间复杂度_Algorithm_Artificial Intelligence - Fatal编程技术网

Algorithm 深度优先搜索的空间复杂度

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

可能这个问题以前被问过,但是,我不确定如何计算DFS的空间复杂度。例如,在这种情况下,分支因子(b)为3,深度(d)为5,每个节点需要10字节的内存来表示。如何计算空间复杂度?

这取决于执行深度优先搜索(DFS)的结构类型:

  • 树上:您无需检查之前是否访问过某个状态,只需存储当前跟踪(在堆栈中),该跟踪的最大深度为$d$。对于跟踪上的每个状态,您需要存储已经遍历的传出转换,这将成为每个状态的最大分支因子$b$。因此,您需要$O(d*b)$空间
  • 图形上:您还需要通过存储所有已访问的状态(例如,在哈希表中)来检查您以前是否访问过某个状态。因此需要$O(d*b+| V |)$空间,V是顶点集。在互联网上,你通常会看到空间复杂度是$O(| V |)$;通常状态数是主要因素,但是如果您的状态空间有一个大的$b$,请不要忽略这部分空间要求
尝试在Internet上搜索“深度优先搜索的空间复杂度”?每个节点的字节数与空间复杂度有何关系(只要是常数就无所谓)?空间复杂度为O(d)。正如我在russel和norvig的书中看到的,空间复杂度os DFS为b.m(最大深度)然后我看到了这个问题,我没有找到答案(实际上我不知道如何计算)