Option Explicit ' Carraghan, R., Pardalos, P. M.: An exact algorithm for the maximum clique problem. Op. Research Letters 9. (1990) 375-382 ' (without compresing graphs etc) Private level_nodes() As Long Private nStart() As Long Private NodesNum() As Long ' number of vertrices on a level Private t As Long ' current level Private mnMaxClique As Long ' current best clique ' Public Function Start() As Long Dim i As Long, t_minus_1 As Long ReDim level_nodes(1 To Nodes, 1 To Nodes) ReDim NodesNum(1 To Nodes) ReDim nStart(1 To Nodes) mnMaxClique = 0 '''''' each level has its own set of nodes For i = 1 To Nodes level_nodes(1, i) = i Next NodesNum(1) = Nodes ''''''''''''''''''''''''''''''''' t = 1 nStart(t) = 0 ''''''''''''''''''''''''''''''''''' While t >= 1 nStart(t) = nStart(t) + 1 ''' Degree control If (t + NodesNum(t) - nStart(t)) > mnMaxClique Then t_minus_1 = t t = t + 1 nStart(t) = 0 NodesNum(t) = 0 ''' define nodes for the next level For i = nStart(t_minus_1) + 1 To NodesNum(t_minus_1) If arr(level_nodes(t_minus_1, nStart(t_minus_1)), level_nodes(t_minus_1, i)) Then NodesNum(t) = NodesNum(t) + 1 level_nodes(t, NodesNum(t)) = level_nodes(t_minus_1, i) End If Next If NodesNum(t) = 0 Then t = t - 1 If t > mnMaxClique Then mnMaxClique = t End If End If Else t = t - 1 End If Wend ''' return size of the maximum clique Start = mnMaxClique End Function