algorithmgraph-theoryintersectioncliqueclique-problem

Edge clique cover algorithm


I am trying to write an algorithm that computes the edge clique cover number (the smallest number of cliques that cover all edges) of an input graph (undirected and no self-loops). My idea would be to

  1. Calculate all maximal cliques with the Bron-Kerbosch algorithm, and
  2. Try if any 1,2,3,... of them would cover all edges until I find the minimum number

Would that work and does anyone know a better method; is there a standard algorithm? To my surprise, I couldn't find any such algorithm. I know that the problem is NP-hard, so I don't expect a fast solution.


Solution

  • I was working on the similar problem 2 years ago and I've never seen any standard existing approaches to it. I did the following:

    1. Compute all maximal cliques. MACE was way better than Bron-Kerbosch in my case.
    2. Build a constraint-satisfaction problem for determining a minimum number of cliques required to cover the graph. You could use SAT, Minizinc, MIP tools to do so. Which one to pick? It depends on your skills, time resources, environment and dozens of other parameters. If we are talking about proof-of-concept, I would stick with Minizinc.

    A bit details for the second part. Define a set of Boolean variables with respect to each edge, if it's value == True, then it's covered, otherwise, it's not. Add constraints that allow you covering sets of edges only with respect to each clique. Finally, add variables corresponding to each clique, if it's == True, then it's used already, otherwise, it's not. Finally, require all edges to be covered AND a number of used cliques is minimal.