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

如何找到权重不大于k的反馈集

唐兴发
2023-03-14

任何一个无向加权图的反馈集都是边的子集,使得在去掉子集中的边之后,剩余的图是非循环的。

给定G=(V,E),一个无向带权图,一个整数k,我如何确定是否存在一个总权不大于k的反馈集?

谢谢你!

共有1个答案

长孙诚
2023-03-14

最小反馈集永远不会包含断开图的两个分量的边,因此移除反馈集不会改变连通的分量,但会使每个连通的分量呈现为非循环的。

如果一个无向图是连通的和无圈的,那么它就是一棵树,所以:

对于图中的每个连通组件,找到最大权重生成树。您可以使用任何最小权重生成树算法,只需否定所有权重。

不在任何最大权重生成树中的边是最小权重反馈集。

要找到所有的最大权重树,我推荐使用Kruskal的算法对整个图的边按权重递减排序,因为它会一次找到它们。然后只需选择所有不在任何树中的边。

 类似资料:
  • 假设您给出了一个大小为N的数组,它可以有正数和负数。我们需要返回总和的最大子数组的长度等于k。我尝试使用滑动窗口算法,但很快我发现它在这里不起作用,因为数组元素可以有正负整数。 例如: arr=[-20,-38,-4,-7,10,4]和k = 3很明显,有两个可能的子阵列([-4,-7,10,4]和[-7,10]),它们的和等于给定的k。因此输出将是4(最大子阵列的长度) 蛮力方法将采取O(n^2

  • 设G=(V,E)是无向图。如果G的每个圈在F中至少有一条边,则称边集F E为反馈边集。 a)最小尺寸反馈边集:由于图是无权的,我们可以使用DFS。我们像往常一样从任意顶点开始DFS。当我们遇到一个后边时,我们将它插入反馈边集。当DFS完成时,该集将是答案。 b)最小权重反馈边集:由于图是加权的,我们可以使用Kruskal。但是Kruskal通常从最小权重的边开始。如果我们可以否定所有的边权重,然后

  • 本书需要来自它的读者帮助,例如由你来指出这本书的任何部分还不够好,难以理解或整个就是错的。请 写信给作者 提交你的意见和建议。 有关本中文译本,如果你认为书中的某些部分的翻译存在疏漏或错译、误译,又或者你觉得有更好的表述,你可以写信给译者提交你的意见或建议。 在向译者提供反馈时,请提供以下信息: 参考译本版本号,在全书开头可以查看到。 与反馈内容相关的章节位置,如“《面向对象编程》的‘类’一节”。

  • 发送意见反馈 获取系统会话列表 发送意见反馈 POST /api/v2/user/feedback 输入 名称 类型 描述 content string 反馈内容 system_mark int 移动端标记,非必填 ,格式为uid+毫秒时间戳 响应 Status 201 Created { "message": [ "反馈成功" ], "data": { "type

  • 反馈 正则表达式是一个复杂的主题。本文能否有助于你理解呢?哪些部分是否不清晰,或在这儿没有找到你所遇到的问题?如果是那样的话,请将建议发给作者以便改进。 描述正则表达式最全面的书非Jeffrey Friedl 写的《精通正则表达式》莫属,该书由O'Reilly 出版。可惜该书只专注于 Perl 和 Java 风格的正则表达式,不含任何 Python 材料,所以不足以用作Python编程时的参考。(

  • 本文向大家介绍大于K的Python索引,包括了大于K的Python索引的使用技巧和注意事项,需要的朋友参考一下 在本教程中,我们将找到大于给定数字K的数字的索引。让我们看看找到它们的不同方法。 解决问题的最常见方法是使用循环。让我们看看解决问题的步骤。 初始化列表和K。 使用列表的长度遍历列表。 如果发现任何大于K的数字,则打印当前索引。 示例 输出结果 如果运行上面的代码,则将得到以下结果。 让