Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.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_Minimum Spanning Tree_Space Complexity_Kruskals Algorithm_Prims Algorithm - Fatal编程技术网

Algorithm 空间有效最小生成树

Algorithm 空间有效最小生成树,algorithm,minimum-spanning-tree,space-complexity,kruskals-algorithm,prims-algorithm,Algorithm,Minimum Spanning Tree,Space Complexity,Kruskals Algorithm,Prims Algorithm,我遇到了一个任务,它基本上要求您找到给定图的MST,其中所有顶点都是连接的。我尝试使用Kruskal的算法,但很快我发现空间边界太窄,一个字节无法存储所有边,所以我也放弃了Prim和Boruvka的算法。有没有一种方法可以实现这些算法(或任何其他MST算法)中的任何一种,其空间复杂度比O(E)好,在这种情况下O(V^2)?对于可以使用函数w(i,j)计算权重的情况,可以使用Prim算法()在空间O(n)而不是O(n^2)中计算最小生成树 在每个阶段,维护树中的节点集T,对于不在树中的每个节点,保

我遇到了一个任务,它基本上要求您找到给定图的MST,其中所有顶点都是连接的。我尝试使用Kruskal的算法,但很快我发现空间边界太窄,一个字节无法存储所有边,所以我也放弃了Prim和Boruvka的算法。有没有一种方法可以实现这些算法(或任何其他MST算法)中的任何一种,其空间复杂度比O(E)好,在这种情况下O(V^2)?

对于可以使用函数w(i,j)计算权重的情况,可以使用Prim算法()在空间O(n)而不是O(n^2)中计算最小生成树

在每个阶段,维护树中的节点集T,对于不在树中的每个节点,保持从该节点到树中任何节点的最小距离

开始时,T是节点0,对于每个其他节点,计算从节点0到该节点的最小距离

在每个阶段,选择距离最小的树中不存在的节点。现在计算从该节点到树中以外的所有其他节点的距离。如果该距离小于其当前最小距离,则更新该最小距离


存储成本为O(n)以维持T,O(n)以维持不在树中的每个节点从树到该节点的最小距离的注释

你怎么知道每一条边的长度而不存储它们呢?我不知道,这就是为什么我要问是否存在这样做的方法或者找到MST的另一种方法。我相信任务的空间需求不包括图形的存储成本。(即邻接列表)如果没有,则无法表示作为输入的图形。如果我是正确的,并且问题不包括存储邻接列表的成本,那么Prim的算法可以为您实现这一点,只要您在每个顶点的优先级队列中存储一个元素。(即,如果您使用的是一个集合而不是优先级队列)如果您确实在Prim的算法中使用了一个集合,那么该集合将最多包含O(V)个元素。juvian是对的。在不知道权重的情况下,无法构造MST,这不可避免地会占用0(V²)的空间。但在你的情况下,也许可以计算权重而不是存储权重?