Branch and Bound Codificando el Algoritmo desde Cero

Codificando el Algoritmo Branch and Bound desde Cero

Una comprensión más profunda del algoritmo en lenguaje de programación Python

Introducción

Foto de JJ Ying en Unsplash

Si vienes del artículo introductorio: Branch and Bound – Introducción Antes de Codificar el Algoritmo Desde Cero, entonces esta es la parte donde avanzamos en nuestra comprensión del algoritmo al codificarlo desde cero. Esto siempre me ayuda a entender el funcionamiento del algoritmo, avanzando en el pensamiento algorítmico o computacional que necesito en mi profesión.

Si has encontrado este artículo sin haber leído el artículo introductorio, te sugiero que leas los conceptos detrás del algoritmo y entiendas el flujo de trabajo antes de probar el código a continuación. Como queremos evitar contenido redundante, omitiremos la explicación del algoritmo de ‘branch and bound’ y nos enfocaremos directamente en la codificación.

Revisión rápida del algoritmo:

Imagen del autor: Codificar desde cero es más fácil con un diagrama de flujo para seguir

El algoritmo de ‘Branch and Bound’, cuando se utiliza para resolver programas lineales y en el contexto de la programación entera, sigue los siguientes pasos generales.

  1. Inicialización – Inicializa la variable con el valor menos óptimo. Si estás maximizando, el valor debe establecerse en menos infinito, y viceversa para un problema de minimización. La razón de esto es que el proceso recursivo del código debe esforzarse por encontrar una solución mejor y una ejecución del algoritmo ya debe proporcionar una solución mejor.
  2. Relajación de la Programación Lineal – El problema principal se resolvería si no se aplicara la restricción entera. Por lo tanto, “relajamos” esa restricción y la tratamos como un programa lineal normal, de ahí el término “relajación de la programación lineal”. Este paso se realiza para cada subproblema.
  3. Verificación de Integralidad – Si la solución inicial ya es integral, el programa termina. Esta condición también se verifica para cada subproblema.
  4. Ramificación – Si la solución óptima no es integral, entonces el problema se descompone (o se “ramifica”) en subproblemas más pequeños. Esto se hace agregando restricciones a…

We will continue to update Zepes; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

Inteligencia Artificial

Vínculo de datos de dispositivos portátiles vincula la reducción del sueño y la actividad durante el embarazo con el riesgo de parto prematuro

Los científicos han asociado la falta de sueño y la reducción de la actividad física durante el embarazo con el riesg...

Inteligencia Artificial

El Cuadro de Búsqueda de Google Cambió el Significado de la Información

La búsqueda en la web prometía resolver preguntas. En cambio, trajo consigo un apocalipsis suave de la verdad.

Inteligencia Artificial

Conoce Quivr Un proyecto de código abierto diseñado para almacenar y recuperar información desestructurada como un segundo cerebro

Ha habido un crecimiento continuo en el dominio de OpenAI en los últimos años. Investigadores de muchas universidades...

Inteligencia Artificial

Conoce DISCO Una novedosa técnica de IA para la generación de bailes humanos

La inteligencia artificial generativa ha despertado un gran interés en la comunidad de la visión por computadora. Los...

Inteligencia Artificial

Perro robot establece récord mundial de velocidad

El Instituto Avanzado de Ciencia y Tecnología de Corea ha recibido reconocimiento del Guinness World Records por su i...

Inteligencia Artificial

Conoce VideoSwap Un marco de inteligencia artificial que personaliza el intercambio de temas de video con una correspondencia puntual semántica interactiva.

Recientemente, ha habido avances significativos en la edición de videos, con la edición utilizando Inteligencia Artif...