如何最小化最短路径树的总成本

2023-12-30

我有一个具有正边权重的有向无环图。它具有单个源和一组目标(距离源最远的顶点)。我找到从源到每个目标的最短路径。其中一些路径重叠。我想要的是一个最短路径树,它可以最小化所有边上的权重总和。

例如,考虑其中两个目标。假设所有边的权重相等,如果它们在大部分长度上共享一条最短路径,那么这比两条几乎不重叠的最短路径要好(树中的边越少,总成本越低)。

另一个例子:两条路径在其长度的一小部分内不重叠,不重叠路径的成本较高,但长共享路径的成本较低(组合成本较低)。另一方面,两条路径在其大部分长度上都是不重叠的,非重叠路径的成本较低,但短共享路径的成本较高(而且组合成本较低)。有很多种组合。考虑到从源到目标的所有最短路径,我希望找到总体成本最低的解决方案。

换句话说,我想要最短的最短路径树。

这对任何人来说都敲响了警钟吗?谁能向我指出相关算法或类似应用程序?

Cheers!


这个问题 (斯坦纳树 http://portal.acm.org/citation.cfm?id=1414423) 是 NP 困难且最大 SNP 完全的,因此除非 P = NP,否则既不存在多项式时间算法,也不存在 PTAS(任意接近的近似)。

MST 可以给出比最佳权重任意差的权重,除非您知道图的某些特殊特征(例如图是平面的,或者至少权重服从三角不等式)。例如,如果您有 K_1,000,000,001,所有边权重均为 1,且只有一个目标,则最优解的权重为 1,MST 的权重为 1,000,000,000。

如果您假设目标之间的所有边以及源与每个目标之间的所有边都存在,您仍然可以通过任意因子进行超调。考虑上面的示例,但将目标和源之间的边权重更改为 2,000,000,000,000,000,000(仍与最佳值相差十亿倍)。

当然,您可以通过遍历图形来转换图形以“删除”时间 O(E) 左右的高边权重。加上目标和源集的 MST,得出的近似比率为 2。

存在更好的近似比率。 Robins 和 Zelikovsky 有一个多项式时间算法,其性能永远不会比最优算法差超过 54.94%:http://www.cs.virginia.edu/~robins/papers/soda2000_camera.pdf http://www.cs.virginia.edu/~robins/papers/soda2000_camera.pdf

Chlebik 和 Chlebikova 表明,接近于 1.05% 是 NP 困难的:图上的斯坦纳树问题:不可近似性结果 http://portal.acm.org/citation.cfm?id=1414423(doi 10.1.1.4.1339)

如果你的图表是平面的,情况会更好。 Borradaile、Kenyon-Mathieu 和 Klein(基于 Erickson、Monma 和 Veinott)提出了一种快速算法,可以给出任意接近的近似值:平面图中 Steiner 树的 O(nlogn) 近似方案 http://portal.acm.org/citation.cfm?doid=1541885.1541892(DOI 10.1.1.133.4154)

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

如何最小化最短路径树的总成本 的相关文章

  • 首先遍历图广度,在 Haskell 中标记访问过的节点

    所以问题很简单 给定一个图 我希望图的结构在这个问题中并不重要 我该如何对其进行 BFS 呢 我最近问了一个关于生成列表的问题 其中每个元素都将许多元素附加到其末尾 希望答案应该能让我创建一个执行 BFS 所需的队列 但是搜索还需要另一个关
  • 带间隔 Gurobi 约束的图形着色

    我正在尝试使用 networkx 和 gurobi 修复图形着色问题的一些限制 对于每个 i V 我们定义以下一组区间 每个区间 l u Ii 表示与顶点 i 相关的边集的一对可能的最小颜色 l 和最大颜色 u 此外 对于每个 k K 我们
  • 使用 Networkx 绘制带边的图

    我一直被一件很简单的事情所困扰 我正在尝试绘制并显示一个具有 2 个节点和 1 个边的图 但我收到这个错误 Traceback most recent call last File
  • 用于图形的 Java 库 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 用于操作图形 特别是用于社交网络分析 的最佳 Java 库是什么 我见过荣格 但我想知道你是否知道更好的
  • 使用 BFS 进行加权图

    我正在修改单源最短路径算法 在视频中 老师提到BFS DFS不能直接用于查找最短路径 in a 加权图 我想每个人都知道这一点 并说自己找出原因 我想知道为什么它不能用于加权图的确切原因 解释 是由于边缘的重量还是其他原因造成的 有人可以解
  • 找到从 A 到 B 的最短路径,同时拾取可能位于多个位置的某些物品[重复]

    这个问题在这里已经有答案了 我正在学习图形和算法 我什至很难找到此类问题的名称 更不用说提出一个好的解决方案了 如果我们只有一个未加权的无向图 那么找到从 A 到 B 的最短路径是微不足道的 BFS 如果我们必须访问某些节点 从 A 到 B
  • 使用 apriori 算法进行推荐

    So a 最近的问题 https stackoverflow com questions 1248373 apriori algorithm让我意识到相当酷先验算法 http en wikipedia org wiki Apriori al
  • 创建所有节点具有相同入度和出度的矩阵

    我已经用图论术语阐述了这个问题 但概念化是不必要的 我想要做的是 使用 Python 生成一个由 0 和 1 组成的矩阵 其中每行都有相同数量的 1 每列都有相同数量的 1 当行数 发送节点 不等于列数 接收节点 时 行数将与列数不同 这是
  • 如何获取两个节点之间的最小路径的权重?

    我有一个Python 中的networkx 图 带有加权边 我想获得两个节点之间的最小路径的权重 目前 我从 nx shortest path 实现中获取最短路径中的节点 然后迭代每对并对每对节点之间的权重求和 shortest path
  • 强连通分量有什么用?

    我发现了几种可以解释的算法how在有向图中找到强连通分量 但没有解释why你会想要这样做 强连通分量有哪些应用 您应该查看 Coursera 上 Tim Roughgarden 的算法简介课程 对于他所讨论的每一种算法 他都会解释其一些应用
  • java有索引的最小优先级队列吗?

    我需要它来实现 Dijkstra 算法 并且我确实有自己的实现 但是使用 java 自己的类记录我的代码会更容易 不 Java标准库没有这样的数据结构 我想大多数人都用这个 http algs4 cs princeton edu 24pq
  • 查找二维数组中的最短路径(Javascript)

    我正在尝试实现一种算法 该算法在以下二维数组中找到最短路径 从左上角到右下角 A A A B A B B B B B A B A A A A B B B B A A A A A 规则是 路径必须在 A 和 B 之间交替 输出必须是一个数字
  • 求矩阵 (n x n) 的最小总和,在每一行和每一列中只选择一个

    这是与动态规划相关的另一个算法问题 问题是这样的 找到给定矩阵的最小总和 以便在每一行和每一列中选择一个 例如 3 4 2 8 9 1 7 9 5 最小的一个 4 1 7 我认为解决方案是网络流量 最大流量 最小切割 但我认为它不应该那么难
  • 优化 WPF 中由单元格组成的网格以获得最短路径

    我目前正在尝试在 WPF 中制作一个由 Cell 对象组成的网格 我需要将单元格绑定到对象 该对象需要位于二维数组中 我需要它很大 可扩展 并改变单元格的颜色并将数据存储在对象中 我已经实现了 但是绘制网格似乎很慢 100x100 网格需要
  • 将非方邻接矩阵导入 Networkx python

    我在下面有一些 pandas 数据框形式的数据 其中列代表离散技能 行代表离散工作 仅当工作需要该技能时才存在 1 否则为 0 skill 1 skill 2 job 1 1 0 job 2 0 0 job 3 1 1 我想使用 netwo
  • 如何在Matlab中绘制网络?

    我有一个矩阵AMatlab中的维数mx2每行包含两个节点的标签 显示网络中的直接链接 例如 如果网络有4矩阵的节点A可能A 1 2 1 3 2 1 2 4 3 2 4 1 4 2 其中第一行表示有一个链接来自1 to 2 第二行表示有一个链
  • 如何使用最小生成树方法将边缘连接到图像中的节点

    我正在做我的手写图像图形匹配项目 我想在图形中表示给定的单词图像 我使用下面的算法 Algorithm input Binary image B Grid width w Grid height h Output Graph g V E w
  • Dijkstra 算法不生成最短路径?

    我正在使用 Dijkstra 算法解决最短路径问题 我遇到了麻烦 因为该算法应该提供最短路径 但运行该算法后 我手动得到了一条短路路径 这只是该算法的副产品吗 我尝试生成的路径是从 a gt z 这是我通过应用该算法得到的路径 在我访问的每
  • 完整无向图的最有效实现

    问题背景 我目前正在开发蚁群系统算法的框架 我想我应该从尝试它们解决的第一个问题开始 旅行商问题 TSP 我将使用 C 来完成该任务 所有 TSP 实例将包含一个完整的无向图 每个边有 2 个不同的权重 Question 到目前为止 我只使
  • 棋盘上骑士的最短路径

    我一直在为即将到来的编程比赛进行练习 我偶然发现了一个我完全困惑的问题 然而 我觉得这是一个我现在应该学习的概念 而不是祈祷它永远不会出现 基本上 它涉及棋盘上的骑士棋子 您将获得两个输入 起始位置和结束位置 目标是计算并打印骑士到达目标位

随机推荐

  • 如何定义自定义源集而不在 Gradle 中显式定义其路径?

    说明书上是这么写的 IE 那src sourceSet java是 给定源集的 Java 源 的默认路径 如何利用这个 假设我想创建源集demo 我可以写吗 sourceSets demo java srcDir src demo java
  • 如何使用 Firestore 获取当前登录用户的文档? [复制]

    这个问题在这里已经有答案了 我的 Firestore 中有这个结构 我希望登录的用户能够获取所有图像 URL 以及与该用户 ID 关联的其他字段 例如名称 价格和描述 此信息将被加载到 recyclerView 中 这是项目模型 packa
  • 计算点向量的平均值

    我在 OpenCV 中有一个二维点的向量 std vector
  • 如何在 jquery ui 对话框中提交表单并显示其响应

    你好 我正在使用 jquery ui 对话框并尝试使用 ajax 提交表单并显示其响应 直到表单对话框和 ajax 请求其工作正常 但不知道如何在同一对话框中显示其响应 任何建议都会帮助我 假设您有以下标记 div style displa
  • 如何禁用漂亮照片?

    我现在如何启用prettyphoto 但问题是如何禁用 这里我启用了 PrettyPhoto document ready function a rel prettyPhoto prettyPhoto social tools false
  • Facebook 访问令牌无法扩展

    我正在使用 facebook android sdk 我刚刚从 github 下载了它 我了解访问令牌仅在非常有限的时间内有效 并且每次应用程序启动时都需要按照文档中的描述进行扩展 https developers facebook com
  • UIPickerView 辅助功能 VoiceOver 问题

    启用 VoiceOver 后 无论我们滑动到哪一行 UIPickerView 的画外音始终显示 Item 1 of TotalNumberOfItems 以编程方式 所有元素都会使用正确的选定索引进行更新 但 VoiceOver 始终显示
  • 如何从 C# 中的类访问表单方法和控件?

    我正在开发一个 C 程序 现在我有一个Form和几节课 我希望能够访问一些Form控件 例如TextBox 来自我的班级 当我尝试更改文本中的文本时TextBox从我的课堂上我收到以下错误 非静态字段 方法或属性 Project Form1
  • OpenCV 和像 Adob​​e Photoshop 一样的锐化遮罩

    我正在尝试像 Adob e Photoshop 中那样实现模糊遮罩 我在互联网上收集了很多信息 但我不确定我是否遗漏了一些东西 这是代码 void unsharpMask cv Mat img double amount double ra
  • 如何使用保存的 html 从 Gridstack 构建网格

    我一直在使用 Gridstack 动态创建网格 我使用以下函数来序列化网格及其数据 但我似乎不知道如何构建我的网格and它的内容来自它创建的 JSON 数组 我查过https github com troolee gridstack js
  • 在 Mapbox 中获取两点之间的路线?

    我最近在 React Native 上使用 Mapbox gl 而不是 Google 地图 我正在尝试添加一个功能 显示地图上从 A 点到 B 点的方向 OR use Mapbox 路线 API https docs mapbox com
  • EPPLUS 可清除一系列细胞的内容物

    我想使用 EPPLUS 清除一系列细胞 我尝试了下面的语法 但它给了我一个错误 你调用的对象是空的 使用 EPPLUS 清除细胞 A24 C36 内容物的正确方法是什么 ExcelPackage package new ExcelPacka
  • C# travis 的问题

    特拉维斯 西尔现在支持 C http docs travis ci com user languages csharp 测试版 尝试了 8 种不同的方法后 我找不到解决我的问题的方法 我有一个 ASP MVC 项目 travis 使用 mo
  • 如何使用 LIKE 运算符在 SQL Server 中进行此匹配?

    我正在尝试匹配价格字符串 例如 25 00 来查找相应的货币符号 例如 25 00 应与美元匹配 这已经很有效了 然而 当我输入 25 00 无货币符号 时 我在 CUP 上出现了不需要的匹配 我在 SQL Server 2012 中设置了
  • iOS 8 Today 小部件对齐问题

    这是我的故事板 我正在使用自动布局 而不是使用尺寸类别 When I ran it on iPhone 5s it works fine both portrait and landscape But when I ran it on iP
  • Office.js 使浏览器历史记录功能无效,破坏历史记录使用情况

    Office js 的官方版本可以在这里找到 https appsforoffice microsoft com lib 1 hosted office js 它包含以下代码行 window history replaceState nul
  • 当 Facebook 用户点击 FB Like 按钮时,我如何向他们发送电子邮件?

    用户点击我页面上的 Facebook Like 按钮后 我想自动向他们发送一封电子邮件 这可能吗 您不能强制用户连接您的应用程序并授予email单击 赞 按钮即可获得许可 不过你可以订阅edge create event http deve
  • 对列组应用函数

    我该如何使用apply或者一个相关的函数来创建一个新的数据框 其中包含一个非常大的数据框中每对列的行平均值的结果 我有一个可以输出的仪器n在大量样本上复制测量值 其中每个测量值都是一个向量 所有测量值都是相同长度的向量 我想计算每个样本的所
  • Angular - 如何查看过滤器结果数组以了解控制器的更改

    我有一个过滤器 可以通过 ng repeat 列表根据某些条件进行过滤 我如何查看由过滤服务创建的结果数组以了解控制器内部的更改 完整的问题和描述在这里角度工厂过滤器 无法将数据传递到过滤器 https stackoverflow com
  • 如何最小化最短路径树的总成本

    我有一个具有正边权重的有向无环图 它具有单个源和一组目标 距离源最远的顶点 我找到从源到每个目标的最短路径 其中一些路径重叠 我想要的是一个最短路径树 它可以最小化所有边上的权重总和 例如 考虑其中两个目标 假设所有边的权重相等 如果它们在