25
INSTITUTO SUPERIOR TÉCNICO DEPARTAMENTO DE ENGENHARIA CIVIL INVESTIGAÇÃO OPERACIONAL I OPTIMIZAÇÃO EM REDES E GRAFOS Algoritmos para os problemas de - Fluxo máximo - Caminho mais curto - Árvore de ligações mínima RUI MOURA DA SILVA Março de 1995

INSTITUTO SUPERIOR TÉCNICO - Autenticação · 3º - Diminuir de c a capacidade de fluxo em cada arco do caminho no sentido considerado e aumentar de c a capacidade dos arcos no

  • Upload
    ledang

  • View
    212

  • Download
    0

Embed Size (px)

Citation preview

INSTITUTO SUPERIOR TÉCNICO

DEPARTAMENTO DE ENGENHARIA CIVIL

INVESTIGAÇÃO OPERACIONAL I

OPTIMIZAÇÃO EM REDES E GRAFOS

Algoritmos para os problemas de

- Fluxo máximo

- Caminho mais curto

- Árvore de ligações mínima

RUI MOURA DA SILVA

Março de 1995

OPTIMIZAÇÃO EM REDE E GRAFOS

2

PREÂMBULO

Apresentam-se neste texto, algoritmos para a resolução de três problemas clássicos de

optimização em redes e grafos: fluxo máximo (Ford-Fulkerson), caminho mais curto

(Dijkstra) e árvore de ligações mínima (Kruskal).

Entende-se por grafo uma representação esquemática de um conjunto de pontos (a que

se dá o nome de nós ou vértices) ligados por linhas (arcos ou arestas). Os nós, pontos

no espaço ou no tempo, são representados por circulos; os arcos representam ligações

entre nós, e aos quais podem estar associados, por exemplo, distâncias, tempos ou

custos de deslocação entre os nós, e podem ser orientados - quando a ligação entre os

nós só é possível num sentido (sendo representado por uma seta indicando aquele

sentido), - ou não orientados - quando a ligação entre os nós pode ser em qualquer dos

dois sentidos (caso em se desenha apenas uma linha).

Em rigor, a denominação de grafo é dada quando os arcos são não orientados e a de

rede quando os arcos são orientados. No entanto, hoje em dia, estas duas

denominações tendem a confundir-se, pelo que no texto que se apresenta não se fará

distinção entre elas.

Há variadíssimos problemas de grande relevância prática que são formuláveis em

termos de uma rede ou grafo, sendo o desenvolvimento de algoritmos de optimização

para a resolução desses problemas, uma das áreas de grande actividade da

Investigação Operacional.

De entre estes, seleccionaram-se os três algoritmos que se apresentam de seguida. O

problema do fluxo máximo, consiste na determinação do número máximo de unidades

de fluxo que é possível enviar através dum grafo, desde o nó origem até ao nó destino,

quando os arcos tem capacidade limitada. O algoritmo para a resolução deste

problema é apresentado no capítulo 1.

OPTIMIZAÇÃO EM REDE E GRAFOS

3

Como o nome sugere, o problema do caminho mais curto, surge quando definido um

nó origem e um de destino, se pretende determinar o caminho que permite ir do

primeiro para o segundo nó percorrendo a menor distância. No capítulo 2, é

apresentado o respectivo algoritmo resolutivo.

O capítulo 3 é dedicado ao problema da árvore de ligações mínima, que consiste na

identificação do conjunto de arcos que permitem interligar todos os nós de um grafo

com uma ligação de comprimento mínimo.

OPTIMIZAÇÃO EM REDE E GRAFOS

4

Indice

PREÂMBULO..............................................................................................................2

INDICE .........................................................................................................................4

1 - O PROBLEMA DO FLUXO MÁXIMO ..............................................................5

2 - O PROBLEMA DO CAMINHO MAIS CURTO..............................................11

3 - O PROBLEMA DA ÁRVORE DE LIGAÇÕES MÍNIMA..............................19

BIBLIOGRAFIA........................................................................................................25

