algorithm - 构造任何具有度约束的二分图

标签 algorithm graph

我们需要构造一个二分图,每个图有 N 个顶点,在两个部分上,边的总数等于 M。

  • 左边的顶点从1到N编号。
  • 右边的顶点也从1到N编号。
  • 每个顶点大于或等于X且小于或等于Y的度数。即对于所有v,X ≤ deg(v) ≤ Y

给定四个整数 N、M、X、Y,我们需要构造一些满足此属性的二分图。如果不存在任何这样的图,则也告诉同样的。

例子: 如果 N=2 , M=3 , X=1 和 Y=2 那么二分图中的3条边将是:(1,1),(2,2)和(1,2)

如果 N=2 、 M=3 、 X=1 和 Y=1 则不存在二分图。

这个问题怎么解决

1 ≤ N ≤ 100
1 ≤ X ≤ Y ≤ N 
0 ≤ M ≤ N * N

原始问题 link

最佳答案

显然,变量需要满足:

X * N <= M <= Y * N

否则无解。

寻找边缘可以在波浪中完成。首先将第一组中的每个节点 i 连接到第二组中相应的节点 i。在下一波中,将 i(i + 1) mod N 连接起来。然后 i(i + 2) mod N 等等。这将在每个波浪中将每个顶点的度数增加一个。每当您构建了 M 边时就停止。这也可能发生在波浪期间。

关于algorithm - 构造任何具有度约束的二分图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40194203/

相关文章:

java - 如何更改 JUNG 中特定顶点的颜色

java - 所有对最短路径 Udaya Kumar Redd 算法

javascript - 什么是高频使用最快的 levenshtein 算法

algorithm - 查找最多使用 k 次的子集

algorithm - 二叉搜索树中的第 N 个最大元素

C++ 深度优先搜索 (DFS) 实现

python-2.7 - 计算图中的多条边(python)

javascript - 如果值为负,Highcharts 将数据标签与 x 轴对齐

c - 如何确定单个数组中位的重复模式

algorithm - 嵌套循环算法复杂性的一些例子?