在图上找到成本最低的循环,其中必须满足多个节点子集中的至少一个节点,并且每条边都有一个成本

问题描述 投票:0回答:1

我有一组节点和连接这些节点的边,每条边都有一个遍历成本。所有这些节点都被放入它们的子集中,并且必须找到一个循环来以最低成本访问每个子集中的至少一个节点。您可以将其想象为每个节点都是岛链上的不同位置,并且每个子集都是一个岛。您从一个位置开始,需要访问每个岛屿,然后以最低的成本返回到起点。你无法决定从哪里开始,这是预先为你选择的。我想最终创建一个程序来运行它,大约有 30 个节点和 6 个子集。有谁知道一种相当有效的算法,可以在一台相当不错的计算机上在合理的时间内完成我需要的工作。如果你不知道一个非常有效的算法,我仍然很想听听它,以防万一它可能有帮助。

我尝试过猜测和检查,但这需要很长时间,我希望能够动态更改边缘的权重并快速获得新路线。

algorithm math graph-theory traversal
1个回答
0
投票

创建一个新图,每个岛都有一个顶点。如果它们所代表的岛屿是链接的,则链接每个顶点,并使用原始链接中它们之间的链接成本最低的链接。将旅行推销员算法应用于新图。 (有很多 TSP 算法和图论库可以实现它们。由于节点很少(只有 6 个),您不需要高效的节点 - 对于如此小的图,强力搜索可能需要不到一秒的时间)

现在您遇到了一个稍微棘手的问题,即确定每个岛屿要使用的真实顶点。再说一次,不需要聪明,只需尝试所有可能性,然后选择每个岛上的一两个节点给出最便宜的结果即可。

这个答案很可能会冒犯我们当中的计算机科学家。然而,由于您已经指出这是一个现实世界的问题,而不是一个学术练习,并且因为这应该是编程帮助站点(还有其他计算机科学家的站点),所以我相信可以在一个下午的时间比寻找需要几天时间才能理解和实现的复杂算法更有用。

© www.soinside.com 2019 - 2024. All rights reserved.