Está en la página 1de 44

4 REDES

4.1 Conceptos y definiciones

Una red o grafo es un conjunto de puntos llamados nodos, que están unidos entre sí por líneas
que se denominan arcos.
Algunos problemas que se presentan en la realidad, sobre todo, en las ciudades; se pueden
modelar como una red, por ejemplo:

Sistemas de transporte
Sistemas de distribución
Sistemas de comunicación
Una red se puede describir numerando los nodos y los arcos que la constituyen. Así, los nodos se
numeran o se indican con letras del alfabeto, y el arco se denota por los nodos o puntos que
conecta.
Además de la representación gráfica, una red también puede representarse como una matriz
booleana (formada por ceros y unos), en donde los i renglones y las j columnas serán los nodos
de la red. Un cero en el elemento (i,j) de la matriz indica que no hay arco uniendo al nodo i con
el nodo j. Si el elemento (i,j) de la matriz es uno, indica que sí hay un arco uniendo al nodo i con
el nodo j.

1 2 3 4 5
2
1 0 1 1 0 0
1
3 2 0 0 1 0 0
3 0 0 0 0 1
4 1 0 1 0 0
4 5 5 0 0 0 1 0

Figura 4.1 Matriz booleana de una red

Un arco puede ser dirigido, si tiene asociado un sentido o no dirigido, en el caso de que no lo
tenga.
Si la red sólo tiene arcos dirigidos, se trata de una red dirigida.
Una cadena es un conjunto ordenado de arcos que conectan a dos nodos por medio de
nodos intermedios.
Una red conexa es una red para la cual existe una cadena entre cualquier par de nodos.
Un anillo o ciclo es una cadena que conecta a un nodo con él mismo.
Un árbol es una red conexa que no tiene anillos.

1
Estudio de redes

Tabla 4.1 Tipos de red y algoritmos

Conceptos Tipo de red Algoritmos


Flujo máximo (Ford y Fulkerson) Gráfico
Cadena
Numérico (matriz)
Flujo máximo (Labeling Technique)
Dirigida
Gráfico
Red conexa
Flujo máximo Gráfico
Máximo
Caminos de valor óptimo
Anillo Mínimo

No dirigida Máxima expansión


Árbol
Árbol Mínima expansión
El cartero chino Gráfico

4.2 Flujo máximo, red de transporte

Definición
Se llama red de transporte a una gráfica finita sin anillos tal que:
a. Cada arco u tiene asociado un número c(u)  0 llamado capacidad del arco.
b. Existe un vértice x0 y uno solo tal que w+(x0)=  este vértice se llama fuente de la red.
c. Existe un vértice xn y uno solo tal que w-(xn)=  este vértice se llama sumidero de la red.

Flujo
Sean w-(xi) el conjunto de los arcos incidentes al vértice xi hacia el interior y w+(xi) el conjunto de
arcos incidentes al vértice xi hacia el exterior. Se dice que una función entera (u) definida

sobre el conjunto A de los arcos ui es un flujo para una red de transporte si:

(u ) 0 u  A (4.1)

 (u ) u w (xi )
  (u ) u w (xi )
xi x0 (4.2)
xi xn

(u ) c (u ) u  A (4.3)

2
Puede pensarse que (u ) es un gasto que fluye por el arco u y que nunca puede exceder la

capacidad c(u) de dicho arco. Aún más, si xi no es ni la fuente ni el sumidero, entonces (4.2)
significa que el gasto que llega a xi es igual al gasto que sale de xi , que es la llamada
propiedad conservativa del flujo.
De acuerdo con lo anterior se deberá tener:
 (u ) u w (x 0 )
  (u ) u w (xn )
( x n ) (4.4)

A ( x n ) se le llama el valor del flujo. Se tratará el problema de calcular el valor óptimo del flujo

correspondiente a una red de transporte. La determinación del valor óptimo del flujo conduce
a un problema de programación lineal entera.

Arco saturado, flujo completo


Se dice que un arco ui A está saturado si se tiene:
(u ) c (u i ) (4.5)

Un flujo es completo si todo camino que va de la fuente al sumidero contiene al menos un arco
saturado.

En la figura 4.2, se muestra una red de transporte y en la figura 4.3 un flujo asociado a esta red.
Obsérvese que los arcos (x0x4), (x1x6), (x1x7), (x2x7), (x5x9), (x6,x9) y (x7x9) están saturados y que el
flujo no es completo ya que al menos existe el camino (x 0x3x8x9) que no posee ningún arco
saturado.

Corte, capacidad de un corte


Sea un conjunto Y X de vértices que contienen al sumidero xn y no contienen a la fuente x0. El
conjunto w-(Y) de los arcos incidentes a Y hacia el interior es un corte de la red.
Por ejemplo, si en la figura 5.2 se tiene Y={x 7,x9} entonces el corte correspondiente a Y está dado
por:
w-(Y)={(x1,x7),(x2,x7),(x3,x7),(x4,x7),(x5,x9),(x6,x9),(x8,x9)}
A la expresión:
C[w-(Y)]  c (u ) u w (Y )
(4.6)

Se le llama capacidad del corte w-(Y). Así en el ejemplo se tiene:


c[w-(Y)]=2+1+4+4+10+8+15=44

3
Teorema del mínimo corte-máximo flujo
Refiriéndose al inciso anterior, como Y contiene al sumidero, toda unidad de gasto que va de x0
a xn , pasa al menos una vez por un arco de w -(Y) y, consecuentemente, cualquiera que sea un
flujo  (xn) y un corte w-(Y), se tendrá:

 (xn)  c[w-(Y 0)]

Luego, si existe un flujo 0 ( x n ) y un corte w-(Y0) tales que:

 0 ( x n ) c [ w ( Y 0 )]

Entonces el flujo 0 ( x n ) tiene un valor máximo y el corte w -(Y0) tiene una capacidad mínima.

Lo anterior origina el siguiente teorema:

Teorema
En una red de transporte dada, el valor máximo de un flujo es igual a la capacidad mínima de
un corte, esto es:
Máx  (xn)=mín c[w-(Y)] (4.7)

En otras palabras, si se logra encontrar un flujo igual a la capacidad de un corte, se estará


seguro de que dicho flujo es máximo. En esta idea está basado el algoritmo de Ford y Fulkerson,
el cual permite calcular el flujo máximo asociado a una red de transporte.

Ejemplo 4.1 Flujo máximo en una red de transporte


Una empresa constructora dispone de cuatro bancos de préstamo x1 a x4 y puede explotar 120
000 m3 en x1 y 100 000 m3 en cada uno de los restantes. Por otra parte el material debe
transportarse a los sitios x5 a x8 en donde se requieren respectivamente 100 000m 3, 80 000 m3, 90
000 m3 y 150 000 m3. Este hecho se muestra en la tabla, en donde las cantidades están
expresadas en decenas de miles de m3.

X1 X2 X3 X4 X5 X6 X7 X8
Bancos 12 10 10 10
Sitios de descarga 10 8 9 15

4
Debido a las restricciones en la flotilla de camiones, en el equipo de explotación de los bancos
y en los caminos de acceso; las capacidades de transporte de cada uno de los bancos a los
sitios de descarga resulta como se muestra en la tabla siguiente:
Destino
x5 x6 x7 x8
x1 7 3 2 0

Origen
x2 5 4 1 0
x3 0 2 4 8
x4 0 2 4 8

