考虑在两个集合中有N1
和N2
个节点的双向网络,与非双向网络相比,该网络可以具有的最大链接数是多少,并且不能出现多少个链接大小为N = N1 + N2
答案 0 :(得分:0)
首先,进行以下观察:
当且仅当图形中的每个循环都是偶数时,图形G才是二分的。
证明:
为了矛盾起见,假设存在一个奇数长度的循环而该图是偶数的。然后,考虑将循环定义为v1,v2,...,vn,其中n =奇数。如果我们将G划分为两个不相交的集合S1和S2,以使S1或S2中没有顶点与其集合中的另一个顶点相邻,那么我们必须在两个集合之间交替。如果我们从S1开始,则在S1,S2,S1,S2,...之间交替,但是由于周期的长度是奇数,因此我们将具有n + 1个顶点,因此以S1和S2结尾。但是,我们认为S1和S2是不相交的集合,这是一个矛盾。
因此,我们证明了二部图表示偶数图的矛盾。
另一个方向是我们要显示偶数周期图表示二分图。我们通过采取相反的方法再次证明,因此,如果G不是二分式的,那么我们就有一个奇数周期。考虑分量H,使得H不是二分的。必须存在一个分量H,否则我们将产生矛盾,因为我们可以任意将这些分量添加到不相交的集合中。因此,存在边{u,v},使得u,v都存在于相同的不交集中。现在,由于组件已连接(定义为最大连接图),我们可以生成最小生成树T。由于T已连接(根据定义),因此u和v之间存在一条路径。但是,由于u,v为在树中并且相互连接,距离必须相等,因为我们可以从树中生成二部图。由于存在{u,v}边,我们可以通过添加边{u,v} + T来诱发一个循环。这导致一个奇数长度的循环。 QED
通过注意这一点,我们可以生成一个简单的算法。考虑两个集合,我们可以取每个节点并添加一个三元组,以指示该节点是否存在于集合S1,S2中或都不存在。现在,对于每种组合,我们都可以运行拓扑排序算法或单个循环查找算法,以查找循环的存在。对于每个循环,我们将需要确定是否存在奇长循环,在这种情况下,我们知道所选集合不起作用。自然地,这会激发一个O(3 ^ n)解决方案,但这并不是很大。另外,还需要运行一个循环查找算法,将边添加到图形上,这可能在每次迭代中花费O(2n)时间-因此,O(3 ^ n * n)
困难在于将该算法优化为多项式时间,但这将是开始。
另一种解决方案是考虑图形着色,并尝试贪婪地为节点着色。这也将导致O(3 ^ n * n)解,尽管比周期检测要快一些。但是,为减少时间复杂度,请考虑对图形进行BFS(呼吸优先搜索),然后尝试贪婪地分配颜色。分配颜色时,只要有相同颜色的节点存在向后边缘,请删除该当前节点。然后,该贪婪算法将返回边数,并产生O(n)时间。
答案 1 :(得分:0)
最大链接数:N1 + N2
与非双向大小的网络相比,不能出现多少个链接:
N = N1 + N2
N *(N-1)/ 2
答案 2 :(得分:0)
二部图的最大链接数: N1 * N2 其中N1和N2代表每个相应节点集的基数(每个分区中的节点数)。
没有二分法约束的最大链接数(完整图): (N(N-1))/ 2
现在差一点。