It is well discussed in many graph theory texts that it is somewhat hard to distinguish non-isomorphic graphs with large order. But as to the construction of all the non-isomorphic graphs of any given order not as much is said. So, it follows logically to look for an algorithm or method that finds all these graphs.

A Google search shows that a paper by P. O. de Wet gives a simple construction that yields approximately $\sqrt{T_n}$ non-isomorphic graphs of order n.

( $\{T_n}$ being the number of labeled graphs of order n.)

So, I have the followings to ponder over:

(1) Are there such algorithms or has there been an improvement on the aforementioned algorithm?

(2) Where can I find a collection of non-isomorphic graphs of a given order?

If you allow me, I would also like to extend my question to connected graphs.

4 Answers
4

The nauty software contains the "geng" program, which enumerates all nonisomorphic graphs of a given order, or only connected ones, or selected on a wide range of other criteria. The method is tuned for practical speed rather than simplicity or theoretical bounds. The author Brendan McKay also has a page where you can download nonisomorphic (connected) graphs up to 10 vertices.

The chapter gives an algorithm for producing an undirected graph uniformly over all graphs of size $n$. It is based on Polya counting. Computing the enumerating polynomial depends on some group theory that is time consuming (I don't know the complexity class, but I'll just conjecture it is most likely exponential space on $n$). But it is a guarantee of uniform distribution. Unfortunately I don't know of a way (I haven't heard of a way) to derandomize this to create an unranking algorithm (to give a mapping from the naturals to the set of unlabeled graphs).

The algorithm presented in your link (by de Wet) is cute (I mean that in the sense that it is cleverly simple, does not lie, but doesn't really give the meat of it, what it means to have a list of non-isomorphic graphs). The graphs created there have a very particular structure (two paths with an arbitrary subset of edges between the paths, plus some small widgets on one end of each path to break symmetry. All subsets is a good trick but having two paths is pretty uncommon and $\sqrt{T_n}\over T_n$ goes to 0 as $n$ grows.

As to practicality, in addition to the suggestions of nauty and Sage, there's also Mathematica (commercial) which has a list (that you can manipulate) of graphs up to size 11.