如何将无向图转换为每个节点最多有 K 个父节点的有向图?
How convert an undirected graph to a directed graph in which each node has at most K parents?
我需要将无向图转换为要求每个节点最多有 K 个父节点的 DAG。我想尽量减少转换中丢失的边数。谁能推荐一些方法?
好吧,假设我理解了这个问题,解决这个问题的一个很好的算法是 Kuhn-Munkres (https://en.wikipedia.org/wiki/Hungarian_algorithm)。
对于每条边,您想要关联两个节点之一(它指向的节点)。
对于每个节点,您有最大可能的 K 关联。
所以你的双图在一侧(比如说左边)你的初始图的边,在另一边(比如说右边)K 乘以每个节点 + 每个边一个汇节点。汇节点对应于边的丢失。
然后将边缘放入双图中(不要与问题的边缘混淆)。您为初始图的所有连接设置了 0 成本边,并从任何左节点到其汇节点设置了 1 成本边。
然后你使用 Kuhn-Munkres 算法来最小化关联。
我需要将无向图转换为要求每个节点最多有 K 个父节点的 DAG。我想尽量减少转换中丢失的边数。谁能推荐一些方法?
好吧,假设我理解了这个问题,解决这个问题的一个很好的算法是 Kuhn-Munkres (https://en.wikipedia.org/wiki/Hungarian_algorithm)。
对于每条边,您想要关联两个节点之一(它指向的节点)。 对于每个节点,您有最大可能的 K 关联。
所以你的双图在一侧(比如说左边)你的初始图的边,在另一边(比如说右边)K 乘以每个节点 + 每个边一个汇节点。汇节点对应于边的丢失。
然后将边缘放入双图中(不要与问题的边缘混淆)。您为初始图的所有连接设置了 0 成本边,并从任何左节点到其汇节点设置了 1 成本边。
然后你使用 Kuhn-Munkres 算法来最小化关联。