基于最大团问题两种解法.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于最大团问题两种解法

基于最大团问题两种解法   摘 要:最大团问题(maximum clique problem, MCP)是图论中的一个经典组合优化问题,也是一类NP( Non-deterministic Polynomial)完全问题, ,也被称为最大独立集树问题。给出了最大团问题的基本定义和其数学描述;分析求解该问题的典型启发式算法,即回溯算法和优先队列分支限界算法,本文主要阐述算法的介绍、算法求解最大团问题的基本思路、特点及性能;最后介绍了测试这些启发式算法性能的测试基准图。   关键词:最大团问题 回溯算法 优先队列分支限界算法 图   中图分类号: TP312 文献标识码:A 文章编号:1007-9416(2011)09-0132-02      1、基本概念   最大团的定义:给定无向图G=(V,E)。如果UV,且对任意u,vU有(u,v)E,则称U是G的完全子图。G的完全子图U是G的团当且仅当U不包含在G的更大的完全子图中。G的最大团是指G中所含顶点数最多的团。   如果UV且对任意u,vU有(u,v)E,则称U是G的空子图。G的空子图U是G的独立集当且仅当U不包含在G的更大的空子图中。G的最大独立集是G中所含顶点数最多的独立集。对于任一无向图G=(V,E)其补图G=(V1,E1)定义为:V1=V,且(u,v)E1当且仅当(u,v)E。   2、最大团问题算法设计思想   2.1 最大团问题的回溯算法   2.1.1 回溯算法设计思想   设当前扩展结点Z位于解空间树的第i层。在进入左子树前,必须确认从顶点i到已选入的顶点集中每一个顶点都有边相连。在进入右子树前,必须确认还有足够多的可选顶点使得算法有可能在右子树中找到更大的团。在具体实现时,用邻接矩阵表示图G.。整型树组V返回所找到的最大团。V[i]=1,当且仅当顶点i属于找到最大团。无向图G用邻接矩阵存储如图1。   2.1.2 回溯算法程序设计    最大团问题的回溯解法,部分代码如下。    class MaxClique    {static int[] x;    static int n;    static int cn ;    static int bestn;    static int[] bestx;    static boolean [][] a;    ……//省略    }    public class Fac5_7{    public static void main(String args[])    {MaxClique abc=new MaxClique();    int n1=5;    int ak[]=new int[n1+1];    boolean [][] aw=new boolean[n1+1][n1+1];    aw[1][1]=false;aw[1][2]=true; aw[1][3]=false; aw[1][4]=true; aw[1][5]=true;    aw[2][1]=true; aw[2][2]=false;aw[2][3]=true; aw[2][4]=false;aw[2][5]=true;    aw[3][1]=false;aw[3][2]=true; aw[3][3]=false; aw[3][4]=false;aw[3][5]=true;    aw[4][1]=true; aw[4][2]=false;aw[4][3]=false; aw[4][4]=false;aw[4][5]=true;    aw[5][1]=true; aw[5][2]=true; aw[5][3]=true; aw[5][4]=true; aw[5][5]=false;    abc.a=aw;    abc.n=n1;    System.out.println(最大团顶点数为 + abc.maxClique(ak));    for(int i=1;i=n1;i++)    System.out.print( +abc.bestx[i]);    System.out.println();    }    }   2.1.3 运行结果,如图2   2.2 最大团的问题的优先队列分支限界算法   2.2.1 优先分支限界算法思想   在扩展内部结点时,首先考察左子树结点,在左子树结点i 加入到当前团中,并检查该顶点与当前团中其他顶点之间是否有边相连。当顶点i与当前团中的所有顶点之间都有边相连,则相应的左子树结点是可行结点,否则就不是可行结点。为了检测左子树结点的可行性,算法从当前扩展结点开始向根结点回溯,确定当前团

文档评论(0)

bokegood + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档