1. The branch and bound algorithm divides the problem into sub-problems by fixing variables to 0 or 1.
2. It bounds sub-problems by relaxing constraints and solving the linear programming relaxation to obtain bounds.
3. Sub-problems are discarded if their bound is less than the best known solution or they are infeasible.
4. The algorithm proceeds by branching on the next variable until no sub-problems remain, leaving the optimal solution.