python最大团问题

回溯法,编写最大团问题

描述:团就是最大完全子图。(极大团)

给定无向图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):
   
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值