【发布时间】:2017-08-05 06:39:09
【问题描述】:
从一个随机的整数列表开始,比如:
list = [2,5,7,1,3]
目标:最大程度地将列表中的每个条目与列表中的另一个条目配对。如果 log_base_2((m + n) / gcd(m, n)) 不是整数,则可以匹配值 (m,n) 的条目。 IE。 (7,3) 是有效匹配,而 (1,3) 不是。
我很确定这样做的一种方法是生成两个列表,A 和 B,相当于初始列表:
A=B=list=[2,5,7,1,3]
然后将其视为二分匹配问题如果 A[m] 匹配 B[n],则 A[n] 也必须匹配 B[m](再次,除了上面的匹配约束)。我想由此产生的流网络的可视化将是水平对称的(即沿源汇轴,因此是标题)。
我知道如何使用 MaxFlow 解决二分匹配问题,但不知道如何实现最后一个粗体约束。任何帮助都会非常,嗯,很有帮助。
【问题讨论】:
标签: python algorithm optimization graph-theory matching