Observar que las capacidades de transporte con destino a los diferentes sitios de descarga
exceden a las demandas y que las capacidades de salida de cada banco de préstamo
exceden a su disponibilidad.
Haciendo abstracción de los costos de transporte, interesa satisfacer las demandas al máximo.

Planteamiento de una red de transporte:

1. Cada uno de los bancos y de los sitios de descarga está representado por un vértice de la
red.
2. Cada banco está ligado mediante una flecha orientada o arco a los sitios de descarga y
este arco lleva un número que representa su capacidad; es decir, el tonelaje que puede
transportarse por el camino correspondiente. No se trazará por supuesto ningún arco entre
origen y destino si no hay un camión que siga esa ruta o bien si en ella existe un camión con
capacidad disponible nula.
3. Un vértice auxiliar x0 (la fuente) está ligado a cada banco mediante un arco que lleva como
capacidad la disponibilidad en ese banco.
4. Cada sitio de descarga está ligado a un vértice auxiliar x9 (el sumidero) mediante un arco
que tiene como capacidad la demanda correspondiente.

De esta manera se obtiene la red que se muestra en la figura 4.2, en la cual el número asociado
a cada arco es su capacidad. En este caso la fuente es el vértice x 0 y el sumidero es el vértice
x9.

5
7
x1 x5
3 5
2 10
12

x2 4 x6 8
10

x0 1 x9
10
2 9
x3 4 x7 Y

10
2 15
4 8
x4 x8
8

Figura 4.2 Capacidades en los arcos

4.3 Algoritmo de Ford y Fulkerson

1. Hacer pasar un flujo cualquiera inicial


Se hace salir de la fuente un cierto flujo que se propagará de vértice a vértice en forma tal que
se verifique la propiedad conservativa del flujo dada en la ecuación 4.2. Si debido a las
capacidades el flujo supuesto es muy grande, se le disminuye hasta lograr un flujo compatible
con las capacidades de los arcos. De esta manera se obtiene el flujo mostrado en la figura 4.3:

7
x1 6 x5
3 5 4
12
11 2 2 10
3
4 10
x2 3 x6 8
10 8
11 8
x0 x9
10
9 2 1 9
9
x3 4 3 x7

10
11
2 1
10 4 5 8
15
3
x4
8
6 x8

Figura 4.3 Un flujo inicial

2. Investigar un flujo completo


Si el flujo no es completo existe en la red un camino que va de la fuente al sumidero y tal que
ninguno de sus arcos está saturado. Se aumenta sucesivamente el flujo de este camino en una
unidad hasta lograr que al menos se sature uno de sus arcos. Se repite esta operación cuantas
veces sea necesario hasta lograr un flujo completo. En la Figura 4.3 se han indicado con trazo

6
grueso los arcos saturados. Observar que el camino x 0x3x8x9 no posee ningún arco saturado. Se
aumenta en una unidad el flujo que pasa por cada uno de los arcos de este camino lo cual
conduce a la saturación del arco (x0x3) y al logro de un flujo completo, ya que como se observa
en la figura 4.4, todos los caminos que van de la fuente al sumidero tienen al menos un arco
saturado.
7
x1 6 x5
3 5 4
12
11 2 2 10
3
4 10
x2 3 x6 8
10 8
11 8
x0 x9
10
10 2 1 9
9
x3 4 3 x7

10
12
2 1
10 4 6 8
15
3
x4
8
6 x8

Figura 4.4 Un flujo completo

3. A partir de un flujo completo, marcar los vértices de la red como sigue:


i. Marcar la fuente con el signo (+). Si el vértice xi está marcado y el xj no, entonces:
ii. Marcar el vértice xj con el símbolo (+xi) si existe un arco (xixj) no saturado
iii. Marcar el vértice xj con el símbolo (-xi) si existe un arco (xjxi) con flujo no nulo

La aplicación de este proceso se ilustra en la figura 4.5:

(+x0) (+x1)
7
x1 6 x5
3 5 4
12
11 2 2 10
(+x0) 3 (+x2)
4 10
x2 3 x6 8
(+) 10 8 (+x8)
11 8
x0 x9
10 (-x6) 1 (+x3) 9
10 2 9
x3 4 3 x7

10
12
(-x6) 2
1
10 4 6 8
(+x4) 15
3
x4
8
6 x8

Figura 4.5 Marcas en la red

7
4. Si por este procedimiento se llega a marcar el sumidero, entonces se considera la cadena
que pasa por los vértices marcados con (+) o con (-) y que va de la fuente al sumidero. Si un
arco de esta cadena está orientado en el orden indicado por la secuencia de los vértices
que forman la cadena, entonces el flujo de dicho arco se aumenta en una unidad y en
caso contrario se disminuye también en una unidad. De esta manera se obtendrá un nuevo
flujo, mayor que el inicial, y para el cual se sigue satisfaciendo la propiedad conservativa.
En el ejemplo, se tiene la cadena x0 x2 x6 x4 x8 x9 de vértices marcados, y consecuentemente
el flujo del arco (x0x2) se aumentará de 8 a 9, el de (x2x6) de 3 a 4, el de (x6x4) se disminuirá
de 1 a 0, el de (x4x8) se aumentará de 6 a 7 y el de (x8x9) de 12 a 13; así, se obtiene la figura
4.6:

7
x1 6 x5
3 5 4
12
11 2 2 10
(+x0) 3 (+x2)
4 10
x2 4 x6 8
(+) 10 9 (+x8)
11 8
x0 x9
10
10 2 1 9
9
x3 4 3 x7

10
13
(-x6) 2
0
10 4 6 8
(+x4) 15
3
x4
8
7 x8

Figura 4.6 Aumento de flujo en la red

5. Se repiten los pasos 3 y 4 hasta lograr que no aparezca ninguna cadena de vértices
marcados. Esta etapa se ilustra con la figura 4.7:
(-x5) (+x2)
7
x1 6 x5
3 5 4
12
11 2 2 10
(+x0) 3
4 10
x2 4 x6 8
(+) 10 9
11 8
x0 x9
10
10 2 1 9
9
x3 4 3 x7

10
13
2 0
10 4 6 8
15
3
x4
8
7 x8

Figura 4.7

8
Es fácil ver que cuando se llega a la situación descrita en el paso 5, entonces el flujo ( x n ) ha

alcanzado su valor máximo.


En efecto, sea Y 0 el conjunto de los vértices no marcados (figura 4.8):
(-x5) (+x2)
7
x1 6 x5
3 5 4
12
11 2 2 10 Y
(+x0) 3 0
4 10
x2 4 x6 8
(+) 10 9
11 8
x0 x9
10
10 2 1 9
9
x3 4 3 x7

10
13
2 0
10 4 6 8
15
3
x4
8
7 x8

Figura 4.8 Flujo máximo

Como x0  Y0, xn  Y0, el conjunto Y 0 define un corte w-(Y0) de la red y si se representa con
0 ( x n ) el flujo asociado a dicha red, se puede escribir:

0 ( x n )   (u ) u w ( Y0 )
 (u ) u w ( Y0 )

