找到具有相同权重的最大边数的生成树

2024-02-09

问题就在这里。

给出一个带权无向连通图G。权重是恒定的。任务是提出一种算法,找到满足这两个条件的 G 的生成树的总权重(按优先级排序):

  • 生成树必须有相同权重的最大边数(与实际重复重量值无关);
  • 应最小化总生成树重量。这意味着,例如,权重为 120 的生成树 T1(最多有 4 个相同权重的边(这四个边的权重均为 15))应该优于权重为 140 的生成树 T2(权重为 140)。最多 4 条边具有相同的权重(这 4 条边的权重均为 8)。

我已经坚持这个问题有一段时间了。我已经为图实现了Boruvka的MST搜索算法,现在我不确定是否应该在找到MST后执行任何操作,或者最好修改MST搜索算法本身。

欢迎任何建议!


这可以天真地完成O(m^2),并且无需付出太多努力O(mn)。似乎可以做得更快,也许类似O(m log^2(n))甚至O(m log(n))只需一点工作。

基本的想法是这样的。对于任何体重k, let MST(k)是包含最大可能数量的权重边的生成树k,否则总重量最小。可能有多棵这样的树,但它们的总重量都相同,所以选择哪一棵并不重要。MST(k)可以通过使用任何 MST 算法并处理权重的所有边来找到k因为有重量-Infinity.

这个问题的解决方案将是MST(k)对于一些k。所以最简单的解决方案是生成所有MST(k)并选择具有最大数量的相同边权重和最小总权重的那个。使用 Kruskal 算法,您可以执行此操作O(m^2)因为您只需对边缘进行一次排序。

这可以改进为O(mn)首先使用原始权重找到 MST,然后对每个k,将树修改为MST(k)通过减少重量的每个边缘的重量k to -Infinity。更新 MST 以减少边缘权重是一种O(n)操作,因为你只需要找到相应的最大权重边基本周期 https://en.wikipedia.org/wiki/Cycle_basis#Fundamental_cycles.

为了做得比O(mn)使用这种方法,您必须对原始 MST 进行预处理,以便可以更快地执行这些边权重减少。似乎有类似的东西重路径分解 https://en.wikipedia.org/wiki/Heavy_path_decomposition应该可以在这里工作,但有一些细节需要解决。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

