所以我正在解决一个问题,你有一个图表,其中所有边缘都有一定的权重。现在该算法应该选择图中的某些节点,并且所选节点必须能够遍历/跨越特定总权重内的所有其他节点。输出应该是所选节点的最小数量和所选节点的位置(只要它是所选节点的最小数量,它输出的位置并不重要)
我想到了几个简单的解决方案,但到目前为止它们似乎都不太好。
通过尝试每个节点来蛮力。该算法将从一个选定的节点开始,然后尝试所选节点的每个组合,然后循环通过每个其他未选择的节点并检查它们是否都在范围内。如果不是,它会增加一个额外的选定节点并重复相同的过程。
该算法生成一个子图列表,可以在每个节点位置使用1个选定节点遍历该子图。然后尝试拼图适合子图,以便重新创建原始图,如果成功,那将是解决方案。
作为一个例子,这里有一个网格图片作为图表。
此网格中每条边的权重为1,每个选定节点的总权重为2。
我对图形问题不太熟悉,所以如果有类似的问题,或者任何人都可以提供任何帮助解决方案,那就太棒了!
答案 0 :(得分:2)
首先,如果它们在距离限制范围内,只需在两个节点之间形成边缘即可摆脱边缘权重。然后,您需要找到节点的子集,以便选择每个节点或选定节点的邻居。这被称为Dominating Set问题。不幸的是,它是NP难的,因此通常可以启发式或使用整数线性编程来解决。有可能利用输入的某些属性,但如果不了解它们的外观很难说清楚。