system: [SYSTEM]

user: 3. 多项式时间路由算法 在本节中，基于用于MCP多约束路径问题的扩展Dijkstra最短路径算法 [ 9 ]，提出了一种用于DC-MCP的多项式时间算法。首先，我们考虑初始化阶段。 每个节点 v i [ t ] 的 d ( v i [ t ] ， k ) 在 w -权值为 k 的约束下，对 w 2 -权值的最小化起着重要作用。 集合 Q 包含节点之间所有可能的对和 w -权值。在下面，我们会找到一个图 G 1 中的 s [ 1 ] t 0 [ 0 ] -路 P 满足 W 1 ( P ˜ ) 是在 w 2 ( P ) ≤ c 2 和 w ( P ) ≤ x 约束下的最小值。 此外，最小化 w 2 ( P ) 和 w ( P ) 也是必要的。例如图1，考虑展开图 G 1 对应到图 G 。设 c 1 = 5 ， c 2 = c 3 = x = 4 。注意，图 G 1 中存在一条路 P = 〈 v 1 [ 1 ] ， v 2 [ 2 ] ， v 1 [ 4 ] ， v 3 [ 5 ] ， t 0 [ 0 ] 〉 ， W 1 ( P ˜ ) = 4 < c 1 ， w 2 ( P ) = 4 ≤ c 2 和 w ( P ) = 4 ≤ x 。显然，由于工作进度的安排t为 ( 00001 ) ，故从s到t， P ˜ 有最小的延时。然而，因为 v 1 [ 1 ] ， v 1 [ 4 ] ∈ V ( P ) ，所以 P ˜ 不是图G中的一条st-可行路，此外，对于路 P ′ = 〈 v 1 [ 1 ] ， v 3 [ 5 ] ， t 0 [ 0 ] 〉 ， W 1 ( P ′ ˜ ) = W 1 ( P ˜ ) ， w 2 ( P ′ ) = 2 < w 2 ( P ) 和 w ( P ′ ) = 2 < w ( P ) ， P ′ ˜ 是一条可行路。 图1. 具有三个权值函数w 1 ， w 2 和w 3 的无向图 G = ( V ( G ) ， E ( G ) ) ，其中 V ( G ) = { v 1 ， v 2 ， v 3 } ， E ( G ) = { v 1 v 2 ， v 1 v 3 } 初始化算法之后，对于 G 1 中以 v i [ t ] = s [ 1 ] 和 k = 0 开头的所有边，我们使用Relax算法 [ 9 ]，如下所示。并且我们可以观察到，对于 V ( G ) 中的任何 v i ，都存在一个近似于 δ ( v i ) 的 d ( v i [ t ] ， k ) ，其中 δ ( v i ) 是从 s 到 v i 所有路径中 w 2 -权值小于 x 的 w -权值。 然后我们开发了一个构造时间展开图 G 1 中 s [ 1 ] t 0 [ 0 ] -路 P 的有效算法(见下面的DC-MCP算法)，并证明了路径 P ˜ 是定理3.1中 G 的可行路径。 通过DC-MCP算法，可以得到一个根为 s [ 1 ] 的有向树 T 。在步骤2~13中的if循环的每次迭代中，在if循环的 T 中添加一条有向边(参见步骤7~9)。对任意 v i [ t ] ∈ V ( T − s [ 1 ] ) ， T 中唯一的 s [ 1 ] v i [ t ] -路 P 1 有 s [ 1 ] 和 v i [ t ] 之间所有路径的最小 w 2 -权值。此外，该路径的 w -权值不大于 x ，并且在其 w 2 -权值最小时尽可能小。根据 G 1 的定义，很容易得到 W 1 ( P ˜ 1 ) = t 。结合步骤15~16，我们得到了步骤17返回的路径 P ，当 P 是从 s 到 t 的最小 w 2 -权重路时， W 1 ( P ˜ ) 也是最小的。 设 | V ( G ) | = n ， | E ( G ) | = m 。 | V ( G ′ 1 ) | = d n 且 | Q | = ( x + 1 ) | V ( G ′ 1 ) | = ( x + 1 ) d n 。因为 V ( T ) ⊆ V ( G ′ 1 ) ，步骤2和步骤5需要 O ( 2 | V ( G ′ 1 ) | ) 时间复杂度。步骤3~4的时间复杂度是 O ( 2 | Q | ) 。松弛算法需要 O ( 1 ) 时间。根据观察2.3，for循环(11~12行)最多有 | N G ′ 1 + ( v i [ t ] ) | ≤ | N G ( v i ) | ≤ | E ( G ) | 次迭代，所以步骤11~12的时间复杂度是 O ( m ) 。在2~13行中，每次执行if循环， E ( G ′ 1 ) \ E ( T ) 中的一条边将被加到集合 T 中。最多有 | E ( T ) | = | V ( T ) | − 1 < | V ( G ′ 1 ) | 次迭代。所以，步骤2~13需要 O ( d n ( 2 d n + 2 ( x + 1 ) d n + m ) ) = O ( x c 1 2 n 2 + c 1 m n ) 时间。步骤15的时间复杂度为 O ( x d ) 。因为 P ′ ˜ 是图 G 中的路(见定理3.1)，所以步骤16需要 O ( n ) 次。因此，总时间复杂度为 O ( x c 1 2 n 2 + c 1 m n ) = O ( x c 1 2 n 2 + c 1 n 3 ) 。 定理3.1. 假设 P 为DC-MCP算法得到的路径。则没有点 v ∈ V ( G ) 使得 v [ t ] ， v [ t 1 ] ∈ V ( P ) ，其中 t ， t 1 ∈ [ 1 ， d ] 。 证明：反证法。假设 u [ t ] 是路 P 的最后一个点使得存在 u [ t 1 ] ∈ V ( P ) ， t 1 < t 。设 t [ a ] 是 t 0 [ 0 ] 在路 P 中的前一个点，其中 a ∈ [ 1 ， d ] 。要注意的是 w 2 ( ( t [ a ] ， t 0 [ 0 ] ) ) = 0 。故 w 2 ( P ) = w 2 ( P ′ ) ，其中 P ′ = P − ( t [ a ] ， t 0 [ 0 ] ) 。设 P 1 = P [ u [ t ] ， t [ a ] ] 和 P ˜ 1 = 〈 u = u 0 ， u 1 ， ⋯ ， u m − 1 ， u m = t 〉 。 根据 P ˜ 的存在性，如果 d 尽可能的大，沿着路径 P ˜ ，对于任意 t ′ 0 ∈ [ 1 ， d ] 存在 1 < t ′ 0 < t ′ 1 < ⋯ < t ′ m ≤ d 使得 P 2 ( t ′ 0 ) = 〈 u 0 [ t ′ 0 ] ， u 1 [ t ′ 1 ] ， u 2 [ t ′ 2 ] ， … ， u m [ t ′ m ] 〉 是图 G 1 上的路， w 2 ( P 2 [ t ′ 0 ] ) = w 2 ( P 1 ) ， w ( P 2 [ t ′ 0 ] ) = w ( P 1 ) 。假设当 t ′ 0 = t 1 时 t ′ m = b 。则 P 3 = P [ s [ 1 ] ， u [ t 1 ] ] + P 2 ( t 1 ) 是一条 s [ 1 ] t [ b ] -路， w 2 ( P 3 ) = w 2 ( P [ s [ 1 ] ， u [ t 1 ] ] ) + w 2 ( P 2 ( t 1 ) ) = w 2 ( P [ s [ 1 ] ， u [ t 1 ] ] ) + w 2 ( P 1 ) < w 2 ( P ) ≤ c 2 . (3.1) 同样地， w ( P 3 ) < w ( P ) ≤ x . (3.2) 根据第15步，对任意 a ′ < a 和 k ∈ [ 0 ， x ] ，有 t a ′ = 0 或者 d ( t [ a ′ ] ， k ) > c 2 。因此， b ∈ [ a ， d ] 。目前， P 1 是一条 u [ t ] t [ a ] -路， P 2 ( t 1 ) 是一条 u [ t 1 ] t [ b ] -路。 情况1. b = a 。 在这种情况下， P 3 是 G 1 中一条 s [ 1 ] t [ a ] -路。根据公式(3.1)、(3.2)和DC-MCP算法的3~8步可知，与P相比， P 3 是一个更好的选择，所以P不在集合T中。矛盾。 情况2. b > a 。 注意 t 1 < t ， b > a 和 P ˜ 1 = P ˜ 2 ( t 1 ) ，可以看出路径 P 1 和 P 2 ( t 1 ) 之间至少有一个交集。 情况2.1. P 1 和 P 2 ( t 1 ) 至少有一个公共节点。 因为 b > a ，我们能够选择 u i u i + 1 ∈ E ( P ˜ 1 ) 使得 ( u i [ t 2 ] ， u i + 1 [ t 3 ] ) ∈ E ( P 1 ) 和 ( u i [ t 2 ] ， u i + 1 [ t 4 ] ) ∈ E ( P 2 ( t 1 ) ) ，其中 t 2 < t 3 < t 4 。则 u i t 2 = u i + 1 t 3 = u i + 1 t 4 = 1 。将此与 E ( G 1 ) 的定义结合起来，我们有 ( u i [ t 2 ] ， u i + 1 [ t 4 ] ) ∈ E ( P 2 ( t 1 ) ) ， ⌈ w 1 ( u i ， u i + 1 ) ⌉ > t 3 − t 2 。 因为 ( u i [ t 2 ] ， u i + 1 [ t 3 ] ) ∈ E ( P 1 ) ， ⌈ w 1 ( u i ， u i + 1 ) ⌉ ≤ t 3 − t 2 ，故产生矛盾。 情况2.2. P 1 和 P 2 ( t 1 ) 没有公共节点。 现在存在 u i u i + 1 ∈ E ( P ˜ 1 ) 满足 ( u i [ t 5 ] ， u i + 1 [ t 6 ] ) ∈ E ( P 2 ( t 1 ) ) 和 ( u i [ t 7 ] ， u i + 1 [ t 8 ] ) ∈ E ( P 1 ) ，其中 t 5 < t 7 < t 8 < t 6 。根据 E ( G 1 ) 的定义， u i t 5 = u i + 1 t 6 = u i t 7 = u i + 1 t 8 = 1 。在此基础上，因为 ( u i [ t 5 ] ， u i + 1 [ t 6 ] ) ∈ E ( G 1 ) ，我们有 ⌈ w 1 ( u i u i + 1 ) ⌉ > t 8 − t 5 > t 8 − t 7 。 Since ( u i [ t 7 ] ， u i + 1 [ t 8 ] ) ∈ E ( P 1 ) ， ⌈ w 1 ( u i u i + 1 ) ⌉ ≤ t 8 − t 7 ，故产生矛盾。 定理3.2. 如果P是通过DC-MCP算法获得的路，则 P ˜ 是LDC-MCP ( G ， s ， t ， w 1 ， w 2 ， w 3 ， c 1 ， c 2 ， c 3 ) 的一个解。 证明：因为P是通过DC-MCP算法获得的路，很容易看出 w ( P ) ≤ x 。从第15步开始， W 1 ( P ˜ ) 是在 w 2 ( P ) ≤ c 2 限制下的所有 s [ 1 ] t 0 [ 0 ] -路中权值最小的。所以 P 是MCP ( G 1 ， s [ 1 ] ， t 0 [ 0 ] ， w 2 ， w ， c 2 ， x ) 的一个解。根据定理2.7，P也是MCP ( G 1 ， s [ 1 ] ， t 0 [ 0 ] ， w 2 ， w 3 ， c 2 ， c 3 ) 的一个解。另外，观察2.5和定理3.1表明了 P ˜ 是图G中的一条可行路。因此，根据引理2.6， P ˜ 是DC-MCP ( G ， s ， t ， w 1 ， w 2 ， w 3 ， c 1 ， c 2 ， c 3 ) 的一个解。