OPTIMIZAÇÃO EM REDE E GRAFOS

5

1 - O PROBLEMA DO FLUXO MÁXIMO

De um modo geral, pode dizer-se que um fluxo corresponde ao envio de entidades de

um lugar para outro; por exemplo, o envio de produtos acabados do produtor para o

distribuidor, as deslocações das pessoas das suas casas para os locais de trabalho, a

expedição de cartas desde a estação de correios até aos seus destinatários, etc.

Em termos de um grafo, o fluxo é o envio de entidades de um nó (origem) até outro nó

(destino) percorrendo alguns dos arcos da rede de que aqueles nós fazem parte.

Define-se capacidade de um arco orientado (i!j) como o número máximo de

unidades de fluxo que se pode enviar do nó i para o nó j. Naturalmente que o fluxo

que pode percorrer um arco variará entre zero e a sua capacidade.

Graficamente, a capacidade de um arco representa-se junto ao nó a partir do qual essa

capacidade existe. Assim, no caso da figura 1.1, verifica-se que existe uma capacidade

de 9 unidades de fluxo do nó 1 para o nó 3 e de 1 unidade de fluxo do nó 3 para o 1.

9 11 3

Figura 1.1 - Capacidade de um arco

O fluxo máximo que se pretende determinar, será, portanto, o número máximo de

unidades de fluxo que é possível enviar através da rede desde o nó origem até ao nó

destino (admite-se que há conservação de fluxo, ou seja, que o fluxo que parte da

origem chega totalmente ao destino não havendo, portanto, perdas pelo caminho).

OPTIMIZAÇÃO EM REDE E GRAFOS

6

Considere-se a rede representada na figura 1.2

2 2 32

15 8

2 37 9 1 1 4

ORIGE M 1 3 3 7 DE S TINO5 2 2 1

22 6 9

3 20 4 4

Figura 1.2 - Rede

O problema do fluxo máximo pode resolver-se por Programação Linear, mas o

algoritmo, devido a Ford-Fulkerson, que se vai descrever é muito mais expedito.

Os passos de cada iteração do algoritmo podem ser resumidos do seguinte modo:

1º - Escolhe-se um caminho qualquer desde a origem até ao destino, mas em que

os arcos orientados que o constituiem tenham capacidade positiva (>0).

2º - Procurar nesse caminho o arco orientado com menor capacidade, c,

3º - Diminuir de c a capacidade de fluxo em cada arco do caminho no sentido

considerado e aumentar de c a capacidade dos arcos no sentido inverso.

Regressar ao 1º passo. Se já não existir nenhum caminho em que todos os

arcos tenham capacidade positiva, tal significa que já se determinou o fluxo

máximo.

Vamos aplicar este algoritmo à rede dada.

1º passo - Considere-se, por exemplo, o caminho que passa pelos nós 1, 2, 5 e 7.

2º passo - Verifica-se que a menor capacidade destes arcos orientados, no sentido

de 1 para 7, é de 3 = Min(7,3,8), ver fig 1.2.

3º passo - Subtrai-se este valor de 3 a 7 (= 4 no arco 1!2), a 3 (=0 no arco 2!5)

e a 8 (= 5 no arco 5!7); soma-se o mesmo valor a 2 (= 5 no arco 2!1), a 1 (=

4 no arco 5!2) e a 4 (= 7 no arco 7!5) e actualizam-se os valores das

capacidades.

OPTIMIZAÇÃO EM REDE E GRAFOS

7

Sobre as setas de entrada, junto ao nó 1, e de saída, junto ao nó 7, escreve-se o valor

do fluxo já transportado de 1 para 7 (fig 1.3).

5 2 02

45 5

2 33 4 9 1 1 7 3

1 3 3 75 2 2 1

22 6 9

3 20 4 4

Figura 1.3 - 1ª iteração

Admita-se que na iteração seguinte se escolhia o caminho 1, 4, 6 e 7.

A menor capacidade destes arcos orientados seria 4 = Min(5,4,9), ver figura 1.3, valor

que se subtraía e somava às capacidades dos arcos considerados conforme já descrito.

