循环有向图中的最长路径,其边具有受限制的传递次数

问题描述

我有一个带循环的有向图。这个图最重要的部分是每条边都有可以通过的次数限制,之后它应该变成“不可用”。

我将如何找到最长的路径?任何信息或链接评论将不胜感激。谢谢!

解决方法

不幸的是,这个问题是NP-complete,这意味着不太可能存在“快速”算法(可以在多项式时间内解决每个实例的算法);您要么需要接受不能保证找到最佳解决方案的快速启发式算法,要么使用只能在合理时间内解决小实例的指数时间算法。

我将通过将 NP 完全问题 Hamiltonian Path in a Directed Graph (HP) 简化为您的问题来展示这一点。简而言之,这个想法是:如果存在某种算法可以“快速”解决问题的每个实例(意味着在多项式时间内),那么它也可以用作解决 HP 的每个实例的子程序 - - 这似乎不太可能,因为尽管进行了数十年的 CS 研究,但没有人知道如何在多项式时间内解决 HP(或任何 NP 完全问题)。

在HP中,给定一个有向图G = (V,E),任务是判断是否有一条路径可以访问所有|V|顶点恰好一次。给定此问题的一个实例,我们可以构建您的问题的实例 G',如下所示:

  • 将每个顶点v替换为三个顶点v_in、v_mid和v_out,将所有入边变为v成为入边到v_in,将所有出边从v变为出边从v_out;称这些边为“乌木边”(它们对应于 G 中的)。还要添加从 v_in 到 v_mid 和从 v_mid 到 v_out 的边;将这些边称为“天鹅绒边”(它们对应于 G 中的顶点)。
  • 为每条边分配 1 次通过限制。

当且仅当原始图 G 中存在哈密顿路径时,此图中存在长度为 3|V|-1 的路径:

“If”方向: 假设 G 包含一个哈密顿路径。这对应于构建图中的长度为 3|V|-1 的路径,该路径以一对天鹅绒边开始和结束,并在天鹅绒和乌木边之间交替使用 VVEVVE...EVV 模式。

“仅当”方向: 假设在构造的图中存在长度为 3|V|-1 的路径 P。每条边的通过限制为 1,因此每条边在此路径中最多出现一次。 P 必须具有以下边缘模式之一:

  1. VVEVVE...EVV
  2. VEVVE...EVVE
  3. EVVE...EVVEV

在每种情况下,P 至少遍历与 G 中每个顶点对应的两个天鹅绒边缘中的一个,因此对应于 G 中的哈密顿路径。