public void pruning(Node node) {
   if (node.archs.size() == node.revisedArchs()) {
     for (Arch arch : node.archs) {
       for (Arch arch2 : node.archs) {
         if (!arch.equals(arch2)) {
           int aux = 0;
           if (arch.node1.equals(node)) {
             aux += 1;
           }
           if (arch2.node1.equals(node)) {
             aux += 2;
           }
           switch (aux) {
             case 0:
               for (int move : arch2.moves) {
                 move = this.inverseMove(move);
               }
               arch.moves.addAll(arch2.moves);
               arch.node2 = arch2.node1;
               arch2.node1.archs.remove(arch2);
               arch.node2.archs.add(arch);
               arch.visited = false;
               break;
             case 1:
               arch2.moves.addAll(arch.moves);
               arch2.node2 = arch.node2;
               arch2.node2.archs.remove(arch);
               arch2.node2.archs.add(arch2);
               arch2.visited = false;
               break;
             case 2:
               arch.moves.addAll(arch2.moves);
               arch.node2 = arch2.node2;
               arch.node2.archs.remove(arch2);
               arch.node2.archs.add(arch);
               arch.visited = false;
               break;
             case 3:
               for (int move : arch.moves) {
                 move = this.inverseMove(move);
               }
               arch.moves.addAll(arch2.moves);
               arch.node1 = arch.node2;
               arch.node2 = arch2.node2;
               arch.node2.archs.remove(arch2);
               arch.node2.archs.add(arch);
               arch.visited = false;
               break;
           }
         }
       }
     }
     for (Arch arch : node.archs) {
       if (arch.node1.equals(node)) {
         arch.node2.archs.remove(arch);
       } else {
         arch.node1.archs.remove(arch);
       }
     }
     nodes.remove(node);
   }
 }