Muchas situaciones, interesantes para la Investigación Operativa, se pueden modelar y resolver como redes. Los algoritmos basados en redes muchas veces pueden ser más eficientes que el método Simplex de la Programación Lineal.
Una red es una serie de nodos enlazados con arcos.
Cada red tiene asociado un flujo limitado a la capacidad (finita o infinita) de cada uno de sus arcos. Un arco es dirigido u orientado si permite flujo positivo en una dirección y flujo cero en la dirección opuesta. Una red dirigida tiene todos sus arcos dirigidos.
Una ruta es una sucesión de arcos distintos que unen dos nodos. Un ciclo es una ruta que conecta un nodo consigo mismo, pasando por algún arco. Una red es conectada si todo par de nodos está enlazado por al menos una ruta.
Un Árbol es una red conectada sin ciclos de solo un subconjunto de todos los nodos de la red. Un árbol de expansión es un árbol que enlaza todos los nodos de la red.
Hay dos algoritmos interesantes para los modelos de redes:
- Algoritmo para calcular el árbol de expansión mínima.
- Algoritmo para calcular el flujo máximo.
Los Métodos CPM y PERT están inspirados en los modelos de redes.
Algoritmo para el Árbol de Expansión Mínima
Sean el conjunto de nodos, los nodos conectados en la iteración , y los restantes.
- Inicializar con y .
- Comenzar la primera iteración con cualquier nodo y hacer .
- Iterativamente, en cada paso , seleccionar un nodo que produzca el arco más corto a un nodo del conjunto conectado . Hacer . Luego, y repetir.
- Detenerse cuando . Los arcos utilizados son la ruta más corta que conecta toda la red.
Algoritmo para el Flujo Máximo
Este algoritmo se utiliza para determinar rutas de irrupción con flujo neto positivo.
- Inicio: para todos los arcos se iguala la capacidad residual con la inicial: . Se etiqueta el nodo fuente con . Se iguala .
- Determinar : el conjunto de nodos no etiquetados directamente alcanzables desde el nodo , con residuales positivos (). Si , ir al paso 3. Si , ir al paso 4.
- Determinar . Igualar y etiquetar el nodo con . Si , se encontró una ruta de irrupción, y hay que ir al paso 5. Sino, hacer e ir al paso 2.
- Retroceso: si , entonces no hay otras irrupciones posibles, entonces hay que ir al paso 6. Sino, sea el nodo etiquetado inmediatamente antes del actual. Quitar del conjunto de nodos adyacentes a . Igualar . Ir al paso 2.
- Red residual: sean los nodos de la -ésima ruta de irrupción. Se calcula el flujo máximo por la ruta: . La capacidad residual de cada arco a lo largo de la ruta se disminuye o se aumenta en unidades. en la ruta: si el flujo va de a . Se reinstalan todos los nodos eliminados en el paso 4. Poner y volver al paso 2, a buscar nuevas rutas potencialmente mejores.
- Solución: para rutas de irrupción, el flujo máximo en la red es .