Hmmm - I think I am misunderstanding fundamentally what maximal.cliques() is doing - I assumed there should be no overlap but of course there will be as vertices can be shared amongst cliques! What I am trying to achieve is effectively clustering by pulling out complete subgraphs, but vertices should appear uniquely in the final set of clusters. Can you suggest a way of doing this?
One thought I had was to recursively calculate the largest.cliques(), delete the associated vertices, and continue until there are no vertices left. However, I am still stuck with the problem that largest.cliques() can return more than one clique (if vector lengths are equal) and these can contain overlapping vertices, so there still has to be a choice made of which vertices to use...