我有一个关于设计算法以使二分图非循环的问题。我希望有人可以帮助我。问题陈述如下所述:
考虑无向二分图G =(U,V,E),其中U = {u_1,u_2,... u_M}是一组M个节点,V = {v_1,v_2,...,v_N }是一组N个节点,E是将U中的节点连接到V中的节点的边集。为简单起见,假设图是连接的并且是循环的,即具有循环。
目的是设计一种算法,消除周期并将图形缩减为树或森林,如下所示。算法轮流进行。圆形被描述为在U中选择每个节点u_i,i = 1,2,...,M并移除与其连接的边缘。如果节点u_i被隔离(即,它没有连接到它的边缘),我们忽略它并继续。这样,在每轮中最多移除M个边缘。当图形在某一轮结束时缩小为树或森林时,算法停止。
我想知道是否可以使用多项式时间算法(在M,N中)来设计轮次,以使轮次数最小化(用于将图形缩减为树/林)。
答案 0 :(得分:0)
请参阅Wikipedia上的周期文章。
要检测任何无向图中的循环,请执行DFS,维护受访节点列表。如果检测到后边缘,则它是周期的一部分,您可以从图形中删除该边缘。没有后沿的DFS没有循环。复杂度为O(M + N)。