Branch-and-Bound Algorithms