找出图中最大团的最小尺寸的程序(Python)

假设给定一张图,并要求我们找出图中最大团的最小尺寸。图的团是图的子集,其中每对顶点都是相邻的,即每对顶点之间都存在一条边。在多项式时间内不可能找到图中的最大团,因此给定小图的节点和边数,我们必须找出其中的最大团。

所以,如果输入像节点=4,边=4;那么输出将是2。

在上图中,集团的最大规模为 2。

示例

让我们看看以下实现以更好地理解 -

import math
def helper(x, y):
    ga = x % y
    gb = y - ga
    sa = x //y + 1
    sb = x //是的
    return ga * gb * sa * sb + ga * (ga - 1) * sa * sa //2 + gb * (gb - 1) * sb * sb //2

def solve(nodes, edges):
    i = 1
    j = nodes + 1
    while i + 1 < j:
        p = i + (j - i) //2
        k = helper(nodes, p)
        if k < edges:
            i = p
        else:
            j = p
    return j

print(solve(4, 4))

输入

4,4
输出结果
2

猜你喜欢