找到具有相同权重的最大边数的生成树 的相关文章

  • 如何验证无锁算法?

    从理论上讲 至少应该可以对无锁算法进行暴力验证 只有这么多的函数调用组合 是否有任何工具或正式推理过程可以实际证明无锁算法是正确的 理想情况下它还应该能够检查竞争条件和 ABA 问题 注意 如果你知道一种方法来证明一点 例如 只证明它不受
  • 算法 - 如何有效删除列表中的重复元素?

    有一个list L 它包含以下元素任意类型each 如何有效删除此类列表中的所有重复元素 必须保留订单 只需要一个算法 因此不允许导入任何外部库 相关问题 在Python中 从列表中删除重复项以使所有元素都是唯一的最快算法是什么在维持秩序的
  • 用于整数分区的优雅 Python 代码 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我尝试编写代码来解决标准整数分区问题 维基百科 http en wikipedia org wiki Partition 28numb
  • 什么是确定性快速排序?

    我一直在阅读有关快速排序的内容 发现有时它被称为 确定性快速排序 这是普通快速排序的替代版本吗 普通快速排序和确定性快速排序有什么区别 普通 确定性 快速排序在特定数据集上的行为可能非常差 例如 选择第一个未排序元素的实现在已排序数据上的时
  • 优化 HTML 属性压缩顺序

    我在某处读到 按一定顺序组织 HTML 属性可以提高 HTML 文档的压缩率 我想我是从 Google 或 Yahoo 推荐的更快网站上读到这篇文章的 如果我没记错的话 建议是将最常见的属性放在第一位 例如id等 然后将其余的按字母顺序排列
  • 用于基本要素匹配的最坏情况 NlogN 算法

    查找两个相同大小数组的元素之间的唯一映射 https stackoverflow com questions 4411940 find the unique mapping between elements of two same size
  • StackOverflowError 计算 BigInteger 的阶乘?

    我正在尝试编写一个Java程序来计算大数的阶乘 它似乎BigInteger无法容纳这么大的数量 下面是我编写的 简单的 代码 public static BigInteger getFactorial BigInteger num if n
  • 为什么《破解编码面试》这个例子的时间复杂度是O(k c^k)?

    该问题来自 破解编码面试 第 6 版 问题 V1 11 以下代码打印长度为 k 的所有字符串 其中字符 是按排序顺序排列的 它通过生成所有长度的字符串来做到这一点 k 然后检查每个是否已排序 什么是运行时间 package QVI 11 P
  • 直观地执行不同的排序算法[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 数组中最远的相等元素

    假设你有一个未排序的数组 你如何找到两个相等的元素 使它们成为数组中最远的元素 例如8 7 3 4 7 5 3 9 3 7 9 0ans 将是7 9 7 1 8 我想到了以下几点 initialise max 0 using hashing
  • 运行时间为 O(n) 且就地排序的排序算法

    有没有运行时间为O n 并且还分类到位 在某些情况下 最好的情况是 O n 但这可能是因为项目集合已经排序 你正在看 O nlogn 一些较好的平均值 话虽如此 排序算法的 Wiki 还是相当不错的 有一个表格比较了流行的算法 说明了它们的
  • 如何在 Twitter 中获取性别和年龄图表?

    我必须在 Twitter 上显示性别和年龄图表 就像 Facebook 人口统计图一样 附上这个 是否可以根据关注者数量使用 oauth 或 api 从 Twitter 获取性别和年龄数据 提前致谢 根据 Twitter 员工 episod
  • 处理流星中的长服务器端计算

    我正在使用 jimp https www npmjs com package jimp https www npmjs com package jimp 在meteor JS中生成图像服务器端 换句话说 我正在使用递归算法 计算 图像的像素
  • 序列和与 GCD

    大约一个月前 我在编程挑战中遇到了这个问题 但社论尚未发布 所以我在这里问 有一个大小为 N 的数组 A 求 A 的 K 个长度子序列的总和 GCD Example 如果 A 1 2 3 且 K 2 1 2 3 总和 1 GCD 3 1 3
  • 关于Marching Cubes算法的澄清

    关于Marching Cubes 我对其算法和实现有一些疑问 我已经阅读了 Marching Cubes 的 Paul Bourke 优秀文章以及网站上可用的源代码 但是 我在理解以及如何以自己的方式实现算法方面仍然遇到了一些问题 问题如下
  • 什么是“朴素”算法,什么是“封闭式”解决方案?

    我有一些关于描述算法时使用的术语语义的问题 首先 朴素 算法是什么意思 这与给定问题的其他解决方案有何不同 解决方案还可以采取哪些其他形式 其次 我听到很多人提到 封闭式 解决方案 我也不知道这意味着什么 但在尝试解决递归关系时经常会出现
  • LRU算法,实现这个算法需要多少位?

    我有一个关于 LRU 算法的小问题 如果您有一个包含四个块的高速缓存 那么需要多少位来实现该算法 假设您指的是 4 路组关联缓存 完美 LRU 本质上是按照使用顺序为每一行分配一个精确的索引 您也可以将其视为 年龄 因此 4 个元素中的每一
  • 如何在C中实现带连分数的自然对数?

    这里我有一个小问题 根据这个公式创建一些东西 这就是我所拥有的 但它不起作用 弗兰基 我真的不明白它应该如何工作 我尝试用一 些错误的指令对其进行编码 N 是迭代次数和分数部分 我认为它会以某种方式导致递归 但不知道如何 谢谢你的帮助 do
  • Java 2d 游戏中的路径查找?

    本质上它是我正在开发的一款吃豆人克隆游戏 我有一个 Enemy 类 并创建了该类的 4 个实例 它们都代表游戏的 4 个幽灵 所有幽灵都会在屏幕的随机区域启动 然后它们必须朝着吃豆人角色前进 当玩家控制吃豆人并移动它时 他们应该跟随它并尽可
  • 这个函数(for循环)空间复杂度是O(1)还是O(n)?

    public void check 10 for string i list Integer a hashtable get i if a gt 10 hashtable remove i 这是 O 1 还是 O n 我猜测 O n 但不是

随机推荐

  • 在第一个空格出现处分割字符串

    我没有得到一个优化的正则表达式 它将我的字符串拆分为第一个空白出现的位置 var str 72 tocirah sneab 我需要得到 72 tocirah sneab 如果您只关心空格字符 而不是制表符或其他空白字符 并且只关心第一个空格
  • 在Using语句中从DataLayer返回DataReader

    我们有很多数据层代码都遵循这个非常通用的模式 public DataTable GetSomeData string filter string sql SELECT FROM SomeTable WHERE SomeColumn Filt
  • 声明字符串 public static readonly 与 public const 与 public static const

    在每个项目中 我们都有一个文件用于存储该项目中使用的各种 SQL 语句 类的声明方式和字符串的声明方式有一些变化 类声明示例 internal sealed class ClassName internal static class Cla
  • 在RESTLET中读取Web-INF中的配置文件

    我正在尝试读取放置在 WEB INF 根路径内的配置文件 该应用程序使用RESTLET框架 我在官方RESTLET上读到doc http restlet com technical resources restlet framework j
  • 使用 JSON.NET 反序列化 Noda Time 的 LocalDateTime

    我正在尝试使用 Json NET 序列化一些 Noda Time 值 但遇到了麻烦 序列化很简单 LocalDateTime dt Assigned elsewhere LocalDateTimePattern isoDateTimePat
  • 如何使用 H2、JPA 和 Hibernate 映射 JSON 列

    我在应用程序 MySQL 5 7 中使用 并且有 JSON 列 当我尝试运行集成测试时 它不起作用 因为 H2 数据库无法创建表 这是错误 2016 09 21 16 35 29 729 ERROR 10981 main org hiber
  • RxJS / Angular Observables 使用 1 个还是多个管道?

    具有以下内容 只是一个简单的示例 observable pipe map s gt s anything pipe filter t gt t gt 5 pipe map t gt t 5 subscribe XXX 为什么我应该使用 1
  • 在 Hibernate 3.3.1ga 和 HSQLDB 中使用 @Table 和架构名称

    如何使用 Hibernate 3 3 1ga 和 HSQLDB 在单元测试中实现此功能 Entity Table name CATEGORY schema TEST public static class Category 问题是 Hibe
  • 图像二进制解释:未知图像格式

    假设我有某种格式的图像 其二进制表示形式 例如来自 OpenCV 的 cv Mat 或来自 Android 的 YuvImage 未压缩 并将其数据解释为 YUV NV21 嗯 这是 DJI 提供的示例 SDK 差不多了 这是我所得到的 由
  • 如何从抽象基类覆盖模型字段的默认值

    我有一些代码 如下所示 class BaseMessage models Model is public models BooleanField default False some more fields class Meta abstr
  • 从 Clojure 映射中过滤 nil 值?

    最好的过滤方法是什么nilClojure 映射中的值 a x b nil c z gt a x c z 我会用 into filter comp some val a x b nil c z gt a x c z 正在做的some http
  • C++中传递成员函数指针

    我正在尝试传递一个函数指针 类型为QScriptEngine FunctionSignature QScriptValue QScriptContext QScriptEngine 到另一个函数 但我需要传递的函数是类的成员函数 我这样使用
  • 网络x绘制_网络x_边缘capstyle

    有谁知道在通过 例如 绘制networkx边缘时是否可以对线条属性进行细粒度控制draw networkx edges 我想控制线路solid capstyle and solid joinstyle 它们是 matplotlib Line
  • 选择 Atom 中所有找到的 RegEx 结果

    我正在尝试选择正则表达式查找找到的所有结果 以便我可以全部修改它们 不要用文本替换它们 例如 将它们全部大写Cmd K gt Cmd U 我知道我could通过重复来一项一项地做Cmd G Cmd K Cmd U 但对于大文件来说 这根本不
  • Laravel 4 绕过路由的维护模式

    我已将我的应用程序放下以进行维护php artisan down命令 我的自定义维护页面作为电子邮件输入 用于接受来自用户的电子邮件并存储在我的数据库中 以便在站点备份并再次运行时通知用户 但是当我使用 POST 提交表单时 我被重定向到维
  • mViewPager.getCurrentItem() 不返回第一个和最后一个寻呼机的正确位置

    我正在尝试获取视图寻呼机的页码 我遇到了很多Stackoverflow Q A 他们都说要使用 currentposition mViewPager getCurrentItem 但此方法不适用于第一页和最后一页 如何解决这个问题 提前致谢
  • 运行 Hadoop 作业时不是有效的 Jar

    我想运行 WordCount 示例 在eclipse中运行正确 在输出文件夹中存在输出文件 我制作了WordCount的jar文件并想通过命令运行它 hadoop jar WordCount jar Projects input Proje
  • 使用index.js在React中导入多个图像资源

    我一直在使用一种收集组件文件以供导出的模式index js文件放置在目录中 例如 index js file in components directory export Splash from Splash export Portfoli
  • 使用 Spring Boot 重命名 Liquibase 变更日志表

    我在用着Liquibase v 3 5 3 和 一起Spring 启动 v 1 5 3 我想使用 spring boot 属性文件更改 liquibase 变更日志表名称 我发现做到这一点的唯一方法是设置liquibase database
  • 找到具有相同权重的最大边数的生成树

    问题就在这里 给出一个带权无向连通图G 权重是恒定的 任务是提出一种算法 找到满足这两个条件的 G 的生成树的总权重 按优先级排序 生成树必须有相同权重的最大边数 与实际重复重量值无关 应最小化总生成树重量 这意味着 例如 权重为 120