最短的两条不相交路径;两个来源和两个目的地

2023-11-25

We're given an unweighted undirected graph G = (V, E) where |V| <= 40,000 and |E| <= 106. We're also given four vertices a, b, a', b'. Is there a way to find two node-disjoint paths a -> a' and b -> b' such that the sum of their lengths is minimum?
My first thought was to first find the shortest path a -> a', delete it from the graph, and then find the shortest path b -> b'. I don't think this greedy approach would work.

Note:在整个申请过程中,a and b是固定的,同时a' and b'每次查询都会发生变化,因此使用预计算来提供高效查询的解决方案将是更好的选择。另请注意,仅需要最小长度总和,而不是实际路径。

任何帮助、想法或建议将不胜感激。预先非常感谢!


这可以简化为最短边不相交路径问题:

  1. (可选)将图中的所有链折叠成单边。这会产生一个较小的加权图(如果原始图中存在任何链)。
  2. 通过用一对有向边替换每条边,将无向图转换为有向图。
  3. 将每个节点拆分为一对节点:一个仅具有原始节点的传入边,另一个仅具有其传出边。使用单个有向边连接每对节点。 (例如,节点c下图中应分为c1 and c2;现在每个路径都包含节点c原图中应该穿过边c1 -> c2在变换后的图中;这里x and y表示图中除节点外的所有节点c).

enter image description here enter image description here enter image description here

