假设给定一张图,并要求我们找出图中最大团的最小尺寸。图的团是图的子集,其中每对顶点都是相邻的,即每对顶点之间都存在一条边。在多项式时间内不可能找到图中的最大团,因此给定小图的节点和边数,我们必须找出其中的最大团。
所以,如果输入像节点=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