BronKerbosch算法.docxVIP

  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文档。上传文档
查看更多
BronKerbosch算法

Bron_Kerbosch算法朴素的Bron_Kerbosch算法最大团问题是在图中找到最大的完全子图的问题,是一个经典的NP完全问题。无向图的最大团确定搜索算法中有一个Bron_Kerbosch算法。该算法在1973年提出,后有很多变种,尝试加入一些策略加快搜索速度。朴素的Bron_Kerbosch算法如图1所示。图1:朴素的Bron_Kerbosch算法在该算法中有四个集合:。其中::目前已经在团中的结点的集合(temporary result):可能在团中的结点的集合(possible candidates):不被考虑的结点的集合(excluded set,在朴素的Bron_Kerbosch算法表现为:包含该结点的最大团已经被搜索):结点的所有直接邻居(有边直接相连)结点的集合。其中,。该算法发的文字描述如下:从中选出一个结点找包含的最大团。将放入集合中,并将不在的结点从和中移出。从剩下的中再选出一个结点,重复上述操作。直到成为空集。此时,若也为空,则是新的最大团(如果不为空,则说明是已经找到的最大团的一个子集)。然后,回溯到上一个选择的结点,并将集合也恢复到原来的状态,同时,将本次选择的结点从中移出,加入,从中选出下一个结点重复上述操作。如果为空集,则返回到上一级。如图3所示,为图2所示的图的Bron_Kerbosch算法的部分步骤。图2:有5个团的图例(四条边和一个三角形)图3:图2所示图的Bron_Kerbosch算法的部分步骤带轴的Bron_Kerbosch算法朴素的Bron_Kerbosch算法在有很多非最大团的情况下,效率不是很好。因为,该算法会遍历所有的团。该算法的其中一个变种是加入轴(pivot),基本思想是选择一个结点轴,最大团要么包含,要么包含的非直接邻居。算法的伪代码如图4所示,以图2为例的执行步骤如图5所示。图4:使用轴的Bron_Kerbosch算法图5:图2所示图的带轴Bron_Kerbosch算法的实现步骤带轴的Bron_Kerbosch算法最理想的情况是选择图的顶点覆盖问题的解,作为候选集。顶点覆盖(vertex cover)问题是,在图中找一个最小的结点集,使得图中的每条边都至少有一个端点在该结点集中。如图9所示,{1,3,5}为该图的顶点覆盖问题的解。虽然使用顶点覆盖问题的解能提高该算法的效率,但是,顶点覆盖问题本身是一个NP问题。图9:顶点覆盖问题的例子有序的Bron_Kerbosch算法在图论中,度(degree)或阶(valency)是指一个图中连接在某个结点上的边的数目。图的最大/最小度数是指图中度数最大/最小的结点的度数。在正则图(regular graph)中,所有结点的度数都相同。诱导子图(induced subgraph)是一个图的一些结点和连接这些结点的所有边构成的一个新图。形式化的定义方式为:给定图诱导子图为,并且,当且仅当,。其中。退化(degeneracy):如果图的结点存在一种序列(degeneracy ordering),使得每个结点和它所有前驱形成的诱导子图中,该结点度不超过,则称该图为-退化图。图6为2-退化图的例子。图6:2-退化图如果算法在从集合中选结点时,按照退化序(degeneracy ordering)选择,能够减少算法调用的次数,从而提高效率。其中,退化序能在线性复杂度内计算完成。但,该变种(严格来说,这种变化并没有改变算法,只是在算法执行的时候选择能加快速度的序列)会有退化的时候。图8为图2所示图的退化顺序。图7:有序、带轴的Bron_Kerbosch算法图8:有序Bron_Kerbosch算法在图2所示图中的退化序列由实验对比知,带轴的Bron_Kerbosch算法的执行效果比较好。

文档评论(0)

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

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

1亿VIP精品文档

相关文档