我有图 1 中的图(第一张图像),并希望连接红色节点以具有循环,但循环不必像图2和图3那样是哈密顿量(最后两张图片)。这个问题的搜索空间比 TSP 大得多,因为我们可以访问一个节点两次。像 TSP 一样,不可能在一个大图中评估所有组合,我应该尝试启发式,但问题是,与 TSP 不同,循环或旅行的长度在这里不是固定的。因为,访问所有蓝色节点不是强制性的,这导致长度可变,包括一些蓝色节点。如何每次都生成一个可能的“有效”组合进行评估?我的意思是,一个循环可以是{A,e,B,l,k,j,D,j,k,C,g,f,e}或{A,e,B,l,k,j,D, j, i, h, g, C, g, f, e},但不是 {A, e, B, l, k, C, g, f, e} 或 {A, B, k, C, i, D}。
更新: 最终目标是根据长度和风险评估哪个周期是最优/接近最优的(见下文)。所以我不仅要尽量减少长度,还要尽量减少风险。除非您知道其所有节点的顺序,否则这将导致无法评估循环风险。希望这能澄清为什么我不能在生成过程的中间评估新周期。我们可以:
- 一个一个地生成和评估可能的循环;
- 或生成所有可能的循环,然后进行评估。
风险定义: 假设循环是将主节点(红色节点之一)连接到所有其他红色节点的环。如果环的任何部分(边缘)发生故障,则不应从主节点断开任何红色节点(这是理想的)。然而,有些边我们必须通过两次(由于没有连接所有红色节点的哈密顿循环),如果这些边出现故障,一些红色节点可能会完全断开连接。因此,循环风险是风险边缘长度的总和(我们在环/巡回中有两次)乘以在切割每个风险边缘的情况下我们丢失的红色节点数。
我正在处理的 3D 图的真实示例包括 5 个红色节点和 95 个蓝色节点,如下所示:
这里是包含上图邻接矩阵的 Excel 表的链接(前五个节点为红色,其余为蓝色)。