Às 3 unidades de fluxo que já se tinham transportado na 1ª iteração somavam-se as 4

de agora, inscrevendo-se o resultado nas setas de entrada e saída (fig. 1.4).

5 2 02

45 5

2 37 4 9 1 1 7 7

1 3 3 71 2 2 5

22 6 5

3 64 4 0

Figura 1.4 - 2ª iteração

OPTIMIZAÇÃO EM REDE E GRAFOS

8

Suponha-se que na 3ª iteração se escolhia o caminho 1, 3, 5 e 7. A menor capacidade

seria agora 3 = Min(9,3,5) e procedia-se como anteriormente (fig 1.5).

5 2 02

45 2

5 310 4 6 4 1 10 10

1 3 0 71 2 2 5

22 6 5

3 64 4 0

Figura 1.5 - 3ª iteração

Na 4ª iteração poderia escolher-se o caminho 1, 3, 6 e 7, em que a menor capacidade é

de 2 = Min(6,2,5), actualizando-se os valores das capacidades dos arcos orientados e

do fluxo de atravessamento (fig 1.6)

5 2 02

45 2

5 312 4 4 6 1 10 12

1 3 0 71 2 0 7

24 6 3

3 64 4 0

Figura 1.6 - 4ª iteração

Como se pode verificar na figura 1.6, já não existe nenhum caminho com capacidade

positiva. Com efeito, os arcos 2!5, 3!5, 3!6 e 4!6 têm todos capacidade nula,

pelo que não é possível constituir qualquer caminho de 1 a 7 com capacidade maior

que zero.

Está, portanto, encontrado o fluxo máximo possível de deslocar desde o nó origem até

ao nó destino - 12 unidades de fluxo.

OPTIMIZAÇÃO EM REDE E GRAFOS

9

Para se saber em cada arco orientado qual o valor e sentido do fluxo que o percorre,

tem de se subtrair à capacidade inicial (fig 1.2) a capacidade final (fig 1.6).

Se o resultado for positivo, tal significa que o fluxo parte do nó que se está a

considerar; se for negativo é por que chega a esse nó.

Assim, para o arco 1!2, a capacidade inicial era de 7 (fig 1.2) e a final de 4 (fig 1.6),

pelo que 7-4=3 >0, logo o fluxo é de 1 para 2 (parte de 1) e é de 3 unidades de fluxo.

Se se analizasse o arco 2!1, simétrico do anterior, teríamos 2-5= -3 <0 e, portanto, o

fluxo ia de 1 para 2 (chega a 2) de 3 unidades de fluxo, como já se tinha verificado.

Fazendo, agora, a análise para toda a rede, verifica-se que os fluxos fluíam como

indicado na figura 1.7. De notar que se o fluxo máximo é bem definido e igual a 12, o

modo como ele percorre a rede, variará de acordo com os caminhos escolhidos nas

iterações, havendo, normalmente, mais do que um modo de o fazer.

23

35 6

312 5 12

1 3 72

6 64

4 4

Figura 1.7 - Fluxo nos arcos

Apesar deste algoritmo ser bastante expedito, se apenas se quiser conhecer o valor do

fluxo máximo do nó origem para o nó destino e, nomeadamente, se se tratar de uma

rede de grandes dimensões, é possível resolver este problema recorrendo ao Teorema

do Fluxo Máximo :

- para toda a rede com uma só origem e um só destino o fluxo máximo

é igual ao valor mínimo de corte de entre todos os cortes possíveis da

rede.

OPTIMIZAÇÃO EM REDE E GRAFOS

10

Um corte é um conjunto de arcos orientados contendo, pelo menos, um ramo de cada

caminho da origem ao destino. O valor de corte é a soma das capacidades de fluxo de

todos os ramos do corte, no sentido da orientação definida pelo corte.

Na figura 1.8 apresentam-se alguns dos cortes da rede dada (não se traçaram os

restantes de modo a que a figura não ficasse incompreensível), sendo um deles o corte

que indica o fluxo máximo da rede, ou seja o que tem menor valor de corte.

