Análisis de Ciclos en redes de intercambio: Algoritmos utilizados Se utilizan dos algoritmos, uno, para determinar todos los ciclos presentes y otro para determinar cuales de ellos son independientes. Para la enumeración de todos los ciclos existentes, podemos hacer uso de dos herramientas: a) un grafo bipartito, donde los nodos se dividen en dos categorías de diferente naturaleza (fuentes y sumideros) y los arcos del grafo –equipos de intercambio- sólo vinculan nodos de distinto tipo. Así, por ejemplo, en la figura 1 se representa una red de intercambio de 7 equipos entre 3 fuentes y otros tantos sumideros. V 1 2 3 4 5 Figura 1 b) una matriz de adyacencias, que consiste en un arreglo de nS filas (sumideros) por nF columnas (fuentes). En esta matriz, si existe un intercambio entre la corriente i y la j, el elemento de la fila y columna correspondientes tendrá una asignación; de lo contrario estará vacío. V 1 2 3 Debe tenerse en cuenta que, si entre una fuente y un sumidero existen más de un intercambio, en la matriz de adyacencias sólo podrá 4 representarse uno de ellos pero, en este caso, con esa asignación se estará 5 declarando un número de ciclos igual a los intercambios no representados. Figura 2 Del mismo modo, y para simplificar el tratamiento posterior, en el grafo bipartito se pueden reducir a uno todos los arcos que vinculan a dos nodos. Previo al análisis de ciclos, conviene eliminar los arcos y nodos que no pueden formar parte de un ciclo. Una corriente que está presente en un solo equipo nunca podrá repetirse y, consecuentemente, la misma y el equipo que la conecta con el resto del sistema pueden ser eliminados del análisis. De acuerdo a esto, serán eliminados el nodo 5 en la figura 1 y la tercera fila en la matriz de adyacencias. Si bien esta última es más conveniente para un tratamiento computacional, no resulta práctica para el análisis de ciclos. Por ello, en lo que sigue, trabajaremos sobre el grafo bipartito. Una vez que disponemos de la representación de la red, debemos comenzar con el análisis de ciclos. El algoritmo que permite enumerar todos los ciclos existentes se basa en recorrer el grafo en un sentido arbitrario. Cuando en una secuencia [...nodo - arco - nodo...] se verifica la repetición de un nodo, los arcos comprendidos entre las dos repeticiones constituyen un ciclo. 1 A partir de esta información es posible construir la matriz de ciclos y arcos (o intercambios), donde se individualizan la totalidad de ciclos presentes en el sistema y, para cada uno de ellos, los arcos que se encuentran involucrados. En el cuadro 1 se resumen los pasos a seguir para determinar dicha matriz a partir de la información contenida en el grafo. Numeremos los arcos para que resulte más sencilla la determinación de los ciclos, como puede verse en la figura 3. V 2 1 Así, tomando el Vapor como nodo inicial, por ejemplo, puede considerarse la secuencia de nodos [V 3 1 4 V]. Como el nodo V ya está en la lista, el conjunto de arcos (1, 3, 4, 2) constituye un ciclo, identificado como L1 en la figura 4, que muestra la matriz de ciclos y arcos para el ejemplo. 1 5 3 4 3 2 6 4 Figura 3 Cuadro 1: GENERACIÓN DE LA MATRIZ DE CICLOS Y ARCOS 1. Si dos nodos están vinculados por N (N > 1) arcos, incorporar N-1 ciclos a la matriz de ciclos y arcos y eliminar del grafo N-1 arcos de ese conjunto. 2. Generar una lista inicial vacía. Tomar un nodo cualquiera. 3. Si el nodo figura en la lista de nodos ir a 6; si no 4. Incorporar el nodo a la lista de nodos. 5. Tomar un arco cualquiera que contenga al nodo y no haya sido considerado. Tomar el otro nodo vinculado por el arco. Ir a 3. 6. La secuencia que comienza en la inclusión previa del nodo en la lista y que concluye con el arco elegido, que termina en ese nodo, constituye un ciclo. 7. Si el ciclo ya ha sido detectado, desecharlo. Si no, incorporarlo a la matriz de ciclos y arcos. 8. Eliminar de la lista el último nodo. Considerar el nuevo último nodo (anterior penúltimo). 9. Si el nodo tiene arcos aún no considerados ir a 5; si no 10. Si en la lista de nodos hay un solo elemento Terminar; si no, ir a 8. De un modo análogo se detecta el ciclo L3, que se muestra en la figura 4. Una vez hecho esto, debe verificarse que L3 es independiente de L1 y L2. Ciclos El proceso sigue, de acuerdo al algoritmo, eliminando el nodo V de la lista y eligiendo otro arco aún no analizado que intercambie con 4; el único que falta es el intercambio con la corriente 2 (arco 6). Luego debe elegirse el intercambio Arcos con la corriente 3 (arco 5). Ahora la lista queda [V 3 1 4 1 2 3 4 5 6 2 3], detectándose otro ciclo, no considerado aún, el (3, L1 4, 6, 5), indicado como L2 en la figura. L2 L3 Figura 4 2 El algoritmo destinado a determinar el conjunto de ciclos independientes utiliza la propiedad de los grafos donde, si los ciclos L1 y L2 tienen en común el conjunto de arcos S, L1 = Sa U S y L2 = Sb U S, entonces Lx = Sa U Sb es un ciclo en el grafo pero no puede ser considerado independiente de L1 y L2 y uno de los ciclos del conjunto (L1, L2, Lx) debe ser eliminado. De lo anterior, queda claro que, en la matriz de la figura 4, debemos eliminar uno de los tres ciclos detectados hasta el momento, por ejemplo, L3. Al continuar aplicando el algoritmo se detectan más ciclos, pero, éstos ya han sido encontrados por otra vía. Lo anterior es coherente con la regla general de Hohmann, ya que en la figura 3 aparecen 5 corrientes y 6 equipos en un solo subsistema, lo que determina la existencia de dos ciclos. Por supuesto que la determinación de los ciclos independientes en un grafo la deberemos realizar toda vez que modifiquemos la estructura de la red, por ejemplo por la eliminación de un intercambio. 3