Step 3: Determine a complete list of all the elements of a discrete structure. In a complete list of a discrete structure each element of this structure occurs exactly once. Step 4: Generate the objects of a discrete structure uniformly at random. In other words we apply an algorithm which generates each object of a discrete structure with exactly the same probability. Especially in the case when the objects of a discrete structure are themselves classes of (equivalent) objects, then we ask that the algorithm hits each class with the same probability, even if not all the classes are of the same size. In general, step 3 is the most ambitious task, it needs a lot of computing power, computing time and memory. For that reason, when the set of all elements of a discrete structure is too hard to be completely determined it is useful and makes sense to consider step 4. This approach allows to generate a huge variety of different unprejudiced objects of a discrete structure. These sets of examples can be very useful for checking certain hypotheses on them and afterwards for trying to prove the valid ones.
For example, let us have a short look at the classification of unlabelled graphs on
vertices:
- Step 1:
- There are
graphs on
vertices. - Step 2:
- There exists exactly one graph with
edges, with
edge, with
edges or with
edges; two graphs with
or
edges; three graphs with
edges. - Step 3:
- The unlabelled graphs on
vertices are given in figure 1.
In this example step 4 is trivial, whence it is omitted.
As was already mentioned, the standard tool for classification of discrete structures is the notion of group actions. A detailed introduction to combinatorics under finite group actions can be found in Kerber (1991, 1999).
A multiplicative group
with neutral element
acts (from the left) on a set
if there exists a mapping