2 2 32

7+9+5 = 21 15 8

2 37 9 1 1 4

1 3 3 75 2 2 1

22 6 9

3 2 8+9 = 170 4 4

7+1+3+2+2+5 = 203+3 +2 +4 = 12

Figura 1.8 - Cortes

Observe-se que este corte secciona precisamente os arcos orientados que na solução

final tem capacidade nula, ver figura 1.6, o que indica que se se quiser aumentar o

fluxo máximo desta rede deverá ser precisamente sobre estes arcos que se deve actuar.

OPTIMIZAÇÃO EM REDE E GRAFOS

11

2 - O PROBLEMA DO CAMINHO MAIS CURTO

Neste problema procura determinar-se o conjunto de arcos de uma rede que

constituem o caminho mais curto, de entre todos os caminhos possíveis, do nó origem

ao nó destino.

O algoritmo que vai permitir determinar o caminho mais curto, devido a Dijkstra, é

aplicável a distâncias generalizadas, "distâncias" que podem ser expressas em

unidades de comprimento, de tempo, monetárias, etc, . Assim pode obter-se, por

exemplo, o caminho mais rápido (desde que os arcos passem a representar os tempos

gastos para os percorrer), o mais económico (com os arcos a representar os

correspondentes custos), etc.

Considere-se a matriz origem-destino (O/D) apresentada na fig 2.1 :

O\D A B C D E F G H I

A - 3 5

B 3 - 7 8

C 5 7 - 4 2

D 8 4 - 3 3 7

E 2 3 - 4 2

F 3 - 5 6

G 4 5 - 3 8

H 2 3 - 7

I 6 8 7 -

Fig 2.1 - Matriz O/D

Numa matriz O/D, a 1ª coluna representa os nós origem, a 1ª linha os nós destino e os

números que aparecem no interior da matriz indicam a distância entre cada par de nós

i e j (se existir entre eles uma ligação directa, ou seja, se for possível ir do nó i ao nó j

sem ter de passar por nenhum outro); se não existir nenhum número na casa (i,j) tal

significa que a ligação entre esses nós só se pode fazer passando por outro(s) nó(s).

OPTIMIZAÇÃO EM REDE E GRAFOS

12

Na matriz O/D dada, pode ler-se, por exemplo, que existe uma ligação directa entre C

(origem) e E (destino) cuja distância é de 2, o que já não acontece, por exemplo, entre

H (origem) e D (destino) que não têm ligação directa; pode ainda ler-se que é possível

o trajecto directo entre D (origem) e G (destino), mas que de G para D já não

(corresponde ao que ocorre em redes urbanas em que existem ruas de sentido único).

Representando graficamente a rede descrita na matriz O/D (fig 2.2)

F3

8 6B D ´ 5

3 74 8

A ´ 7 ´ 3 G I5 4

C E ´ 3 ´ 72 2

H

Fig 2.2 - Rede

O algoritmo que se vai descrever consiste em, a partir do nó origem (ou de partida), ir

em cada iteração determinando o nó que está a menor distância do nó origem (que

passara a ser um nó original) até se alcançar o nó destino.

Por outras palavras, as distânciais dos nós originais, que forem sendo determinados,

ao nó origem, formarão uma sucessão não decrescente (em cada iteração a distância

ao nó origem é superior ou igual à obtida na iteração anterior).

Quando um nó passa a ser um nó original, todas as ligações directas que o têm como

destino deixam de ter utilidade e são eliminadas.

Passemos, agora, à descrição pormenorizada deste algoritmo e utilizando a matriz O/D

dada, vamos determinar o caminho mais curto desde o nó A até ao nó F.

1ª iteração - Dado que o nó A é o nó origem, será por definição, o primeiro nó

original, pelo que se podem, desde logo, eliminar todas as ligações que o têm por

destino (riscando os números contidos nas casas B!A e C!A) e inscrevendo na

coluna da distâncias a A (Dist a A) um zero (≡ à distância de A a A) (fig 2.3).

