El algoritmo Branch and Bound (o Ramificación y Acotamiento) es un método para resolver problemas de programación entera generando de forma recursiva cotas que favorecen obtener valores enteros para las variables de decisión, resolviendo primero el modelo como lineal y luego generando cotas si una variable es fraccionaria para restringir el dominio y acercarse a la solución entera.