当前位置: 首页 > 知识库问答 >
问题:

负权最小积生成树

程赞
2023-03-14

假设所有边的权值都为正,那么通过对每条边的log,然后应用Kruskal或Prim得到最小乘积生成树。但如果某些权重为负值,我们就不能应用这个程序。因为我们需要包含奇数个负边,而这些边必须具有最大的权重。在这种情况下怎么办?

共有1个答案

康鹏云
2023-03-14

我非常怀疑你能修改Prims算法来解决这个问题,因为负数完全改变了它。如果您设法得到一个负的结果,那么绝对值必须最大化,这意味着必须使用绝对值最高的边,因此试图优化Prims algo找到的结果并取log(abs())是行不通的,除非不可能得到一个负的结果,那么这实际上将返回最佳解。

这使得问题变得简单了一点,因为我们只需要寻找最好的负解,如果找不到,我们就使用带log(abs())的Prims。

如果我们给每个顶点赋一个值1,那么两个顶点可以通过创建一个新的顶点合并,这个新的顶点除了连接它们的顶点之外,所有的边都是被删除的顶点的值和边的乘积。

在此基础上,我们可以通过合并只有一条边的所有节点来开始简化。与每一步合并并行,删除的边必须标记为原始图中使用的边,以便最终从标记的边重建树。

此外,我们可以合并所有只有正边或只有负边的节点,删除绝对值最高的边。合并后,新节点可以有多个到同一节点的连接,您可以丢弃除绝对值最高的负边和正边(因此同一节点最多有2条边)以外的所有边。顺便说一句。只要同一个节点有2条边(遵循上面的移除条件),我们就知道必须存在一个<=0的解。

如果您最终得到一个节点并且它是负的,那么问题已经成功解决,如果它是正的,则没有负的解决方案。如果我们有一个0顶点,我们可以以任何顺序合并其余的节点。更可能的是,我们最终得到一个高度连通的图,其中每个节点至少有一个负边和一个正边。如果我们有奇数个负顶点,那么我们希望合并带有偶数个负边的节点,反之亦然。

始终按绝对值最高的边合并。如果得到的顶点<=0,那么您找到了最佳解。否则就会变得复杂。您可以查看所有未使用的边,尝试添加它,看看哪些边可以删除以使它再次成为树,只查看那些具有不同符号的边,并构建比率abs(added_edge/removed_edge)。然后最后用最佳比例做改变(如果你发现任何组合有相反的符号,否则就没有负解)。但我不能百分之百确定这是否总是给出最好的结果。

 类似资料:
  • 如果它一定是一棵树,你能解释一下连通性和极小性之间的矛盾吗。但是如果你认为它可能是其他的子图,那么你能给我一个例子,一个连通图可能不是树,它的权重更低。

  • 这是为什么大多数图算法不那么容易适应负数的后续问题?。 我认为最短路径(SP)存在负权重的问题,因为它将路径上的所有权重相加,并试图找到最小权重。 但我不认为最小生成树(MST)在负权值上有问题,因为它只取单个最小权值边,而不关心整体总权值。 我说的对吗?

  • 主要内容:生成树,最小生成树数据结构提供了 3 种存储结构,分别称为线性表、树和图,如图 1 所示。 图 1 3 种存储结构 a) 是线性表,b) 是树,c) 是图。 在图存储结构中,a、b、c 等称为顶点,连接顶点的线称为边。 线性表是最简单的存储结构,很容易分辨。树和图有很多相似之处,它们的区别是:树存储结构中不允许存在环路,而图存储结构中可以存在环路(例如图 1 c) 中,c-b-f-c、b-a-f-b 等都是环路)。

  • 设T=(V,E)是一棵顶点和边的树,代价已知。我们想构造一个最小权完备图G=(V,E'),它的唯一最小生成树是T。 示例:考虑下面的树T,红色边具有给定的代价。将添加虚线边以从这棵树构造一个完整的图。 作为其唯一MST而跨越T的最小权完备图G如下所示: 2)对MST的所有其他边,权重,按权重递减的顺序重复。进行只包括而不包括其他MST边的切割。此切割的任何未知非MST边的权重应为。 问题: 1)上

  • 对于最小生成树问题的求解,geotools graph包中是否有Prim的算法或任何其他算法的实现?

  • 假设我选择V(H)={a,e,f}和e(H)={ae,af,fe} 现在,对于每条边e∈e(H),我们用e'记下了(来自原始图G的) 达到这个最小值的边。所以E'={bc,df,eg},因为bc=4,df=9,eg=8,是连接我的元件的最小边。我在H中有一个相对于代价函数C′的最小生成树,而a′是这棵树的边集。 但是我的A'的边和E'的没有一条是一样的。