Algorithm 1: The double-layer Tabu search maximal clique (DTSMC). | |
Input: , Degree () and N() Output: |
|
1 | Initialization: randomly select the min degree vertex Current from , Tabu_first_set = ø, Tabu_second_set = ø, = ø, Ci = ø, p_next = ε, P_left = |
2 | for j = 1; j ≤ |P_left|; j++ do // Find maximal clique of subgraph |
3 | Candi_set = N(); |
4 | while |Candi_set| ≠ ø // Find the maximum clique at the current node |
5 | Randomly select a vertex p_next from Candi_set; |
6 | if p_next ∈ // Evaluate common neighbor nodes |
7 | Cj ← Cj ∪ {p_next }; |
8 | Tabu_second_set ← Tabu_second_set ∪ {p_next}; // Update second-level Tabu list |
9 | Candi_set ← − Cj; // |
10 | end if |
11 | end while |
12 | for k = 1, K = |Cj| |
13 | if degree() = |Cj| − 1 // Compute the node degree |
14 | P_left ← P_left/; // Update second-level candidate solution list |
15 | Tabu_firt_set = − P_left; // Update first-level Tabu list |
16 | end if |
17 | end for |
18 | = + Cj; |
19 | end for |
20 | Return //Return all maximal clique |