Sunteți pe pagina 1din 13

Profa. Msc Claudineia H.

Recco 1 Pesquisa Operacional Grafos - UNINOVE

GRAFOS ANLISE DE REDES Conceitos Bsicos em Teoria dos Grafos Diversos problemas de programao linear, inclusive os problemas de transporte, podem ser modelados como problema de fluxo de redes. Algoritmos especficos para determinados tipos de problemas podem ser mais convenientes para a sua soluo do que algoritmos mais genricos. Antes de continuar, sero apresentadas algumas definies da teoria dos grafos. Definio 1 Um grafo linear consiste em diversos ns, ou pontos, sendo que cada n deve estar conectado a um ou mais ns por arcos. Um exemplo de um grafo linear apresentado na Figura 1.

Figura 1 - Exemplo de um grafo linear. Definio 2 Um grafo direto (ou rede direta) um grafo em que o fluxo ao longo de um arco pode ser efetuado apenas em um sentido. Entretanto, pode-se substituir um arco com fluxo nos dois sentidos por dois arcos em sentidos opostos. Desta forma, podemos utilizar redes diretas sem que o modelo esteja perdendo a sua generalidade. Definio 3 Um grafo bipartido um grafo direto onde os ns so divididos em dois subconjuntos, onde todos os arcos do grafo ligam um n de um subconjunto a um n do outro. O grafo G6 uma K3,3, ou seja, um grafo bipartido completo que contm duas parties de 3 vrtices cada.

Profa. Msc Claudineia H. Recco 2 Pesquisa Operacional Grafos - UNINOVE

Um grafo representando um problema de transporte um exemplo de grafo bipartido, j que todos os arcos ligam ns das origens a ns dos destinos. Definio 4 Um caminho ou canal um conjunto ordenado de arcos que conectam dois ns atravs de ns intermedirios, cada um dos quais estando exatamente em dois arcos do canal. Um exemplo de canal no grafo da Figura 1 o conjunto dos arcos 1, 5 e 7, que conectam os ns a e c atravs dos ns b e e. Definio 5 Um grafo conectado um grafo no qual existe caminho entre qualquer par de ns. O grafo da Figura 1 um grafo conectado. Definio 6 Um lao um canal que conecta um n a ele mesmo. Em G3 h trs ocorrncias de laos para um grafo no orientado.

Os arcos 1, 5, 7, 8, 9 e 2 formam um lao conectando o n a (ou qualquer outro n do canal) a ele mesmo (figura 1). Definio 7 Uma rvore um grafo conectado que no contm laos. Exemplos de rvores no grafo da Figura 1 incluem os arcos 1, 3, 4, 6, 8 ou os arcos 2, 3, 4, 5, 8. O conjunto de arcos 1, 2, 3, 4, 7, 8 contm um lao (1, 2, 3), portanto no uma rvore; o conjunto de arcos 1, 3, 7, 8, apesar de no conter laos, no forma uma rvore por no ser um grafo conectado. Pode ser provado que uma rvore com n ns possui (n - 1) arcos e h pelo menos dois extremos (ns em apenas um arco) em uma rvore. Problema de Fluxo Mximo O tipo de problema de fluxo mximo utilizado quando queremos maximizar a quantidade de fluxo de um ponto origem para o outro ponto destino e estamos sujeitos a restries de capacidade de fluxo nos arcos. Estes problemas geralmente envolvem o fluxo de matrias como gua, leo, gs, energia por uma rede de tubos o cabos, mas tambm podem representar o fluxo mximo de carros em uma malha rodoviria, de produtos em linhas de produo, e assim por diante. Um problema de rede usual a determinao do fluxo mximo entre dois pontos em uma rede. Considere o seguinte exemplo, adaptado de ZIONTS (1974).

Profa. Msc Claudineia H. Recco 3 Pesquisa Operacional Grafos - UNINOVE

Exemplos: "Um produtor de gs natural tem uma rede de tubulaes conforme apresentado na Figura 2. As capacidades de cada parte da rede esto representadas em bilhes de litros por dia. Um problema ocorreu no ponto t, de modo que se deseja fornecer a maior quantidade de gs possvel da produo ao ponto t. Portanto, o problema encontrar a mxima capacidade da rede entre s e t de modo que a mxima quantidade seja fornecida de s para t."

Figura 2 - Rede de tubulao de gs.

