Step 3 : Extend all possible ways

The title of this post refers to the tendency of algorithms in papers to have detailed explanation of every step except the most crucial one. Right now I am rediscovering this peculiar pleasure in structure generation.

As an example - or more as visual decoration - have this image:

which looks nice, but needs some explanation. The diagrams in boxes that look like parachutes (as one of my colleagues put it :) are simple representations of atoms connected by bonds. Each point is an atom, and a curved line connecting them is a bond.

These are grouped together by what structure they correspond to; which is shown on the right of each set of diagrams. What this shows, then, is the redundancy you get from a simple generator. If you connect all atoms like this:
  for atomA in atoms:
for atomB in atoms greater than atomA:
connect(atomA, atomB)
You quickly get a very large number of isomorphic structures. And then your process runs out of memory, in my experience.

Oh, and the numbers below each graph are the sum of the indegree/outdegree (the degree?) of the that vertex - or the number of bonds the atom is in, in other words. This seems similar to the ideas behind Morgan numbers, which I now understand a bit better.