二分图中边缘的均匀分布

时间:2019-03-16 16:18:52

标签: algorithm graph-theory pseudocode

我得到了二部有向图,最初没有边缘。一组节点称为主体,另一组称为对象。只能从对象到对象构造边缘。 分别给出了主题(numSubj)和对象(numObj)的数量。 此外,给出了可用边数(numEdges)。

目标是将边缘从对象均匀分布到对象。这意味着所有被摄对象应具有相似数量的向外边缘,类似地,所有对象应具有相似数量的向外边缘。每个主体和物体必须至少具有一个相连的边缘。

请提出解决方案(例如伪代码)

1 个答案:

答案 0 :(得分:0)

首先,让我们索引从1到numSubj以及从1到numObj的每组节点中的所有项目。我们还假设numSubj < numObj(如果不正确,则只需翻转集合,再求解并再次翻转即可)。

现在计算出边的总数,即这些数目中的lcm,然后您可以通过将结果除以numObjA)来得出输出边的数目,然后通过除以numSubjB)来找到内向。

在为每个主题进行此计算之后,为所计算的主题数创建一条边,其中进入的边数A小于所计算的第二个数字-B

此过程可以这样完成:
i已连接到[i * B, i * B + 1, ... , i * (B + 1) - 1 ] mod numObj

  

使用25

LCM = 10  
Ingoing = 10 / 5 = 2  
Outgoing = 10 / 2 = 5   
1 -> 1, 2, 3, 4, 5   
2 -> 1, 2, 3, 4, 5
  

使用48

LCM = 8  
Ingoing = 8 / 8 = 1   
Outgoing = 8 / 4 = 2   
1 -> 1, 2   
2 -> 3, 4 
3 -> 5, 6  
4 -> 7, 8  
  

使用46

LCM = 12 
Ingoing = 12 / 6 = 2   
Outgoing = 12 / 4 = 3   
1 -> 1, 2, 3   
2 -> 4, 5, 6 
3 -> 1, 2, 3  
4 -> 4, 5, 6