问题的提出 Report issue for preceding element
在 MCPP 实例中,我们给定了一个相连的二维网格地形图 G = ( V g , E g ) 𝐺 subscript 𝑉 𝑔 subscript 𝐸 𝑔 G=(V_{g},E_{g}) italic_G = ( italic_V start_POSTSUBSCRIPT italic_g end_POSTSUBSCRIPT , italic_E start_POSTSUBSCRIPT italic_g end_POSTSUBSCRIPT ) 及其相应的分解图 D = ( V d , E d ) 𝐷 subscript 𝑉 𝑑 subscript 𝐸 𝑑 D=(V_{d},E_{d}) italic_D = ( italic_V start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT , italic_E start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT ) ,其中 V g subscript 𝑉 𝑔 V_{g} italic_V start_POSTSUBSCRIPT italic_g end_POSTSUBSCRIPT 中的每个地形顶点在 V d subscript 𝑉 𝑑 V_{d} italic_V start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT 中被分解为四个相邻的小顶点,如图 1-(a) 所示。为清楚起见,我们用 δ v ∈ V g subscript 𝛿 𝑣 subscript 𝑉 𝑔 \delta_{v}\in V_{g} italic_δ start_POSTSUBSCRIPT italic_v end_POSTSUBSCRIPT ∈ italic_V start_POSTSUBSCRIPT italic_g end_POSTSUBSCRIPT 表示分解后的 v ∈ V d 𝑣 subscript 𝑉 𝑑 v\in V_{d} italic_v ∈ italic_V start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT 的相应地形顶点,用 ε = ( δ u , δ v ) ∈ E g 𝜀 subscript 𝛿 𝑢 subscript 𝛿 𝑣 subscript 𝐸 𝑔 \varepsilon=(\delta_{u},\delta_{v})\in E_{g} italic_ε = ( italic_δ start_POSTSUBSCRIPT italic_u end_POSTSUBSCRIPT , italic_δ start_POSTSUBSCRIPT italic_v end_POSTSUBSCRIPT ) ∈ italic_E start_POSTSUBSCRIPT italic_g end_POSTSUBSCRIPT 表示连接 δ u subscript 𝛿 𝑢 \delta_{u} italic_δ start_POSTSUBSCRIPT italic_u end_POSTSUBSCRIPT 和 δ v subscript 𝛿 𝑣 \delta_{v} italic_δ start_POSTSUBSCRIPT italic_v end_POSTSUBSCRIPT 的边。每个 ε ∈ E g 𝜀 subscript 𝐸 𝑔 \varepsilon\in E_{g} italic_ε ∈ italic_E start_POSTSUBSCRIPT italic_g end_POSTSUBSCRIPT 的权重为 w ε subscript 𝑤 𝜀 w_{\varepsilon} italic_w start_POSTSUBSCRIPT italic_ε end_POSTSUBSCRIPT 。请注意,加权边的定义不同于考虑加权顶点的文献(Zheng 等人,2010 年),但是通过将每条边的权重平均分配给其两个端点顶点,将加权边转换为加权顶点是非常方便的。在这种情况下,每个 δ v ∈ V g subscript 𝛿 𝑣 subscript 𝑉 𝑔 \delta_{v}\in V_{g} italic_δ start_POSTSUBSCRIPT italic_v end_POSTSUBSCRIPT ∈ italic_V start_POSTSUBSCRIPT italic_g end_POSTSUBSCRIPT 都有 w δ v = ∑ ε ∼ δ v w ε subscript 𝑤 subscript 𝛿 𝑣 subscript similar-to 𝜀 subscript 𝛿 𝑣 subscript 𝑤 𝜀 w_{\delta_{v}}=\sum_{\varepsilon\sim{\delta_{v}}}w_{\varepsilon} italic_w start_POSTSUBSCRIPT italic_δ start_POSTSUBSCRIPT italic_v end_POSTSUBSCRIPT end_POSTSUBSCRIPT = ∑ start_POSTSUBSCRIPT italic_ε ∼ italic_δ start_POSTSUBSCRIPT italic_v end_POSTSUBSCRIPT end_POSTSUBSCRIPT italic_w start_POSTSUBSCRIPT italic_ε end_POSTSUBSCRIPT ,其中 ε ∼ δ v similar-to 𝜀 subscript 𝛿 𝑣 \varepsilon\sim\delta_{v} italic_ε ∼ italic_δ start_POSTSUBSCRIPT italic_v end_POSTSUBSCRIPT 表示 δ v subscript 𝛿 𝑣 \delta_{v} italic_δ start_POSTSUBSCRIPT italic_v end_POSTSUBSCRIPT 是 ε 𝜀 \varepsilon italic_ε 的端点。这样, D 𝐷 D italic_D 的每条边 e = ( u , v ) ∈ E d 𝑒 𝑢 𝑣 subscript 𝐸 𝑑 e=(u,v)\in E_{d} italic_e = ( italic_u , italic_v ) ∈ italic_E start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT 的权重 w e = 1 4 ⋅ 1 2 ⋅ [ ∑ ε ∼ δ u w ε + ∑ ε ∼ δ v w ε ] subscript 𝑤 𝑒 ⋅ 1 4 1 2 delimited-[] subscript similar-to 𝜀 subscript 𝛿 𝑢 subscript 𝑤 𝜀 subscript similar-to 𝜀 subscript 𝛿 𝑣 subscript 𝑤 𝜀 w_{e}=\frac{1}{4}\cdot\frac{1}{2}\cdot\left[\sum_{\varepsilon\sim\delta_{u}}w_%
{\varepsilon}+\sum_{\varepsilon\sim\delta_{v}}w_{\varepsilon}\right] italic_w start_POSTSUBSCRIPT italic_e end_POSTSUBSCRIPT = divide start_ARG 1 end_ARG start_ARG 4 end_ARG ⋅ divide start_ARG 1 end_ARG start_ARG 2 end_ARG ⋅ [ ∑ start_POSTSUBSCRIPT italic_ε ∼ italic_δ start_POSTSUBSCRIPT italic_u end_POSTSUBSCRIPT end_POSTSUBSCRIPT italic_w start_POSTSUBSCRIPT italic_ε end_POSTSUBSCRIPT + ∑ start_POSTSUBSCRIPT italic_ε ∼ italic_δ start_POSTSUBSCRIPT italic_v end_POSTSUBSCRIPT end_POSTSUBSCRIPT italic_w start_POSTSUBSCRIPT italic_ε end_POSTSUBSCRIPT ] 就被定义为将每条 δ ∈ V g 𝛿 subscript 𝑉 𝑔 \delta\in V_{g} italic_δ ∈ italic_V start_POSTSUBSCRIPT italic_g end_POSTSUBSCRIPT 的权重 w δ subscript 𝑤 𝛿 w_{\delta} italic_w start_POSTSUBSCRIPT italic_δ end_POSTSUBSCRIPT 平均分配给 w δ / 4 subscript 𝑤 𝛿 4 w_{\delta}/4 italic_w start_POSTSUBSCRIPT italic_δ end_POSTSUBSCRIPT / 4 的四个分解顶点(Tang 和 Ma,2023 年)。
Report issue for preceding element
对于 D 𝐷 D italic_D 上的任意路径 π = ( e 1 , e 2 , … , e | π | ) 𝜋 subscript 𝑒 1 subscript 𝑒 2 … subscript 𝑒 𝜋 \pi=(e_{1},e_{2},...,e_{|\pi|}) italic_π = ( italic_e start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT , italic_e start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT , … , italic_e start_POSTSUBSCRIPT | italic_π | end_POSTSUBSCRIPT ) ,其中每个 e i ∈ E d subscript 𝑒 𝑖 subscript 𝐸 𝑑 e_{i}\in E_{d} italic_e start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT ∈ italic_E start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT ,我们将其成本定义为 c ( π ) = ∑ i = 1 | π | w e i 𝑐 𝜋 superscript subscript 𝑖 1 𝜋 subscript 𝑤 subscript 𝑒 𝑖 c(\pi)=\sum_{i=1}^{|\pi|}w_{e_{i}} italic_c ( italic_π ) = ∑ start_POSTSUBSCRIPT italic_i = 1 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT | italic_π | end_POSTSUPERSCRIPT italic_w start_POSTSUBSCRIPT italic_e start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT end_POSTSUBSCRIPT 。给定一组 I = { 1 , 2 , … , k } 𝐼 1 2 … 𝑘 I=\{1,2,...,k\} italic_I = { 1 , 2 , … , italic_k } 机器人和一组 R = { r i } i ∈ I ⊆ V d 𝑅 subscript subscript 𝑟 𝑖 𝑖 𝐼 subscript 𝑉 𝑑 R=\{r_{i}\}_{i\in I}\subseteq V_{d} italic_R = { italic_r start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT } start_POSTSUBSCRIPT italic_i ∈ italic_I end_POSTSUBSCRIPT ⊆ italic_V start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT 初始根顶点,基于图的 MCPP 问题是找到一组 Π = { π i } i ∈ I Π subscript subscript 𝜋 𝑖 𝑖 𝐼 \Pi=\{\pi_{i}\}_{i\in I} roman_Π = { italic_π start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT } start_POSTSUBSCRIPT italic_i ∈ italic_I end_POSTSUBSCRIPT 的 k 𝑘 k italic_k 路径,使得每个 v ∈ V d 𝑣 subscript 𝑉 𝑑 v\in V_{d} italic_v ∈ italic_V start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT 至少被一条覆盖路径访问以实现完全覆盖,且每个 π i subscript 𝜋 𝑖 \pi_{i} italic_π start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT 在 r i subscript 𝑟 𝑖 r_{i} italic_r start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT 开始和结束。解决方案的质量是通过跨度 τ = max { c ( π 1 ) , c ( π 2 ) , … , c ( π k ) } 𝜏 𝑐 subscript 𝜋 1 𝑐 subscript 𝜋 2 … 𝑐 subscript 𝜋 𝑘 \tau=\max\{c(\pi_{1}),c(\pi_{2}),...,c(\pi_{k})\} italic_τ = roman_max { italic_c ( italic_π start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ) , italic_c ( italic_π start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT ) , … , italic_c ( italic_π start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT ) } 来衡量的。
Report issue for preceding element
符号:我们使用元组 ( G , D , R ) 𝐺 𝐷 𝑅 (G,D,R) ( italic_G , italic_D , italic_R ) 来表示 MCPP 实例。对于每个机器人 i ∈ I 𝑖 𝐼 i\in I italic_i ∈ italic_I ,我们区分其对应子图 D i = ( V d , i , E d , i ) subscript 𝐷 𝑖 subscript 𝑉 𝑑 𝑖
subscript 𝐸 𝑑 𝑖
D_{i}=(V_{d,i},E_{d,i}) italic_D start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT = ( italic_V start_POSTSUBSCRIPT italic_d , italic_i end_POSTSUBSCRIPT , italic_E start_POSTSUBSCRIPT italic_d , italic_i end_POSTSUBSCRIPT ) 的 D 𝐷 D italic_D 和其对应子图 G i = ( V g , i , E g , i ) subscript 𝐺 𝑖 subscript 𝑉 𝑔 𝑖
subscript 𝐸 𝑔 𝑖
G_{i}=(V_{g,i},E_{g,i}) italic_G start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT = ( italic_V start_POSTSUBSCRIPT italic_g , italic_i end_POSTSUBSCRIPT , italic_E start_POSTSUBSCRIPT italic_g , italic_i end_POSTSUBSCRIPT ) 的 G 𝐺 G italic_G 。
Report issue for preceding element
扩展-STC Report issue for preceding element
在本节中,我们将介绍新的扩展地形图(ESTC)范式,以解决不完整地形图的覆盖问题。我们的定义是,如果 δ v ∈ V g subscript 𝛿 𝑣 subscript 𝑉 𝑔 \delta_{v}\in V_{g} italic_δ start_POSTSUBSCRIPT italic_v end_POSTSUBSCRIPT ∈ italic_V start_POSTSUBSCRIPT italic_g end_POSTSUBSCRIPT 的四个分解顶点都出现在 V d subscript 𝑉 𝑑 V_{d} italic_V start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT 中,则 是完整的,否则是不完整的。如果一个地形图 G 𝐺 G italic_G 的所有顶点都是完整的,那么它就是完整的,否则就是不完整的。STC 只适用于完整地形图,因为它依赖于环绕 G 𝐺 G italic_G 的跨边。如图 1-(c)(d)所示,STC 的这一限制也使得基于 STC 的 MCPP 算法(Tang 和 Ma 2023)即使在完整地形图上也无法找到好的解决方案。在本文中,我们的重点是覆盖一个连通但可能不完整的分解图,因为覆盖一个不连通的分解图只需要在其每个连通的组成部分中增加一个机器人。
Report issue for preceding element
为了生成通过不完整地形顶点的覆盖路径,我们提出的 ESTC 范例巧妙地将 Full-STC(Gabriely 和 Rimon,2002 年)的路径变形程序集成到 STC 的离线计算中。Full-STC 专为未知地形图上的在线(单机器人)CPP 而设计。它可以应用于不完整地形图,但对于已知地形图上的 CPP 实例来说则不是最佳选择,因为它没有考虑不同生成树所产生的不同路径成本。图 2 举例说明了 Full-STC 的次优性。
Report issue for preceding element
图 2:具有根顶点(黑色星形)和不完整地形顶点(黄色单元格)的 CPP 实例,其中 STC 没有完全覆盖。完全 STC 是次优的,有不理想的路线(红圈区域),而根据增强地形图 G ′ superscript 𝐺 ′ G^{\prime} italic_G start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT ,ESTC 是最优的。
Report issue for preceding element
与 Full-STC 一样,ESTC 也在增强地形图 G ′ superscript 𝐺 ′ G^{\prime} italic_G start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT 上运行,其中 G 𝐺 G italic_G 中的一些边在 G ′ superscript 𝐺 ′ G^{\prime} italic_G start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT 中被移除,以反映其地形顶点之间的连通性。具体来说,如果地形顶点 δ u subscript 𝛿 𝑢 \delta_{u} italic_δ start_POSTSUBSCRIPT italic_u end_POSTSUBSCRIPT 的每个分解顶点 u 𝑢 u italic_u 与地形顶点 δ v subscript 𝛿 𝑣 \delta_{v} italic_δ start_POSTSUBSCRIPT italic_v end_POSTSUBSCRIPT 的每个分解顶点 v 𝑣 v italic_v 不相邻,则在 G ′ superscript 𝐺 ′ G^{\prime} italic_G start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT 中删除边 ε = ( δ u , δ v ) ∈ E g 𝜀 subscript 𝛿 𝑢 subscript 𝛿 𝑣 subscript 𝐸 𝑔 \varepsilon=(\delta_{u},\delta_{v})\in E_{g} italic_ε = ( italic_δ start_POSTSUBSCRIPT italic_u end_POSTSUBSCRIPT , italic_δ start_POSTSUBSCRIPT italic_v end_POSTSUBSCRIPT ) ∈ italic_E start_POSTSUBSCRIPT italic_g end_POSTSUBSCRIPT 。一种特殊情况是,每个不完整的地形顶点 δ ∈ V g 𝛿 subscript 𝑉 𝑔 \delta\in V_{g} italic_δ ∈ italic_V start_POSTSUBSCRIPT italic_g end_POSTSUBSCRIPT 只有两个对角相对的分解顶点,在 G ′ superscript 𝐺 ′ G^{\prime} italic_G start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT 中会被两个不相邻的地形顶点取代,因为它的两个分解顶点是不相邻的。与 Full-STC 不同,ESTC 考虑了不均匀的边权重。如果 δ u subscript 𝛿 𝑢 \delta_{u} italic_δ start_POSTSUBSCRIPT italic_u end_POSTSUBSCRIPT 和 δ v subscript 𝛿 𝑣 \delta_{v} italic_δ start_POSTSUBSCRIPT italic_v end_POSTSUBSCRIPT 都是完整的,则边 ε = ( δ u , δ v ) 𝜀 subscript 𝛿 𝑢 subscript 𝛿 𝑣 \varepsilon=(\delta_{u},\delta_{v}) italic_ε = ( italic_δ start_POSTSUBSCRIPT italic_u end_POSTSUBSCRIPT , italic_δ start_POSTSUBSCRIPT italic_v end_POSTSUBSCRIPT ) 的权重与 G 𝐺 G italic_G 中的权重相同。否则, ε 𝜀 \varepsilon italic_ε 的操作边权重为
Report issue for preceding element
w max ⋅ 1 2 ⋅ ( ∑ ε ∼ δ u w ε + ∑ ε ∼ δ v w ε ) ⋅ subscript 𝑤 1 2 subscript similar-to 𝜀 subscript 𝛿 𝑢 subscript 𝑤 𝜀 subscript similar-to 𝜀 subscript 𝛿 𝑣 subscript 𝑤 𝜀 \displaystyle w_{\max}\cdot\frac{1}{2}\cdot\left({\textstyle\sum_{\varepsilon%
\sim\delta_{u}}w_{\varepsilon}+\sum_{\varepsilon\sim\delta_{v}}w_{\varepsilon}%
}\right) italic_w start_POSTSUBSCRIPT roman_max end_POSTSUBSCRIPT ⋅ divide start_ARG 1 end_ARG start_ARG 2 end_ARG ⋅ ( ∑ start_POSTSUBSCRIPT italic_ε ∼ italic_δ start_POSTSUBSCRIPT italic_u end_POSTSUBSCRIPT end_POSTSUBSCRIPT italic_w start_POSTSUBSCRIPT italic_ε end_POSTSUBSCRIPT + ∑ start_POSTSUBSCRIPT italic_ε ∼ italic_δ start_POSTSUBSCRIPT italic_v end_POSTSUBSCRIPT end_POSTSUBSCRIPT italic_w start_POSTSUBSCRIPT italic_ε end_POSTSUBSCRIPT )
(1)
其中 w max subscript 𝑤 w_{\max} italic_w start_POSTSUBSCRIPT roman_max end_POSTSUBSCRIPT 是 E g subscript 𝐸 𝑔 E_{g} italic_E start_POSTSUBSCRIPT italic_g end_POSTSUBSCRIPT 的最大边权重,优先使用连接完整地形顶点的边。图 2 显示了增强地形图 G ′ superscript 𝐺 ′ G^{\prime} italic_G start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT 的一个示例。
Report issue for preceding element
根据构造, G ′ superscript 𝐺 ′ G^{\prime} italic_G start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT 是相连的 D 𝐷 D italic_D 。然后,ESTC 在 G ′ superscript 𝐺 ′ G^{\prime} italic_G start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT 而不是 G 𝐺 G italic_G 上建立最小生成树(MST),并使用与 Full-STC(Gabriely 和 Rimon,2002 年)中定义的相同路径变形规则来通过不完整顶点。从本质上讲,只要由于分解顶点之间的非相邻关系而无法沿右侧移动,该规则就会重新规划生成边左侧的覆盖路径。式(1)中操纵的边权重优先使每个不完整顶点成为 MST 的叶子,这可以防止一些分解顶点在路径变形中因重定向而重复覆盖,从而提高 CPP 解的质量(见图 2)。根据(Gabriely 和 Rimon,2002 年)中定理 3.1 证明中使用的论点,ESTC 保证生成的路径能覆盖连通分解图 D 𝐷 D italic_D 中的所有顶点,因为该论点不受添加边权重和边优先级的影响。
Report issue for preceding element
在 MCPP 中用 ESTC 取代 STC:回想一下,对于 MCPP 实例 ( G , D , R ) 𝐺 𝐷 𝑅 (G,D,R) ( italic_G , italic_D , italic_R ) ,基于 STC 的 MCPP 算法首先构建 G 𝐺 G italic_G 的 k 𝑘 k italic_k 树,然后应用 STC 生成覆盖路径。因此,这些算法只能在具有完整顶点的地形图上生成每条覆盖路径,而这在大多数情况下都是次优的。我们建议将 ESTC 扩展到 MCPP,具体如下。首先,我们生成一组 { D i = ( V d , i , E d , i ) } i ∈ I subscript subscript 𝐷 𝑖 subscript 𝑉 𝑑 𝑖
subscript 𝐸 𝑑 𝑖
𝑖 𝐼 \{D_{i}=(V_{d,i},E_{d,i})\}_{i\in I} { italic_D start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT = ( italic_V start_POSTSUBSCRIPT italic_d , italic_i end_POSTSUBSCRIPT , italic_E start_POSTSUBSCRIPT italic_d , italic_i end_POSTSUBSCRIPT ) } start_POSTSUBSCRIPT italic_i ∈ italic_I end_POSTSUBSCRIPT 的 k 𝑘 k italic_k 连接子图 D 𝐷 D italic_D 。每个 D i subscript 𝐷 𝑖 D_{i} italic_D start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT 都会引起 G 𝐺 G italic_G 的一个子图 G i subscript 𝐺 𝑖 G_{i} italic_G start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT ,该子图可能是不完整的。然后,我们按照上述方法求解每个子 CPP 实例 ( G i subscript 𝐺 𝑖 G_{i} italic_G start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT , D i subscript 𝐷 𝑖 D_{i} italic_D start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT , r i subscript 𝑟 𝑖 r_{i} italic_r start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT ) ,在增强的 G i ′ superscript subscript 𝐺 𝑖 ′ G_{i}^{\prime} italic_G start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT 上构建 MST,生成每个机器人的覆盖路径(示例见图 1-(d))。下面的定理说明了完全覆盖的充分条件。
Report issue for preceding element
定理 1 .
Report issue for preceding element
如果 D i subscript 𝐷 𝑖 D_{i} italic_D start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT 与所有 i 𝑖 i italic_i 的 ⋃ i ∈ I V d , i = V d subscript 𝑖 𝐼 subscript 𝑉 𝑑 𝑖
subscript 𝑉 𝑑 \bigcup_{i\in I}V_{d,i}=V_{d} ⋃ start_POSTSUBSCRIPT italic_i ∈ italic_I end_POSTSUBSCRIPT italic_V start_POSTSUBSCRIPT italic_d , italic_i end_POSTSUBSCRIPT = italic_V start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT 相连,则可保证 ESTC 实现完全覆盖。
Report issue for preceding element
证明 1 .
Report issue for preceding element
鉴于 D i subscript 𝐷 𝑖 D_{i} italic_D start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT 是连通的,ESTC 可以保证生成一条覆盖其所有顶点的路径,这与(Gabriely 和 Rimon,2002 年)中证明 Lemma 3.1 时使用的论证类似。由于 ⋃ i ∈ I V d , i = V d subscript 𝑖 𝐼 subscript 𝑉 𝑑 𝑖
subscript 𝑉 𝑑 \bigcup_{i\in I}V_{d,i}=V_{d} ⋃ start_POSTSUBSCRIPT italic_i ∈ italic_I end_POSTSUBSCRIPT italic_V start_POSTSUBSCRIPT italic_d , italic_i end_POSTSUBSCRIPT = italic_V start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT ,为所有 D i subscript 𝐷 𝑖 D_{i} italic_D start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT 生成的覆盖路径共同覆盖了 D 𝐷 D italic_D 的所有顶点。
Report issue for preceding element
我们的 LS-MCPP 框架的设计基于上述定理所阐述的原则。其目的是为机器人搜索一组良好的子图 D i subscript 𝐷 𝑖 D_{i} italic_D start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT ,每个子图都是连通的,其所有顶点的联合就是顶点集 D 𝐷 D italic_D ,以确保完全覆盖。
Report issue for preceding element
边界编辑操作符 Report issue for preceding element
在本节中,我们将介绍三种边界编辑算子:增长算子、重复算子和交换算子。这些操作符旨在修改每个子图 D i subscript 𝐷 𝑖 D_{i} italic_D start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT 的边界,包括添加或删除顶点。我们将重复集 V + = { v ∈ V d | n v > 1 } superscript 𝑉 conditional-set 𝑣 subscript 𝑉 𝑑 subscript 𝑛 𝑣 1 V^{+}=\{v\in V_{d}\,|\,n_{v}>1\} italic_V start_POSTSUPERSCRIPT + end_POSTSUPERSCRIPT = { italic_v ∈ italic_V start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT | italic_n start_POSTSUBSCRIPT italic_v end_POSTSUBSCRIPT > 1 } 定义为一个以上机器人覆盖的分解顶点集,其中 n v = ∑ i ∈ I | { x ∈ V d , i | x = v } | subscript 𝑛 𝑣 subscript 𝑖 𝐼 conditional-set 𝑥 subscript 𝑉 𝑑 𝑖
𝑥 𝑣 n_{v}=\sum_{i\in I}\left|\{x\in V_{d,i}|x=v\}\right| italic_n start_POSTSUBSCRIPT italic_v end_POSTSUBSCRIPT = ∑ start_POSTSUBSCRIPT italic_i ∈ italic_I end_POSTSUBSCRIPT | { italic_x ∈ italic_V start_POSTSUBSCRIPT italic_d , italic_i end_POSTSUBSCRIPT | italic_x = italic_v } | 计算所有子图中顶点 v ∈ V d 𝑣 subscript 𝑉 𝑑 v\in V_{d} italic_v ∈ italic_V start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT 的出现次数。边界编辑算子会改变子图集合 { D i } i ∈ I subscript subscript 𝐷 𝑖 𝑖 𝐼 \{D_{i}\}_{i\in I} { italic_D start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT } start_POSTSUBSCRIPT italic_i ∈ italic_I end_POSTSUBSCRIPT ,但会确保其完全覆盖属性(即 ⋃ i ∈ I V d , i = V d subscript 𝑖 𝐼 subscript 𝑉 𝑑 𝑖
subscript 𝑉 𝑑 \bigcup_{i\in I}V_{d,i}=V_{d} ⋃ start_POSTSUBSCRIPT italic_i ∈ italic_I end_POSTSUBSCRIPT italic_V start_POSTSUBSCRIPT italic_d , italic_i end_POSTSUBSCRIPT = italic_V start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT )和子图连通性保持不变。该运算符的目的是只引入必要的重复,这样就有可能在更新的子图集上用 ESTC 改进 MCPP 解决方案。
Report issue for preceding element
为了实现不同子图集之间的高效转换,我们将运算符的设计限制为任意子图上的边缘运算;也就是说,每个运算符只涉及为每个子图添加或移除一条边缘。这种设计基于这样的观察,即当 ESTC 应用于生成的子图时,对单个顶点的操作有时会给覆盖路径带来不必要的重复,例如从顶点 u ∈ V d , i 𝑢 subscript 𝑉 𝑑 𝑖
u\in V_{d,i} italic_u ∈ italic_V start_POSTSUBSCRIPT italic_d , italic_i end_POSTSUBSCRIPT 到其邻居 v ∈ V d , i 𝑣 subscript 𝑉 𝑑 𝑖
v\in V_{d,i} italic_v ∈ italic_V start_POSTSUBSCRIPT italic_d , italic_i end_POSTSUBSCRIPT 再回到 u 𝑢 u italic_u 的不良路径。相比之下,边缘算子在每次操作时都会同时修改两个顶点,从而消除了这种顾虑,确保了更有效的调整。值得注意的是,边缘操作符可以实现与涉及多条边缘的操作符相同的结果。此外,我们的操作符只添加或删除两个端点由同一地形顶点分解而来的边,因为操作其他边会带来不必要的重复。形式上,我们将任何 D i subscript 𝐷 𝑖 D_{i} italic_D start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT 的此类边缘集合表示为
Report issue for preceding element
F i = { ( u , v ) ∈ E d , i | δ u = δ v } . subscript 𝐹 𝑖 conditional-set 𝑢 𝑣 subscript 𝐸 𝑑 𝑖
subscript 𝛿 𝑢 subscript 𝛿 𝑣 \displaystyle F_{i}=\{(u,v)\in E_{d,i}\,|\,\delta_{u}=\delta_{v}\}. italic_F start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT = { ( italic_u , italic_v ) ∈ italic_E start_POSTSUBSCRIPT italic_d , italic_i end_POSTSUBSCRIPT | italic_δ start_POSTSUBSCRIPT italic_u end_POSTSUBSCRIPT = italic_δ start_POSTSUBSCRIPT italic_v end_POSTSUBSCRIPT } .
(2)
增长操作符增长操作符的作用是扩展子图,以覆盖已被其他子图覆盖的额外顶点。让 B i subscript 𝐵 𝑖 B_{i} italic_B start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT 表示不属于 D i subscript 𝐷 𝑖 D_{i} italic_D start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT 但与 D i subscript 𝐷 𝑖 D_{i} italic_D start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT 的顶点相邻的顶点集合,即 B i = { v ∈ V d , i | ∃ ( u , v ) ∈ E d , i , u ∈ V d / V d , i } subscript 𝐵 𝑖 conditional-set 𝑣 subscript 𝑉 𝑑 𝑖
formulae-sequence 𝑢 𝑣 subscript 𝐸 𝑑 𝑖
𝑢 subscript 𝑉 𝑑 subscript 𝑉 𝑑 𝑖
B_{i}=\{v\in V_{d,i}\,|\,\exists\,(u,v)\in E_{d,i},u\in V_{d}/V_{d,i}\} italic_B start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT = { italic_v ∈ italic_V start_POSTSUBSCRIPT italic_d , italic_i end_POSTSUBSCRIPT | ∃ ( italic_u , italic_v ) ∈ italic_E start_POSTSUBSCRIPT italic_d , italic_i end_POSTSUBSCRIPT , italic_u ∈ italic_V start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT / italic_V start_POSTSUBSCRIPT italic_d , italic_i end_POSTSUBSCRIPT } 。从形式上看,一个有效的增长算子 o g ( i , e ) subscript 𝑜 𝑔 𝑖 𝑒 o_{g}(i,e) italic_o start_POSTSUBSCRIPT italic_g end_POSTSUBSCRIPT ( italic_i , italic_e ) 可以将 D i subscript 𝐷 𝑖 D_{i} italic_D start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT 的边 e = ( u , v ) ∈ F i 𝑒 𝑢 𝑣 subscript 𝐹 𝑖 e=(u,v)\in F_{i} italic_e = ( italic_u , italic_v ) ∈ italic_F start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT 与 u , v ∈ B i 𝑢 𝑣
subscript 𝐵 𝑖 u,v\in B_{i} italic_u , italic_v ∈ italic_B start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT 以及所有相关连接边添加到 D i subscript 𝐷 𝑖 D_{i} italic_D start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT 中,其中 ∃ ( p , q ) ∈ E d , i 𝑝 𝑞 subscript 𝐸 𝑑 𝑖
\exists\,(p,q)\in E_{d,i} ∃ ( italic_p , italic_q ) ∈ italic_E start_POSTSUBSCRIPT italic_d , italic_i end_POSTSUBSCRIPT 如 ( u , p ) , ( v , q ) ∈ E d , i 𝑢 𝑝 𝑣 𝑞
subscript 𝐸 𝑑 𝑖
(u,p),(v,q)\in E_{d,i} ( italic_u , italic_p ) , ( italic_v , italic_q ) ∈ italic_E start_POSTSUBSCRIPT italic_d , italic_i end_POSTSUBSCRIPT 。实质上,只有当 D i subscript 𝐷 𝑖 D_{i} italic_D start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT 中存在平行边 ( p , q ) 𝑝 𝑞 (p,q) ( italic_p , italic_q ) 时,有效增长操作符才能添加边 e = ( u , v ) 𝑒 𝑢 𝑣 e=(u,v) italic_e = ( italic_u , italic_v ) (示例见图 3-(b)(c))。图 3-(a) 举例说明了这一设计选择可避免在覆盖路径中引入不良路由。在执行 e = ( u , v ) 𝑒 𝑢 𝑣 e=(u,v) italic_e = ( italic_u , italic_v ) 的增长算子 o g ( i , e ) subscript 𝑜 𝑔 𝑖 𝑒 o_{g}(i,e) italic_o start_POSTSUBSCRIPT italic_g end_POSTSUBSCRIPT ( italic_i , italic_e ) 后,顶点 u , v 𝑢 𝑣
u,v italic_u , italic_v 会被添加到 V + superscript 𝑉 V^{+} italic_V start_POSTSUPERSCRIPT + end_POSTSUPERSCRIPT ,因为它们也被其他子图覆盖。
Report issue for preceding element
图 3:增长算子 o g ( i , e ) subscript 𝑜 𝑔 𝑖 𝑒 o_{g}(i,e) italic_o start_POSTSUBSCRIPT italic_g end_POSTSUBSCRIPT ( italic_i , italic_e ) 的示例以及执行后的覆盖路径。蓝圈和黑圈分别代表边界顶点集 B i subscript 𝐵 𝑖 B_{i} italic_B start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT 的顶点和 V d , i subscript 𝑉 𝑑 𝑖
V_{d,i} italic_V start_POSTSUBSCRIPT italic_d , italic_i end_POSTSUBSCRIPT 的顶点。(a) D i subscript 𝐷 𝑖 D_{i} italic_D start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT 中没有任何平行边的无效增长算子。 (b)(c) 两个有效的增长算子。
Report issue for preceding element
重复操作符重复操作符的作用是从子图中删除不必要的重复。对于一条边 e = ( u , v ) ∈ F i 𝑒 𝑢 𝑣 subscript 𝐹 𝑖 e=(u,v)\in F_{i} italic_e = ( italic_u , italic_v ) ∈ italic_F start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT ,根据 u 𝑢 u italic_u 和 v 𝑣 v italic_v 的位置,让 δ e t subscript superscript 𝛿 𝑡 𝑒 \delta^{\,t}_{e} italic_δ start_POSTSUPERSCRIPT italic_t end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_e end_POSTSUBSCRIPT , δ e b subscript superscript 𝛿 𝑏 𝑒 \delta^{\,b}_{e} italic_δ start_POSTSUPERSCRIPT italic_b end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_e end_POSTSUBSCRIPT , δ e l subscript superscript 𝛿 𝑙 𝑒 \delta^{\,l}_{e} italic_δ start_POSTSUPERSCRIPT italic_l end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_e end_POSTSUBSCRIPT 和 δ e r subscript superscript 𝛿 𝑟 𝑒 \delta^{\,r}_{e} italic_δ start_POSTSUPERSCRIPT italic_r end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_e end_POSTSUBSCRIPT 表示 δ u subscript 𝛿 𝑢 \delta_{u} italic_δ start_POSTSUBSCRIPT italic_u end_POSTSUBSCRIPT 的四个相邻边(也等于 δ v subscript 𝛿 𝑣 \delta_{v} italic_δ start_POSTSUBSCRIPT italic_v end_POSTSUBSCRIPT )。图 4-(a) 展示了一个可以旋转到各种对称情况的示例(只有 δ e t subscript superscript 𝛿 𝑡 𝑒 \delta^{\,t}_{e} italic_δ start_POSTSUPERSCRIPT italic_t end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_e end_POSTSUBSCRIPT 的分解顶点可能同时与 u 𝑢 u italic_u 和 v 𝑣 v italic_v 相邻)。从形式上看,对 D i subscript 𝐷 𝑖 D_{i} italic_D start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT 有效的重复操作符 o d ( i , e ) subscript 𝑜 𝑑 𝑖 𝑒 o_{d}(i,e) italic_o start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT ( italic_i , italic_e ) 会删除 e = ( u , v ) ∈ F i 𝑒 𝑢 𝑣 subscript 𝐹 𝑖 e=(u,v)\in F_{i} italic_e = ( italic_u , italic_v ) ∈ italic_F start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT 与 u , v ∈ V + ∩ V d , i 𝑢 𝑣
superscript 𝑉 subscript 𝑉 𝑑 𝑖
u,v\in V^{+}\cap V_{d,i} italic_u , italic_v ∈ italic_V start_POSTSUPERSCRIPT + end_POSTSUPERSCRIPT ∩ italic_V start_POSTSUBSCRIPT italic_d , italic_i end_POSTSUBSCRIPT 的边以及 D i subscript 𝐷 𝑖 D_{i} italic_D start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT 的所有相关连接边,这样 D i subscript 𝐷 𝑖 D_{i} italic_D start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT 仍会保持连接。如果 δ u subscript 𝛿 𝑢 \delta_{u} italic_δ start_POSTSUBSCRIPT italic_u end_POSTSUBSCRIPT 是完整的,则移除操作受三个条件限制:(1) δ e t superscript subscript 𝛿 𝑒 𝑡 \delta_{e}^{t} italic_δ start_POSTSUBSCRIPT italic_e end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_t end_POSTSUPERSCRIPT 不在 V g , i subscript 𝑉 𝑔 𝑖
V_{g,i} italic_V start_POSTSUBSCRIPT italic_g , italic_i end_POSTSUBSCRIPT 中;(2) δ e b subscript superscript 𝛿 𝑏 𝑒 \delta^{\,b}_{e} italic_δ start_POSTSUPERSCRIPT italic_b end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_e end_POSTSUBSCRIPT 的所有分解顶点都在 V d , i subscript 𝑉 𝑑 𝑖
V_{d,i} italic_V start_POSTSUBSCRIPT italic_d , italic_i end_POSTSUBSCRIPT 中;(3) 如果 δ = δ e l , δ e r 𝛿 superscript subscript 𝛿 𝑒 𝑙 superscript subscript 𝛿 𝑒 𝑟
\delta=\delta_{e}^{l},\delta_{e}^{r} italic_δ = italic_δ start_POSTSUBSCRIPT italic_e end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_l end_POSTSUPERSCRIPT , italic_δ start_POSTSUBSCRIPT italic_e end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_r end_POSTSUPERSCRIPT 在 V g , i subscript 𝑉 𝑔 𝑖
V_{g,i} italic_V start_POSTSUBSCRIPT italic_g , italic_i end_POSTSUBSCRIPT 中,则 δ 𝛿 \delta italic_δ 的所有分解顶点及其与 δ e b superscript subscript 𝛿 𝑒 𝑏 \delta_{e}^{b} italic_δ start_POSTSUBSCRIPT italic_e end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_b end_POSTSUPERSCRIPT 的(唯一)共同邻接顶点都在 V d , i subscript 𝑉 𝑑 𝑖
V_{d,i} italic_V start_POSTSUBSCRIPT italic_d , italic_i end_POSTSUBSCRIPT 中。当 ESTC 应用于 D i subscript 𝐷 𝑖 D_{i} italic_D start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT 时,这种设计选择避免了在覆盖路径中引入新的重复(如图 4-(b) 所示)。否则,当 δ u subscript 𝛿 𝑢 \delta_{u} italic_δ start_POSTSUBSCRIPT italic_u end_POSTSUBSCRIPT 不完整时,删除不受特定条件限制。这种设计选择基于这样一个观察结果,即连接不完整 δ u subscript 𝛿 𝑢 \delta_{u} italic_δ start_POSTSUBSCRIPT italic_u end_POSTSUBSCRIPT 的边在 ESTC 的 MST 构建中优先级较低。因此, δ u subscript 𝛿 𝑢 \delta_{u} italic_δ start_POSTSUBSCRIPT italic_u end_POSTSUBSCRIPT 要么位于 MST 的外围,要么靠近 MST 的外围,删除 e = ( u , v ) 𝑒 𝑢 𝑣 e=(u,v) italic_e = ( italic_u , italic_v ) 通常不会带来不必要的重复或任何重复。图 4-(c)和图 4-(d)分别展示了不完整和完整 δ u subscript 𝛿 𝑢 \delta_{u} italic_δ start_POSTSUBSCRIPT italic_u end_POSTSUBSCRIPT 的两个有效重复操作符。执行 e = ( u , v ) 𝑒 𝑢 𝑣 e=(u,v) italic_e = ( italic_u , italic_v ) 的重复操作符 o d ( i , e ) subscript 𝑜 𝑑 𝑖 𝑒 o_{d}(i,e) italic_o start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT ( italic_i , italic_e ) 后,如果顶点 u , v 𝑢 𝑣
u,v italic_u , italic_v 没有被其他子图覆盖一次以上,就会从 V + superscript 𝑉 V^{+} italic_V start_POSTSUPERSCRIPT + end_POSTSUPERSCRIPT 中删除。
Report issue for preceding element
图 4:重复运算符 o d ( i , e ) subscript 𝑜 𝑑 𝑖 𝑒 o_{d}(i,e) italic_o start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT ( italic_i , italic_e ) 的示例。红圈和黑圈分别代表 V + superscript 𝑉 V^{+} italic_V start_POSTSUPERSCRIPT + end_POSTSUPERSCRIPT 中的顶点和不在 V + superscript 𝑉 V^{+} italic_V start_POSTSUPERSCRIPT + end_POSTSUPERSCRIPT 中的顶点。(a) δ u subscript 𝛿 𝑢 \delta_{u} italic_δ start_POSTSUBSCRIPT italic_u end_POSTSUBSCRIPT 的四个邻域。 (b) 违反条件 (3) 的无效算子。(c)(d) 两个有效算子。
Report issue for preceding element
交换操作符:交换运算符结合了增长运算符和重复运算符,这样重复运算符可以立即删除增长运算符引入的新重复,从而提高单一运算符的效率,加快局部搜索的收敛速度。从形式上看,一个有效的交换算子 o e ( i , j , e ) subscript 𝑜 𝑒 𝑖 𝑗 𝑒 o_{e}(i,j,e) italic_o start_POSTSUBSCRIPT italic_e end_POSTSUBSCRIPT ( italic_i , italic_j , italic_e ) 会将 e = ( u , v ) ∈ F i 𝑒 𝑢 𝑣 subscript 𝐹 𝑖 e=(u,v)\in F_{i} italic_e = ( italic_u , italic_v ) ∈ italic_F start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT 和所有相关的连接边加入 D i subscript 𝐷 𝑖 D_{i} italic_D start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT 并从 D j subscript 𝐷 𝑗 D_{j} italic_D start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT 中删除,其中 o g ( i , e ) subscript 𝑜 𝑔 𝑖 𝑒 o_{g}(i,e) italic_o start_POSTSUBSCRIPT italic_g end_POSTSUBSCRIPT ( italic_i , italic_e ) 和 o d ( j , e ) subscript 𝑜 𝑑 𝑗 𝑒 o_{d}(j,e) italic_o start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT ( italic_j , italic_e ) 都是有效的,只是 o d ( j , e ) subscript 𝑜 𝑑 𝑗 𝑒 o_{d}(j,e) italic_o start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT ( italic_j , italic_e ) 的条件 u , v ∈ V + ∩ V d , j 𝑢 𝑣
superscript 𝑉 subscript 𝑉 𝑑 𝑗
u,v\in V^{+}\cap V_{d,j} italic_u , italic_v ∈ italic_V start_POSTSUPERSCRIPT + end_POSTSUPERSCRIPT ∩ italic_V start_POSTSUBSCRIPT italic_d , italic_j end_POSTSUBSCRIPT 现在被 u , v ∈ V d , j 𝑢 𝑣
subscript 𝑉 𝑑 𝑗
u,v\in V_{d,j} italic_u , italic_v ∈ italic_V start_POSTSUBSCRIPT italic_d , italic_j end_POSTSUBSCRIPT 取代,因为 u , v 𝑢 𝑣
u,v italic_u , italic_v 不一定在 V + superscript 𝑉 V^{+} italic_V start_POSTSUPERSCRIPT + end_POSTSUPERSCRIPT 中。执行交换运算符 o e ( i , j , e ) subscript 𝑜 𝑒 𝑖 𝑗 𝑒 o_{e}(i,j,e) italic_o start_POSTSUBSCRIPT italic_e end_POSTSUBSCRIPT ( italic_i , italic_j , italic_e ) 后, V + superscript 𝑉 V^{+} italic_V start_POSTSUPERSCRIPT + end_POSTSUPERSCRIPT 保持不变。
Report issue for preceding element
属性执行任何有效操作符后,(1) D i subscript 𝐷 𝑖 D_{i} italic_D start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT 仍保持连接,因为只有重复操作符能删除边,但有效的重复操作符能保证 D i subscript 𝐷 𝑖 D_{i} italic_D start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT 保持连接;(2) 所有子图的顶点联合即顶点集 D 𝐷 D italic_D 的属性不受影响,因为不会丢失顶点覆盖。
Report issue for preceding element
LS-MCPP Report issue for preceding element
在本节中,我们将介绍 LS-MCPP,这是一种用于有效解决 MCPP 问题的新型局部搜索框架。LS-MCPP 整合了边界编辑算子,直接对分解图 D 𝐷 D italic_D 进行操作,通过调整子图 D i subscript 𝐷 𝑖 D_{i} italic_D start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT 来探索良好的覆盖路径。如果 D i subscript 𝐷 𝑖 D_{i} italic_D start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT 从 ESTC 得到的覆盖路径成本 c ( π i ) 𝑐 subscript 𝜋 𝑖 c(\pi_{i}) italic_c ( italic_π start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT ) 不大于所有子图的平均覆盖路径成本 c ¯ ¯ 𝑐 \bar{c} over¯ start_ARG italic_c end_ARG ,我们将其归类为轻型子图;否则,它就是重型子图。LS-MCPP 在轻子图上使用增长算子,在重子图上使用重复算子来消除冗余,并使用交换算子来平衡子图之间的路径成本。其目标是以最少的重复实现成本平衡的解决方案。在更高层次上,LS-MCPP 采用分层抽样方法,在每次局部搜索迭代中有效探索所构建的邻域。它采用轮盘选择法(Goldberg,1989 年)从三个池中选择一个算子池,每个池都包含相同类型的算子。然后,引入新的启发式方法,从选定的算子池中抽取算子。LS-MCPP 还定期调用重复数据删除函数,以利用当前邻域并实现低akespan 解决方案。
Report issue for preceding element
伪代码(Alg.1):LS-MCPP 将初始 MCPP 解决方案作为输入。首先,它初始化了三个池 O g , O d , O e subscript 𝑂 𝑔 subscript 𝑂 𝑑 subscript 𝑂 𝑒
O_{g},O_{d},O_{e} italic_O start_POSTSUBSCRIPT italic_g end_POSTSUBSCRIPT , italic_O start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT , italic_O start_POSTSUBSCRIPT italic_e end_POSTSUBSCRIPT ,分别是增长算子、重复算子和交换算子(第 1-1 行),并初始化了温度标量 t 𝑡 t italic_t 和池权重向量 𝐩 𝐩 \mathbf{p} bold_p (第 1 行)。标量 t 𝑡 t italic_t 源自模拟退火(Van Laarhoven 等人,1987 年),在基于搜索的算法中被广泛用于自适应接受非改进算子。向量 𝐩 𝐩 \mathbf{p} bold_p 代表上述三个池中每个池的池权重,因此用于轮盘选择,在每次迭代中从 𝒪 𝒪 \mathcal{O} caligraphic_O 中选择一个池 O 𝑂 O italic_O (第 1 行),其中 σ ( 𝐩 ) 𝜎 𝐩 \sigma(\mathbf{p}) italic_σ ( bold_p ) 是 𝐩 𝐩 \mathbf{p} bold_p 的软最大函数,决定选择每个池的概率。一旦池 O 𝑂 O italic_O 被选中,其对应的池权重 𝐩 [ O ] 𝐩 delimited-[] 𝑂 \mathbf{p}[O] bold_p [ italic_O ] 就会在第 1 行中用权重衰减因子 γ ∈ [ 0 , 1 ] 𝛾 0 1 \gamma\in[0,1] italic_γ ∈ [ 0 , 1 ] 更新。与池选择类似,LS-MCPP 从选定的池 O 𝑂 O italic_O 中采样一个算子 o 𝑜 o italic_o ,概率函数为 σ ( 𝐡 ) 𝜎 𝐡 \sigma(\mathbf{h}) italic_σ ( bold_h ) (第 1 行),其中 𝐡 𝐡 \mathbf{h} bold_h 是对 O 𝑂 O italic_O 中所有算子进行评估的启发式函数 h ℎ h italic_h 的向量(第 1 行),我们将在下一段介绍。然后,LS-MCPP 在相关子图上对算子 o 𝑜 o italic_o 进行评估,并计算在相关子图上应用 ESTC 后的工期增量 Δ τ Δ 𝜏 \Delta\tau roman_Δ italic_τ (第 1 行),以决定是否接受新的解决方案(即应用 o 𝑜 o italic_o 并更新 Π Π \Pi roman_Π )。如果新方案的时间跨度更小,LS-MCPP 将接受新方案;反之,则以概率 exp ( − Δ τ / t ) ∈ [ 0 , 1 ] Δ 𝜏 𝑡 0 1 \exp{(-\Delta\tau/t)}\in[0,1] roman_exp ( - roman_Δ italic_τ / italic_t ) ∈ [ 0 , 1 ] 接受新方案(第 1-1 行)。这种自适应接受标准由 Δ τ Δ 𝜏 \Delta\tau roman_Δ italic_τ 除以温度 t 𝑡 t italic_t 来动态调整,温度在每次迭代时都会被衰减因子 α ∈ [ 0 , 1 ] 𝛼 0 1 \alpha\in[0,1] italic_α ∈ [ 0 , 1 ] 缩减(第 1 行),因此在迭代过程中接受一个非改进算子会变得越来越难,这就是跳过局部最小值的模拟退火策略。LS-MCPP 每迭代一次 S 𝑆 S italic_S 或当当前解的有效期最小时(第 1 行),会调用函数 forcedDeduplication()(稍后描述),并在 Π * superscript Π \Pi^{*} roman_Π start_POSTSUPERSCRIPT * end_POSTSUPERSCRIPT 中记录有效期最小的解(第 1 行)。如果运算符 o 𝑜 o italic_o 被应用,从而更新了与之相关的子图,那么 𝒪 𝒪 \mathcal{O} caligraphic_O 的池将被更新为与修改后子图相关的所有运算符(第 1 行)。当迭代次数达到最大值 M 𝑀 M italic_M 时,LS-MCPP 将终止并返回改进后的解决方案 Π * superscript Π \Pi^{*} roman_Π start_POSTSUPERSCRIPT * end_POSTSUPERSCRIPT (第 1 行)。
Report issue for preceding element
输入:MCPP 实例 ( G , D , R ) 𝐺 𝐷 𝑅 (G,D,R) ( italic_G , italic_D , italic_R ) ,初始解 Π Π \Pi roman_Π
参数:最大迭代次数 M ∈ ℤ + 𝑀 superscript ℤ M\in\mathbb{Z}^{+} italic_M ∈ blackboard_Z start_POSTSUPERSCRIPT + end_POSTSUPERSCRIPT , 强制重复数据删除步骤 S ∈ ℤ + 𝑆 superscript ℤ S\in\mathbb{Z}^{+} italic_S ∈ blackboard_Z start_POSTSUPERSCRIPT + end_POSTSUPERSCRIPT , 温度衰减系数 α ∈ [ 0 , 1 ] 𝛼 0 1 \alpha\in[0,1] italic_α ∈ [ 0 , 1 ] , 池权重衰减系数 γ ∈ [ 0 , 1 ] 𝛾 0 1 \gamma\in[0,1] italic_γ ∈ [ 0 , 1 ]
1 O g ← ⋃ i ∈ I { o g ( i , e ) | c ( π i ) ≤ c ¯ } ← subscript 𝑂 𝑔 subscript 𝑖 𝐼 conditional-set subscript 𝑜 𝑔 𝑖 𝑒 𝑐 subscript 𝜋 𝑖 ¯ 𝑐 O_{g}\leftarrow\bigcup_{i\in I}\{o_{g}(i,e)\,|\,c(\pi_{i})\leq\bar{c}\} italic_O start_POSTSUBSCRIPT italic_g end_POSTSUBSCRIPT ← ⋃ start_POSTSUBSCRIPT italic_i ∈ italic_I end_POSTSUBSCRIPT { italic_o start_POSTSUBSCRIPT italic_g end_POSTSUBSCRIPT ( italic_i , italic_e ) | italic_c ( italic_π start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT ) ≤ over¯ start_ARG italic_c end_ARG } O d ← ⋃ i ∈ I { o d ( i , e ) | c ( π i ) > c ¯ } ← subscript 𝑂 𝑑 subscript 𝑖 𝐼 conditional-set subscript 𝑜 𝑑 𝑖 𝑒 𝑐 subscript 𝜋 𝑖 ¯ 𝑐 O_{d}\leftarrow\bigcup_{i\in I}\{o_{d}(i,e)\,|\,c(\pi_{i})>\bar{c}\} italic_O start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT ← ⋃ start_POSTSUBSCRIPT italic_i ∈ italic_I end_POSTSUBSCRIPT { italic_o start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT ( italic_i , italic_e ) | italic_c ( italic_π start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT ) > over¯ start_ARG italic_c end_ARG } O e ← ⋃ i , j ∈ I ← subscript 𝑂 𝑒 subscript 𝑖 𝑗
𝐼 O_{e}\leftarrow\bigcup_{i,j\in I} italic_O start_POSTSUBSCRIPT italic_e end_POSTSUBSCRIPT ← ⋃ start_POSTSUBSCRIPT italic_i , italic_j ∈ italic_I end_POSTSUBSCRIPT { o e ( i , j , e ) | c ( π i ) ≤ c ¯ } conditional-set subscript 𝑜 𝑒 𝑖 𝑗 𝑒 𝑐 subscript 𝜋 𝑖 ¯ 𝑐 \{o_{e}(i,j,e)\,|\,c(\pi_{i})\leq\bar{c}\} { italic_o start_POSTSUBSCRIPT italic_e end_POSTSUBSCRIPT ( italic_i , italic_j , italic_e ) | italic_c ( italic_π start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT ) ≤ over¯ start_ARG italic_c end_ARG } Π * ← Π , t ← 1 , 𝐩 ← [ 1 , 1 , 1 ] T , 𝒪 = { O g , O d , O e } formulae-sequence ← superscript Π Π formulae-sequence ← 𝑡 1 formulae-sequence ← 𝐩 superscript 1 1 1
𝑇 𝒪 subscript 𝑂 𝑔 subscript 𝑂 𝑑 subscript 𝑂 𝑒 \Pi^{*}\leftarrow\Pi,t\leftarrow 1,\mathbf{p}\leftarrow[1,1,1]^{T},\mathcal{O}%
=\{O_{g},O_{d},O_{e}\} roman_Π start_POSTSUPERSCRIPT * end_POSTSUPERSCRIPT ← roman_Π , italic_t ← 1 , bold_p ← [ 1 , 1 , 1 ] start_POSTSUPERSCRIPT italic_T end_POSTSUPERSCRIPT , caligraphic_O = { italic_O start_POSTSUBSCRIPT italic_g end_POSTSUBSCRIPT , italic_O start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT , italic_O start_POSTSUBSCRIPT italic_e end_POSTSUBSCRIPT } for i ← 1 , 2 , … , M ← 𝑖 1 2 … 𝑀
i\leftarrow 1,2,...,M italic_i ← 1 , 2 , … , italic_M do
2 O ∼ 𝒪 similar-to 𝑂 𝒪 O\sim\mathcal{O} italic_O ∼ caligraphic_O w/ probability function P ( 𝒪 ) = σ ( 𝐩 ) 𝑃 𝒪 𝜎 𝐩 P(\mathcal{O})=\sigma(\mathbf{p}) italic_P ( caligraphic_O ) = italic_σ ( bold_p ) 𝐩 [ O ] ← ( 1 − γ ) ⋅ 𝐩 [ O ] + γ ⋅ max ( − Δ τ , 0 ) ← 𝐩 delimited-[] 𝑂 ⋅ 1 𝛾 𝐩 delimited-[] 𝑂 ⋅ 𝛾 Δ 𝜏 0 \mathbf{p}[O]\leftarrow(1-\gamma)\cdot\mathbf{p}[O]+\gamma\cdot\max(-\Delta%
\tau,0) bold_p [ italic_O ] ← ( 1 - italic_γ ) ⋅ bold_p [ italic_O ] + italic_γ ⋅ roman_max ( - roman_Δ italic_τ , 0 ) 𝐡 ← ← 𝐡 absent \mathbf{h}\leftarrow bold_h ← 启发式值向量 [ h ( o ) ] o ∈ O T subscript superscript delimited-[] ℎ 𝑜 𝑇 𝑜 𝑂 [h(o)]^{T}_{o\in O} [ italic_h ( italic_o ) ] start_POSTSUPERSCRIPT italic_T end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_o ∈ italic_O end_POSTSUBSCRIPT o ∼ O similar-to 𝑜 𝑂 o\sim O italic_o ∼ italic_O w/ probability function P ( O ) = σ ( 𝐡 ) 𝑃 𝑂 𝜎 𝐡 P(O)=\sigma(\mathbf{h}) italic_P ( italic_O ) = italic_σ ( bold_h ) Δ τ ← ← Δ 𝜏 absent \Delta\tau\leftarrow roman_Δ italic_τ ← 在更新的子图上使用 ESTC 后的 makepan 增量 o 𝑜 o italic_o if Δ τ < 0 Δ 𝜏 0 \Delta\tau<0 roman_Δ italic_τ < 0 then
3 应用操作员 o 𝑜 o italic_o 并更新 Π Π \Pi roman_Π
4 其他
6 if i % S = 0 ∨ Δ τ < 0 percent 𝑖 𝑆 0 Δ 𝜏 0 i\,\%\,S=0\vee\Delta\tau<0 italic_i % italic_S = 0 ∨ roman_Δ italic_τ < 0 then
7forcedDeduplication( Π normal-Π \Pi roman_Π , O d subscript 𝑂 𝑑 O_{d} italic_O start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT )
8 如果 Π Π \Pi roman_Π 优于 Π * superscript Π \Pi^{*} roman_Π start_POSTSUPERSCRIPT * end_POSTSUPERSCRIPT ,则将 Π Π \Pi roman_Π 分配给 Π * superscript Π \Pi^{*} roman_Π start_POSTSUPERSCRIPT * end_POSTSUPERSCRIPT 更新 𝒪 𝒪 \mathcal{O} caligraphic_O 的每个资源库,并将 t 𝑡 t italic_t 分配给 α ⋅ t ⋅ 𝛼 𝑡 \alpha\cdot t italic_α ⋅ italic_t
9return Improved MCPP solution Π * superscript Π \Pi^{*} roman_Π start_POSTSUPERSCRIPT * end_POSTSUPERSCRIPT Function forcedDeduplication( Π normal-Π \Pi roman_Π , O d subscript 𝑂 𝑑 O_{d} italic_O start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT ) :
10 i ∈ arg sort ( { c ( π i ) } i ∈ I ) 𝑖 arg sort subscript 𝑐 subscript 𝜋 𝑖 𝑖 𝐼 i\in\operatorname*{arg\,sort}\left(\{c(\pi_{i})\}_{i\in I}\right) italic_i ∈ start_OPERATOR roman_arg roman_sort end_OPERATOR ( { italic_c ( italic_π start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT ) } start_POSTSUBSCRIPT italic_i ∈ italic_I end_POSTSUBSCRIPT ) do
11 while ( u , v ) ← ← 𝑢 𝑣 absent (u,v)\leftarrow ( italic_u , italic_v ) ← any U-turn in π i subscript 𝜋 𝑖 \pi_{i} italic_π start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT do
12 从 D i subscript 𝐷 𝑖 D_{i} italic_D start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT 删除 u , v 𝑢 𝑣
u,v italic_u , italic_v 并更新 π i subscript 𝜋 𝑖 \pi_{i} italic_π start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT
13
14 for i ∈ arg sort ( { c ( π i ) } i ∈ I ) 𝑖 arg sort subscript 𝑐 subscript 𝜋 𝑖 𝑖 𝐼 i\in\operatorname*{arg\,sort}\left(\{c(\pi_{i})\}_{i\in I}\right) italic_i ∈ start_OPERATOR roman_arg roman_sort end_OPERATOR ( { italic_c ( italic_π start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT ) } start_POSTSUBSCRIPT italic_i ∈ italic_I end_POSTSUBSCRIPT ) do
15 while { o d ( j , e ) ∈ O d | i = j } ≠ ∅ conditional-set subscript 𝑜 𝑑 𝑗 𝑒 subscript 𝑂 𝑑 𝑖 𝑗 \{o_{d}(j,e)\in O_{d}\,|\,i=j\}\neq\emptyset { italic_o start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT ( italic_j , italic_e ) ∈ italic_O start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT | italic_i = italic_j } ≠ ∅ do
16 o ← arg min ( [ h ( o ) ] o ∈ { o d ( j , e ) ∈ O d | i = j } T ) ← 𝑜 arg min subscript superscript delimited-[] ℎ 𝑜 𝑇 𝑜 conditional-set subscript 𝑜 𝑑 𝑗 𝑒 subscript 𝑂 𝑑 𝑖 𝑗 o\leftarrow\operatorname*{arg\,min}\left([h(o)]^{T}_{o\in\{o_{d}(j,e)\in O_{d}%
\,|\,i=j\}}\right) italic_o ← start_OPERATOR roman_arg roman_min end_OPERATOR ( [ italic_h ( italic_o ) ] start_POSTSUPERSCRIPT italic_T end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_o ∈ { italic_o start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT ( italic_j , italic_e ) ∈ italic_O start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT | italic_i = italic_j } end_POSTSUBSCRIPT ) 应用运算符 o 𝑜 o italic_o ,更新 Π Π \Pi roman_Π 和 O d subscript 𝑂 𝑑 O_{d} italic_O start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT
17
18
算法 1 LS-MCPP
Report issue for preceding element
使用启发式方法进行算子取样:LS-MCPP 应仔细确定选择每个算子的概率,以便在从所选算子池中抽取算子时更好地探索邻域(图 1 第 1 行)。我们针对三类算子提出了三种启发式函数,以评估它们在引导邻域搜索和改进解法方面的潜力。启发式值越大的算子被采样的概率越高。增长算子的启发式函数有两个考虑因素:(1) 优先增长覆盖路径成本较小的轻子图,(2) 优先覆盖重复较少的顶点。形式上,具有边 e = ( u , v ) 𝑒 𝑢 𝑣 e=(u,v) italic_e = ( italic_u , italic_v ) 的增长算子 o g ( i , e ) subscript 𝑜 𝑔 𝑖 𝑒 o_{g}(i,e) italic_o start_POSTSUBSCRIPT italic_g end_POSTSUBSCRIPT ( italic_i , italic_e ) 的启发值定义为 h ( o g ) = − k ⋅ c ( π i ) − ( n u + n v ) / 2 ℎ subscript 𝑜 𝑔 ⋅ 𝑘 𝑐 subscript 𝜋 𝑖 subscript 𝑛 𝑢 subscript 𝑛 𝑣 2 h(o_{g})=-k\cdot c(\pi_{i})-(n_{u}+n_{v})/2 italic_h ( italic_o start_POSTSUBSCRIPT italic_g end_POSTSUBSCRIPT ) = - italic_k ⋅ italic_c ( italic_π start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT ) - ( italic_n start_POSTSUBSCRIPT italic_u end_POSTSUBSCRIPT + italic_n start_POSTSUBSCRIPT italic_v end_POSTSUBSCRIPT ) / 2 。请注意, k ≥ n v 𝑘 subscript 𝑛 𝑣 k\geq n_{v} italic_k ≥ italic_n start_POSTSUBSCRIPT italic_v end_POSTSUBSCRIPT 对任何 v ∈ V d 𝑣 subscript 𝑉 𝑑 v\in V_{d} italic_v ∈ italic_V start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT 都成立,因此优先考虑 (1)(即 c ( π i ) 𝑐 subscript 𝜋 𝑖 c(\pi_{i}) italic_c ( italic_π start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT ) ),而不是 (2)(即 ( n u + n v ) / 2 subscript 𝑛 𝑢 subscript 𝑛 𝑣 2 (n_{u}+n_{v})/2 ( italic_n start_POSTSUBSCRIPT italic_u end_POSTSUBSCRIPT + italic_n start_POSTSUBSCRIPT italic_v end_POSTSUBSCRIPT ) / 2 )。重复操作符 o d ( i , e ) subscript 𝑜 𝑑 𝑖 𝑒 o_{d}(i,e) italic_o start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT ( italic_i , italic_e ) 的启发式函数定义与增长操作符的启发式函数完全相反: h ( o d ) = k ⋅ c ( π i ) + ( n u + n v ) / 2 ℎ subscript 𝑜 𝑑 ⋅ 𝑘 𝑐 subscript 𝜋 𝑖 subscript 𝑛 𝑢 subscript 𝑛 𝑣 2 h(o_{d})=k\cdot c(\pi_{i})+(n_{u}+n_{v})/2 italic_h ( italic_o start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT ) = italic_k ⋅ italic_c ( italic_π start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT ) + ( italic_n start_POSTSUBSCRIPT italic_u end_POSTSUBSCRIPT + italic_n start_POSTSUBSCRIPT italic_v end_POSTSUBSCRIPT ) / 2 .交换操作符的启发式函数 o e ( i , j , e ) subscript 𝑜 𝑒 𝑖 𝑗 𝑒 o_{e}(i,j,e) italic_o start_POSTSUBSCRIPT italic_e end_POSTSUBSCRIPT ( italic_i , italic_j , italic_e ) 定义为 h ( o e ) = c ( π j ) − c ( π i ) ℎ subscript 𝑜 𝑒 𝑐 subscript 𝜋 𝑗 𝑐 subscript 𝜋 𝑖 h(o_{e})=c(\pi_{j})-c(\pi_{i}) italic_h ( italic_o start_POSTSUBSCRIPT italic_e end_POSTSUBSCRIPT ) = italic_c ( italic_π start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT ) - italic_c ( italic_π start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT ) ,优先处理覆盖路径成本差异较大的两个子图。
Report issue for preceding element
图 5:在覆盖路径 π i subscript 𝜋 𝑖 \pi_{i} italic_π start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT 上执行 forcedDeduplication() 。每个红圈代表 V d , i subscript 𝑉 𝑑 𝑖
V_{d,i} italic_V start_POSTSUBSCRIPT italic_d , italic_i end_POSTSUBSCRIPT 的重复。在每一帧中,都会发现一个 U 型转弯 ( u , v ) ∈ π i 𝑢 𝑣 subscript 𝜋 𝑖 (u,v)\in\pi_{i} ( italic_u , italic_v ) ∈ italic_π start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT ,并从 π i subscript 𝜋 𝑖 \pi_{i} italic_π start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT 中删除 u , v 𝑢 𝑣
u,v italic_u , italic_v ,直到没有 U 型转弯为止。
Report issue for preceding element
强制重复:LS-MCPP 取得成功的一个关键因素是将复制限制在邻域构建所必需的范围内;例如,在 flr-s 实例(Tang 和 Ma,2023 年)中连接地形两个独立区域的狭窄路径。为此,forcedDeduplication()(图 1 第 1 行)旨在分两步删除所有可能的重复。第一部分(第 1-1 行)以成本递减的顺序遍历每条覆盖路径 π i ∈ Π subscript 𝜋 𝑖 Π \pi_{i}\in\Pi italic_π start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT ∈ roman_Π ,删除其中的任何 U 形转弯(第 1-1 行)。U 型转弯是指 ( u , v ) ∈ π i 𝑢 𝑣 subscript 𝜋 𝑖 (u,v)\in\pi_{i} ( italic_u , italic_v ) ∈ italic_π start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT 与 u , v ∈ V + ∩ V d , i 𝑢 𝑣
superscript 𝑉 subscript 𝑉 𝑑 𝑖
u,v\in V^{+}\cap V_{d,i} italic_u , italic_v ∈ italic_V start_POSTSUPERSCRIPT + end_POSTSUPERSCRIPT ∩ italic_V start_POSTSUBSCRIPT italic_d , italic_i end_POSTSUBSCRIPT 之间的一条边,该边满足 ∃ ( p , q ) ∈ π i 𝑝 𝑞 subscript 𝜋 𝑖 \exists\,(p,q)\in\pi_{i} ∃ ( italic_p , italic_q ) ∈ italic_π start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT ,这样 ( u , p ) , ( v , q ) ∈ π i 𝑢 𝑝 𝑣 𝑞
subscript 𝜋 𝑖 (u,p),(v,q)\in\pi_{i} ( italic_u , italic_p ) , ( italic_v , italic_q ) ∈ italic_π start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT 。(这样 p → u → v → q → 𝑝 𝑢 → 𝑣 → 𝑞 p\rightarrow u\rightarrow v\rightarrow q italic_p → italic_u → italic_v → italic_q 就形成了一个 "U 型转弯")。第二部分(第 1-1 行)尝试按照覆盖路径成本递减顺序(第 1 行)和启发式值递增顺序(第 1 行)递归应用所有有效的重复操作符。图 5 演示了在覆盖路径上强制重复数据删除操作。值得注意的是,第一部分可以移除不构成有效重复运算符的边,而某些有效重复运算符可以移除不是 U 型转弯的边(取决于 ESTC 生成的生成树)。这两部分之间的互补关系使拟议的 LS-MCPP 性能更佳。
Report issue for preceding element
表 1:MCPP 实例规范。
Report issue for preceding element