Suppose I have a list and a notion of what it means for two elements to be isomorphic. I would like to create a subset of the list with exactly one representative from each isomorphism class.
The specific case in which I want to apply this is I have a list of graphs, and I would like to remove isomorphic duplicates. I have a very long list of graphs (~100,000) that I would like to apply this to.
And my notion of isomorphism is if the numbers are the same mod 3. In this case, an acceptable output would be
(obviously this is not unique).
What is the most efficient way to do this? For example, one could "greedily" select elements, and at each step compare an element in L with the guys who were already chosen to be part of the output. I don't think this will terminate in a reasonable amount of time in my case.