Now if a = b or a' = b',你会遇到与你的问题完全相同的问题上一个问题(这是最小成本流问题可以通过为每条边分配等于 1 的流容量,然后搜索 a 和 b 之间的最小成本流(其中 flow=2)来解决。如果a != b,您只需创建一个公共源节点并将两者连接起来a and b到它。如果a' != b',对公共目标节点执行相同的操作。

But if a != b and a' != b',最小成本流问题不适用。相反,这个问题可以解决为多商品流通问题.


我之前的(错误的)解决方案是连接两对(a, b) and (a', b')到公共源/目标节点,然后找到最小成本流。下图是这种方法的反例:

enter image description here

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

最短的两条不相交路径;两个来源和两个目的地 的相关文章

  • 这个函数(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 但不是
  • 我应该对算法使用递归还是记忆化?

    如果我可以选择使用递归或记忆来解决问题 我应该使用哪一个 换句话说 如果它们都是可行的解决方案 因为它们提供了正确的输出并且可以在我正在使用的代码中合理地表达 那么我什么时候会使用其中一个而不是另一个 它们并不相互排斥 您可以同时使用它们
  • 总和不小于 key 的数组的最小子集

    给定一个数组 假设为非负整数 我们需要找到最小长度子集 使得元素之和不小于 K K 是作为输入提供的另一个整数 是否有可能找到时间复杂度为 O n n 的大 oh 的解决方案 我目前的想法是这样的 我们可以在 O n log n 中对数组进
  • 方程“a + bx = c + dy”的积分解

    在等式中a bx c dy 所有变量都是整数 a b c and d是已知的 我如何找到整体解决方案x and y 如果我的想法是正确的 将会有无限多个解 由最小公倍数分隔b and d 但我只需要一个解决方案 我可以计算其余的 这是一个例
  • 如何计算 3D Morton 数(交织 3 个整数的位)

    我正在寻找一种快速计算 3D Morton 数的方法 这个网站 http www graphics stanford edu seander bithacks html InterleaveBMN有一个基于幻数的技巧来处理 2D Morto
  • 如何在 C# 中计算 power-of?

    我不太擅长数学 而且 C 似乎没有提供幂函数 所以我想知道是否有人知道我将如何进行这样的计算 var dimensions 100 100 100 00 3 00 See Math Pow http msdn microsoft com e
  • c# GDI边缘空白检测算法

    我正在寻找解决方案检测边缘空白c 位图 来自 c 托管 GDI 库 图像将是透明的 or white 大多数 400x 图片的尺寸为 8000x8000px 边缘周围有大约 2000px 的空白 找出边缘的最有效方法是什么 x y 高度和宽
  • 测试 python Counter 是否包含在另一个 Counter 中

    如何测试是否是pythonCounter https docs python org 2 library collections html collections Counter is 包含在另一个中使用以下定义 柜台a包含在计数器中b当且
  • 连接红黑树

    OCaml 标准库有一个很棒的Set使用非常有效的分而治之算法来计算的实现union两套 我相信它会从一组中获取整个子树 而不仅仅是单个元素 并将它们插入到另一组中 并在必要时重新平衡 我想知道这是否需要 OCaml 使用的 AVL 树中保
  • C 中的浮点运算是否具有结合律?

    加法在数学上具有结合律 a b c a b c 在一般情况下 此属性不适用于浮点数 因为它们表示有限精度的值 作为优化的一部分 从 C 程序生成机器代码时 编译器是否允许进行上述替换 C标准中到底在哪里说的 不允许编译器执行 优化 这将导致
  • String.contains() 的时间复杂度

    String contains 的时间复杂度是多少 假设 n 是与另一个长度为 k 的字符串进行比较的字符串的长度 如果不知道您感兴趣的 String contains 的实际实现 就没有答案 或者你打算使用什么算法 一个完全幼稚的实现可能
  • 我如何开始玩五子棋?

    我读到Gomoku http en wikipedia org wiki Gomoku它可以使用 Minimax 和 Alpha Beta 剪枝算法来实现 所以 我阅读了这些算法 现在了解了游戏将如何解决 但是当我坐下来编写代码时 我面临着
  • 检查一个数是否是完全平方数

    如何检查一个数是否是完全平方数 速度并不重要 目前 只是工作 See also Integer square root in python https stackoverflow com questions 15390807 依赖任何浮点计
  • 占据花车的地板

    我发现了两种在 Python 中占据发言权的方法 3 1415 1 and import math math floor 3 1415 第一种方法的问题是它返回一个浮点数 即3 0 第二种方法感觉很笨拙而且太长 在 Python 中是否有替
  • Java 中查看 ArrayList 是否包含对象的最有效方法

    我有一个 Java 对象的 ArrayList 这些对象有四个字段 我用其中两个字段来将对象视为与另一个对象相等 我正在寻找最有效的方法 给定这两个字段 以查看数组是否包含该对象 问题在于这些类是基于 XSD 对象生成的 因此我无法修改类本
  • 在 Python 中从 Excel 复制 YEARFRAC() 函数

    因此 我使用 python 来自动执行一些必须在 Excel 中执行的重复任务 我需要做的计算之一需要使用yearfrac 这在Python中被复制了吗 I found this https lists oasis open org arc
  • 添加边后更新最大流量

    考虑我们有一个网络流量 并使用 Edmond Karp 算法 我们已经拥有网络上的最大流量 现在 如果我们向网络添加任意边 具有一定容量 更新最大流量的最佳方法是什么 我正在考虑更新关于新边缘的残差网络 并再次寻找增强路径 直到找到新的最大
  • 从给定的项目列表创建子列表

    我首先要说的是以下问题不是为了家庭作业目的即使因为我几个月前就完成了软件工程师的工作 无论如何 今天我正在工作 一位朋友向我询问了这个奇怪的排序问题 我有一个包含 1000 行的列表 每行代表一个数字 我想创建 10 个子列表 每个子列表都
  • matlab中求和函数句柄

    Hi我试图对两个函数句柄求和 但它不起作用 例如 y1 x x x y2 x x x 3 x y3 y1 y2 我收到的错误是 对于 function handle 类型的输入参数 未定义函数或方法 plus 这只是一个小例子 实际上我实际
  • 最小化代表性整数的误差之和

    Given n integers between 0 10000 as D1 D2 Dn where there may be duplicates and n can be huge I want to find k distinct r

随机推荐

  • 将向量值相乘的最简单方法?

    我有一个愚蠢的问题 大约 10 年前 我上了一堂向量数学课 我发誓我记得一个可以让我将向量的值相乘的运算 如下所示 Vector3 v1 new Vector3 1 0 2 Vector3 v2 new Vector3 5 5 5 Vect
  • GCC 的调试堆/STL 调试等效吗?

    我计划更多地使用 GCC Linux 和 Windows 我想知道是否有相当于 MSVC 的工具调试堆和STL检查适用于 GCC CRT 和 STL 我已经了解 Valgrind 等工具 但我正在寻找库中内置的东西 我不太熟悉调试堆和 ST
  • PHP preg_match 仅返回第一个匹配项

    第一个问题是这样的 我在用http www phpliveregex com 检查我的正则表达式是否正确 它找到多个匹配行 我正在做这个正则表达式 lines explode n text foreach lines as line mat
  • hive 中的分区列

    我必须对表进行分区hive有一列也是表的一部分 For eg Table 员工 Columns 员工 ID 员工姓名 员工工资 我必须使用employeeSalary 对表进行分区 所以我写了以下查询 CREATE TABLE employ
  • 我可以用代码替换 jaxb.properties 吗?

    我正在使用一些非标准扩展来自 EclipseLink 的 JAXB 实现 为了启用该实现 我必须使用 jaxb properties 来配置它 效果很好 然而 由于构建错误 属性文件没有包含在正确的位置 导致使用默认的 JAXB 它没有任何
  • sqlalchemy 和 postgresql 自动增量

    我创建了一个带有主键和序列的表 但通过调试广告稍后查看表设计 序列并未应用 只是创建 from sqlalchemy import create engine MetaData Table Column Integer String Boo
  • 如何在 ConEmu + Git Bash 中正确启用 ANSI 颜色?

    我在用着Git Bash with ConEmu让它看起来很酷 然而 在安装 Composer 后 颜色似乎被转义了 所以 Git Bash 并不支持所有颜色 检查 AnsiColors256 ans 文件 经过大量谷歌搜索后 我仍然没有找
  • sizeof(enum) == sizeof(int) 总是吗?

    sizeof enum sizeof int 总是吗 或者它依赖于编译器 这是错误的说法吗 因为编译器针对字长 内存对齐 进行了优化 即 y int 是特定编译器上的字大小 这是否意味着如果我使用枚举 就不会产生处理惩罚 因为它们是字对齐的
  • 用 Python 绘制随机过程

    假设我有一个随机过程定义在 0 N e g N 50 对于每个位置 我都有几个样本 例如m 100样本 代表我在每个位置的抽样分布 看待这个问题的一种方法是将其视为大小的 numpy 2D 数组 m N 我怎样才能直观地绘制出这个matpl
  • mongoDB。读取,根据oplog搜索时间戳

    gt db oplog rs find ts 1 sort natural 1 ts Timestamp 1406185666 1 ts Timestamp 1406180043 1 ts Timestamp 1406180033 1 ts
  • Flutter Doctor 在可执行文件中给出错误的 Cpu 类型

    我正在使用 Mac mini MacOs monterey 和 m1 芯片 当尝试设置颤振时 出现错误 命令 颤动医生 o p Users admin Desktop flutter bin internal shared sh 第229行
  • 文件“docker.sock”的用途是什么?

    我试图了解安装的实际原因docker sock in docker compose yml文件 是为了自动发现吗 volumes var run docker sock var run docker sock docker sock是 Do
  • Npgsql 与实体框架集成 Code First

    我有一个项目使用最新版本的 EF CF 以及 PostgreSQL 和 Npgsql 我的模型看起来像 Table mytable public class MyTable Column id public int Id get set C
  • 我应该始终返回 IEnumerable 而不是 IList 吗?

    当我编写返回一组项目的 DAL 或其他代码时 我是否应该始终使用 return 语句 public IEnumerable
  • 在 mutate 中使用引号:mutate_(.dots = ...) 的替代方案

    我想将不同的函数应用于小标题中的同一列 这些函数存储在字符串中 我曾经这样做过mutate 和 dots像这样的论点 library dplyr myfuns lt c f1 a 2 f2 exp a f3 sqrt a tibble a
  • 正则表达式搜索引擎[关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 有没有一个搜索引擎可以让我通过正则表达式进行搜索 谷歌代码搜索允许您使用正则表达式进行搜索 据我所知 不存在这样的用于一般搜索的搜索引擎
  • 删除所有内容但保持匹配

    如果我有一个很大的文本 并且我需要仅保留匹配的内容 我该怎么做 例如 如果我有这样的文本 asdas8Isd8m8Td8r asdia8y8dasd asd8is88n8gd asd8t8od8lsdas as9ea9ad8r1n88r8e
  • 如何在 Swift 中为 UIImageView 对象分配一个操作

    我正在尝试分配一个UIImageView当用户点击它时执行操作 我知道如何为UIButton 但是我怎么能模仿一个人的相同行为呢 UIButton 但使用UIImageView 你需要一个UITapGestureRecognizer 要设置
  • 正则表达式匹配重复字符

    我正在尝试创建一个匹配字符串的正则表达式 如果该字符串连续有 3 个或更多重复字符 例如 aaaaaa testtttttt otttttter 我已经尝试过以下方法 regexp Compile A Za z0 9 3 regexp Co
  • 最短的两条不相交路径;两个来源和两个目的地

    We re given an unweighted undirected graph G V E where V lt 40 000 and E lt 106 We re also given four vertices a b a b I