OPTIMIZAÇÃO EM REDE E GRAFOS

13

O\D A B C D E F G H I Dista A

Mindist.

A - 3 5 0

B /3 - 7 8

C /5 7 - 4 2

D 8 4 - 3 3 7

E 2 3 - 4 2

F 3 - 5 6

G 4 5 - 3 8

H 2 3 - 7

I 6 8 7 -

Fig 2.3 - 1ª iteração

2ª iteração - A partir do nó A, determina-se qual o nó original seguinte, que, como se

pode verificar na matriz O/D, é o nó B a uma distância de 3, marcando-se com um

circulo a posição correspondente ao arco que estabeleceu esta ligação (A!B).

Se o nó B passou a ser nó original, eliminam-se todas as ligações que o têm como

destino (C!B e D!B) e inscreve-se na coluna das distâncias a A o valor 3

(correspondente à mínima distância de B a A) (fig 2.4).

O\D A B C D E F G H I Dista A

Mindist.

A - " 5 0 3

B /3 - 7 8 3

C /5 /7 - 4 2

D /8 4 - 3 3 7

E 2 3 - 4 2

F 3 - 5 6

G 4 5 - 3 8

H 2 3 - 7

I 6 8 7 -

Fig 2.4 - 2ª iteração

OPTIMIZAÇÃO EM REDE E GRAFOS

14

3ª iteração - A partir dos nós originais - A e B -, vão determinar-se as mínimas

distâncias a A:

- de A será C a uma distância 5 (0+5), (A!C)

- de B será C a uma distância de 10 (3+7) (A!B + B!C)

O novo nó original será, pois, C, eliminando-se todas as ligações com destino a C,

marcando com um circulo o arco que estabeleceu a ligação - A!C - e inscrevendo-se

na coluna das distâncias a A o valor 5 (menor valor encontrado) (fig 2.5).

O\D A B C D E F G H I Dista A

Mindist.

A - " # 0 5

B /3 - /7 8 3 10

C /5 /7 - 4 2 5

D /8 /4 - 3 3 7

E /2 3 - 4 2

F 3 - 5 6

G 4 5 - 3 8

H 2 3 - 7

I 6 8 7 -

Fig 2.5 - 3ª iteração

Este processo iterativo vai-se repetindo até se atingir o nó F, destino final do caminho

mais curto a determinar.

Assim, - 4ª iteração:

- a partir de A já não se pode atingir directamente mais nenhum nó,

- a partir de B é o nó D a uma distância de 11 (3+8),

- a partir de C é o nó E a uma distância de 7 (5+2),

pelo que o novo original será o nó E a uma distância de 7 de A, valor que se inscreve

na coluna respectiva, marcando o arco - C!E - e eliminando-se todas as ligações com

destino a E (fig 2.6).

OPTIMIZAÇÃO EM REDE E GRAFOS

15

O\D A B C D E F G H I Dista A

Mindist.

A - " # 0 -

B /3 - /7 8 3 11

C /5 /7 - 4 $ 5 7

D /8 /4 - /3 3 7

E /2 3 - 4 2 7

F 3 - 5 6

G /4 5 - 3 8

H /2 3 - 7

I 6 8 7 -

Fig 2.6 - 4ª iteração

Apresentam-se a seguir os quadros que se obteriam nas iterações seguintes no

prosseguimento do algoritmo.

Na seguinte (5ª), surge um igualdade a 9 entre atingir o nó D a partir de C e atingir H a

partir de E. Dado que são nós distintos, é indiferente qual o que se escolhe; se fosse o

mesmo nó, tal significava que havia dois caminhos mais curtos distintos para chegar a

esse nó a partir de A.

Admitamos que se escolheu D, escolha arbitrária, pois a solução final, caminho mais

curto e correspondente distância, será sempre a mesma (fig 2.7).

O\D A B C D E F G H I Dista A

Mindist.

A - " # 0 -

B /3 - /7 /8 3 11

C /5 /7 - % $ 5 9

D /8 /4 - /3 3 7 9

E /2 /3 - 4 2 7 9

