Whats the most efficient normalized form of an undirected graph?

Any representation of an undirected graph as a bitstring is either normalized or has at least 1 duplicate form.

Of those duplicate forms, we can define the normalized form as the lowest sorted bitstring.

That does not mean its efficient to find the normalized form, but it certainly exists.

Example: Define an undirected graph of n nodes as concat of pairs of integers, 1 integer for each node, and each pair of integers is an edge connecting them in the graph.

There are various ways of representing variable length integers, for example, 00 is 0, 11 is 1, and 01 ends the integer, or count in unary like 111110 is 5. Any of these will work for the math part, but most arent efficient.

Example: Concat rows of 2d triangle adjacency matrix.

Example: A nand forest whose root recognizes leafs which each represent a certain pair of nodes in the undirected graph, the bit meaning if they're connected or not. All permutations of the nodes, with these leafs between them, must recognize the same undirected graph, by definition of choosing among possible nand forests.

Nand forests can be sorted, first by quantity of nands, then by height, then recursively by left child, then recursively by right child. Sorting nand forests has a worst case of n * log(n)^2 if hash consing is used to measure equality in constant time.

Theres many ways to represent undirected graphs as bitstring, and they are guaranteed to have a normalized form in all those ways by defining normed as the lowest of those bitstrings for each unique graph. Which of these kinds of undirected graph norming are most efficient?

What is the complexity class of graph isomorphism?

Posted Feb 21, 2016, 10:03 PM UTC · edited

02
Loading comments…