世界上有N
个顶点和M
个边缘。有三种类型的边:类型“AB”,“BC”和“CA”。
有三个人A,B和C.当且仅当其类型名称包含人名时,每个人都可以使用边。 (例如,A可以使用AB类型和CA类型的边缘)
我想选择一些边缘,以便所有人都可以连接图表。因此,如果我们创建一个由AB类型和CA类型的边组成的图形,则应连接此图形。 (这也应该与AB / BC,BC / CA类型相同)
我该如何解决这个问题?有两个版本
这就是我尝试过的。
主要是,如果它连接X和Y的两个图形,那么添加一个类型为'XY'的边是非常好。所以,首先添加所有非常好的边,并且然后添加一些边缘,至少连接一个人的图形。
如果我无限地改变边缘的顺序,这可能是一个很好的解决方案,但我不确定这个,它无法解决第二个问题。
我有一些贪婪的策略:首先为A创建一个连接图,A的编号最小(或成本),然后是B,然后是C.将人的顺序洗牌(因此算法将被应用) <次>)
我有一种强烈的感觉,这个问题是NP难的,但不能将问题改成一个众所周知的NP难题。