To a hypergraph, we can apply the following transformations:
[Vertex Removal of Type A] Remove a specified vertex from the hypergraph. As for the edges that contained this vertex, remove all of these edges completely.
[Vertex Removal of Type B] Remove a specified vertex from the hypergraph. As for the edges that contained this vertex, just remove the specified vertex from these edges.
(So in type B vertex removal, an edge only gets completely removed if it contained only the specified vertex and no other vertices.)
The background problem I'm working on is the following:
I start with a hypergraph $H$. Now a series of transformations A,B,A,B,... is applied until there are no more vertices. I need to search through the tree of all choices of vertices for those transformations.
So, for example, if $H$ has 3 vertices {1,2,3}, then the tree looks like the following, where each node represents a hypergraph:
During the search I look for some things which don't matter for this post.
Now, an important observation to actually do this in practice is that we will often see the same hypergraphs (up to isomorphism). So we can prune the search space by a lot by maintaining a database (hashtable) of hypergraphs we have seen so far (and their characteristics that we are looking for). However, as the hypergraphs will be just isomorphic but have different vertex/edge labels, we need to compute a canonical representation of the hypergraph at each stage, and store/search those canonical representations in our database.
For finding canonical hypergraph representations, I use the software Traces. I convert the hypergraph to a 2-colored graph, with some vertices representing hypergraph vertices and the other vertices representing hypergraph edges. Then Traces can compute a canonical representation of this 2-colored graph.
So far so good, but it is still too slow. To further improve the runtime, we make the following observation: To find a canonical representation, Traces will compute the automorphism group. When passing down our search tree, we will basically look at (some sort of) subgraph of the previous graph, with only one vertex removed. So:
In the Nauty/Traces/Bliss/saucy/conauto/... algorithm, can one speed up the computation of a canonical label and/or automorphism group of a subgraph with one vertex removed from a supergraph, by knowing the canonical label and automorphism group of the supergraph?