3.2.1 k-cluster heuristic

We use two types of heuristics to find a cluster with exactly k nodes. First, for the initial feasible point (before running the Branch-and-Bound), we use the classical greedy heuristic, since it gives very good feasible solutions: we remove vertices one at a time from the graph by choosing the vertex with the smallest degree (or sum of the weights over the adjacent vertices) at each step. Second, during the evaluation of the bound and after running the bounding procedure on a subproblem having knodes added to the cluster, we add the remaining k - knodes having the largest fractional values xi in the SDP solution. More details can be found in [5]. Finally, to improve the solution we use a two-opt algorithm: swap two vertices (one in the k-cluster with one outside) until no progress is made. Finally, we also call the generic heuristic of BiqCrunch and keep the best solution. For further details see the problems/k-cluster/heur.c file.