Mais formalmente, o problema a ser considerado a maximizao do escoamento de um n s (chamado de origem) a um n t (chamado de destino), sujeito s limitaes das capacidades dos arcos. Neste problema, podemos considerar que a quantidade de gs que chega no ponto t igual quantidade de gs que sai do ponto s. Isso pode ser representado por um arco ligando o ponto t ao ponto s. Desta forma, o problema pode ser representado como um problema de programao linear onde deseja-se maximizar o fluxo do n t ao n s (que igual ao fluxo que sai do n s, ou ao fluxo que chega no n t). As restries deste problema, alm da capacidade de cada arco da rede, o fato de que a quantidade de gs que chega em qualquer n igual quantidade de gs que sai deste mesmo n. As variveis de deciso para este problema so: : fluxo do n t ao n s; : fluxo do n s ao n a; : fluxo do n s ao n b; : fluxo do n a ao n t; : fluxo do n b ao n a; : fluxo do n b ao n t. A funo objetivo, a ser maximizada, o fluxo que chega no n t, representado neste problema por . Para cada n, o fluxo de gs que chega igual ao fluxo de gs que sai. Convencionando sinal negativo ao fluxo de gs que chega e positivo ao fluxo de gs que sai, temos as seguintes restries: n t: - - = 0 n s: - + + = 0 n a: - + - = 0 n b: - + + = 0

Profa. Msc Claudineia H. Recco 4 Pesquisa Operacional Grafos - UNINOVE

As restries de capacidade so 10, 18, 15, 4 e O problema pode ser formulado ento como apresentado a seguir.

10.

Exerccio Caso LCL GasoBras Ltda. A empresa distribuidora de gs LCL GasoBras Ltda. deseja determinar a quantidade mxima de metros cbicos por segundo de gs que pode bombear de estao de Campos para o centro consumidor do Rio de Janeiro pela rede de gasodutos existentes. A figura 1 ilustra a estrutura da rede de distribuio e apresenta a capacidade de fluxo mximo nos trechos (em metros cbicos por segundo). Pede-se: a) b) c) d) determine as variveis de deciso; funo objetivo; restries de capacidade; restries de fluxo.

Profa. Msc Claudineia H. Recco 5 Pesquisa Operacional Grafos - UNINOVE

Problema do caminho de custo mnimo


De forma a reduzir seus custos operacionais, uma empresa de transporte de cargas deseja oferecer aos motoristas de sua frota um mecanismo que os auxilie a selecionar o melhor caminho (o de menor distncia) entre quaisquer duas cidades por ela servidas, de forma a que sejam minimizados os custos de transporte.

Um possvel modelo para este problema poderia ser: G (V,A)

V = {x | x cidade} A = {(xi, xj, d) | h uma conexo por estrada entre as cidades xi e xj, sendo d a distncia que as separa} O problema de encontrar o caminho de custo mnimo entre dois vrtices de um grafo o mais importante relacionado com a busca de caminhos em grafos em vista de sua aplicao vrias situaes de realidade. H um grande nmero de situaes possvel quando da obteno deste caminho, a exemplo de: existncia ou no de ciclos; determinao do caminho ou apenas do custo mnimo; etc. Dada esta diversidade de situaes, h um nmero razovel de algoritmos que foram propostos ao longo do tempo, dentre os quais os algoritmos de Dijkstra e de Floyd.

Profa. Msc Claudineia H. Recco 6 Pesquisa Operacional Grafos - UNINOVE

Algoritmo de Dijkstra para clculo do Caminho de Custo Mnimo O Algoritmo de Dijkstra (E.W. Dijkstra) um dos algoritmos que calcula o caminho de custo mnimo entre vrtices de um grafo. Escolhido um vrtice como raiz da busca, este algoritmo calcula o custo mnimo deste vrtice para todos os demais vrtices do grafo. Ele bastante simples e com um bom nvel de performance. Ele no garante, contudo, a exatido da soluo caso haja a presena de arcos com valores negativos. Este algoritmo parte de uma estimativa inicial para o custo mnimo e vai sucessivamente ajustando esta estimativa. Ele considera que um vrtice estar fechado quando j tiver sido obtido um caminho de custo mnimo do vrtice tomado como raiz da busca at ele. Caso contrrio ele dito estar aberto. Algoritmo: Seja G(V, A) um grafo orientado e s um vrtice de G: 1. Atribua valor zero estimativa do custo mnimo do vrtice s (a raiz da busca) e infinito s demais estimativas; 2. Atribua um valor qualquer aos precedentes (o precedente de um vrtice t o vrtice que precede t no caminho de custo mnimo de s para t); 3. Enquanto houver vrtice aberto: o seja k um vrtice ainda aberto cuja estimativa seja a menor dentre todos os vrtices abertos; o feche o vrtice k o Para todo vrtice j ainda aberto que seja sucessor de k faa: some a estimativa do vrtice k com o custo do arco que une k a j; caso esta soma seja melhor que a estimativa anterior para o vrtice j, substitua-a e anote k como precedente de j. A seqncia de diagramas* ilustra o funcionamento do Algoritmo de Dijkstra.

