private void compute ( final List < Integer > variables ) { final Stack < Integer > candidates = createInitialCandidates ( variables ) ; while ( candidates . size ( ) > 0 ) { final int lit = candidates . pop ( ) ; if ( solve ( lit ) ) { refineUpperBound ( ) ; } else { addBackboneLiteral ( lit ) ; } } }
Computes the backbone for the given variables .