我试图找出针对以下情况的算法:我想在无向图上运行最小成本算法。边缘具有与它们相关联的成本,并且顶点具有与其相关联的2个成本。这是一个棘手的地方。我必须选择与顶点相关的2个成本中的一个。如果我选择cost1,顶点将是类型1,如果我选择cost2,顶点将是类型2.顶点只能被视为连接它们是不同类型的边。大多数情况下,选择顶点的最低成本是合乎逻辑的,但是根据与其关联的边缘的成本以及其邻居顶点的类型,您更愿意选择顶点的最高成本,总体成本较低。我应该非常感谢任何算法或我应该尝试使用哪种方法的消息。
Here is a link to a simple example of what I am trying to achieve。此解决方案的成本为57,这是该图表的最低成本。
编辑:拼写。
答案 0 :(得分:1)
您描述的问题可以简单地转换为最小问题,然后使用Stoer-Wagner algorithm解决。再创建两个顶点,每个顶点都有到所有其他顶点的边(彼此除外)。首先,边缘成本取自相应顶点的cost1s;另一方面,从他们的成本2。现在找到最低限度;这将在两个新节点之间切割,并将原始顶点分区为type1和type2。
编辑:如果(原始)边缘成本与顶点成本相比足够高,则最终可能会在同一分区中使用两个新顶点。为防止这种情况发生,请为添加到新顶点的所有边添加大量相等的成本(大于所有其他边的总和)。