Inicialmente todos os nodos tem um custo infinito, exceto s (a raiz da busca) que tem valor 0: vrtices s u v x y

estimativas 0 precedentes - -

Profa. Msc Claudineia H. Recco 7 Pesquisa Operacional Grafos - UNINOVE


selecione s (vrtice aberto de estimativa mnima) feche s recalcule as estimativas de u e x vrtices s u v x y 5 s -

estimativas 0 10 precedentes s s

selecione x (vrtice aberto de estimativa mnima) feche x recalcule as estimativas de u,v e y vrtices s u v x y

estimativas 0 8 14 5 7 precedentes s x x

s x

selecione y (vrtice aberto de estimativa mnima) feche y recalcule a estimativa de v vrtices s u v x y

estimativas 0 8 13 5 7 precedentes s x y

s x

selecione u (vrtice aberto de estimativa mnima) feche u recalcule a estimativa de v vrtices s u v x y

estimativas 0 8 9 5 7 precedentes s x u s x

Profa. Msc Claudineia H. Recco 8 Pesquisa Operacional Grafos - UNINOVE


selecione v (vrtice aberto de estimativa mnima) feche v vrtices s u v x y

estimativas 0 8 9 5 7 precedentes s x u s x

Quando todos os vrtices tiverem sido fechados, os valores obtidos sero os custos mnimos dos caminhos que partem do vrtice tomado como raiz da busca at os demais vrtices do grafo. O caminho propriamente dito obtido a partir dos vrtices chamados acima de precedentes. Para exemplificar, considere o caminho de custo mnimo que vai de s at v, cujo custo mnimo 9. O vrtice precendente de v na ltima das tabelas acima u. Sendo assim, o caminho : s u v

Por sua vez, o precedente de u x. Portanto, o caminho : s x u v

Por ltimo, o precedente de x o prprio vrtice s. Logo, o caminho de custo mnimo : s x u v

Como apresentado o algoritmo de Dijkstra computa apenas um nico caminho de custo mnimo entre um dado par de vrtices. Para se obter todos os caminhos de custo mnimo entre dois vrtices necessrio modificar a forma de anotao dos precedentes. A modificao no passo 3 indicada a seguir suficiente para permitir o cmputo de todos os caminhos por um processo similar ao descrito acima. ... Para todo vrtice j ainda aberto que seja sucessor de k faa:

some a estimativa do vrtice k com o custo do arco que une k a j; caso esta soma seja melhor que a estimativa anterior para o vrtice j, substitua-a e anote k como precedente nico de j; caso esta soma seja igual estimativa anterior para o vrtice j, adicione k ao conjunto dos precedentes de j;

Supondo que o peso do arco (y,v) no grafo acima fosse 2, haveriam dois caminhos de custo mnimo do vrtice s para v. Esta duplicidade resulta em dois precedentes para o vrtice v:

Profa. Msc Claudineia H. Recco 9 Pesquisa Operacional Grafos - UNINOVE

vrtices

s u v

x y 5 7

estimativas 0 8 9

precedentes s x u, y s x

Sendo assim, os dois caminhos so dados por: (s u v) e (s Seguindo as precedncias para u e y nestes dois casos obtemos os dois caminhos: (s v) e (s x y v).

y v). x u