F /3 - 5 6

G /4 5 - 3 8

H /2 3 - 7

I 6 8 7 -

Fig 2.7 - 5ª iteração

OPTIMIZAÇÃO EM REDE E GRAFOS

16

Na iteração seguinte (6ª) o novo nó original será, então, o nó H (fig 2.8)

O\D A B C D E F G H I Dista A

Mindist.

A - " # 0 -

B /3 - /7 /8 3 -

C /5 /7 - % $ 5 -

D /8 /4 - /3 3 7 9 12

E /2 /3 - 4 $ 7 9

F /3 - 5 6

G /4 5 - /3 8

H /2 3 - 7 9

I 6 8 /7 -

Fig 2.8 - 6ª iteração

Nesta iteração (7ª) é G o novo nó original (fig 2.9)

O\D A B C D E F G H I Dista A

Mindist.

A - " # 0 -

B /3 - /7 /8 3 -

C /5 /7 - % $ 5 -

D /8 /4 - /3 3 /7 9 12

E /2 /3 - % $ 7 11

F /3 - /5 6

G /4 5 - /3 8 11

H /2 /3 - 7 9 12

I 6 /8 /7 -

Fig 2.9 - 7ª iteração

OPTIMIZAÇÃO EM REDE E GRAFOS

17

Finalmente na 8ª iteração atinge-se o nó F (fig 2.10)

O\D A B C D E F G H I Dista A

Mindist.

A - " # 0 -

B /3 - /7 /8 3 -

C /5 /7 - % $ 5 -

D /8 /2 - /3 " /7 9 12

E /2 /3 - % $ 7 -

F /3 - /5 6 12

G /4 /5 - /3 8 11 16

H /2 /3 - 7 9 16

I /6 /8 /7 -

Fig 2.10 - 8ª iteração

O conjunto dos arcos que fazem parte do caminho mais curto vai ser reconstituído do

fim para o princípio utilizando o quadro final.

Entrando na coluna do nó F (destino) procura-se o circulo que representa o arco

utilizado para chegar a este nó e verifica-se que esse arco tem origem em D (linha

onde está o circulo). Passando para a coluna do nó D, constata-se que se chegou até

ele a partir do nó C. Prosseguindo o mesmo processo, verifica-se que se atingiu o nó C

a partir de A, que é o nó origem.

Conclui-se, portanto, que o caminho mais curto desde o nó A até ao nó F passa pelos

nós

A - C - D - F

com uma distância de 12 (5+4+3) conforme se verifica no último quadro na coluna

das distâncias a A.

De notar, que ao determinar o caminho mais curto de A a F, obtiveram-se, também, as

mínimas distâncias de A a todos os nós originais. Por exemplo, de A a G a mínima

distância é 11 e o caminho constituído pelo conjunto de arcos orientados - A!C!E!

G.

Por outro lado, verifica-se que o nó I não chegou a ser atingido, o que revela que a sua

distância a A será maior do que 12 (quanto muito podia ser igual a 12, o que não

acontece no caso presente em que seria de 16 a partir do nó H).

OPTIMIZAÇÃO EM REDE E GRAFOS

18

O grafo do caminho mais curto entre A e F é o seguinte :

F3

B D

4A G I

5

C E

H

Fig 2.11 - Grafo do caminho mais curto de A a F

OPTIMIZAÇÃO EM REDE E GRAFOS

19

3 - O PROBLEMA DA ÁRVORE DE LIGAÇÕES MÍNIMA

Neste problema procura determinar-se o conjunto de arcos que permitem interligar

todos os nós de um grafo de modo a que o seu comprimento (somatório dos

comprimentos dos arcos que o constituiem) seja mínimo.

Esta interligação significa que de qualquer nó i se possa chegar (directa ou

indirectamente) a qualquer outro nó j e vice-versa, o que implica que as ligações

directas entre nós têm de ter sempre os 2 sentidos e a mesma "distância" (se existe

uma ligação directa de k para m com uma "distância" d, tem de existir, também, uma

ligação directa de m para k com o mesma "distância").