c (u ) u w ( Y0 )
0 c [ w (Y0 )

Por el teorema del mínimo corte-máximo flujo, resulta que 0 ( x n ) es el valor máximo del flujo.

De esta manera, en el ejemplo se tiene que:


( x 9 )  10+8+9+13 = 40 (flujo)

c[w-(Y0)]= 10+10+1+2+4+3+10 = 40 (corte)

Entonces, el flujo máximo que se puede llevar en la red es de 400 000 m 3 en las cantidades
indicadas con los números grandes en cada uno de los arcos y se puede indicar en la siguiente
tabla:

9
Destino
X5 X6 X7 X8
X1 6 3 2 0
X2 4 4 1 0

Origen
X3 0 1 3 6
X4 0 0 3 7

4.4 Algoritmo de flujo máximo


El problema de flujo máximo se presenta cuando se quiere determinar cuál es la mayor
cantidad de un bien que se puede enviar de un nodo (nodo origen), a otro cualquiera de la
red (nodo final), desde luego que deben existir una o más cadenas entre éstos nodos, y los
arcos que las constituyen tienen restricciones en cuanto a la cantidad, de ese bien, que puede
fluir.
Ejemplo 4.2 Flujo máximo
El gasoducto que une a la ciudad de Reynosa, Tamaulipas, con el campo productor de gas
natural en Cactus, Chiapas, ha sufrido un desperfecto. Para cubrir las necesidades de la ciudad
de Reynosa, se requiere determinar cuál es la máxima cantidad de gas que se puede enviar
usando estaciones compresoras y gasoductos alternativos.
La capacidad de los gasoductos se muestra en cada arco de la red (en millones de metros
cúbicos por día). Los nodos representan a las estaciones compresoras:

8
1 4
6
5 1 6
7
Cactus, 0 3 2 6 Reynosa,
Chiapas Tamaulipas
3
6 8
2 5
6

Esta red se puede representar de la siguiente forma:


8 0
1 4
0 6
1 0
0
5 0 6 0

0 7 3 6
0 4
6 0 0
2
0
3 8
0 2 5
6 0

10
Donde cada arco dirigido que une al nodo i con el nodo j, se representa ahora como:

Ci Cj
i j

Siendo Ci la cantidad del bien que puede fluir como máximo, del nodo i al nodo j, y C j sería la
máxima cantidad del bien que puede fluir del nodo j al nodo i.

Con la red en esta forma, se puede aplicar el siguiente algoritmo para determinar el flujo
máximo:
1. Encontrar una cadena del nodo origen al nodo final. Si no existe ninguna, el flujo neto
asignado es el flujo óptimo.
2. Encontrar en esta cadena el arco con la menor capacidad de flujo (mayor que cero).
Denotar a esta capacidad como C*. Aumentar C* al flujo neto del origen al final.
3. Restar C* a la cantidad Ci de cada arco en la cadena. Sumar C* a la cantidad C j de cada
arco en la cadena. Regresar al punto 1.

Para el ejemplo, inicialmente el flujo asignado es cero. Este flujo se denota con una flecha que
entra al nodo de origen y una flecha que sale del nodo final:

8 0
1 4 6
0
1 0
0
5 6 0
Flujo 0 Flujo
0 7 0 3 6
neto 0 neto
6 4 0
2
3
0 0 8
2 5
6 0

1. Una cadena es un conjunto ordenado de arcos, que en este caso conectan al nodo de
origen con el nodo final. Por ejemplo:

8 0
1 4 6
0

5 0
0 6

2. En esta cadena, el arco con menor capacidad es el arco (0,1), con capacidad igual a 5, o
sea, que C*=5. El flujo neto es ahora 0+C*=0+5=5.

11
3. Sobre esta cadena, se resta C* de las cantidades Ci.
C0-C*=5-5=0
C1-C*=8-5=3
C4-C*=6-5=1
Se suma C* a las cantidades Cj, 0+5 en todos los casos, quedando la cadena ahora como:

3 5
1 4 1
5

0 5
0 6

La nueva red es ahora:


3 5
1 4
5 1
1 0
0
0 6 5
0
5 0 7 0 3 6 5
0
6 4 0
2
3
0 0 8
2 5
6 0

Esta nueva red indica que ya no es posible ir del nodo 0 al nodo 1, ya que la capacidad de flujo
en este sentido es cero, pero si es posible ir del nodo 1 al nodo 0.

1. Una cadena de 0 a 6 es:

0 6
6 0

0 8
2 5
6 0

2. Los arcos con la menor capacidad de flujo son el (0,2) y (2,5) con una capacidad de 6, de
manera que C*=6. El flujo neto será ahora 5+6=11.
3. Restando C* de la cantidad Ci y sumándoselo a las Cj, queda la cadena como:

0 6
0 6

6 2
2 5
0 6

12
La nueva red es ahora:
3 5
1 4
5 1
1 0
0
0 6 5
0
11 0 7 0 3 6 11
0
0 4 6
2
3
6 0 2
2 5
0 6

1. Una cadena de 0 a 6 es:

4
0 1

6 5
7 0
0 3 6

2. El arco de menor capacidad de flujo es el (4,6) con C*=1. El flujo neto es ahora 11+1=12.
3. Restando C* de Ci y sumándola a la Cj, queda la cadena como:

4
1 0

5 6
6 1
0 3 6

La nueva red es ahora:


3 5
1 4
5 0
1 1
0
0 0 5 6
12 0 6 1 3 6 12
0 0 4 6
3 2
0
6 2 5 2
0 6

1. Una cadena de 0 a 6 es:


6 1
0 3 6
4 6

0 5 2

13
2. El arco de menor capacidad es el (5,6) con capacidad 2, de manera que C*=2. El flujo neto
es ahora 12+2=14.
3. Restando C* de Ci y sumando a Cj la cadena queda como:
4 3
0 3 6
2 8

2 5 0

La nueva red es:

3 5
1 4
5 0
1 1
0
0 0 5 6
14 0 4 3 3 6 14
0 0 2 8
3 2
2
6 2 5 0
0 6

En esta red ya no es posible encontrar una cadena de 0 a 6, ya que no hay flujo posible de 4 a
6 o de 5 a 6, que es la única forma en la que se puede llegar al nodo final. De manera que el
flujo neto asignado es el flujo máximo. Es decir, se pueden enviar como máximo 14 millones de
m3 de gas al día, de Cactus a Reynosa.
Comparando la red original con la red final, se puede determinar la forma en que se efectúa
este envío:
Se mandan 5 unidades (millones de m3 al día) del nodo 0 al nodo 1, 5 unidades del nodo 3 al 4,
6 unidades del nodo 4 al 6, 6 unidades del nodo 0 al 2, 6 unidades del nodo 2 al 5, 2 unidades
del nodo 3 al 5, y 8 unidades del nodo 5 al 6. Si se definen las variables xij=flujo del nodo i al nodo
j, el resultado queda como:
x01=5 x02=6 x03=3
x13=0 x14=5
x23=0 x25=6
x34=1 x35=2
x46=6
x54=0 x56=8

14
El dual de este problema da como resultado los arcos que se saturan al enviar el flujo óptimo, es
decir, aquellos que están funcionando a su máxima capacidad. En algunos problemas como: el
flujo de vehículos al desalojar un estacionamiento, o el flujo de distribución de plagas en un
territorio, el dual es de mayor utilidad que el primal.

En el problema, los arcos que se saturan son : (0,1), (0,2), (2,5), (4,6) y (5,6).

Ejemplo 4.3 Flujo máximo. Etiquetado en la red


El gasoducto que une a la ciudad de Reynosa, Tamaulipas, con el campo productor de gas
natural en Cactus, Chiapas, ha sufrido un desperfecto. Para cubrir las necesidades de la ciudad
de Reynosa, se requiere determinar cuál es la máxima cantidad de gas que se puede enviar
usando estaciones compresoras y gasoductos alternativos.
La capacidad de los gasoductos se muestra en cada arco de la red ( en millones de metros
cúbicos por día). Los nodos representan a las estaciones compresoras.

1 4
8
5 6
1 6
Cactus, Reynosa,
Chiapas 0 3 2 6 Tamaulipas
7
3 4
6 8

2 5
6

Se puede ilustrar la técnica de etiquetado en la red mostrada. Como se muestra en la figura 4.8,
se etiqueta el nodo 0 con (-, ). Luego, el nodo 1 se etiqueta con (0,5), en la cual el 0 se refiere
a que el nodo precedente es el 0 y 5 es la capacidad más pequeña de todos los arcos que
preceden al nodo 1; la etiqueta en el nodo 2 es (0,6). Cuando se llega al nodo 3 se etiqueta
con (0,7), pero se ha verificado que el flujo que se asigna a la etiqueta proceda de un arco que
a la vez esté etiquetado. En forma general, el flujo que se asigna en la etiqueta resulta de
seleccionar el menor del flujo en el arco y el flujo en la etiqueta que precede al arco y de entre
éstos, el mayor posible. Así, se logra etiquetar el nodo final; si sucede esto, significa que el flujo
final no es el óptimo. En el ejemplo, se llega con f 1=6. Para saber por qué arcos es transportado
este flujo, basta con observar la etiqueta final; ella dice por qué arco se llegó y ese flujo se resta
de la capacidad en cada arco de ese camino, hasta llegar al nodo inicial; el resultado es la red
de la figura 5.9 en la cual se ha etiquetado de nuevo repitiendo el proceso. De la misma
manera se procede etiquetando y almacenado el flujo hasta que se llega a la situación en que
ya no es posible etiquetar el nodo final (figura 4.10).

15
0,5 3,6

1 4
8
5 6
1 6
-, ¥ 5,6

0 3 2 6
7
3 4
6 8
0,7

2 5
6

0,6 2,6

Figura 4.8
0,5 3,6

1 4
8
5 6
1 6
-, ¥ 4,6

0 3 2 6
7
3 4 f=6
0 2
0,7

2 5
0

3,4

Figura 4.9
0,5 1,5

1 4
8
5 0
1 0
-, ¥ 5,1

0 3 2 6
1
3 4 f=6+6
0 2
0,1

2 5
0

3,1

0,5 1,5

1 4
8
5 0
1 0
-, ¥ 5,1

0 3 2 6
0
3 3 f=6+6+1
0 1
1,1

2 5
0

3,1

16
0,4 1,4

1 4
8
4 0
0 0
-, ¥
0 3 2 6
0
3 2 f=6+6+1+1=14
0 0

2 5
0

Figura 4.10

Cuando se llega a la situación en que ya no es posible etiquetar el nodo final, se ha llegado al


flujo óptimo que es posible transportar del nodo 0 al nodo 6. Finalmente, se debe indicar por
dónde será llevado este flujo, para lo cual es necesario establecer la diferencia entre los valores
en los arcos de la red original y los valores que adquirieron en el último flujo asignado; también
es importante observar que se debe cumplir la propiedad conservativa del flujo en todos los
nodos de la red; para el ejemplo, en la red siguiente se muestran los resultados:

1 4
1
6 6
1
0 3 6
14 7 14
2 8
6
2 5
6
Figura 4.11

Ejemplo 4.4 Flujo máximo. Etiquetado en una matriz


Determinar el flujo máximo que puede transportarse en la red siguiente, en que se muestran las
capacidades de los arcos:

18 8 4
4 1 5
6 3 3 1 15
9
6
6 0 5 8 8
30 10 8 3
5 2 6 12
5 9
20 8 25 0 22
18 10 22
0 12 2 10 14
12
16 2 14 0 1 22
7 2
16 13
7 3 7
4 4
3 8 3
4 11 7
22 10 4 9

8 4 8 6
14 5

17
En la primera columna adyacente a la matriz, se colocan las etiquetas; ésta consta de dos
dígitos, el primero corresponde a la cantidad de flujo que es posible transportar y el otro será el
número del nodo de donde procede el flujo; así, la etiqueta correspondiente al nodo 0, es (-,)
ya que al ser el nodo inicial el flujo se puede considerar infinito y no proviene de ningún nodo.
Para etiquetar los demás, se deben de considerar las reglas siguientes:

1. El flujo a considerar será el mayor posible de comparar el valor de flujo de la columna


correspondiente al nodo y el flujo que tenga la etiqueta del nodo de donde procede.
2. El flujo con que se llega al último nodo de la red, se descontará en la matriz con el criterio
siguiente: la celda en que se descontará el flujo es la columna del nodo correspondiente y
el renglón que corresponde al nodo de donde procede el flujo.
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
0 20,17 18,7 12 16,11 ∞ ∞ ∞ ∞ ∞
1 4 6 18,15 0,20 0,20 0,20 0,20 0,17
2 5 6 8 0 30,2625,18 0,18 0,11 0,11 0,7 0,7
3 7 2 16 0,12 0,12 0,12 0,12 0,12
4 8 22,17 14 0,16 0,16 0,11 0,11 0,11
5 8 3 3 4,1 1,18 1,18 1,18 1,18 1,15
6 10 0 5 8,4 5,0 2,18 4,16 2,11 4,11 4,11
7 14 3 7,0 4 2,18 2,11 2,11 2,7 2,7
8 10 5 4 6 4,14 4,14 3,12 3,12 3,12
9 1 6 15,12 8,4 6,8 6,8 6,8 5,4 6,4
10 2 0 1 10 12,0 7,7 6,5
11 4 9 8 7 8,6 8,6 8,6 8,6 8,6
12 8 9 3,0 9,8 9,8 9,8 9,4 9,4
13 2 3 4,0 9,8 9,8 9,8 11,6 11,6
14 22 22 22 10,7 10,5 13,4 12,3
7 5 4 3 19

Cuando ya no es posible incrementar el flujo en la red, se dice que se alcanza el flujo máximo.
En este caso, el flujo máximo  = 7 + 5 + 4 + 3 = 19 unidades de flujo. Es necesario especificar por
dónde se va a llevar este flujo en la red; para ello basta con considerar aquellos arcos en que se
observa que ha habido cambios y se establece una diferencia entre este valor y el valor original
del arco; así, el flujo se transportará en la red del ejemplo, de la siguiente manera:

4 1
18 3 8 4
5
3
1 15
9
3 6 3 8
8 8
5 30 10
6
4 12
3
2
11 4 5 4 3
20 25 0 22
18
19 5 12 22
0 7 2 10
12
14 19
16 14 0 22
7
7
7 13 4
4
5
5
22

8 4

18
Se observa que se cumple la ley conservativa del flujo en todos los nodos de la red.

Solución empleando TORA:


Del menú principal elegir Network models y maximal flow.

Figura 4.12 Menú principal de TORA.

Figura 4.13 Ingresar los coeficientes del problema.

19
Figura 4.14 Matriz de solución de flujo máximo.

4.5 Árbol de mínima y máxima expansión


Árbol de mínima expansión

Un árbol es una red conexa que no tiene ciclos. Es decir, es un conjunto de arcos unidos, que
dan una cadena desde cualquier otro nodo de ella misma, sin caer en un ciclo. El árbol de
mínima expansión es el árbol con el menor costo, distancia o tiempo, según lo que indique la
cantidad sobre los arcos.
Considerar el siguiente ejemplo:

Ejemplo 4.5 Árbol de mínima expansión


Se desea establecer comunicación entre todos los nodos mostrados en la red, de manera que
se minimice la distancia total que tiene que viajar la señal. La distancia en kilómetros se muestra
en cada arco. ¿Por cuáles arcos debe viajar la señal para unir a todos los nodos? ¿Cuál será la
distancia mínima que viajará una señal para cubrir todos los nodos?

20
2 7
5
8 17
9
1 6 4 6
10
8
7 9 13
3 5
7

Se puede observar que en esta red hay varios árboles, dos de ellos son:

2 7 2 7
5 Valor = 54 Valor= 60
8 17 17
9
1 6 4 6 1 6 4 6
10

9 7 13
3 5 3 5
7

Para esto se puede aplicar cualquiera de los dos algoritmos que se discuten, que son
básicamente uno solo, el primero trabaja directamente sobre la red y el segundo sobre una
matriz booleana en la cual se sustituyen los unos por las distancias.

Algoritmo para obtener el árbol de mínima expansión en la red

1. Seleccionar en la red original el arco con el menor valor (el cual queda en el árbol de
mínima expansión).
2. Encontrar un arco, que tenga el menor valor, que una un nodo del arco original con
cualquier otro nodo que no se encuentre en el arco original.
3. Estos dos arcos se encuentran ahora en el árbol de mínima expansión.
4. Continuar con éste proceso, añadiendo al árbol el arco con el menor valor que lo conecte
con algún nodo que no esté dentro del árbol.

21
Por ejemplo, en la red:
2 7
5
8 17
9
1 6 4 6
10
8
7 9 13
3 5
7

El arco con menor valor es el (1,2) con longitud igual a 5. Este arco y sus nodos quedan dentro
del árbol de mínima expansión.
El arco de menor valor que une a algún nodo en el arco original (1 ó 2), con algún nodo que no
está en el arco original (3,4,5,6 ó 7), es el (2,3) con longitud 6, de manera que éste arco y éstos
nodos quedan dentro del árbol de mínima expansión.

2 7
5
8 17
9
1 6 4 6
10
8
7 9 13
3 5
7

El arco de menor valor que une a los nodos en el árbol con los que no están en él es el (3,5) con
longitud 7, y así sucesivamente.

2 7
5
8 17
9
1 6 4 6
10
8
7 9 13
3 5
7

22
2 7 2 7
5 5
8 17 8 17
9 9

1 6 4 6 1 6 4 6
10 10

8 8
7 9 13 7 9 13

3 5 3 5
7 7

2 7 2 7
5 5
8 17 8 17
9 9

1 6 4 6 1 6 4 6
10 10

8 8
7 9 13 7 9 13

3 5 3 5
7 7

2 7
2 7
5
8 17 5
9 8 17
9
1 6 4 6
10 1 6 4 6
10
8
7 9 13 8
7 9 13
3 5
7 3 5
7
De manera que éste problema tiene dos árboles que dan el mismo valor de mínima longitud:

2 7 2 7
5 5

9 9
6 1 6 4 6
1 4 6 10
10
8 8

3 5
3 5 7
7

Valor = 45 Valor = 45

Los arcos de cada árbol indican sobre qué nodos se debe establecer comunicación.

23
Algoritmo para obtener el árbol de mínima expansión en una matriz
1. Construir la matriz booleana de la red, y substituir los unos por la distancia existente entre
nodo y nodo. Esta matriz tiene en los renglones y en las columnas los nodos que forman la
red. El elemento aij de la matriz indica la distancia entre el nodo i y el nodo j. Si no están
unidos se pone un guión en lugar de otro.
2. Seleccionar el menor elemento de la matriz. Si hay empate se escoge en forma arbitraria.
Sea este elemento el aij.
3. Eliminar la columna i y la columna j, ya que estos nodos quedan incluidos en el árbol de
mínima expansión.
4. Marcar los renglones i y j con una X.
5. Buscar en los renglones marcados con X el menor elemento. Sea éste el aXk. Eliminar la
columna k y marcar con X el renglón k.
6. Repetir desde el paso 5 hasta que se hayan eliminado todas las columnas.

Ejemplo 4.6 Árbol de mínima expansión


1. La matriz booleana modificada del ejemplo anterior es:
1 2 3 4 5 6 7
1 5 7
2 5 6 8
3 7 6 8 7
4 8 8 9 10 17
5 7 9 13
6 10 13 9
7 17 9

2. El menor elemento de la matriz es el a12, que es igual al a21, ya que la matriz es simétrica. Se
puede tomar cualquiera de los dos. En este ejemplo se elegirá el a12.
3. Se eliminan las columnas 1 y 2, lo cual significa que los nodos 1 y 2 se encuentran ya dentro
del árbol mínimo.
4. Se marcan con una X los renglones 1 y 2.

1 2 3 4 5 6 7 1 2 3 4 5 6 7 1 2 3 4 5 6 7
1 5 7 X 1 5 7 X 1 5 7 X
2 5 6 8 X 2 5 6 8 X 2 5 6 8 X
3 7 6 8 7 3 7 6 8 7 X 3 7 6 8 7 X
4 8 8 9 10 17 4 8 8 9 10 17 4 8 8 9 10 17
5 7 9 13 5 7 9 13 5 7 9 13 X
6 10 13 9 6 10 13 9 6 10 13 9
7 17 9 7 17 9 7 17 9

24
1 2 3 4 5 6 7 1 2 3 4 5 6 7 1 2 3 4 5 6 7
1 5 7 X 1 5 7 X 1 5 7 X
2 5 6 8 X 2 5 6 8 X 2 5 6 8 X
3 7 6 8 7 X 3 7 6 8 7 X 3 7 6 8 7 X
4 8 8 9 10 17 X 4 8 8 917 X10 4 8 8 9 10 17 X
5 7 9 13 X 5 7 9 13 X 5 7 9 13 X
6 10 13 9 6 10 13 9 X 6 10 13 9 X
7 17 9 7 17 9 7 17 9 X

5. En los renglones marcados con X, el menor elemento es a23=6.


Se elimina la columna 3 y se marca con X el renglón 3. El menor elemento en los renglones
marcados es el a35=7.
Se elimina la columna 5 y se marca el renglón 5 con X. El menor elemento en los renglones
marcados es el a24 y el a34, ambos con valor de 8. Se puede seleccionar cualquiera, y esto
puede indicar que existe más de un árbol mínimo. Se seleccionará el a 24.
Se elimina la columna 4 y se marca el renglón 4 con X. El menor elemento de los renglones
marcados es el a46=10.
Se elimina la columna 6 y se marca el renglón 6 con X. El menor elemento de los renglones
marcados es el a67=9. Al eliminar la columna 7, ya no quedan más en la matriz, lo que significa
que ya se obtuvo el árbol de mínima expansión.
La forma de determinar el árbol es la siguiente: están marcados con un cuadro los elementos
a12, a23, a24, a35, a46 y a67. De manera que el árbol está formado por los arcos (1,2), (2,3), (2,4),
(3,5), (4,6) y (6,7). Sobre estos arcos se establece la comunicación.

2 7
8
5 17 9

1 6 4 6
10
8
7 9 13
3 5
7

El valor del árbol se obtiene sumando los elementos marcados en la matriz final:
5 + 6 + 8 + 7 + 10 + 9 = 45

25
Solución empleando TORA:
Del menú principal elegir Network models y minimal spanning tree.

Figura 4.15 Menú principal de TORA.

Figura 4.16 Ingresar la matriz boleana modificada.

26
Figura 4.17 Solución del árbol de mínima expansión.

4.6 Caminos de valor óptimo


Algoritmo para determinar el camino de valor mínimo
Primera parte:
1. Elegir un vértice inicial y marcarlo con un cero.
2. Todos aquellos vértices que están en arcos incidentes al exterior del vértice inicial se deben
marcar con el valor asociado a su arco correspondiente.
3. Todo vértice que sea extremo final de un arco cuyo extremo inicial tenga una marca
deberá marcarse con la suma de ésta más el valor asociado a dicho arco.
4. Si un arco es marcado más de una vez se elegirá la marca de menor valor.
5. Los pasos 3 y 4 se repetirán hasta que todos los vértices de la gráfica estén marcados.
6. La marca sobre un vértice cualquiera representa el valor del camino mínimo que va del
vértice inicial a ése vértice.

La primera parte del algoritmo sólo sirve para indicar cuál es el valor del camino mínimo entre
un vértice inicio y todos los demás de la gráfica, en la siguiente se determinan los arcos que
forman esos caminos.

27
Segunda parte:
1. Elegir un vértice como final del camino mínimo y marcarlo con el valor de éste.
2. Todos aquellos vértices que se encuentran en arcos incidentes al interior del vértice final se
deben marcar con la diferencia entre la marca del vértice final del camino y el valor
asociado a dicho arco.
3. Todo vértice que sea extremo inicial de un arco cuyo extremo final tenga una marca
deberá marcarse con la diferencia de ésta menos el valor asociado a dicho arco.
4. Si un arco es marcado más de una vez se elegirá la marca de mayor valor.
5. Los pasos 3 y 4 se repetirán hasta que se marque el vértice inicial del camino. Esta marca
debe coincidir con la que se le dio en la primera parte del algoritmo.
6. El camino de valor mínimo entre los dos vértices llamados inicial y final está formado por
todos aquellos vértices que tengan marcas iguales debido a la aplicación de las dos partes
del algoritmo.

Ejemplo 4.7 Caminos de valor mínimo

En la siguiente gráfica, determinar el camino de valor mínimo entre el nodo 1 y el nodo 7.

2 4
1
9
6 4 3

1 3 5 7
4
9
3
8 2
7
3 6
6

La aplicación del algoritmo en su primera parte determina la siguiente red con las marcas
indicadas con flechas hacia la derecha:
6 7

2 4
1
9
0 6 4 3 14
10
1 3 5 7
4
9
3 8
8 8 2
7
3 6
6

28
El camino de valor mínimo es de 14 unidades; con la aplicación de la segunda parte del
algoritmo se marcan los nodos con una flecha hacia la izquierda:

6 7

2 4
6 1 5
9
0 6 4 3 14
10
1 3 5 7
4
9 10
0 3 14
8 8 2 8
7
3 6
6
1 7

El valor asociado a cada flecha hacia la derecha en cada nodo, indica el valor del camino
mínimo entre el nodo inicial y cada nodo.
Finalmente, se localizan los nodos con marcas iguales y que representarán al camino de valor
mínimo; en el ejemplo, éste está dado por los nodos 1, 2, 5 y 7:
6

2 4
6
0 6 4 14
10
1 5 7
4
10
0 14

3 6

Algoritmo para determinar el camino de valor máximo


Para investigar un camino de valor máximo la gráfica no debe contener anillos, pues de lo
contrario se podrían tener caminos de longitud no finita y consecuentemente el valor de estos
caminos sería ilimitado.
Algoritmo para determinar si una gráfica no tiene anillos (Berge):
1. Se marca todo vértice i que no tiene sucesor.
2. Se marca todo vértice j tal que todos sus sucesores están marcados.
Si de esta manera se llegan a marcar todos los vértices, entonces la gráfica no tiene anillos.

29
Ejemplo 4.8 Investigar si la gráfica tiene anillos
En la gráfica siguiente se quiere determinar el camino de valor máximo, por lo que es necesario
investigar si la gráfica no tiene anillos:

2 4
1
9
6 4 3

1 3 5 7
4
9
3
8 2
7
3 6
6

Se comienza con el nodo 7 que es el único al principio, que no tiene sucesor y se prosigue con
el algoritmo, lográndose marcar toda la red (en el orden marcado por los números romanos);
por lo que se puede asegurar que la red no tiene anillos:

VI III
2 4
1
9
6 4 3
II
VII 1 3 5 7 I
4
9
3
8 2
7
3 6
6
V IV

El algoritmo para determinar caminos de valor máximo es idéntico al descrito para determinar
el camino de valor mínimo, salvo en el paso 4 de la primera y segunda parte, donde debe
decir:
Primera parte:
4. Si un arco es marcado más de una vez se elegirá la marca de mayor valor.
Segunda parte:
4. Si un arco es marcado más de una vez se elegirá la marca de menor valor.

30
Ejemplo 4.9 Camino de valor máximo
Determinar el camino de valor máximo entre el nodo 1 y el nodo 7 de la red siguiente (ya se
determinó que la gráfica no tiene anillos):

2 4
1
9
6 4 3

1 3 5 7
4
9
3
8 2
7
3 6
6

La aplicación del algoritmo en su primera parte determina la siguiente red con las marcas
indicadas con flechas hacia la derecha:

6 18
2 4
1
9
6 4 3
0 27
21
1 3 5 7
4
9
3
8 2
9 15 7
3 6
6

El camino de valor máximo es de 27 unidades; con la aplicación de la segunda parte del


algoritmo, se marcan los nodos con una flecha hacia la izquierda:

6 18
2 4 18
6 1
9
6 4 3
0 27
21
1 3 5 7
4
9 23
0 3 27
8 2
9 15 7
3 6
6
9 20

31
El valor asociado a cada flecha hacia la derecha en cada nodo, indica el valor del camino
máximo entre el nodo inicial y cada nodo.
Finalmente, se localizan los nodos con marcas iguales y que representarán al camino de valor
máximo; en el ejemplo, éste está dado por los nodos 1, 2, 3, 4 y 7:

6 18
2 4 18
6
9
6
0 27
1 3 5 7
9
0 27
9
3 6

4.7 Ruta más corta


Consiste en encontrar cuál es el camino de menor valor en distancia, tiempo o costo (según lo
que indiquen los valores de los arcos), entre dos nodos cualesquiera de una red de arcos
dirigidos.
Algunos ejemplos en los cuales se puede aplicar éste algoritmo son:
1. Dos ciudades están comunicadas por varias carreteras, se requiere determinar por cuál se
ocupa el mínimo tiempo para ir de una ciudad a otra.
2. Algunos problemas de reemplazo de equipo se pueden modelar como una red. Por el
algoritmo de la ruta más corta se determina cuál es el plan de reemplazo más económico.
3. En una ciudad se requiere determinar cuál es la forma de ir de un punto A a un punto B por
el camino más corto.

El algoritmo requiere que todos los valores sobre los arcos sean positivos, y consiste básicamente
en ir etiquetando todos los nodos de la red. Estas etiquetas informan cuál es la ruta más corta
desde el nodo inicial hasta ese nodo, y desde qué nodo se llegó a él. El algoritmo termina
cuando se ha etiquetado el nodo final. Se identifican tres conjuntos:
1. El de los nodos totales de la red, N
2. El de los nodos etiquetados, X
3. El de los nodos no etiquetados, X

32
Algoritmo para calcular la ruta más corta
1. Etiquetar el nodo inicial con d1=0, definir el conjunto de nodos etiquetadas, X
2. Definir el conjunto de nodos no etiquetados X , como el complemento de los que ya están
etiquetados X =N-X
3. (X, X )={(i,j) | i  X y j  X }
y calcular
di + Cij
4. Calcular dp + Cpq = mínimo {di + Cij}
(i,j)  (X, X )
que será la etiqueta del nodo q, o sea
dq = dp + Cpq

5. Colocar a q en X
6. Si ya está el nodo final en X, alto. Si no, ir al paso dos

Ejemplo 4.10 Ruta más corta


En la siguiente red se requiere determinar la ruta más corta para ir del nodo 1 al nodo 6, donde
los elementos sobre los arcos (Cij ) denotan distancias expresadas en metros.

1. Se etiqueta el nodo 1 con d1=0 y se incluye a éste nodo en el conjunto X.

2
9
3 6

d1=0 1 4 5
7 4
3 2
4

3 6
10

2. Se definen los conjuntos X y X

X={1} , X ={2,3,4,5,6}

3. El conjunto (X, X ) es el de todos los arcos con origen en el nodo 1 y terminación en alguno
de los nodos 2, 3, 4, 5 ó 6, que en este ejemplo son: (1,2), (1,3) y (1,4).

33
2
9
3 6

d1=0 1 4 5
7 4
3 2
4
3 6
10

Se calculan para éstos arcos (i,j) el valor di+Cij.


(1,2) : d1 + C12 = 0 + 3 = 3
(1,3) : d1 + C13 = 0 + 4 = 4
(1,4) : d1 + C14 = 0 + 7 = 7
4. El valor mínimo corresponde a d1+C12=dp+Cpq=dq; dq=3=d2.
5. El nodo q=2 se incluye en el conjunto X, etiquetado con d 2=3.
6. X={1,2} X ={3,4,5,6}
7. Los arcos en (X, X ) son: (1,3), (1,4), (2,4), (2,5).

d2=3 2
9
3 6

d1=0 1 4 5
7 4
3 2
4

3 6
10

Se calcula para estos arcos (i,j) el valor di+Cij.


(1,3) : d1 + C13 = 0 + 4 = 4
(1,4) : d1 + C14 = 0 + 7 = 7
(2,4) : d2 + C24 = 3 + 6 = 9
(2,5) : d2 + C25 = 3 + 9 = 12

1. El valor mínimo corresponde a d1+C13=dp+Cpq=dq; dq=4=d3.


2. El nodo q=3 se incluye en el conjunto X, etiquetado con d 3=4.
3. X={1,2,3} X ={4,5,6}
4. los arcos en (X, X ) son: (1,4), (2,4), (2,5), (3,4), (3,6).

34
d2=3 2
9
3 6

d1=0 1 4 5
7 4
3 2
4

3 6
d3=4 10

Se calcula para éstos arcos (i,j) el valor di+Cij.


(1,4) : d1 + C14 = 0 + 7 = 7
(2,4) : d2 + C24 = 3 + 6 = 9
(2,5) : d2 + C25 = 3 + 9 = 12
(3,4) : d3 + C34 = 4 + 3 = 7
(3,6) : d3 + C36 = 4 + 10 = 14
1. Existen dos valores mínimos correspondientes a d1+C14=dp+Cpq=dq; dq=7 y a
d3+C34=dp+Cpq=dq; dq=7; se selecciona cualquiera de ellos.
2. El nodo q=4 se incluye en el conjunto X, etiquetado con d 4=7.
3. X={1,2,3,4} X ={5,6}
4. Los arcos en (X, X ) son: (2,5), (4,5), (3,6).

d2=3 2
9
3 6

d1=0 1 4 5
7 4
3 d4=7 2
4
3 6
d3=4 10

Se calcula para éstos arcos el valor di+Cij.


(2,5) : d2 + C25 = 3 + 9 = 12
(4,5) : d4 + C45 = 7 + 4 = 11
(3,6) : d3 + C36 = 4 + 10 = 14
1. El valor mínimo corresponde a d4+C45=dp+Cpq=dq; dq=11=d5.
2. El nodo q=5 se incluye en el conjunto X, etiquetado con d 5=11.

35
3. X={1,2,3,4,5} X ={6}
4. Los arcos en (X, X ) son: (3,6), (5,6).

d2=3 2
9
3 6 d5=11

d1=0 1 4 5
7 4
3 d4=7 2
4
3 6
d3=4 10

Se calcula di+Cij.
(3,6) : d3 + C36 = 4 + 10 = 14
(5,6) : d5 + C56 = 11 + 2 = 13
1. El valor mínimo es d5+C56=13=dp+Cpq=dq=13=d6.
2. Se etiqueta el nodo q=6 con d6=13.

d2=3 2
9
3 6 d5=11

d1=0 1 4 5
7 4
3 d4=7 2
4 d6=13
3 6
d3=4 10

X={1,2,3,4,5,6} X ={0}. Como ya se etiquetó el nodo 6, se tiene la ruta más corta del nodo 1 al
nodo 6, que vale 13.
Hay dos posibles rutas, las cuales son:

2 2

1 4 5 1 4 5
4 7 4
3 2 2
4
3 6 3 6

36
El nodo predecesor para ir a uno cualquiera es el nodo p; esto se observa al etiquetar
dq=dp+Cpq. Por ejemplo, en la última red d6=d5+C56, es decir, se llega a q=6 a través del nodo
p=5. En la penúltima red se tiene que d5=d4+C45, o sea que se llega al nodo q=5 desde P=4 y así
sucesivamente.

Solución empleando TORA:

Del menú principal elegir Network models y shortest route.

Figura 4.18 Menú principal de TORA.

37
Figura 4.19 Ingresar los coeficientes del problema.

Figura 4.20 Solución del problema.

38
4.8 El problema del cartero chino

El problema

Un cartero está buscando la ruta más corta (tiempo, distancia) para completar su ruta
asignada de calles. Cada calle debe ser atravesada al menos una vez y el cartero deb terminar
en el mismo lugar en que partió.

Antecedentes

En 1730. El matemático suizo Leonhard Euler decidió estudiar a la ciudad de Köningsberg en


Prusia. Köningsberg fue construida en las orillas de un río y tiene siete puentes conectados a dos
islas a las orillas del río. Lo que Euler pretendía era descubrir si era posible cruzar todos los
puentes en un tipo de tour sin cruzar el mismo puente dos veces.

A B

Hay varias diferencias entre el problema de los puentes de Köningsberg (PPK) y el problema del
cartero chino (PCC). Primero, no requería que el punto inicial y final fuera el mismo. Segundo,
Euler no estaba intentando minimizar la distancia de viaje. El nombre de Cartero Chino se debe
a que fue propuesto por el matemático chino (Mei-ko Kwan) en 1962. Es también conocido con
el nombre alternativo de Problema de la Ruta de Inspección. El PCC tiene muchas aplicaciones
prácticas como la planeación de rutas de autobús, recolección de basura, barrido de calles,
arado de tierras de cultivo e inspección de líneas de transmisión.

Formulación matemática

Se pueden convertir ambos problemas a modelos de redes. Por ejemplo, en el PPK, dejando las
cuatro regiones representadas por nodos y los siete puentes por los arcos. Entonces se tiene el
multígrafo que se muestra:

A B

39
Definición: Un multígrafo es una gráfica donde arcos múltiples (entre dos nodos distintos) y anillos
(un arco junta un nodo a sí mismo) son permitidos. Una gráfica que no permite arcos múltiples o
anillos es llamada gráfica simple.

Definición: Sea G una gráfica. Un camino en G que atraviesa a cada arco exactamente una
vez, es llamado un camino Euleriano. En adición, si el camino inicia y termina en el mismo
vértice, es llamado un circuito Euleriano (o tour Euleriano). Si G tiene un tour Euleriano, se dice
que G es una gráfica Euleriana.

Se puede observar que el PPK es el problema de encontrar un camino Euleriano en una gráfica.
El PCC puede ser convertido al problema de encontrar un tour Euleriano en una gráfica que
tiene el mínimo costo.

Definición: Sea ν un vértice en G. El grado de ν, es el número de arcos que inciden en ν. Si el


grado es impar, se dice que es un vértice impar; si el grado es par, se dice que ν es un vértice
par.

Teorema: siempre hay un número par de vértices impares en una gráfica.

Definición: Sea G una gráfica. Un componente no trivial de G es una sub gráfica que contiene
al menos dos vértices distintos y al menos una trayectoria entre cualquier par de vértices en una
gráfica.

Teorema: Sea G una gráfica. G es una gráfica Euleriana si todos los vértices son pares y todos
los arcos pertenecen a un componente simple.

Ejemplo

G2

G1

G4
G3

G1 y G2 son gráficas Eulerianas pero G3 y G4 no lo son. G3 no es Euleriana porque contiene


vértices impares. G4 no es Euleriana porque está compuesta de de dos componentes no
triviales.

Teorema: Sea G una gráfica. G tiene un camino Euleriano si todos los arcos pertenecen a un
componente simple y hay cuando más dos vértices impares.

Observación 1: el camino Euleriano podría necesariamente iniciar y terminar en los nodos


impares.

40
Observación 2: El PPK no tiene un camino Euleriano ya que los cuatro vértices tienen grado
impar. Luego, no hay manera de atravesar los siete puentes exactamente una vez.

Observación 3: Si G es una gráfica con sólo vértices pares y un componente no trivial, entonces
la solución de PCC utiliza a cada arco en G EXACTAMENTE una vez y el costo total del viaje es
la suma de todos los valores en los arcos.

Algoritmo de Fleury

Si G es una gráfica con sólo vértices pares y un componente no trivial, entonces se puede
identificar un camino Euleriano como sigue:

1. Comenzar con cualquier vértice.


2. Desde los vértices actuales, atravesar cualquier arco no seleccionado cuya supresión podría
no resultar en una gráfica con dos componentes no triviales.
3. Borrar el arco seleccionado de la gráfica. Si no hay arcos faltantes PARAR; de otra manera,
regresar al PASO 2.

Si G es una gráfica con cuando más dos vértices impares y un componente no trivial, entonces
se puede identificar un camino Euleriano como sigue:

4. Comenzar con cualquier vértice impar. (si todos los vértices son pares, comenzar con el que
sea).
5. Desde los vértices actuales, atravesar cualquier arco no seleccionado cuya supresión podría
no resultar en una gráfica con dos componentes no triviales.
6. Borrar el arco seleccionado de la gráfica. Si no hay arcos faltantes PARAR; de otra manera,
regresar al PASO 2.

Ejemplo 4.11 Un camino Euleriano

En la gráfica mostrada, el grado (a) = 3 y el grado (h) = 3. Todos los demás son pares. Luego, la
gráfica no tiene un circuito Euleriano pero tiene un camino Euleriano iniciando en a y
terminando en h.
b e

c d
a f

h
j g

Comenzando en a, se tiene a b c a j h c d. En estos puntos se tiene


la gráfica que se muestra (con los arcos borrados que ya han sido recorridos):

41
b e

c d
a f

h
j g

No se puede visitar g como el próximo porque borrando dg se podría dejar a la gráfica con dos
componentes no triviales

b e

c d
a f

h
j g

Así que se visita e como próximo, termina el camino con e f d g h.

Resolviendo el PCC:

PREGUNTA: ¿Qué podría hacer el cartero si la gráfica subyacente no tiene sólo vértices pares?

RESPUESTA: Él empareja los vértices impares e intenta encontrar la ruta más corta entre los dos
vértices en cada par.

Ejemplo 4.12 Un camino Euleriano

En la gráfica de abajo, hay dos vértices impares, b y f. Si se quiere un camino Euleriano, se


puede usar el algoritmo de Fleury. Pero si se quiere resolver el PCC en esta gráfica, se necesita
encontrar la ruta más corta entre b y f y aumentar la gráfica con los arcos en la ruta más corta.
12
12

6
a c 6
a c
4
4 4
4
4
4
6 e 5 f 4
6 e 5 4 f
4
4 4
5 4
4 5
b d
8 b d
8

42
La nueva gráfica es Euleriana y ahora se puede usar el algoritmo de Fleury para encontrar un
camino Euleriano.

Algoritmo para el problema del cartero chino (PCC)

1. Listar todos los vértices impares en la red. Si no hay vértices impares, ir a PASO 5.
2. Encontrar todos los posibles CONJUNTOS de parejas de los vértices impares.
3. Para cada CONJUNTO, encontrar la ruta más corta entre los dos vértices en cada par.
Calcular el costo total del CONJUNTO de parejas adicionando los costos de las rutas más
cortas.
4. Seleccionar el CONJUNTO de parejas con el valor mínimo y repetir estos arcos en la
gráfica.
5. Usar el algoritmo de Fleury para encontrar un camino Euleriano en la gráfica resultante.

Lo que se tiene que hacer en los PASOS 2 a través de 4 es convertir una gráfica no Euleriana en
una gráfica Euleriana agregando arcos a la gráfica. Esto es equivalente a hacer que el cartero
camine de arriba abajo en la misma calle.

Ejemplo 4.13 Problema del cartero chino

En la gráfica que se muestra, hay cuatro vértices impares, b, e, f, y g. Hay tres CONJUNTOS de
parejas: {b & e, f & g}; {b & f, e & g}; y {b & g, f & e}.

Par Ruta más corta Costo


b&e b, g, e 10
f &g f, g 8
b&f b, a, f 9
e&g e, g 4
b&g b, g 6
f&e f, e 12

Conjuntos de pares Costo


b & e, f & g 10 + 8 = 18
b & f, e & g 9 +4 = 13
b & g, f & e 6 + 12 = 18

El CONJUNTO más barato de pares es {b & f, e & g} por lo que se repiten los arcos ba, af, y eg
en la gráfica.

La nueva gráfica es Euleriana y ahora se puede usar el algoritmo de Fleury para encontrar un
camino Euleriano en la red.

43
7 7
a b a b
9 9
7
2 6 c 2 2 6 c

8 7 8 7
f g f g

4 4
4 d 4 4 d
12 12
5 5
e e

44

También podría gustarte