I have an undirected graph and graph edges are weighted. I want to partition the graph into cliques. I don't know the number of cliques in advance.
These are the objectives:
- Primary objective: The number of cliques should be as small as possible.
- Secondary objective: For each clique, we calculate the mean edge weight. The sum of these means should be as small as possible.
I'm using a hierarchical approach for comparing solutions: first, I compare the number of cliques between solutions. The solution with fewer cliques is preferred. If two solutions have the same number of cliques, I then look at the sum of edge weights within the cliques, choosing the solution with the smaller sum. This way, the number of cliques is always prioritized as the primary objective, with edge weight minimization serving as a secondary objective when clique count is tied.
The graph structure could be anything. It could be a path. It could be a clique. I have no bounds for clique size or vertex degrees.
While Integer Linear Programming (ILP) could potentially provide an optimal solution, it would likely be too computationally expensive for my case. So, I'm looking for a method that can give a good approximate solution and is scalable.