Caso haja uma ligação directa e não exista a sua simétrica, a primeira deve ser

eliminada; no caso de existirem as duas ligações mas com "distâncias" diferentes,

esses 2 nós não devem ser considerados na determinação inicial da árvore de ligações

mínimas, deixando para uma segunda fase a sua eventual introdução.

Tal como no problema do caminho mais curto, a palavra "distância" deve ser

entendida como distância generalizada, ou seja, pode estar expressa em unidades de

comprimento, de tempo, monetárias, etc.

A árvore de ligações mínima é uma árvore arborescente, isto é, a sua representação

gráfica tem a forma de uma árvore "aberta", isto é, nunca forma polígonos fechados.

Da definição da árvore de ligações mínima conclui-se, imediatamente, que ela não tem

nem origem nem destino (qualquer nó é simultaneamente origem e destino

relativamente a todos os outros) e será constituída maioritariamente pelos arcos de

menor comprimento, dado que se pretende que o somatório do comprimento dos arcos

que dela farão parte seja o menor possível.

O algoritmo que se vai descrever, devido a Kruskal, em cada iteração vai escolher, a

partir dos arcos de menor comprimento (que previamente se ordenaram por ordem

crescente), quais os nós que podem ser incluídos na árvore de modo a que ela nunca

forme polígonos.

OPTIMIZAÇÃO EM REDE E GRAFOS

20

Considere-se a matriz origem-destino (O/D) que se utilizou para o problema do

caminho mais curto e que se apresenta, de novo, na fig 3.1:

O\D A B C D E F G H I

A - 3 5

B 3 - 7 8

C 5 7 - 4 2

D 8 4 - 3 3 7

E 2 3 - 4 2

F 3 - 5 6

G 4 5 - 3 8

H 2 3 - 7

I 6 8 7 -

Fig 3.1 - Matriz O/D

Como se disse, há que, em primeiro lugar, eliminar as ligações directas para as quais

não exista ligação directa inversa ou existindo, não tenha o mesmo comprimento. No

caso presente elimina-se a ligação D!G, visto não existir a ligação G!D.

A seguir, ordenam-se os arcos por ordem crescente do seu comprimento. Recorde-se,

que quando se escreve, por exemplo, CE - 2, esta notação indica a existência das duas

ligações directas (C!E e E!C) com um comprimento igual a 2.

CE - 2 AC - 5

EH - 2 FG - 5

AB - 3 FI - 6

DE - 3 BC - 7

DF - 3 HI - 7

GH - 3 BD - 8

CD - 4 GI - 8

EG - 4

OPTIMIZAÇÃO EM REDE E GRAFOS

21

1ª iteração - Dado que a árvore de ligações mínima não tem nó origem nem nó

destino, pode começar-se por qualquer nó que a solução final não se altera.

Considere-se, então, o primeiro arco da lista ordenada- CE - o que implica que esta

ligação, por ter um dos menores comprimentos, faz parte da árvore de ligações

mínima - e marca-se (&) esta ligação na lista

CE - 2 & AC - 5 C - E

EH - 2 FG - 5

AB - 3 FI - 6

DE - 3 BC - 7

DF - 3 HI - 7

GH - 3 BD - 8

CD - 4 GI - 8

EG - 4

2ª iteração - A ligação seguinte da lista é EH que conecta com a anterior, pelo que se

faz essa conexão e marca-se a ligação na lista.

CE - 2 & AC - 5 C - E - H

EH - 2 & FG - 5

AB - 3 FI - 6

DE - 3 BC - 7

DF - 3 HI - 7

GH - 3 BD - 8

CD - 4 GI - 8

EG - 4

3ª iteração - Prosseguindo o varrimento da lista, a ligação seguinte é AB que não

conexa com a árvore que se está a traçar, pelo que se desenha essa ligação ao lado;

como anteriormente, marca-se essa ligação na lista.

OPTIMIZAÇÃO EM REDE E GRAFOS

22

A posição e a forma como esta ligação é colocada tem apenas a ver com uma maior

