The basic architecture of a macro-learning system requires a mechanism for generating training problems and a method for filtering them (or, alternatively, a method for ordering them). The main goal of the filter is to save learning resources by concentrating on helpful problems. To focus the attention of the learner, our acquisition method considers only macros that are parts of the solution path. Therefore, to save learning resources, a good problem generator should generate only solvable problems. In addition, it is desirable to order the training problems in increasing levels of difficulty. This saves learning resources by acquiring as much knowledge as possible using easy problems.

One good way to implement such a problem generation methodology is to require a domain-specific generator for each domain. For example, solvable problems in the NxN puzzle domain can be generated by performing an even permutation on the goal state. Since one of our main goals was to make the algorithm as domain-independent as possible, we have supplied a default domain-independent generator that works in many domains, including the sliding-tile puzzle. Our default problem generator assumes the following:

- The specification of the problem domain includes an algorithm for generating random goal states (unless there is only one goal state).
- All the operators are
*reversible*. If there is an operator connecting state*s*_{1}to state*s*_{2}then there is also a sequence of operators connecting*s*_{2}to*s*_{1}:

Alternatively, the specification of the domain includes a list of reverse operators.

In Section 5 we describe a method for increasing
the difficulty of training problems
by increasing the parameter that characterizes the domain
(such as *N* in the case of NxN puzzles).
For most parameterized domains, such as the NxN puzzle, increasing
the parameter indeed increases the difficulty of problems.
The framework of processing input examples by
order of difficulty, called *learning
from exercises*, was studied formally by Natarajan
[27] and empirically by
Reddy and Tadepalli [32].
Both works assume a teacher who supplies a sequence of problems
in increasing order of difficulty. Our default generator attempts to
produce such a sequence automatically, freeing the learner from
the need of a teacher.