/** Add an algorithm at the given deduction step. */
 void addAlgo(Algorithm a, int step) {
   algos.add(a);
   try {
     updateComplexity(a.getComplexity(), step);
   } catch (ComplexityClashException e) {
     System.err.println(
         "Complexity clash for " + problem.getName() + " on " + node + " " + a + " and " + algos);
   }
 }
 ProblemOnNode(Problem p, GraphClass n) {
   if (!p.validFor(n))
     throw new IllegalArgumentException(p.getName() + " not applicable to " + n.getID());
   problem = p;
   node = n;
   algos = new HashSet<Algorithm>();
   complexity = new Complexity[STEPS];
   for (int i = 0; i < complexity.length; i++) complexity[i] = Complexity.UNKNOWN;
 }