Algoritmo de Dijkstra O algoritmo de Dijkstra o mais famoso dos algoritmos para clculo de caminho de custo mnimo entre vrtices de um grafo e, na prtica, o mais empregado. Escolhido um vrtice como raiz da busca, este algoritmo calcula o custo mnimo deste vrtice para todos os demais vrtices do grafo. O algoritmo pode ser usado sobre grafos orientados (dgrafos), ou no, e admite que todas as arestas possuem pesos no negativos (nulo possvel). Esta restrio perfeitamente possvel no contexto de redes de transportes, onde as arestas representam normalmente distncias ou tempos mdios de percurso; podero existir, no entanto, aplicaes onde as arestas apresentam pesos negativos, nestes casos o algoritmo no funcionar corretamente. Funcionamento do algoritmo Assumiremos um conjunto, chama-lo-emos PERM, que contm inicialmente apenas o vrtice fonte (raiz da busca) s. A qualquer momento PERM contm todos os vrtices para os quais j foram determinados os menores caminhos usando apenas vrtices em PERM a partir de s. Para cada vrtice z fora de PERM matemos a menor distncia dist[z] de s a z usando caminhos onde o nico vrtice que no est em PERM seja z. necesssrio tambm armazenar o vrtice adjacente (precedente) a z neste caminho em path[z]. Como fazer com que PERM cresa, ou seja, qual vrtice deve ser includo em PERM a seguir? Tomamos o vrtice, entre todos os que ainda no pertencem a PERM, com menor distncia dist. Acrescentamos ento este vrtice, chamemo-lo de current, a PERM, e recalculamos as distncias (dist) para todos os vrtices adjacentes a ele que no estejam em PERM, pois pode haver um caminho menor a partir de s, passando por current, do que aquele que havia antes de current ser agregado a PERM. Se houver um caminho mais curto precisamos tambm atualizar path[z] de forma a indicar que current o vrtice adjacente a z pelo novo caminho mnimo. Vejamos o funcionamento do algoritmo sob outra representao:

Profa. Msc Claudineia H. Recco 10 Pesquisa Operacional Grafos - UNINOVE

1) Defini-se inicialmente o n de origem (raiz), neste caso s, e inclui-se este n em PERM. Atribui-se zero a sua distncia (dist[s]) porque o custo de ir de s a s obviamente 0. Todos os outros ns i tem suas distncias (dist[i]) inicializadas com um valor bastante grande ("infinito").

2) A partir de s consulta-se os vrtices adjacentes a ele, que no grafo G so u e x. Para todos os vrtices adjacentes, que chamaremos z, calcula-se: Se dist[z] > dist[s] + peso(s, z) dist[z] = dist[s] + peso(s, z) path[z] = s Fim Se

3) Dentre todos os vrtices no pertencentes a PERM escolhe-se aquele com a menor distncia. Neste caso o vrtice x, pois dist[x] = 5.

Profa. Msc Claudineia H. Recco 11 Pesquisa Operacional Grafos - UNINOVE

4) Ento, inclui-se x em PERM e a partir de x consulta-se os vrtices adjacentes a ele que no esto em PERM, que no grafo G so u, v e y. Para todos os vrtices adjacentes, que chamaremos z, calcula-se: Se dist[z] > dist[x] + peso(x, z) dist[z] = dist[x] + peso(x, z) path[z] = x Fim Se

5) Dentre todos os vrtices no pertencentes a PERM escolhe-se aquele com a menor distncia. Neste caso o vrtice y, pois dist[y] = 7.

Profa. Msc Claudineia H. Recco 12 Pesquisa Operacional Grafos - UNINOVE

6) Inclui-se ento y em PERM e a partir de y consulta-se os vrtices adjacentes a ele que no esto em PERM, que no grafo G apenas o vrtice v. Se dist[v] > dist[y] + peso(y, v) dist[v] = dist[y] + peso(y, v) path[v] = y Fim Se

7) Dentre todos os vrtices no pertencentes a PERM escolhe-se aquele com a menor distncia. Neste caso o vrtice u, pois dist[u] = 8.

8) Inclui-se ento u em PERM e a partir de u consulta-se os vrtices adjacentes a ele que no esto em PERM, que no grafo G apenas o vrtice v. Se dist[v] > dist[u] + peso(u, v) dist[v] = dist[u] + peso(u, v) path[v] = u Fim Se

Profa. Msc Claudineia H. Recco 13 Pesquisa Operacional Grafos - UNINOVE

9) Dentre todos os vrtices no pertencentes a PERM escolhe-se aquele com a menor distncia. Neste caso o nico vrtice restante v e dist[v] = 9.

10) Por fim faz-se v pertencer a PERM. Neste ponto, todos os vrtices j esto em PERM e a busca finalizada.

S-ar putea să vă placă și