如何将无向图转换为每个节点最多有K个父级的有向图?

时间:2018-12-05 13:16:05

标签: algorithm graph directed-acyclic-graphs

我需要将无向图转换为DAG,该DAG要求每个节点最多具有K个父级。我想最小化转换中丢失的边数。有人可以建议一些方法吗?

1 个答案:

答案 0 :(得分:2)

好吧,假设我了解问题所在,那么解决这个问题的一个不错的算法就是Kuhn-Munkres(https://en.wikipedia.org/wiki/Hungarian_algorithm)。

对于每个边缘,您想要关联两个节点之一(它指向的是一个节点)。 对于每个节点,您可能具有最大的K关联。

因此,有向图在初始图的一侧(比方说左侧),而在另一侧(比方说右侧)是每个节点K倍+每个边缘一个汇点。宿节点对应于边缘的损失。

然后将边缘放入自传中(不要与问题的边缘相混淆)。对于初始图的所有连接,您将成本边设为0,将任何左节点到其汇宿节点的成本边设为1。

然后,您使用Kuhn-Munkres算法将关联最小化。