使3种不相交的连接图形具有特殊类型的边

时间:2015-08-10 12:29:11

标签: algorithm graph kruskals-algorithm disjoint-sets

世界上有N个顶点和M个边缘。有三种类型的边:类型“AB”,“BC”和“CA”。

有三个人A,B和C.当且仅当其类型名称包含人名时,每个人都可以使用边。 (例如,A可以使用AB类型和CA类型的边缘)

我想选择一些边缘,以便所有人都可以连接图表。因此,如果我们创建一个由AB类型和CA类型的边组成的图形,则应连接此图形。 (这也应该与AB / BC,BC / CA类型相同)

我该如何解决这个问题?有两个版本

  1. 如果我想最小化所选边缘的数量怎么办?
  2. 如果我想最小化所选边缘的总费用怎么办?
  3. 这就是我尝试过的。

    主要是,如果它连接X和Y的两个图形,那么添加一个类型为'XY'的边是非常好。所以,首先添加所有非常好的边,并且然后添加一些边缘,至少连接一个人的图形。

    • 如果我无限地改变边缘的顺序,这可能是一个很好的解决方案,但我不确定这个,它无法解决第二个问题。

    • 我有一些贪婪的策略:首先为A创建一个连接图,A的编号最小(或成本),然后是B,然后是C.将人的顺序洗牌(因此算法将被应用) <次>)

    我有一种强烈的感觉,这个问题是NP难的,但不能将问题改成一个众所周知的NP难题。

0 个答案:

没有答案