• 极大团算法思路小记


    最大团和极大团不一样,该算法应该是极大团算法

    Bron-Kerbosch算法

    Input: The graph G 
    Output: the set of all maximal cliques: C
    1: Initialize C and two vertex sets R, X with ∅ 
    2: Define P ← the node set of G
    
    3: function BRONKER(R, P, X):
    4:   if P = ∅ & X= ∅
    5:      then Add R to C
    6:   end if 
    7:   for v ∈ P do
    8:      Define N(v) ← the neighbor set of v
    9:      BRONKER( R ∪ v, P ∩ N(v), X ∩ N(v)) 
    10:     P ← P \ v
    11:     X ← X ∪ v
    12:  end for
    13: end function
    
    14: BRONKER(R, P, X)
    15: return C
    

    算法的原理:
    R是一个团,不断查找这个团中元素共同的邻居,形成一个极大团。而P则是R中元素的共同邻居集合,所以P中的每一个元素 v 都符合条件可以扩充R的团,对于P中的每一个元素 v ,将其加入R,则扩充后的团的共同邻居集合需要更新,需要找出R和 v 共同的邻居,即原始团R的共同邻居集合P和扩充该团的元素 v 的邻居集的交集。
    在包含 v 的极大团被搜索之后,就将 v 从P中去掉,否则可能在后续搜索 v 的邻居节点 v' 的时候,又将包含 v 的极大团整了一遍。集合X中的元素a就是表示团R的共同邻居中,a的团已经搜索过了。P为空时,则X也为空

  • 相关阅读:
    SGU 495 Kids and Prizes
    HDU 3853 LOOPS
    HDU 4089 Activation
    HDU 4405 Aeroplane chess
    ZOJ 3329 One Person Game
    POJ 2096 Collecting Bugs
    POJ1573(Robot Motion)
    poj2632(Crashing Robots)
    poj1068(Parencodings)
    poj2506(Tiling)
  • 原文地址:https://www.cnblogs.com/lxzbky/p/15972113.html
Copyright © 2020-2023  润新知