回溯法,编写最大团问题
描述:团就是最大完全子图。(极大团)
给定无向图G=(V,E)。如果U包含于V,且对任意u,v属于U且有(u,v)属于E,则称U是G的完全子图。
G的完全子图U是G的团当且仅当U不包含在G的更大的完全子图中,即U就是最大完全子图。
G的最大团是指G中所含顶点数最多的团。
// 最大团: V中取K个顶点,两点间相互连接
// 最大独立集: V中取K个顶点,两点间不连接
// 最大团数量: 补图中最大独立集数
global v,e,graph#v为顶点数,e为边数,graph为邻接矩阵
global cn,bestn#cn当前团的顶点数,bestn最大团的顶点数
global corder,bestorder#corder当前团的顶点集,bestorder最大团的顶点集
global vis#记录已选的顶点
vis=[0 for i in range(100)]
corder=[0 for i in range(100)]
bestorder=[0 for i in range(100)]
def istuan(cur):
global vis,graph
for i in range(cur):
if((vis[i]==1) and(graph[i][cur]==0)):
return 0
return 1
def backtrack(cur):
global v,bestn,corder,cn,vis#python中定义全局变量,先定义,使用时再次声明
# if (cur>v-1):
if(cur>v):