假设所有边权都为正数,可以通过取每条边的log
然后应用Kruskal或Prim算法来获取最小生成树。但是如果一些边的权值为负数,则无法应用此过程,因为我们需要包括奇数条负边,并且这些边必须具有最大权重。在这种情况下该怎么办呢?
假设所有边权都为正数,可以通过取每条边的log
然后应用Kruskal或Prim算法来获取最小生成树。但是如果一些边的权值为负数,则无法应用此过程,因为我们需要包括奇数条负边,并且这些边必须具有最大权重。在这种情况下该怎么办呢?
始终按照绝对值最高的边合并。如果得到的顶点<= 0,则找到了最佳解决方案。否则会变得复杂。您可以查看所有未使用的边,尝试添加它们,查看哪些边可以被移除以使其成为树形结构,只查看具有不同符号的边并建立比率abs(added_edge/removed_edge)。然后,最终使用最佳比率进行更改(如果找到任何具有相反符号的组合,否则没有负解决方案)。但是我不确定这是否总是会给出最佳结果。