给定一个有向图,我可以使用什么算法来找到它的边的一个随机子集,以便每个节点只有一个入口和一个出口边?匹配节点的图形化算法
例如,这可能是我给出的图表:
,这将是一个有效的输出曲线:
这是有效的,因为:
- 它包含inp上的所有节点ut图
- 它的所有边也都在输入图上
- 每个节点都有一条边离开它并且一条边接近它(并且不能是相同边,不允许循环,每个节点都有连接至少一个其他节点)。
如果没有可能的解决方案应该被检测到。
有没有一种有效的算法来解决这个问题?
谢谢!
给定一个有向图,我可以使用什么算法来找到它的边的一个随机子集,以便每个节点只有一个入口和一个出口边?匹配节点的图形化算法
例如,这可能是我给出的图表:
,这将是一个有效的输出曲线:
这是有效的,因为:
如果没有可能的解决方案应该被检测到。
有没有一种有效的算法来解决这个问题?
谢谢!
这是一个节点周期覆盖问题。它可以解决为Maximum matchings in bipartite graphs。
简而言之:
您试图将图分解为一组循环。
This link指向Tarjan的算法,用于在图中查找循环。然后,您需要一些搜索策略(根据您的限制,某些循环选择可能不会导致解决方案)。
存在哪些算法? – Adam 2010-12-14 22:07:40
@亚当:http://en.wikipedia.org/wiki/Hopcroft-Karp_algorithm – 2010-12-14 22:15:59
我相信,维基百科文章链接到一些,请参阅“最大流量问题”的链接。 “在二分图中完美匹配”是最大流量问题的一个特例,如果您将源节点添加到P1并沉到P2,并且所有边的权重都是1,那么我推荐使用Ford-Fulkerson算法,实现起来非常简单。 – 2010-12-14 22:18:47