facilidade de exposição e pelas razões que a seguir se verão.

CE -2 & AC - 5 B - A C - E - H

EH -2 & FG - 5

AB -3 & FI - 6

DE - 3 BC - 7

DF - 3 HI - 7

GH - 3 BD - 8

CD - 4 GI - 8

EG - 4

4ª iteração - A ligação seguinte é DE ; visto que o nó E já tem duas ligações definidas,

desenha-se uma terceira.

CE -2 & AC - 5 B - A C - E - H

EH -2 & FG - 5 |

AB -3 & FI - 6 D

DE - 3& BC - 7

DF - 3 HI - 7

GH - 3 BD - 8

CD - 4 GI - 8

EG - 4

5ª iteração - Segue-se DF

CE -2 & AC - 5 B - A C - E - H

EH -2 & FG - 5 |

AB -3 & FI - 6 D

DE - 3 & BC - 7 |

DF - 3 & HI - 7 F

GH - 3 BD - 8

CD - 4 GI - 8

EG - 4

OPTIMIZAÇÃO EM REDE E GRAFOS

23

6ª iteração - Através da ligação GH o nó G fica conectado com a árvore que vimos

determinando.

CE -2 & AC - 5 B - A C - E - H - G

EH -2 & FG - 5 |

AB -3 & FI - 6 D

DE - 3 & BC - 7 |

DF - 3 & HI - 7 F

GH - 3 & BD - 8

CD - 4 GI - 8

EG - 4

7ª iteração - A ligação seguinte da lista é CD, mas esta ligação não pode ser

considerada porque formava uma polígono fechado (triângulo C-D-E) e como se

disse, a árvore de ligações mínima é arborescente.

Passando à ligação seguinte EG, verifica-se que, pela mesma razão, também não pode

ser considerada (circuito fechado E-G-H).

Com a ligação seguinte da lista, AC, vai fazer-se a conexão entre as duas partes da

árvore já desenhadas (tornam-se, agora, claras as razões invocadas na 3ª iteração).

CE -2 & AC - 5 & B - A - C - E - H - G

EH -2 & FG - 5 |

AB -3 & FI - 6 D

DE - 3 & BC - 7 |

DF - 3 & HI - 7 F

GH - 3 & BD - 8

CD - 4 GI - 8

EG - 4

OPTIMIZAÇÃO EM REDE E GRAFOS

24

8ª iteração - Pelas razões já indicadas, a ligação FG não pode ser considerada

(formava-se o pentagono D-E-H-G-F), passando-se, portanto, para a ligação seguinte

FI, que vai permitir que os 9 nós considerados (A, B, C, D, E, F, G, H e I) fiquem

todos interligados, ou seja, já está determinada a árvore de ligações mínima

pretendida.

CE -2 & AC - 5 & B - A - C - E - H - G

EH -2 & FG - 5 |

AB -3 & FI - 6 & D

DE - 3 & BC - 7 |

DF - 3 & HI - 7 F

GH - 3 & BD - 8 |

CD - 4 GI - 8 I

EG - 4

Definida a árvore de ligações mínima, há que determinar o seu comprimento, para o

que basta somar os comprimentos dos arcos marcados:

2 + 2 + 3 + 3 + 3 + 3 + 5 + 6 = 27

O grafo correspondente à árvore de ligações mínima é o que se apresenta a seguir :

F3

6B D

3

A ´ 3 G I5

C E ´ 32 2

H

Fig 3.2 - Grafo da árvore de ligações mínima

OPTIMIZAÇÃO EM REDE E GRAFOS

25

BIBLIOGRAFIA

BUDNICK, FRANK S., DENNIS McLEAEY e RICHARD MOJENA

Principles of Operations Research for Management

Irwin, 1988

HILLIER, FREDERICK S. e GERALD J. LIEBERMAN

Introduction to Operations Research

McGraw-Hill, 1990

MINIEKA, EDWARD

Optimization Algorithms for Networks and Graphs

Marcel Dekker, 1978

ZÚQUETE, EDUARDO

Teoria dos grafos

1982