对不起这个复杂的名字 - 这是当之无愧的。让我提出问题。
上下文:我有一种定位网络,我想用它做一些分区。
问题定义:我有一个无向加权图 G = {V,E,w},其中包含一组顶点 V、边 E 和边权重 W。边存在于 V 中的所有顶点之间。
现在,我有大小为 |C1|...|CN| 的循环 C = {C1...CN} st |C1|...|CN| 的总和 等于顶点总数|V|。一个循环 Ci 的得分是路径中所有边的权重之和。
最后,这是目标:我想以这样一种方式拟合 G 中 C 的所有循环,即它们的组合分数在 C 中没有循环相互交叉的约束条件下是最大的。
所以用外行的话来说:我想用定义长度 st 的循环填充一个图形,全局权重是最优的。
我对这个问题的看法:这个问题至少是 NP 难的,因为它可以简化为诸如打包问题或哈密顿循环之类的问题。
最优解甚至可能不是伪多项式。我已经尝试以几种不同的方式(图表)来制定问题,它总是会导致状态爆炸,因此可能无法采用易于处理的 2D 动态编程方法(如果我错了,请纠正我)。
所以看来我可能不得不使用近似方法。想到的一件事是尝试使用其自己的近似方法找到整个图的哈密顿路径。然后下一步是找到“切割”局部最优哈密顿路径以产生循环的位置。有|C|!*|V| 安排这些“切割点”的方法。阶乘来自这些循环的排序和 |V| 的排列。来自起始位置的总数。即使有修剪(即有相同大小的循环),这对于大的|C| 仍然是难以处理的。我想说蛮力对于小的 |C| 是可以的,而对于较大的 |C| 则需要爬山方法来获得局部最优排列的近似值。
无论如何,你们怎么看?