繁体   English   中英

Prim's和Kruskal's的应用,而不是找到MST

[英]Application of Prim's and Kruskal's other than finding MST

我在Codechef中看到一个问题,目标是从图形中选择边缘,以使选定的边缘不形成循环,并且所有选定边缘的权重乘积最大。在社论中,认为prim和kruskal算法有效实际上,考虑到它可以使边缘的任何对称单调函数最大化。 那么对称单调函数到底是什么,以及在哪里可以使用此算法。

我想作者的意思是:

如果生成树的最终分数是f(w1, w2, ... wn) ,其中wi是边缘权重,则f在权重上应是单调的。 这意味着,如果您增加任何重量, f要么总是增加(单调增加),要么总是减小(单调减少)。 总和和乘积都单调增加:

f_sum (w1, w2, ... wn) = w1 + w2 + ... + wn
f_prod(w1, w2, ... wn) = w1 * w2 * ... * wn //non-negative-weights

对称是指顺序。 如果您可以确保f(..., wi, ..., wj, ...) = f(..., wj, ..., wi, ...)f是对称的。 应该清楚为什么需要这样做。 任何MST算法都应该只关心选择哪些边,而不关心它们的顺序。 和和积都是可交换运算,因此是对称的。

之所以可行,是因为给定图的所有生成树都具有相同数量的边。 如果您贪婪地采用最大可用边(对于单调递增的函数)或最小边(对于单调递减的函数),则会自动使f最大化。

我知道的大多数应用程序都是MST的应用程序(主要是为了近似最佳解决方案)。 就概率模型而言,最大乘积可以指的是最大化最终概率,其中边缘表示然后合并的单独事件的概率。 我还没有偶然发现其他用于生成树的功能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM