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