SlideShare uma empresa Scribd logo
UNIVERSIDADE DE ÉVORA
Licenciatura em Matemática Aplicada
A Teoria de Grafos
aplicada a um caso particular de
Distribuição
Trabalho de Fim de Curso realizado por:
Sérgio Cláudio Fontes
ÉVORA
Prefácio
Prefácio
Este trabalho é o resultado do interesse particular por uma área que considero
extremamente interessante e sem dúvida indispensável. Surgiu por acaso a hipótese de estudar
uma situação que me pareceu relevante e que eu próprio desconhecia. Na verdade não sabia à
partida que conceitos deveria utilizar.
O problema que aqui me proponho estudar está directamente relacionado com a
distribuição onde existem vários armazéns para proceder ao abastecimento. Assim procuro
encontrar respostas para várias questões sobre as quais as empresas de distribuição ou
qualquer outra empresa que possua uma frota de distribuição se questionam. Existirão outros
conceitos, provavelmente mais indicados para resolver este problema que nada têm a ver com
Teoria de Grafos, mas este era o desafio.
Optei por introduzir os vários conceitos à medida que o problema se tornava mais
específico, pelo que este trabalho relata o percurso por mim percorrido desde o início,
existindo apenas uma omissão à qual farei referência no Capítulo III. Assim, apresento
possíveis soluções para várias situações que da minha parte pareciam importantes em
deterimento de outras. Foi minha preocupação na apresentação dos Algoritmos de Prim e de
Dijsktra (CMC), cobrir todas as situações possiveis já que é sobre estes dois algoritmos que
este trabalho se baseia. De realçar, que ao contrário do que eu esperava a conjugação destes
dois algoritmos irá ser a chave para a resolução do problema.
Índice
Índice
Capítulo I - Introdução -----------------------------------------------------------------------------4
1.1 O Aparecimento de uma Teoria------------------------------------------------5
O Problema das Pontes de nisbergoK
..
----------------------------5
1.2 Uma Primeira Definição --------------------------------------------------------7
Definição de Grafo -----------------------------------------------------7
1.3 A construção de um Grafo ------------------------------------------------------7
Capítulo II – Alguns conceitos sobre Teoria de Grafos ------------------------------------- 12
2.1 Grafos orientados e não orientados------------------------------------------ 13
2.2 A Função correspondência---------------------------------------------------- 14
Definição de correspondência -------------------------------------- 14
Propriedades da Função Correspondência------------------------ 15
2.3 Outra definição de Grafo e o Grau de um Vértice------------------------- 17
Definição de Grafo --------------------------------------------------- 17
Definição de Grau de um vértice----------------------------------- 18
2.4 A Representação Matricial---------------------------------------------------- 19
Matriz de Adjacência ------------------------------------------------ 19
Matriz de Incidência ------------------------------------------------- 20
2.5 Caminhos------------------------------------------------------------------------ 21
Definição de caminho------------------------------------------------ 22
2.6 Peso, cumprimento ou custo-------------------------------------------------- 22
Índice
Definição de custo de um caminho -------------------------------- 24
2.7 Matriz de Custos --------------------------------------------------------------- 24
Matriz de custos ------------------------------------------------------ 24
2.8 Outros Conceitos --------------------------------------------------------------- 25
Definição de Grafo Conexo----------------------------------------- 25
Definição de Caminho Elementar---------------------------------- 25
Definição de Circuito ------------------------------------------------ 25
Definição de Matriz dos Graus ------------------------------------- 26
Capítulo III - CMC, Árvores e as Zonas de Abastecimento -------------------------------- 27
3.1 Porquê o Algoritmo do Caminho mais Curto (CMC)--------------------- 28
3.2 Algoritmo de Dijkstra --------------------------------------------------------- 28
Algoritmo de Dijkstra ou CMC------------------------------------ 29
Algoritmo para o caminho resultante do CMC------------------- 30
3.3 Árvores -------------------------------------------------------------------------- 38
Teorema 3.1 ----------------------------------------------------------- 38
Definição de Árvore não Orientada------------------------------- 40
Teorema 3.2 ----------------------------------------------------------- 40
3.4 Subgrafos e Grafos Parciais -------------------------------------------------- 42
Definição de Grafo Parcial------------------------------------------ 42
Definição de Subgrafo----------------------------------------------- 42
3.5 Raiz de uma Árvore e Árvores Orientadas --------------------------------- 43
Definição de Raiz de um vértice ----------------------------------- 43
Índice
Definição de Árvore Orientada------------------------------------- 43
3.6 Regiões de Abastecimento---------------------------------------------------- 43
Algoritmo para o cálculo da zonas de abastecimento ----------- 44
3.7 O primeiro caso particular ---------------------------------------------------- 47
Algoritmo para a resolução do primeiro caso particular-------- 49
3.8 Conclusões ---------------------------------------------------------------------- 52
Capítulo IV - SST e os Trajectos de Entrega -------------------------------------------------- 54
4.1 Árvores de Suporte------------------------------------------------------------- 55
Definição de Árvores de Suporte----------------------------------- 55
Teorema para o cálculo do número de árvores de suporte ----- 57
4.2 Algoritmo de Prim (SST)------------------------------------------------------ 62
Algoritmo de Prim ou SST ------------------------------------------ 63
4.3 Zonas de Entrega --------------------------------------------------------------- 69
4.4 Trajectos de Entrega ----------------------------------------------------------- 73
4.5 Conclusões ---------------------------------------------------------------------- 78
Capítulo V – Conclusão-------------------------------------------------------------------------- 79
Conclusão---------------------------------------------------------------------------- 80
Bibliografia ---------------------------------------------------------------------------------------- 82
Anexo----------------------------------------------------------------------------------------------- 83
Introdução
4
1.1 O Aparecimento de uma Teoria.
A Teoria de Grafos surgiu no ano de 1736 através de um artigo publicado pela
Academy of Science em St. Petersburg. O seu autor, Leonhard Euler (1707-1783), procurava
resolver o então intitulado Problema das Pontes de Konisberg. O problema consistia em sete
pontes que faziam a ligação entre duas ilhas e as duas margens do Rio Pregel. Euler pretendia
saber se seria possível sair de sua casa, atravessar o rio e regressar passando uma única vez
por cada uma das setes pontes. Para uma melhor compreensão, está ilustrado na figura 1.1 o
Problema das Pontes de Konisberg (PPK):
Ao tentar resolver este problema rapidamente ficaremos com a sensação de que não
tem solução mas uma afirmação destas tem que ser provada. Euler verificou que a solução
deste problema depende única e exclusivamente das propriedades de ligação e não da forma
das margens do rio. Na procura de uma apresentação mais prática e de fácil utilização,
Figura 1.1: Problema das Pontes de Konisberg (PPK) considerado por Euler num artigo publicado pela
Academy of Science em St. Petersburg.
Introdução
5
designamos como arestas as linhas que fazem a ligação entre as margens e aos pontos de
intersecção chamamos vértices. No caso do PPK o conjunto dos vértices seria { }4,3,2,1 , para
representar uma aresta qualquer utilizariamos um par de vértices, por exemplo ( )2,1 . Na figura
1.2 encontra-se a representação usualmente utilizada de acordo com a Teoria de Grafos do
problema apresentado na figura 1.1.
Utilizando a figura 1.2 vamos procurar um caminho que satisfaça o problema inicial.
Supunhamos que começamos pelo vértice 1 (margem) quando regressarmos a 1 pela primeira
vez já utilizamos 2 das 3 arestas (pontes) que fazem a ligação a 1, logo no próximo regresso
teremos que passar de novo por uma das arestas (pontes), por onde já passamos que fazem a
ligação a 1 logo não existe nenhuma possibilidade de regressar a 1 passando por todos os
outros vértices (margens) e passando uma única vez por cada aresta (ponte). Na verdade cada
vértice (margem) tem um número ímpar de arestas (pontes) logo será impossível regressar a
qualquer um deles passando por todas as arestas (pontes) uma única vez.
Figura 1.2: Figura (grafo) representativa do PPK de acordo com a Teoria de Grafos.
Introdução
6
1.2 Uma primeira definição...
Apresentado que está o problema que originou a Teoria de Grafos, vamos introduzir
ao longo deste trabalho várias definições e propriedades de forma a que se possa estudar
correctamente do ponto de vista matemático uma situação específica.
Definição 1.1: Seja X o conjunto de todos os vértices e seja A o conjunto de
pares de vértices ( )ji xx , . Designamos como Grafo o par ( )AXG ,= .
Se estivermos a estudar um caso que envolva um elevado número de vértices a
nomenclatura acima descrita não será a mais indicada pelo que geralmente é feita uma
simplificação do seguinte modo:
( )AX,GondeXxix ii =∈∀=
1.3 A construção de um grafo
Para o caso que aqui nos propomos estudar vamos utilizar a simplificação acima
mencionada porque estamos perante um problema que possui 90 vértices.
Supunhamos que uma determinada empresa possui uma carteira de clientes para a qual
necessita de uma rede de entrega a nível nacional (Portugal Continental), como já possui frota
própria está fora de questão contratar um empresa especializada. Além disso esta empresa
possui 4 armazéns, um dos quais está situado junto à fábrica enquanto que todos os outros são
Introdução
7
abastecidos diariamente ou então de dois em dois dias. Assim, o objectivo é encontrar uma
solução de forma a que se rentabilize a existência dos 4 armazéns sem que os mesmos entrem
em “conflito”.
Na construção do nosso grafo, o qual designaremos daqui em diante por grafo GI
(presente na figura 1.3), foi necessário adicionar alguns pontos para além dos pontos de
entrega porque o acesso a determinados locais implica a passsagem por um mesmo ponto sem
que este seja um local de entrega. Cada local de entrega, de passagem ou armazém será
designado como um vértice de acordo com a Teoria de Grafos e que apresentamos na Tabela
1.1, onde cada aresta será a ligação rodoviária entre cada ponto considerado. Optou-se por
manter o grafo resultante (figura 1.3) de acordo com a morfologia da região considerada pois
torna a sua visualização mais fácil e compreensível. Poderiamos considerar muitos mais
pontos de distribuição mas já iríamos por exemplo entrar com vários pontos dentro de uma
mesma cidade. Como optámos por considerar um problema de escala nacional não fará
sentido impor certas restrições, tais como o sentido do tráfego. Obviamente que se o nosso
problema estivesse relacionado com a distribuição dentro de uma cidade, por exemplo a
distribuição de encomendas postais, o seu “esquecimento” levaria a resultados desastrosos.
Pelo que a imposição dessas restrições, seria não só importantíssima mas também
fundamental.
Introdução
8
Figura1.3: Grafo GI - Grafo resultante da construção acima descrita que representa o problema considerado.
.
Introdução
9
Vértices Local Vértices Local
1 V. R. S. António 39 Ponto de passagem
2 Mértola 40 Coruche
3 Tavira 41 Porto Alto
4 Olhão 42 Vila Franca de Xira
5 Faro 43 Lisboa
6 Loulé 44 Alverca
7 Albufeira 45 Ponto de passagem
8 Ponto de passagem 46 Ponto de passagem
9 Armazém da Guia 47 Oeiras
10 Portimão 48 Cascais
11 Lagos 49 Sintra
12 Odemira 50 Amadora
13 Sines 51 Armazém de Torres Vedras
14 Santiago do Cacém 52 Torres Vedras
15 Ponto de passagem 53 Almeirim
16 Ponto de passagem 54 Santarém
17 Beja 55 Ponto de Passagem
18 Évora 56 Tomar
19 Armazém de Évora 57 Torres Novas
20 Estremoz 58 Caldas da Rainha
21 Elvas 59 Leiria
22 Álcacer do Sal 60 Alcobaça
23 Portalegre 61 Nazaré
24 Ponto de passagem 62 Marinha Grande
25 Castelo Branco 63 Pombal
26 Abrantes 64 Fogueira da Foz
27 Arraiolos 65 Coimbra
28 Montemo-o-Novo 66 Ponto de passagem
29 Ponto de passagem 67 Aveiro
30 Vendas Novas 68 Guarda
31 Ponto de Passagem 69 Covilhã
32 Ponto de passagem 70 Ovar
33 Setúbal 71 Ponto de passagem
34 Ponto de passagem 72 São João da Madeira
35 Seixal 73 Ponto de passagem
36 Almada 74 Bragança
37 Barreiro 75 Mirandela
38 Montijo 76 Chaves
Tabela 1.1: Tabela que indica a correspondência entre vértices, locais de entrega, armazéns ou pontos de
passagem considerados.
Introdução
10
Vértices Local Vértices Local
77 Vila Real 84 Póvoa do Varzim
78 Amarante 85 Esposende
79 Paredes 86 Viana do Castelo
80 Vila Nova de Gaia 87 Braga
81 Porto 88 Vila Nova de Famalicão
82 Matosinhos 89 Guimarães
83 Armazém da Maia 90 Viseu
Tabela 1.1(cont.): : Tabela que indica a correspondência entre vértices, locais de entrega, armazéns ou pontos de
passagem considerados.
CAPÍTULO II ALGUNS CONCEITOS SOBRE TEORIA DE GRAFOS
12
CAPÍTULO II ALGUNS CONCEITOS SOBRE TEORIA DE GRAFOS
13
2.1 Grafos orientados e não orientados
Olhando atentamente para o GI verificamos que não estamos a impor sentidos de
tráfego, estamos a partir do princípio de que se pode deslocar nos dois sentidos em cada aresta
considerada, mas e se existissem restrições em relação ao sentido do tráfego? Como
construiríamos o nosso Grafo? Para responder a esta questão será necessário fazer uma
distinção entre este dois tipos de grafos. Considerando o grafo GI onde o sentido do tráfego é
irrelevante estamos perante um Grafo Não Orientado, mas e se todas as arestas tivessem um
sentido pré-definido? Então o grafo designar-se-ia como um Grafo Orientado e no caso de
num qualquer grafo considerado existirem em conjunto as duas hipóteses anteriores, que na
realidade é o mais frequente, então estariamos perante um Grafo Misto. Como mero exemplo
e para uma melhor compreensão apresentamos de seguida as três hipóteses possiveis:
(a) (b) (c)
Figura 2.1: Exemplo de um grafo não orientado (a), de um grafo orientado (b) e de um grafo misto (c).
Alguns conceitos sobre Teoria de Grafos
14
Qualquer grafo não orientado é também um grafo orientado, bastará que se substitua
cada aresta existente por duas arestas com sentidos opostos.
2.2 A Função correspondência
Embora a definição 1.1 apresentada no capítulo I seja a mais usual, existe uma outra
definição equivalente que se revelará muito útil mais adiante. Para a poder apresentar é
necessário construir uma função que irá relacionar os vértices de um qualquer grafo G e que
representaremos por Γ . Aplicando este operador a um qualquer vértice iremos obter um
conjunto de vértices cuja definição apresentamos de seguida:
Definição 2.1: Seja ( )AXG ,= um grafo qualquer e consideremos o operador
Γ que relaciona os elementos de X entre si. Designamos como
Correspondência a função Γ tal que:
XX →Γ :
( ) ( ){ }Axxxxx jijii ∈=Γ→ ,: .
Ora vejamos em relação ao grafo GI o que resulta da aplicação da função de correspondência:
( ) { }3,21 =Γ
( ) { }17,16,12,815 =Γ
( ) { }64,63,62,60,57,56,5459 =Γ
Alguns conceitos sobre Teoria de Grafos
15
( ) { }90,71,70,67,6566 =Γ
( ) { }77,68,66,6590 =Γ
De realçar que poderão surgir casos em que ( ) ∅=Γ ix ou até ( ) { }ii xx =Γ e neste
caso estamos perante a existência de uma aresta que usualmente se designa por Loop, que
indica a existência de um trajecto onde partindo de ix chegamos a ix sem passar por
qualquer outro vértice. Do mesmo modo poderemos apresentar a Função Correspondência
Inversa:
Definição 2.2 Seja ( )AXG ,= um grafo qualquer e consideremos o operador
1−
Γ que relaciona os elementos de X entre si. Designamos como
Correspondência Inversa a função 1−
Γ ,tal que:
XX →Γ−
:1
( ) ( ){ }Axxxxx ijjii ∈=Γ→ −
,:1
.
Em relação ao nosso problema, será exactamente igual à função correspondência, já
que o grafo GI é um grafo não orientado, mas vejamos por exemplo em relação à figura 2.1b:
( ) { } ( ) ∅=Γ≠=Γ −
121 1
( ) { } ( ) {}1232 1
=Γ≠=Γ −
( ) ( ) { }233 1
=Γ≠∅=Γ −
Alguns conceitos sobre Teoria de Grafos
16
( ) { } ( ) ∅=Γ≠=Γ −
434 1
A função que definimos em 2.1 goza de várias propriedades relacionadas com a
Teoria de Conjuntos, que nos irão ser muito uteis para demonstrações posteriores e que
convém mencionar e verificar:
Propriedade 2.1 :
a) Seja { } ( ) ( ) ( ) ( )qqqq xxxXxxxX ΓΓΓ=Γ= ........então,.....,, 2121
b) ( ) ( )
( )( )i
q
i
q
xx 1−
ΓΓ=Γ
c) ( ) ( )
( )( )i
q
i
q
xx 11 −−−−
ΓΓ=Γ
d) Para um grafo não orientado G, ( ) ( )ii xx 1−
Γ=Γ .
Demonstração:
a) Provemos por indução em INn ∈ , onde n corresponde ao número de vértices
de um qualquer grafo.
i) Para 2=n
Supondo que existe a aresta ( )21 , xx
{ } ( ) { }( ) { } ( ) ( )2121212212 ,,, xxxxxxXxxX Γ∪Γ==Γ=Γ=
Se não existir ( ) ( ) ( ) { } { } { }=∪=Γ∪Γ=Γ 212X xx
ii) Se { } ( ) ( ) ( )nnnn xxXxxXseINn Γ∪∪Γ=Γ=∈∀ ..,..,, 11 ,
então
Alguns conceitos sobre Teoria de Grafos
17
{ } ( ) ( ) ( ) ( )111111 ++++ Γ∪Γ∪∪Γ=Γ= nnnnnn xx..xXx,x,..,xXse .
Vejamos:
{ } { } { }1111 +++ ∪=∪= nnnnn xXxx,..,xX , então e por hipótese de
indução verificamos que:
( ) { }( ) ( ) { }( ) ( ) ( )
( ) ( ) ( )11
1111
+
++++
Γ∪Γ∪∪Γ=
=Γ∪Γ=Γ∪Γ=∪Γ=Γ
nn
nnnnnnn
xx..x
xXxXxXX
como queríamos provar.
b) Provemos por indução em INn ∈ , onde n representa o número de vezes que
aplicamos a função correspondência
i) Para ( ) ( ) INi,xx,n ii ∈∀Γ=Γ= 1
1 .
ii) Se ( ) ( )( ) INixxINn i
n
i
n
∈∀ΓΓ=Γ∈∀ −
,, 1
, então
( ) ( )( ) INi,xx i
n
i
n
∈∀ΓΓ=Γ +1
.
Por hipótese de indução sabemos que:
( ) ( )( ) ( )( )( )ii
n
i
n
x.....xx ΓΓΓ=ΓΓ=Γ −1
, n vezes
( )( ) ( )( )( )
vezesn
vezesn
ii
n
x...x
1+
ΓΓΓΓ=ΓΓ , se depois de aplicar Γ n vezes
aplico Γ mais uma vez então estou a aplicar Γ n+1 vezes logo provámos
que:
( ) ( )( ) INi,xx i
n
i
n
∈∀ΓΓ=Γ +1
c) esta demonstração é análoga à anterior.
Alguns conceitos sobre Teoria de Grafos
18
d) Como o grafo G é não orientado o conjunto ( )ixΓ (conjunto de “partida” de
xi ) é igual ao conjunto de ( )ix1−
Γ (conjunto de “chegada” de xi).
2.3 Outra definição de Grafo e o Grau de um Vértice
Definida a função Correspondência (2.1) podemos então apresentar uma definição
equivalente à definição 1.1, que constitui, também ela, uma definição de grafo mas utilizando
a função correspondência:
Definição 2.3: Seja ∅≠X um conjunto qualquer de vértices e seja Γ função
correspondência entre os vértices de X , definimos o grafo ( )AXG ,= ,
definido em 1.2, como ( )Γ= ,XG .
Outro conceito que convém mencionar é o de grau de um vértice. Olhando
atentamente para um qualquer grafo G, mais precisamente para os seus vértices INixi ∈∀ ,
poderemos calcular o número de arestas que têm ix como vértice final ou como vértice
inicial.
Definição 2.4: Seja ( )Γ= ,XG um grafo e xi um vértice qualquer de X:
i) Chamamos grau externo, ( )ixd0 ao número de arestas que têm o
vértice xi, como vértice inicial. Ou seja, ( ) ( )ii xxd Γ=0 .
Alguns conceitos sobre Teoria de Grafos
19
ii) Chamamos grau interno, ( )it xd ao número de arestas que têm o
vértice xi, como vértice final. Ou seja, ( ) ( )iit xxd 1−
Γ= .
iii) Chamamos grau, ( ) ( )ii xxd Γ= quando o grafo é não
orientado.
Na definição 1.1 introduzimos o Conjunto A como o conjunto de pares de vértices
( )ji xx , que estão ligados entre si num determinado grafo que não é mais do que o conjunto de
todas as arestas do grafo considerado. Assim, podemos designar como adjacentes os vértices
ix e jx quando a aresta ( ) Axx ji ∈, .
2.4 A representação matricial
Do ponto de vista da programação, a forma utilizada na figura 1.3 para representar um
grafo não será concerteza a mais adequada, pelo que, é necessário encontrar uma outra forma
de representar um qualquer grafo. A forma encontrada foi a matricial, criando-se assim a
chamada Matriz de Adjacência que nos indica como estão ligados os vértices entre si.
Definição 2.5: Seja ( )AXG ,= , nX = . A matriz quadrada nn × , [ ]ijaA = é
designada por Matriz de Adjacência e é dada por:
( )
( )∉=
∈=
Axxa
Axxa
jiij
jiij
,arestaase,0
,arestaase,1
Alguns conceitos sobre Teoria de Grafos
20
A matriz de Adjacência define completamente a estrutura de qualquer grafo G. Por
exemplo a soma de todos os elementos da linha ix dá-nos o valor do grau externo do vértice
ix e a soma de todos os elementos da coluna ix dá-nos o valor do grau interno do vértice ix ,
poderemos também obter as correspondências Γ , isto é, o conjunto de colunas que possuem
entrada com valor 1 na linha ix é o conjunto ( )ixΓ , analogamente o conjunto de linhas que
possuem entrada com valor 1 na coluna ix é o conjunto ( )ix1−
Γ . Para confirmar estas
afirmações calculemos a matriz de Adjacência do grafo 2.1b presente na figura 2.1:
=
0100
0000
0100
001
1
0
4
3
2
1
A
432
A soma das entradas pertencentes à linha 1de A é 1 que é igual ao valor do grau externo do
vértice 1, ( ) 110 =d . A soma das entradas pertencentes à coluna 3 de A é 2 que é igual ao valor
do grau interno do vértice 3, ( ) 23 =td .
Existe uma outra representação matricial que relaciona os vértices e as arestas de um
grafo. Apesar de não definir completamente a estrutura de um grafo, já que a existência de
Loop’s é omitida, irá ser muito útil mais adiante e que definimos de seguida:
Definição 2.6: Seja ( )AXG ,= , tal que mAnX == e , definimos Matriz de
incidência, como a matriz, mn × , [ ]ijb=B :
Alguns conceitos sobre Teoria de Grafos
21
=
−=
=
.uméseoudeterminalvérticeénãose0
arestadafinalvérticeoése1
arestadainicialvérticeoése1
loopaaxb
axb
axb
jjiij
jiij
jiij
Como o grafo GI tem 90 vértices e 122 arestas iremos utilizar de novo o grafo da
figura 2.1b como exemplo onde ( ) ( ) ( )4332211 ,ae,a,,a 32 === para calcular a matriz B :
−−
−
=
100
110
011
00
4
3
2
1 1
B
aaa 321
Se o grafo G for um grafo não orientado então a matriz de incidência é definida da mesma
forma, mas as entradas com valor –1 passam a ter valor 1, como seria o caso do grafo GI.
2.5 Caminhos
Em áreas como a distribuição interessa ponderar a distância a percorrer, o tempo
despendido e os gastos associados. Até agora ainda não associamos este conceitos à Teoria de
Grafos mas iremos fazê-lo de imediato. Tendo em conta o grafo GI, se nos encontramos em
Torres Vedras (vértice 52) e pretendemos ir até Santarém (vértice 54), poderíamos escolher os
mais variados trajectos para atingir o nosso objectivo, por exemplo:
1ºtrajecto: ( ) ( ) ( ){ }54,60,60,58,58,52
2º trajecto: ( ) ( ) ( ) ( ){ }54,42,42,44,44,45,45,52
Alguns conceitos sobre Teoria de Grafos
22
3ºtrajecto: ( ) ( ) ( ) ( )( ){ }54,4242,44,44,43,43,45,45,52
Na teoria de grafos chamamos a estas sequências de arestas, onde o vértice final de uma das
arestas é o vértice inicial da aresta seguinte que definem um trajecto Caminhos .
Definição 2.7: Seja G, um grafo orientado. A uma sequência de arestas, onde o
vértice final de cada aresta é o vértice inicial da aresta seguinte
chamamos Caminho, que usualmente representamos por µ.
2.6 Peso, comprimento ou custo
Quando pretendemos realizar uma viagem é natural que nos surjam as seguintes
questões: Quantos Km tem o percurso? Quanto tempo demora a realizar? Quantos litros de
gasolina vou gastar? etc. Temos assim presente a noção de comprimento, custo, peso ou outra
medida qualquer que na Teoria de Grafos serão exactamente a mesma coisa. Assim a cada
aresta ( )ji xx , do grafo considerado associamos um comprimento, custo ou peso ijc . No caso
do grafo GI iremos considerar as distâncias entre cada local, logo consideramos o
comprimento. Tendo em conta o conceito de custo, se a cada aresta do grafo GI associarmos
um valor ijc , podemos calcular a distância a percorrer tendo como ponto de partida um
determinado vértice e obviamente outro como ponto de chegada. Um grafo em que a cada
aresta está associado um custo designa-se como Grafo Ponderado (figura 2.2). Desta forma
já podemos calcular o comprimento dos trajectos ou melhor dos caminhos acima
considerados. Consultando previamente a figura 2.2 que se encontra na página 23
chegaríamos aos seguintes resultados:
Alguns conceitos sobre Teoria de Grafos
23
Figura 2.2: Grafo GI Ponderado.
Alguns conceitos sobre Teoria de Grafos
24
1ºCaminho: 94,3 Km.
2ºCaminho: 99,4 Km.
3ºCaminho: 124,4 Km..
O procedimento realizado poderá ser generalizado da seguinte forma:
Definição 2.8: Seja µ, um caminho, num dado grafo G. O custo ou peso ou
comprimento do caminho µ, é dado por:
( )
( )∈
=
µ
µ
ji xx
ijcl
,
Apesar de nos interessar saber o comprimento do caminho a percorrer ou o número de litros
que gastamos, na verdade, o que nos interessa saber é o caminho que tem menor custo.
2.7 Matriz de custos
Também para um grafo ponderado existe uma representação matricial cuja existência é
fundamental para programas de computador. Esta representação é matricial designada por
Matriz de Custos e encontra-se definida de seguida:
Definição 2.9: Seja ( )AXG ,= , tal que nX = , definimos Matriz de custos,
como a matriz quadrada, nn × , [ ]ijcC = onde ijc é o custo
associado à arestas ( )ji, .
Alguns conceitos sobre Teoria de Grafos
25
2.8 Outros conceitos
Nesta secção vamos mencionar algumas definições que serão necessárias para os
conteúdos que iremos introduzir nos capítulos III e IV, tais como a definição de grafo conexo,
definição de circuito, etc. Assim teremos:
Definição 2.10: Seja ( )A,XG = um grafo qualquer. Definimos como Grafo
Conexo todo o grafo G em que para qualquer par de vértices ( ) Xj,i ∈
existe um caminho que vai de i para j ou vice-versa.
Definição 2.11: Seja ( )A,XG = um grafo qualquer. Definimos Caminho
Elementar em G como um caminho que utiliza cada vértice uma única
vez.
Definição 2.12: Seja ( )A,XG = um grafo orientado qualquer. Definimos como
Circuito um caminho µ em G cujo vértice inicial de µ é o vértice final de
µ. No caso de G ser um grafo não orientado estaríamos perante um Ciclo.
Lema 2.1: Seja G um grafo, m o número de arestas e n o número de vértices de
G. Então a soma de todos os graus internos , é igual à soma de todos os
graus externos, que por sua vez é igual ao número de arestas, i.e.
Alguns conceitos sobre Teoria de Grafos
26
( ) ( ) mxdxd
n
i
it
n
i
io ==
== 11
Definição 2.13: Seja ( )AXG ,= , tal que nX = , definimos Matriz dos graus
de G, como a matriz, nn × , [ ]ijd=D onde cada ijd corresponde a ( )ixd
com ji = para ji ≠ 0=ijd .
Definição 2.14: Seja M uma matriz nn × . O co-factor i, j de M é definido
como:
( ) ( )( )j|iMdet1
ji+
− .
onde ( )( )j|iMdet é o determinante da matriz M retirando a linha i e a
coluna j.
CAPÍTULO III CMC, ÁRVORES E AS REGIÕES DE ABASTECIMENTO
CAPÍTULO III CMC, ÁRVORES E AS REGIÕES DE ABASTECIMENTO
3.1 Porquê o Algoritmo do Caminho mais Curto?
Como já foi mencionado no Capítulo I a empresa que considerámos possui 4 armazéns
espalhados por Portugal Continental, pelo que poderemos equacionar a divisão do País em 4
regiões de abastecimento, uma para cada armazém. Como podemos fazer essa divisão? Para
tentar responder a essa questão teremos que falar de alguns conceitos sobre os quais nada foi
revelado até ao momento.
Fará todo o sentido calcular as distâncias entre cada armazém e todos os outros
pontos. Como serão 4 armazéns, teríamos que multiplicar por quatro o número de operações a
realizar, pelo que será necessário encontrar um algoritmo que diminua uma grande parte do
trabalho a realizar. Esse algoritmo é o Algoritmo de Dijkstra que iremos identificar como
Algoritmo do Caminho Mais Curto, (CMC)
3.2 Algoritmo de Dijkstra
O programador informático holandês Edsger W. Dijkstra (1930 - ) vencedor do
Prémio Turing da Association for Computer Machinery em 1972, criou um algoritmo capaz
de calcular o caminho mais curto entre dois vértices. O denominado Algoritmo de Dijsktra,
consiste na atribuição de etiquetas permanentes e outras temporárias a cada vértice do grafo
considerado e que apresentamos de seguida:
CAPÍTULO III CMC, ÁRVORES E AS REGIÕES DE ABASTECIMENTO
Algoritmo 3.1: Algoritmo do Caminho mais Curto (CMC)
Seja G um grafo ponderado, ijc o custo associado a cada aresta ( )ji, ,
( )ixl o caminho mais curto até ao vértice ix , kx o vértice inicial e tx o
vértice final. Para calcular o CMC procedemos da seguinte forma:
Passo 1: ( ) +
= 0kxl (etiqueta permanente)
( ) ∞=≠∀ ilki (etiqueta temporária)
Passo 2: Para cada vértice com etiqueta temporária para o qual a sua
correspondência não é vazia ( ( ) ∅≠Γ i ), redefinimos ( )ixl da
seguinte forma:
( ) ( ) ( ) ( ){ }ijcxlxlminxl jii ,; += .
Passo3: Encontrar o menor ( )ixl .
Passo 4: Fixar o menor ( )ixl com uma etiqueta permanente
Passo 5: Se ti = o processo termina. Se ti ≠ regressar ao passo 2.
CAPÍTULO III CMC, ÁRVORES E AS REGIÕES DE ABASTECIMENTO
Será também muito importante determinar o trajecto a seguir já que o CMC nada nos
informa acerca disso.
Algoritmo 3.2: Para encontrar o caminho resultante da aplicação do CMC,
aplicamos recursivamente a seguinte equação:
( ) ( )ijii xlcxl =+ ''
considerando i como o último vértice e i’ o vértice cuja aresta inicia em i
e termina em i’.
Utilizando o grafo GI como exemplo, vamos calcular o caminho mais curto entre
Torres Vedras e Vila Franca de Xira:
Exercício 3.1
Passo 1: 4252 =∧= tk
( ) ( ) +∞=≠∀= +
ili,l 52052
Passo 2: ( ) { }58,4552 =Γ+
( ) { } { } 4,314,31;4,310;45 =∞+=+∞+= minl
( ) { } { } 4,394,39;4,390;58 =∞+=+∞+= minl
Passo 3: ( ) ( ){ } ( )4558,45 lllmin =
Passo 4: ( ) +
= 4,3145l
Passo 5: 4245 ≠ logo temos que regressar a 2.
CAPÍTULO III CMC, ÁRVORES E AS REGIÕES DE ABASTECIMENTO
Passo 2: ( )
{ }50,44;4345
=Γ+
( ) { } { } 9,479,47;5,164,31;43 =∞+=+∞+= minminl
( ) { } { } 9,479,47;5,164,31;44 =∞+=+∞+= minminl
( ) { } { } 3,503,5;9,184,31;50 =∞+=+∞+= minminl
Passo 3: ( ) ( ) ( ) ( ){ } ( )585850,44,43 lllllmin =
Passo 4: ( ) +
= 5,3958l
Passo 5: 4258 ≠ voltar a 2.
Passo 2: ( ) { }61,6058 =Γ+
( ) { } { } 6565;6,254,39;60 =∞+=+∞+= minminl
( ) { } { } 5,695,69;1,304,39;61 =∞+=+∞+= minminl
Passo3: ( ) ( ) ( ) ( ) ( ){ } ( )4461,60,50,44,43 llllllmin =
Passo 4: ( ) +
= 9,4744l
Passo 5: 4244 ≠ regressar a 2.
Passo 2: ( ) { }43,4244 =Γ+
( ) { } { } 1,551,55;2,79,47;42 =∞+=+∞+= minminl
( ) { } { } 9,479,72;9,47259,47;9,4743 ==+= minminl
Passo 3: ( ) ( ) ( ) ( ) ( ){ } ( )4361,60,50,43,42 llllllmin =
Passo 4: ( ) +
= 9,4743l
Passo 5: 4243 ≠ voltar a 2
CAPÍTULO III CMC, ÁRVORES E AS REGIÕES DE ABASTECIMENTO
Passo 2: ( ) { }46,3643 =Γ+
( ) { } { } 3,583,58;4,109,47;36 =∞+=+∞+= minl
( ) { } { } 6,586,58;7,109,47;46 =∞+=+∞+= minl
Passo 3: ( ) ( ) ( ) ( ) ( ) ( ){ } ( )5061,60,50,46,42,36 lllllllmin =
Passo 4: ( ) +
= 3,5050l
Passo 5: 4250 ≠ voltar a 2
Passo 2: ( ) { }49,4650 =Γ+
( ) { } { } 6,5870;6,587,103,50;6,5846 ==+= minl
( ) { } { } 1,631,63;8,123,50;49 =∞+=+∞+= minl
Passo 3: ( ) ( ) ( ) ( ) ( ) ( ){ } ( )4261,60,49,46,42,36 lllllllmin =
Passo 4: ( ) +
= 1,5542l
Passo 5: 4242 = pelo que determinámos o comprimento do caminho mais
curto pretendido. Determinado o comprimento do caminho mais curto interessa
calcular o trajecto respectivo. Calculemos então o trajecto que deveremos
seguir para percorrer a menor distância possivel.
Aplicando a algoritmo apresentado em 3.2 obtemos:
42=ix
( ) { }54,4442 =Γ−
( ) ( )421,552,79,4744 42,44 lcl ==+=+
( ) ( )423,4454 42,54 lcl ≠+∞=++∞=+
CAPÍTULO III CMC, ÁRVORES E AS REGIÕES DE ABASTECIMENTO
44=ix
( ) { }45,4344 =Γ−
( ) ( )449,72259,4743 44,43 lcl ≠=+=+
( ) ( )449,475,164,3145 44,45 lcl ==+=+
45=ix
( ) { }5245 =Γ−
( ) ( )454,314,31052 45,52 lcl ==+=+
então o caminho mais curto entre os vértices 52 e 42 é ( ) ( ) ( )42,44,44,45,45,52 ,
com um comprimento de 55,1 Km.
Regressando ao objectivo deste trabalho, vamos aplicar o algorítmo do caminho mais
curto em casos separados, ou seja vamos aplicá-lo 4 vezes uma para cada armazém
considerando como ponto de partida de cada caso os armazéns de Torres Vedras, da Maia, da
Guia e de Évora respectivamente os vértices 51, 83, 9 e 19.. Ao procedermos desta forma
vamos obter quatro grafos, um para cada armazém, que possuem diversas características
particulares muito interessantes, possuem menos uma aresta que o número total de vértices e
não possuem circuitos, a estes grafos chamamos Árvores que definimos no capítulo seguinte e
que estão presentes nas figuras 3.1, 3.2, 3.3 e 3.4.
CAPÍTULO III CMC, ÁRVORES E AS REGIÕES DE ABASTECIMENTO
Figura 3.1: Árvore resultante da aplicação do CMC, onde o vértice 51 é o ponto de partida.
CAPÍTULO III CMC, ÁRVORES E AS REGIÕES DE ABASTECIMENTO
Figura 3.2: Árvore resultante da aplicação do CMC, onde o vértice 83 é o ponto de partida.
CAPÍTULO III CMC, ÁRVORES E AS REGIÕES DE ABASTECIMENTO
Figura 3.3: Árvore resultante da aplicação do CMC, onde o vértice 9 é o ponto de partida.
CAPÍTULO III CMC, ÁRVORES E AS REGIÕES DE ABASTECIMENTO
Figura 3.4: Árvore resultante da aplicação do CMC, onde o vértice 19 é o ponto de partida.
CAPÍTULO III CMC, ÁRVORES E AS REGIÕES DE ABASTECIMENTO
3.3 Árvores
Os Grafos Árvores ou simplesmente Árvores são frequentemente utilizadas em estudos
relacionados com Oleodutos, Gasodutos, Telecomunicações, Árvores Genealógicas e outros.
As Árvores representadas nas figuras 3.1, 3.2, 3.3 e 3.4 possuem como já foi afirmado
anteriormente várias particularidades sobre as quais nos vamos debruçar de seguida, mas será
indispensável verificar alguns teoremas primeiro:
Teorema 3.1 : Seja ( )AXG ,= um grafo não orientado, onde nX = . Então
quaisquer das duas condições seguintes implicam a terceira:
a) G é conexo.
b) G não possui ciclos.
c) G tem 1−n arestas.
Demonstração:
i) cba ∧
Suponhamos com vista a um absurdo que G tem n arestas. Como G é
conexo sabemos que para qualquer par de vértices ),( ji xx de G, existe
um caminho que vai de ix para jx ou vice-versa. Logo é possível
construir um caminho com n-1 arestas que vai de ix a jx e ao juntar a
CAPÍTULO III CMC, ÁRVORES E AS REGIÕES DE ABASTECIMENTO
aresta restante de forma que ligue directamente ix a jx obtemos um
grafo nas condições consideradas. Absurdo, estaríamos perante um
grafo com ciclos portanto para verificar as hipóteses consideradas G
terá n-1 arestas.
ii) bca ∧
Seja G um grafo conexo com n-1 arestas. Queremos provar, que G não
possui ciclos. Suponhamos com vista a um absurdo, que o grafo G possui
um ciclo, o qual passa por todos os vértices do grafo G, Se retirarmos
uma das arestas passaremos a ter um grafo com n-2 arestas conexo.
Absurdo, provámos em i) que um grafo conexo com n vértices tem pelo
menos n-1 arestas. Portanto G não possui ciclos.
iii) abc ∧
Seja G por hipótese um grafo com n-1 arestas e n vértices que não
possua ciclos, então G não pode conter nenhum vértice isolado. Assim, é
possível para qualquer par de vértices ( )ji, de G ir de i para j ou de j
para i. Estamos assim perante a definição de grafo conexo. Como
queríamos demonstrar.
CAPÍTULO III CMC, ÁRVORES E AS REGIÕES DE ABASTECIMENTO
Definição 3.1: Designamos como Árvore não orientada o grafo ( )AXT ,= ,
onde nX = , 1−= nA e T é conexo.
Para identificar um grafo como uma árvore podemos em vez de utilizar a definição 3.1
recorrer ao seguinte teorema:
Teorema 3.2: Seja ( )AXT ,= uma árvore não orientada, então as seguintes
afirmações são equivalentes:
i) T é conexo, nX = e 1−= nA .
ii) T é conexo mas não possui ciclos.
iii) T é um grafo onde cada par de vértices é ligado através de
um e um só caminho elementar.
Demonstração:
( )iii
De acordo com o teorema 3.1, o grafo T não possui ciclos. Sabemos que
um ciclo não é mais do que um circuito, pelo que T não possui circuitos.
Portanto está provada a primeira implicação.
CAPÍTULO III CMC, ÁRVORES E AS REGIÕES DE ABASTECIMENTO
( )iiiii
Como estamos perante um grafo conexo que não possui circuitos e
considerando dois vértices Xxx ji ∈, , então existe um caminho onde o
vértice xi é o vértice inicial e xj é o vértice final de tal forma que apenas
passamos uma única vez por um qualquer vértice xk que pertença a esse
caminho, logo estamos perante um caminho elementar. Suponhamos com
vista a um absurdo que existem dois caminhos elementares que ligam os
vértices ji xex , por exemplo 2e µµ1 , então existe um circuito. Absurdo,
por hipótese T não possui circuitos. Está provada então a segunda
implicação.
( )iiii
Suponhamos que existe um caminho elementar com n vértices, podemos
concluir que existem apenas n-1 arestas, caso contrário passaríamos a
ter um caminho onde pelo menos um vértice seria “utilizado” mais do
que uma vez. Portanto podemos concluir que T é conexo com n vértices
possui n-1 arestas.
CMC, Árvores e as Regiões de Abastecimento
3.4 Subgrafos e Grafos Parciais
No caso em estudo e como as 4 árvores foram calculadas a partir de um grafo inicial,
estamos perante subconjuntos do grafo inicial onde o número de vértices se mantém, mas o
número de arestas altera-se. Assim será extremamente interessante e importante definir os
vários tipos que poderão surgir, uma vez que devido ao objectivo deste trabalho iremos
calcular vários subconjuntos. Inicialmente apresentamos a definição de grafo parcial e como
exemplo podemos considerar qualquer uma das árvores calculadas com o algoritmo do CMC.
Definição 3.2: Seja ( )AXG ,= um grafo qualquer, definimos Grafo Parcial de
G como sendo o grafo ( )pp AXG ,= , onde AAp ⊆ .
Se em vez de retirarmos algumas arestas a um qualquer grafo retirarmos alguns
vértices e representarmos apenas as arestas que inicialmente ligavam esses mesmos vértices
estamos perante um subgrafo. Mais adiante poderemos visualizar vários exemplos de
Subgrafos do grafo GI.
Definição 3.3: Consideremos um grafo ( )Γ= ,XG . Chamamos Subgrafo de G
ao grafo ( ) ( ) ( ) siississss XxxXxXXXG ∩Γ=Γ∈∀⊆Γ= ,ecom,,
CMC, Árvores e as Regiões de Abastecimento
3.5 Raiz de uma Árvore e Árvores Orientadas
Olhando para qualquer uma das figuras 3.1, 3.2, 3.3 e 3.4 vemos que os vértices
iniciais, respectivamente 51, 83, 9 e 19 são as raizes de cada uma das árvores consideradas
(armazéns – inicio do trajecto), através desta caracteristica podemos distinguir uma árvore não
orientada de uma árvore orientada:
Definição 3.4: Seja ( )AXT ,= uma árvore. Seja Xxi ∈ tal que:
( ) 0=it xd . Então o vértice ix designa-se uma raiz de T.
Definição 3.5: Seja ( )AXT ,= uma árvore. Diz-se que T é uma Árvore
Orientada se para todo o vértice Xxi ∈ , com a excepção de um (por
exemplo x1), ( ) 1=it xd . O vértice x1 é a raiz de T.
3.6 As Regiões de Abastecimento
Estamos agora em condições de realizar certas operações que nos apresentarão as
primeiras respostas ao problema que nos propusemos estudar. Com o auxilio de uma
aplicação informática (anexo) vamos comparar as distâncias entre a raiz e os restantes
vértices para as árvores calculadas com o CMC, com o objectivo de encontrar 4 (neste caso)
regiões de abastecimento utilizando o algoritmo 3.3.
CMC, Árvores e as Regiões de Abastecimento
Algoritmo 3.3: Seja ( )jli a distância entre o vértice j e o vértice i, onde j
pertence ao conjunto de vértices que são raizes das árvores consideradas
no nosso problema e kR é uma região de abastecimento. Aplicando a
seguinte condição:
( ){ }{ } ( ) kii
i
Rikljl ∈=min
obtemos as várias regiões onde a distância entre a raiz e um outro vértice
é minima.
Vejamos um pequeno exemplo e de seguida os resultados obtidos:
Para 1=i teremos
( ) ( ) ( ) ( ){ } { } 8,971,623;8,350;8,220;8,97min19,9,83,51min 1111 ==llll , então o
vértice 1 pertencerá á região de abastecimento do vértice 9, ou seja uma loja
situada em V.R.S. António será abastecida pelo armazém da Guia.
Resultados do exemplo acima considerado:
Para o armazém de Torres Vedras:
{ } { }∪∪= 38,37,36,35,34,33,322651R
{ }64,63,62,61,60,59,58,57,56,55,54,53,52,51,50,49,48,47,46,45,44,43,42,41∪
CMC, Árvores e as Regiões de Abastecimento
Para o armazém da Maia:
{ }∪= ,69,68,67,66,6583R
{ },90,89,88,87,86,85,84,83,82,81,80,79,78,77,76,75,74,73,72,71,70∪
Para o armazém da Guia:
{} { } { }15,13,12,11,910,8,7,6,5,4,319 ∪∪=R
Para o armazém de Évora:
{ } { } { }∪∪∪= ,26,25,24,23,22,21,20,19,18,17,1614219R
{ } { } { }6940,39,31,30,29,28,27 ∪∪∪
Estão calculadas então as 4 regiões de abastecimento pretendidas, podemos dizer que a
partir deste ponto entrámos no problema própriamente dito. Representando estas regiões sob a
forma de grafo facilmente verificamos pela definição 3.3 que estamos perante 4 subgrafos do
nosso grafo GI. Para uma fácil compreensão estão representadas na figura 3.5 as quatro
regiões de abastecimento onde o vértice com a forma identifica o respectivo armazém de
cada região. Cada uma destas regiões que designaremos simplesmente por região de Torres
Vedras, da Guia, de Évora e Maia e que representaremos por XkRk ∈onde , são subgrafos do
grafo GI. Se retirarmos uma aresta de qualquer subgrafo e de acordo com a definição 3.4
estaremos perante um Subgrafo Parcial, que iremos encontrar nas figuras 4.2, 4.4, 4.5, 4.6 e
4.7.
CMC, Árvores e as Regiões de Abastecimento
Figura 3.5: Regiões de Abastecimento, kR .
CMC, Árvores e as Regiões de Abastecimento
3.7 O primeiro caso particular
Supunhamos que ocupamos o cargo de responsável pela distribuição de uma
determinada empresa com as caracteristicas já conhecidas, como primeira impressão
pensamos que o nosso problema não será muito dificil pois já dividimos o país em 4 zonas.
Imagine que o departamento Comercial da nossa Empresa decidiu proceder a uma
campanha de promoção para duas lojas que pertencem a regiões de distribuição diferentes e
que essas lojas se localizam, por assim, dizer na fronteira das suas respectivas regiões. Como
resolveriamos este problema? Obviamente que não iríamos enviar dois carros, um de cada
armazém, sem dúvida que o nosso director financeiro não iria gostar muito e decisões deste
género poderiam muito bem ser razão mais do que suficiente para a nossa demissão. A razão
diz-nos que teriamos que enviar um só carro, mas de que região de abastecimento? Como no
nosso problema considerámos as distâncias teremos que escolher o menor trajecto que
permita proceder ao abastecimento das duas lojas em questão.
A situação mencionada no parágrafo anterior pode ocorrer com bastante frequência,
pelo que o ideal seria ter a solução para todos casos em que isto possa suceder. Assim, vamos
procurar encontrar uma solução para este caso. Antes de mais será importante referir que
apenas poderemos considerar os pares de vértices para os quais existem arestas ou seja para
vértices adjacentes e que designaremos estes pontos como pontos críticos. Para que o método
utilizado seja de fácil compreensão vamos utilizar um dos casos existentes no nosso problema
e que está “ilustrado” no exercício 3.1. Obviamente que poderiamos considerar um outro caso
qualquer.
CMC, Árvores e as Regiões de Abastecimento
Exercício 3.1:
Supunhamos que é necessário proceder a uma entrega especial nas lojas
de Sines (13) e de Santiago do Cacém (14), que pertencem a regiões de
abastecimento diferentes, respectivamente Évora e Guia. Para determinar qual
a zona que irá realizar o abastecimento, calculamos através do CMC a
distância entre os vértices e os seus armazéns, adicionando de seguida o
“custo” associado à aresta existente e calculando o valor mínimo como de
seguida poderemos ver:
( ) ( ) 917414,98,231,1519 14,1313 Km,KmcKml ==∧= µ
( ) ( ) 8,18313,198,2316019 13,1414 KmKmcKml ==∧= µ
como ( ) ( ){ } { } ( )14,99,1748,183;9,174min13,19;14,9min µµµ === concluimos
que no caso de ser necessário abastecer exclusivamente os vértices 13 e 14 será
muito mais vantajoso fazê-lo através do armazém da Guia.
Recorrendo de novo ao auxílio da aplicação informática (anexo) vamos considerar
todos os pontos críticos e proceder exactamente da mesma forma utilizando o algoritmo 3.3
que nos permite chegar aos resultados obtidos no exercíco acima considerado.
CMC, Árvores e as Regiões de Abastecimento
Algoritmo 3.3: Sejam ( )AXGRR vu ,desubgrafos, = e Xji ∈, onde uRi ∈ e
vRj ∈ são dois pontos críticos de G tal que ( ) Aji ∈, e seja
( ) ( ) jii culju ,, +=µ .
Se ( ) ( ){ } ( )ivivjumin ,,;, µµµ = então os vértices i e j serão
abastecidos pela região de abastecimento v.
Se ( ) ( ){ } ( )juivju ,,;,min µµµ = então os vértices i e j serão
abastecidos pela região de abastecimento u.
Na tabela 2 encontram-se as soluções para todos os pontos críticos do grafo GI, de
realçar que até ao momento não fizemos a distinção dos vários tipos de vértices existentes.
i Ru Li(u) j Rv Lj(v) min c(i,j) CMC Rk Caminho a seguir
1 9 97.8 2 19 153.1 97.8 67.7 165.5 9 {9,8,6,5,4,3,1,2}
13 9 151.1 14 19 160.0 151.1 23.8 174.9 9 {9,8,15,12,13,14}
15 9 40.9 16 19 127.8 40.9 109.9 150.8 9 {9,8,15,16}
15 9 40.9 17 19 100.1 40.9 95.5 136.4 9 {9,8,15,17}
24 19 125.4 26 51 161.9 125.4 60.0 185.4 19 {19,18,20,23,24,26}
30 19 62.0 38 51 97.1 62.0 44.8 106.8 19 {19,18,28,29,30,38}
31 19 77.4 32 51 82.7 77.4 22.1 99.5 19 {19,18,28,29,31,32}
39 19 77.7 41 51 69.7 69.7 15.8 85.5 51 {51,52,45,44.42,41,39}
40 19 105.5 53 51 102.5 102.5 31.5 137.0 19 {19,18,28,29,30,39,40,53}
69 19 216.8 68 83 218.7 216.8 43.8 260.6 19 {19,18,20,23,24,25,69,68}
56 51 145.9 65 83 158.4 145.9 82.2 228.1 51 {51,52,58,60,59,56,65}
63 51 124.4 65 83 158.4 124.4 45.3 169.7 51 {51,52,58,60,59,63,65}
64 51 150.8 67 83 110.1 110.1 61.4 171.5 83 {83,81,80,71,66,67,64}
Tabela 3.1: Tabela que representa a solução para o problema da entrega especial a dois pontos pertencentes a
regiões de abastecimento diferentes. Na penúltima coluna da direita está indicada a região de
abastecimento que deve proceder ao mesmo e na coluna da direita está indicado o trajecto a seguir
para proceder à entrega.
CMC, Árvores e as Regiões de Abastecimento
Todos os vértices do GI foram até agora considerados da mesma forma com a
excepção dos vértices que representam os armazéns. Para continuar será necessário fazer
alguma alterações à tabela 3.1, já que a natureza do nosso problema obriga-nos a olhar para
alguns vértices de forma diferente. Ao construir o grafo GI foi necessário considerar certos
pontos de passagem, uma vez que o seu “esquecimento” provocaria diferenças acentuadas e a
respectiva adulteração dos resultados. Pelo que teremos de considerar as seguintes condições:
i) Cada veículo não poderá fazer um número de entregas superior a 6.
ii) Os vértices identificados no GI por λ têm dias de fixos de entrega.
iii) Os vértices identificados no GI por ν são os Armazéns.
iv) Os vértices identificados no GI por não têm dias fixos de entrega.
v) Os vértices identificados no GI por são apenas locais de passagem.
Quanto à restrição i) a sua razão de ser deve-se ao facto de no exemplo em estudo cada
veículo não procede a mais do que 6 entregas, realizando em situações pontuais 6. As outras
condições prendem-se com a construção do próprio grafo GI caso não as considerássemos
iríamos cometer um grande erro. Desta forma o grafo GI, sofreria algumas alterações em
relação ao apresentado na figura 1.3, por uma questão de simplicidade vamos utilizar a figura
3.5 e proceder então às alterações mencionadas uma vez que estas incidem apenas nos
vértices, obtendo-se então o resultado que apresentamos na figura 3.6. As alterações a que
procedemos serão de extrema importância no Capítulo IV.
CMC, Árvores e as Regiões de Abastecimento
Figura 3.6: Regiões de Abastecimento após as alterações que foram introduzidas e que estão directamente
relacionadas com o objecto de estudo deste trabalho.
CMC, Árvores e as Regiões de Abastecimento
Regressando ao problema dos pontos críticos e à tabela 3.1 vamos apenas considerar
os pares de pontos criticos em que ambos são locais de entrega obtendo-se a tabela 3.2, que
será a mais indicada para proceder a uma análise dos resultados obtidos. Ao consultar a tabela
3.3 podemos então concluir que, se for necessário proceder a uma entrega, por exemplo nas
lojas da Guarda (68) e da Covilhã (69), dever-se-á fazê-la a partir do armazém de Évora (19),
já que a distância a percorrer será a menor em relação à outra opção que seria o armazém da
Maia (83).
i Ru Lu(i) j Rv Lv(j) min c(i,j) CMC Rk Caminho a seguir
1 9 97.8 2 19 153.1 97.8 67.7 165.5 9 {9,8,6,5,4,3,1,2}
13 9 151.1 14 19 160.0 151.1 23.8 174.9 9 {9,8,15,12,13,14}
30 19 62.0 38 51 97.1 62.0 44.8 106.8 19 {19,18,28,29,30,38}
40 19 105.5 53 51 102.5 102.5 31.5 137.0 19 {19,18,28,29,30,39,40,53}
69 19 216.8 68 83 218.7 216.8 43.8 260.6 19 {19,18,20,23,24,25,69,68}
56 51 145.9 65 83 158.4 145.9 82.2 228.1 51 {51,52,58,60,59,56,65}
63 51 124.4 65 83 158.4 124.4 45.3 169.7 51 {51,52,58,60,59,63,65}
64 51 150.8 67 83 110.1 110.1 61.4 171.5 83 {83,81,80,71,66,67,64}
Tabela 3.2: Tabela que representa a solução para o problema da entrega especial a dois pontos pertencentes a
regiões de abastecimento diferentes após a introdução de algumas condições de acordo com a
especificidade do problema inicial deste trabalho. Na penúltima coluna da direita está indicada a
região de abastecimento que deve proceder ao mesmo e na coluna da direita está indicado o trajecto a
seguir para proceder à entrega.
3.8 Conclusões
Embora não o tenhamos mencionado, tentámos resolver todo o problema de uma só
vez . Na verdade no início utilizámos um outro conceito que, de acordo com a natureza do
problema nos parecia ser o mais adequado. O conceito das SST - Árvore de Suporte de custo
CMC, Árvores e as Regiões de Abastecimento
mínimo - do qual falaremos no Capítulo IV, parecia-nos o mais acertado já que a distância
entre cada loja seria a menor. Mas rapidamente obtemos os primeiros resultados
desconcertantes. Como exemplo, vamos falar da loja situada em Beja, 17x :
Apesar de se aplicar o mesmo princípio em relação à existência de quatro armazéns,
inicialmente utilizámos o conceito das SST e com os valores obtidos, o vértice 17x pertenceria
a 9R . Para abastecer a loja de Beja desde o armazém da Guia, 9x , seria necessário percorrer
136,4 Km, até aqui tudo bem mas comparando esta distãncia com a distância entre Beja e o
armazém de Évora, verificaríamos que esta é inferior em 56,3 Km. Com este e outros
resultados semelhantes foi necessário encontrar outra solução.
O Algorítmo do Caminho Mais Curto garante-nos que a distância entre dois quaisquer
vértices de um grafo é a menor. Apesar de não resolver o problema dos trajectos de entrega, o
CMC juntamente com o algoritmo 3.3 garante, que um vértice pertencente a uma
determinada região de abastecimento está mais perto do armazém pertencente a essa região,
do que de qualquer outro armazém considerado. Desta forma garantimos que o espaço a
percorrer, será o menor no caso da existência de 4 regiões de abastecimento. Possivelmente
existirão outras soluções, provavelmente mais vantajosas mas a sua aplicação passaria pela
alteração da estrutura do problema.
SST, e os Trajectos de Entrega
SST, e os Trajectos de Entrega
4.1 Árvores de Suporte
Como sabemos uma empresa que faça a entrega de produtos não o faz apenas em
situações pontuais, a maioria das suas entregas é periódica ou realiza-se várias vezes por mês
ou até por semana, pelo que será do seu interesse possuir rotas de distribuição de modo que
um qualquer veículo seu possa fazer mais do que uma ou duas entregas por dia, caso contrário
não será muito produtivo. Olhando atentamente para este caso fará todo o sentido pensar que
as distâncias entre os pontos de entrega sejam as menores de modo a que a distância total
percorrida seja pequena e o número de entregas seja elevado.
Para determinar essas rotas vamos utilizar o algoritmo da Árvore de Suporte de custo
mínimo mas antes é necessário saber o que é uma árvore de suporte.
Definição 4.1: Seja ( )AXG ,= um grafo não orientado tal que nX = ,
designamos por Árvore de Suporte de G o grafo parcial de G tal que pG ,
está nas condições do teorema 3.1.
As árvores representadas nas figuras 3.1, 3.2, 3.3 e 3.4 são exemplos de árvores de
suporte do grafo GI, na verdade quanto maior for o número de arestas de um grafo maior será
o seu número de árvores de suporte. Consideremos a região de abastecimento da Guia (R9)
presente na figura 4.1:
SST, e os Trajectos de Entrega
Será muito fácil cálcular todas as árvores de suporte do grafo representado na figura
4.1, como não poderemos ter circuitos e também não poderemos ter vértices isolados bastará
considerar o único circuito existente, retirando uma aresta e obtendo-se uma das seis árvores
de suporte existentes. Procedendo do mesmo modo, isto é, repondo a aresta retirada e
retirando outra obteremos outra árvore de suporte, este processo está representado na figura
4.2 onde se encontram todas as Árvores de Suporte do grafo da figura 4.1 .
Figura 4.1: Grafo representativo da Região de Abastecimento da Guia, R9 calculada no capítulo III, sem as
condições de especificidade de cada vértice impostas também no capítulo III.
Figura 4.2: Árvores de Suporte possíveis para o grafo da figura 4.1.
SST, e os Trajectos de Entrega
Fácilmente veríficamos que o número de árvores de suporte de um qualquer grafo
depende do número de arestas que o mesmo possui estando assim também relacionado com a
existência de circuitos. Surge-nos um problema se em estudo estiver um grafo com muitas
arestas, utilizando o procedimento acima mencionado demorariamos muitas horas apenas para
calcular as árvores de suporte e de seguida teriamos ainda de encontrar a árvore de custo
mínimo, pelo que este não será o melhor caminho. O número total de árvores de suporte pode
ser fácilmente calculado através do seguinte resultado:
Teorema 4.1: Seja G um grafo conexo com matriz de adjacência A e matriz dos
graus D, então o número de árvores de suporte de G é igual ao valor de
qualquer co-factor da matriz D-A.
Demonstração:
Supunhamos que G tem n vértices ( )nxxx ,..., 21 e k arestas ( )kaa ,...1 . Como G é
conexo, sabemos que k é no minimo 1−n .
Seja B a matriz de incidência de G, como cada aresta de G é incidente com
exactamente 2 vértices de G cada coluna de B tem 2 s'1 e 2−n zeros.
Seja M a matrix kn × que resulta da alteração na matriz B, do primeiro 1 em
cada coluna para 1− . Estamos a atribuir orientação a cada aresta.
SST, e os Trajectos de Entrega
Queremos provar que :
A-DMMT
=
as entradas da matriz D-A são dadas por :
( )
( )
( )∉∧≠
∈∧≠−
=
Ax
Ax
jixd
j
j
i
,xjise0
,xjise1
se
i
i
quanto a T
MM , as regras da multiplicação de matrizes dizem-nos que:
[ ] [ ] [ ] [ ]( ) [ ] [ ] [ ]( )jkjjkiiiji ,
T
,2
T
,1
T
,2,1,,
T
M,...,M,MM,...,M,MMM ×=
[ ] [ ] [ ]( ) [ ] [ ] [ ]( )kjjjkiii ,2,1,,2,1, M,...,M,MM,...,M,M ×=
[ ] [ ]
=
=
k
r
rjri
1
,, MM
Se i=j então para cada entrada da linha 1 diferente de zero adicionamos o valor
1, obtendo como resultado dessa soma o grau de cada vértice, ( )ixd .
Se ( ) Axxji ji ∉∧≠ , as entradas quer nas colunas quer nas linhas são nulas
pelo que o valor resultante é 0.
SST, e os Trajectos de Entrega
Se ( ) Axxji ji ∈∧≠ , a única coluna cujas linhas i e j dão diferentes de zero é a
coluna correspondente à aresta ( )ji xx , .
Provámos então que A-DMMT
= .
Seja H um subgrafo de G com n vértices e n-1 arestas. Seja p um inteiro
qualquer entre 1 e n. M’ uma submatriz de M construida retirando a linha
correspondente ao valor de p e a coluna correspondente às arestas de p em H.
Se H for uma árvore então ( ) 1M'det = caso contrário ( ) 0M'det = .
Supunhamos que H não é uma árvore, ao escolher um vértice, 1u , na
“periferia” de H que não seja pv e digamos que 1a é a aresta de H que incide
em 1u . Consideremos agora 1uH − e escolhemos um outro vértice 2u que se
encontre na “periferia” de 1uH − no qual incide 2a . Se procedermos desta
forma até restar o vértice pv criamos uma nova matriz M* fazendo cada linha
i de M* a linha de M’ que corresponde ao vértice iu . Encontramos uma matriz
triangular inferior cujo determinante terá o valo 1 ou –1, provámos então que:
( ) ( )M'det1*Mdet ==
SST, e os Trajectos de Entrega
Assim podemos investigar os co-factores de T
MMA-D = . Como a
soma das linhas e das colunas de T
MM são zero os co-factores têm o mesmo
valor, bastará olhar para um qualquer exemplo:
Se 11 =∧= ji então estamos a retirar a 1º linha da matriz ( )AD − ou de
T
MM , o co-factor de ( )AD − é dado por:
( )( )( ) ( )( ) ( )T
11
T
MMdet1|1MMdet1|1A-Ddet ==
Aplicando a fórmula de Cauchy-Binet que diz que o determinante acima
descrito é a soma dos determinantes de ( ) ( )11 −×− nn submatrizes de
1M obtemos o valor total de árvores de suporte uma vez que provámos
anteriormente que se a submatriz corresponde a uma árvore de suporte de G
então seu determinante é 1.
Vamos utilizar este resultado para calcular o número de árvores de suporte do grafo
presente na figura 4.1. Para o poder fazer é necessário calcular a matriz de incidência da
região de abastecimento da Guia e retirar de seguida uma das suas linhas. Vejamos:
SST, e os Trajectos de Entrega
=
0110000000000
0001000000000
0011100000000
0000110000000
0000011000000
0000001100000
1100000110000
1000000000000
0000000011000
0000000001100
0000000000110
0000000000011
0000000000001
15
13
12
11
10
9
8
7
6
5
4
3
1
M
aaaaaaaa 13121110987654321 aaaaa
retirando por exemplo a última linha, vamos obter a seguinte matriz 0M
=
0
0
0
0
0
1
1
0
0
0
0
0
001000000000
011100000000
000110000000
000011000000
000001100000
100000110000
000000000000
000000011100
000000001100
000000000110
000000000011
000000000001
M0
SST, e os Trajectos de Entrega
aplicando o teorema 4.1 temos:
600 =T
BB
como já tinhamos calculado anteriormente.
4.2 Algoritmo de Prim
Consideremos a região de abastecimento da Maia ( )83R que se encontra na figura 4.3.
Se quisermos calcular trajectos para proceder à distribuição onde as distâncias entre os pontos
de entrega são mínimas, parecerá razoável calcular todas as árvores de suporte e depois saber
qual delas é a menor, uma vez que nos interessa que as distâncias sejam as menores.
Aplicando o teorema 4.1, sabemos que o número total de árvores de suporte é bastante
elevado logo de acordo com o processo descrito teríamos uma árdua tarefa. Terá que existir
outra solução.
Figura 4.3: Região de Abastecimento da Maia, R83.
SST, e os Trajectos de Entrega
Será que é possível calcular uma árvore de suporte em que as distâncias entre os
vértices são mínimas? Sem dúvida, primeiro definimos a raiz da nossa árvore, tomando como
exemplo o grafo presente na figura 4.3. Interessa-nos obviamente que a nossa raiz seja o
vértice 83.
Partindo do vértice 83 vamos colorir o grafo à medida que vamos avançando: o
conjunto de correspondência do vértice 83 é ( ) { }88,84,82,8183 =Γ , existindo desta forma 4
arestas ( ) ( ) ( ) ( )83,88e83,84,83,82,81,83 com os respectivos pesos associados 13.6 Km, 11.5
Km, 22.4 Km e 30.7 Km. Vamos escolher a aresta de menor valor e colori-la, de seguida
calculamos o conjunto correspondência do vértice final da aresta escolhida, caso existam
vértices em comum aos conjuntos de correspondência já calculados teremos que encontrar o
seu mínimo, procederíamos desta forma até não existir nenhum vértice isolado.
Tal como no capítulo III existem algoritmos que tornam muito mais fácil a nossa
tarefa. Um desses algoritmos é o Algoritmo de Prim que determina a árvore de suporte de
custo mínimo (SST).
Algoritmo 4.1: Algoritmo de Prim.
Seja ( )AXG ,= um grafo ponderado e ijc o custo associado a cada
aresta ( )ji, . A SST de G é obtida através do seguinte procedimento:
Passo 1: Definimos rx como a raiz da nossa árvore pretendida T, tal que
{ } ∅=∧= rrr AxT .
SST, e os Trajectos de Entrega
Passo 2: Para todo o rj Tx ∈ encontrar um vértice rj T∈α tal que:
( ) ( )[ ] jji
Tx
jj xxcminxc
rj
βα ==
∈
,,
e etiquetemos jx como [ ]jj βα , . Se nenhum vértice jα existir, i.é.
se ( ) ∅=∩Γ rj Tx designamos jx como ( )∞,0 .
Passo 3: Escolher o vértice *
j
x tal que [ ]j
Txj
rj
min ββ
∉
=* .
Actualize { } ( ){ }*** ,, jjrrjrr xAAxTT α∪=∪= . Se nTr =
pare, as arestas rA formam a SST, caso contrário vá para o passo 4.
Passo 4: Para todo o rj Tx ∉ e ( )*
jj xx Γ actualize as etiquetas da
seguinte forma:
Se ( )jjj xxc ,*>β faça ( ) ** ,, jjjjj xxxc == αβ e volte a 3.
Se ( )jjj xxc ,*≤β vá para 3.
Para uma melhor compreensão deste algoritmo vamos realizar o seguinte exercício.
Exercício 4.1:
Calculemos a SST associada a 83R (Região de Abastecimento da Maia)
recorrendo ao algoritmo 4.1, onde a raiz da árvore pretendida será o vértice 83
que representa o armazém da Maia.
SST, e os Trajectos de Entrega
Recordemos que:
{ },90,89,88,87,86,85,84,83,82,81,80,79,78,77,76,75,74,73,72,71,70,68,67,66,6583 =R
Passo 1: Seja 83=rx , então { } ∅==∧== 8383 83 AATT rr
Passo 2: ( ) { }88,84,82,8183 =Γ pelo que
[ ]6,13;8381=
[ ]5,11;8382 =
[ ]4,22;8384 =
[ ]7,30;8388 =
Passo 3: O menor jβ é 5,1182 =β , como 8382 =α adicionamos a ligação
( ) ( )82,83, =jj xα . De seguida actualizamos o conjunto
{ } { } { }82,83828383 =∪=T e ( ){ }82,8383 =A .
Como 8383 252 RT =≠= seguimos para o passo 4:
Passo 4: ( ) 83818281 T∉∧Γ∈ logo
81: ( ) ( ) [ ]7,11;82817,1181,826,1381 =−=>= etiquetaasealteracβ ,
como ( )8284 Γ∉88e as suas etiquetas mantêm-se assim como todas as
outras etiquetas são ( )∞;0 , temos então:
[ ]7,11;8281=
[ ]4,22;8384 =
[ ]7,30;8388 = , volta-se a 3
SST, e os Trajectos de Entrega
Passo 3: O menor jβ é 7,1181 =β , como 8281 =α adicionamos a ligação
( )81,82 . De seguida actualizamos o conjunto
: { } { } { }81,82,838182,8383 =∪=T e ( ) ( ){ }81,82,82,8383 =A .
Como 8383 253 RT =≠= seguimos para o passo 4:
Passo 4: : ( ) 838079818079 Tee ∉∧Γ∈ logo
79: ( ) ( ) [ ]33;81793379,8179 =−=>∞= etiquetaasealteracβ ,
80: ( ) ( ) [ ]8,1;81808,180,8180 =−=>∞= etiquetaasealteracβ ,
como ( )8184 Γ∉88e as suas etiquetas mantêm-se assim como todas as
outras etiquetas são ( )∞;0 , temos então:
[ ]33;8179 =
[ ]8,1;8180 =
[ ]4,22;8384 =
[ ]7,30;8388 = , volta-se a 3
Passo 3: o menor jβ é 8,180 =β , como 8180 =α adicionamos a ligação
( )80,81 . De seguida actualizamos o conjunto:
{ } { } { }80,81,82,838081,82,8383 =∪=T e ( ) ( ) ( ){ }80,81,81,82,82,8383 =A .
Como 8383 254 RT =≠= seguimos para o passo 4:
Passo 4: : ( ) 83718071 T∉∧Γ∈ logo
SST, e os Trajectos de Entrega
71: ( ) ( ) [ ]1,53;80711,5371,8071 =−=>∞= etiquetaasealteracβ
como ( )8184,79 Γ∉88e as suas etiquetas mantêm-se assim como todas
as outras etiquetas são ( )∞;0 , temos então:
[ ]33;8179 =
[ ]1,53;8071 =
[ ]4,22;8384 =
[ ]7,30;8388 = , volta-se a 3
Passo 3: : o menor jβ é 4,2284 =β , como 8384 =α adicionamos a ligação
( )84,83 . De seguida actualizamos o conjunto:
{ } { } { }84,80,81,82,838480,81,82,8383 =∪=T e
( ) ( ) ( ) ( ){ }84,83,80,81,81,82,82,8383 =A .
Como 8383 255 RT =≠= seguimos para o passo 4:
Para obter a SST associada a 83R teríamos que continuar este processo até
8383 2525 RT === , obtendo-se como resultado final:
{ }68,65,75,90,74,73,76,67,66,72,70,71,77,78,79,89,87,88,86,85,84,80,81,82,8383 =T
e
( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ){ }∪= 89,87,87,88,88,83,86,85,85,84,84,83,80,81,81,82,82,8383A
( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ){ }∪∪ 76,77,67,66,66,70,72,71,70,71,71,80,77,78,78,79,81,79
( ) ( ) ( ) ( ) ( ) ( ){ }68,90,65,66,75,77,90,66,74,73,76,73∪
SST, e os Trajectos de Entrega
Figura 4.4: SST´s das Regiões de Abastecimento consideradas..
SST, e os Trajectos de Entrega
Calculámos a SST apenas para a região de abastecimento da Maia, 83R aplicando o
mesmo algoritmo mas agora às regiões de abastecimento de Torres Vedras, Guia e Évora
respectivamente 51R , 9R e 19R obteremos, juntamente com a SST calculada no exercício
anterior, as quatro SST pretendidas para poder determinar as rotas de distribuição, que estão
representadas na figura 4.4 .
4.3 Zonas de entrega
Calculadas que estão as SST e utilizando as condições impostas ao grafo GI no
Capítulo III podemos tentar encontrar os trajectos de entrega pretendidos. Utilizando como
pontos de referencia os vários ramos das SST já calculadas, uma vez que as mesmas nos dão
trajectos em que as distâncias entre os vários vértices são as menores, obtemos um primeiro
esboço do pretendido. Este primeiro passo será o mais fácil de realizar uma vez que a
construção da própria SST facilita o nosso trabalho, será no entanto necessário recorrer às
árvores calculadas pelo CMC, para decidir casos onde a dúvida persista. Obtém-se assim os
seguintes subgrafos do grafo GI que identificaremos por kZ (Zona k):
Em relação à Região de Abastecimento de Torres Vedras, 51R :
{ },38,37,36,35,34,33,321 =Z
{ }50,49,48,47,46,432 =Z
{ }58,52,51,45,44,42,413 =Z
{ }57,56,55,54,53,264 =Z
SST, e os Trajectos de Entrega
{ }64,63,62,61,60,595 =Z
Estes subgrafos foram obtidos consultando apenas a SST resultante de 51R , mas
surgem alguns problemas, por exemplo em 3Z temos um vértice pendente que não será muito
vantajoso em termos de distribuição, temos também o caso do vértice 60 que pertence a 5P
mas também poderia pertencer a 4Z , assim como o vértice 43 que poderia pertencer a 3P em
vez de pertencer a 2Z . No entanto, não podemos fazer estas alterações sem uma justificação
plausível. Vejamos a árvore resultante da aplicação do CMC ao grafo GI presente na figura
3.1: No caso do vértice 60 fará todo o sentido colocá-lo em 4Z já que o caminho mais curto
para o vértice 54, passa por 60 não havendo assim perca de tempo. Sendo esta alteração
apoiada pelo facto de podermos colocar o vértice 58 em 5Z já que o caminho mais curto para
61 passa por 58 e pelo facto da SST indicar que para ir para 59 o melhor trajecto será passar
por 61 e 62. Falta apenas resolver o caso do vértice 43, optámos por colocá-lo em 1Z porque
os vértices 43 e 44 são adjacentes e porque o ( ) ( )44,4543,45 cc = e porque 1Z tinha apenas 4
locais de entrega. Assim obtemos as seguintes zonas de entrega definitivas para 51R :
{ },38,37,36,35,34,33,321 =Z
{ }50,49,48,47,462 =Z
{ }52,51,45,44,43,42,413 =Z
{ }60,57,56,55,54,53,264 =Z
{ }64,63,62,61,59,585 =Z
SST, e os Trajectos de Entrega
Utilizando os mesmos critérios vamos obter os seguintes subgrafos para as outras
regiões de abastecimento:
Região de Abastecimento da Guia, 9R :
{ }15,13,12,11,10,9,8,76 =Z
{ }6,5,4,3,17 =Z
Região de Abastecimento da Maia, 83R :
{ }90,70,68,67,66,658 =Z
{ }78,77,76,75,74,739 =Z
{ }89,88,87,86.85.84,8310 =Z
{ }79,82,81,80,72,7111 =Z
Região de Abastecimento de Évora, 19R
{ }69,25,24,23,21,2012 =Z
{ }40,39,30,29,28,27,19,1813 =Z
{ }31,22,17,16,14,214 =Z
SST, e os Trajectos de Entrega
Figura4.5: 'kZ s resultantes das restrições acima anteriormente consideradas.
SST, e os Trajectos de Entrega
4.4 Trajectos de entrega
Encontrados os subgrafos, figura 4.5, respeitantes a cada veículo falta determinar qual
a morfologia do trajecto isto é, qual a ordem de entrega, se será mais vantajoso percorrer um
determinado circuito ou se será preferível voltar pelo mesmo caminho para proceder à entrega
seguinte. Para a maioria dos subgrafos kZ será muito fácil determinar a morfologia do
trajecto, kP porque o grafo GI tem poucas arestas e consequentemente poucos circuitos, logo
não existirão muitos trajectos alternativos. Nesta parte da análise é importantíssimo ter em
conta as restrições ii e v.
Consideremos 6Z presente na figura 4.6, vamos assumir que um motorista não leva o
seu veículo para casa pelo que no fim de cada distribuição tem que regressar ao seu armazém
para deixar o veículo. Em relação ao exemplo considerado temos duas situações possíveis:
Figura 4.6: Zona de Entrega 6Z .
SST, e os Trajectos de Entrega
a) Procede à entrega de acordo com a sequência
{ } ( ) Kml aa 7.3369,8,7,8,9,10,11,12,13,12,11,10,9 =∧= µµ .
b) Procede à entrega de acordo com a sequência
{ } ( ) Kmul bb 1.3169,8,7,8,15,12,13,12,11,10,9 =∧=µ .
De acordo com o critério por nós considerado durante este trabalho vamos optar pela
menor sequência, neste caso a sequência b) porque a distância a percorrer é menor do que na
opção a). Neste caso compensa percorrer um circuito mas poderão existir casos em que isso
não seja vantajoso ou mesmo em que o circuito não existe. Vamos agora considerar o
subgrafo 9Z presente na figura 4.7 como exemplo:
Neste caso o vértice que representa o armazém da região a que pertence 9Z , não pertence a
9Z sendo assim necessário determinar qual o vértice pertencente a 9Z que está mais próximo
do “armazém” para de seguida fazer uma análise semelhante à análise realizada em 6Z .
Consultando a árvore resultante da aplicação do CMC e considerando o vértice 83 como a sua
Figura 4.7: Zona de Entrega 9Z .
SST, e os Trajectos de Entrega
raiz, facilmente verificamos que o vértice 78 é o mais próximo do vértice 83. Agora bastará
considerar os caminhos possíveis e encontrar o menor deles.
a) Procede à entrega de acordo com a sequência { }78,77,75,74,73,76,77,78=aµ , que
é igual à sequência { }78,77,76,73,74,75,77,78 , com Kma 2,364=µ
b) Procede à entrega de acordo com a sequência { }78,77,75,74,75,77,76,77,78=bµ ,
que é igual à sequência { }78,77,76,77,75,74,75,77,78 , com Kmb 4,520=µ .
Obviamente que neste caso vamos optar pelo caminho aµ .
Na tabela 4.1 encontram-se os trajectos de entrega para a Região de Abastecimento da
Maia. Procedendo de modo idêntico para os restantes subgrafos kP vamos obter os caminhos
a percorrer pelas viaturas que irão proceder à entrega da mercadoria nos pontos de entrega
considerados. Os resultados obtidos estão presentes nas tabelas 4.1, 4.2, 4.3 e 4.4.
Zk
Caminho até ao
subgrafo Zk.
µµµµ Caminhos possíveis
l(µµµµ)
Km
µµµµ
ideal
a {9,10,11,12,13,12,11,10,9,8,7,8,9} 336.7
b {9,10,11,12,13,12,15,8,7,8,9} 316.16
c {9,8,7,8,15,12,13,12,11,10,9} 316.1
b
ou
c
7 {9,8,6} a {9,8,6,5,4,3,1,2,3,4,5,6,8,9} 195.6 a
Tabela 4.1: Trajectos de entrega referentes à Região de Abastecimento da Guia, R9.
SST, e os Trajectos de Entrega
Zk
Caminho até ao
subgrafo Zk.
µµµµ Caminhos possíveis
l(µµµµ)
Km
µµµµ
ideal
a
{83,81,80,71,70,66,67,66,65,68,90,66,70,71}∪
∪{80,81,83}
570.1
b
{83,81,80,71,70,66,90,68,65,66,67,66,70,71}∪
∪{80,81,83}
570.1
c
{83,81,80,71,70,66,67,66,65,68,90,66,71,80}∪
∪{81,83}
564.5
d
{83,81,80,71,66,90,68,65,66,67,66,70,71,80}∪
∪{81,83}
564.5
e
{83,81,80,71,70,66,67,66,65,66,90,68,90,66}∪
∪{71,80,81,83}
600.4
f
{83,81,80,71,66,90,68,90,66,65,66,67,66,70}∪
∪{71,80,81,83}
600.4
g
{83,81,80,71,70,66,67,66,65,66,90,68,90,66}∪
∪{70,71,80,81,83}
606.0
h
{83,81,80,71,70,66,90,68,90,66,65,66,67,66}∪
∪{70,71,80,81,83}
606.0
i
{83,81,80,71,70,66,67,66,65,90,68,90,66,70}∪
∪{71,80,81,83}
606.2
j
{83,81,80,71,70,66,90,68,90,65,66,67,66,70}∪
∪{71,80,81,83}
606.2
k
{83,81,80,71,70,66,67,66,65,90,68,90,66,70}∪
∪{80,81,83}
600.6
8 {83,81,80,71,70}
l
{83,81,80,70,66,90,68,90,65,66,67,66,70,71}∪
∪{80,81,83}
600.6
c
ou
d
a {83,81,79,78,77,76,73,74,75,77,78,79,81,83} 513.4
b b{83,81,79,78,77,75,74,73,76,77,78,79,81,83} 513.4
c {83,81,79,78,77,76,77,75,74,75,77,78,79,81,83} 669.6
9 {83,81,79,78}
d {83,81,79,78,77,75,74,75,77,76,77,78,79,81,83} 669.6
a
ou
b
a {83,84,85,86,87,89,88,83} 196.9
b {83,88,89,87,86,85,84,83} 196.0
c {83,84,85,86,87,88,89,88,83} 221.6
d {83,88,89,88,87,86,85,84,83} 221.6
e {83,88,87,89,87,86,85,84,83} 209.6
10
f {83,84,85,86,87,89,87,88,83} 209.6
a
ou
b
a {83,82,81,79,81,80,71,72,71,80,81,82,83} 241.0
b {83,82,81,79,81,80,71,72,71,80,81,83} 231.411 {83,82}
c {86,81,80,71,72,71,80,81,79,81,82,83} 231.4
B
ou
c
Tabela 4.2: Trajectos de entrega referentes à Região de Abastecimento da Maia, R83.
SST, e os Trajectos de Entrega
Zk
Caminho até ao
subgrafo Pk.
µ Caminhos possíveis
l(µ)
Km
µ
ideal
a {19,18,20,21,20,23,24,25,69,25,24,23,20,18,19} 486.0
12 {19,18,20}
b {19,18,20,23,24,25,69,25,24,23,20,21,20,18,19} 486.0
a
ou
b
a {19,18,28,27,28,30,39,40,39,30,28,18,19} 261.4
b {19,18,28,30,39,40,39,30,28,27,28,18,19} 261.4
c {19,18,28,27,28,29,30,39,40,39,30,28,18,19} 259.3
d {19,18,28,30,39,40,39,30,29,28,27,28,18,19} 259.3
13
e {19,18,28,27,28,29,30,39,40,39,30,29,28,18,19} 257.8
e
a {19,18,17,2,17,16,14,16,22,16,17,18,19} 516.8
b {19,18,17,2,17,16,14,16,22,31,29,28,18,18} 453.2{19,18,17}
c {19,18,17,16,22,16,14,16,17,2,17,18,19} 516.8
d
{19,18,28,29,31,22,16,14,16,17,2,17,16,22}∪
∪{31,29,28,18,19}
575.8
14
{19,18,28,29,31}
e {19,18,28,29,31,22,16,14,16,17,2,17,18,19} 453.2
b
ou
e
Tabela 4.3: Trajectos de entrega referentes à Região de Abastecimento de Évora, R19.
Zk
Caminho até ao
subgrafo Pk.
µ Caminhos possíveis
l(µ)
Km
µ
ideal
1 {51,52,45,43,36} a
{51,52,45,43,36,35,34,37,38,37,34,32,33,32}∪
∪{34,35,3643,45,52,51}
237.8 a
a {51,52,45,50,49,48,46,47,46,48,49,50,45,52,51} 201.8
b {51,52,45,50,49,48,46,47,46,50,45,52,51} 169.92
{51,52,45,50}
c {51,52,45,50,46,47,46,48,49,50,45,52,51} 169.9
b
ou
c
a {51,52,45,43,44,42,41,42,44,45,52,51} 166.4
b {51,52,45,44,42,41,42,44,43,45,52,51} 166.4
c {51,52,45,43,45,44,42,41,42,44,45,52,51} 174.4
3
d {51,52,45,43,44,42,41,42,44,43,45,52,51} 191.4
a
ou
b
4 {51,52,58,60} a
{51,52,58,60,54,53,54,57,55,26,55,56,55,57}∪
∪{54,60,58,52,51}
368.2 a
a {51,52,58,61,62,59,64,59,63,59,62,61,58,52,51} 386.6
b {51,52,58,61,62,59,64,59,63,59,60,58,52,51} 362.15 {51,52,58}
c {51,52,58,60,59,63,59,64,59,62,61,58,52,51} 362.1
b
ou
c
Tabela 4.4: Trajectos de entrega referentes à Região de Abastecimento de Torres Vedras, R51.
SST, e os Trajectos de Entrega
4.5 Conclusões
Ao analisar o GI, figura 1.3, verificamos que o grafo considerado não é muito
denso, a maioria dos vértices possui 3 ou 4 arestas e as árvores resultantes da aplicação
do CMC ao GI, possuem poucas ramificações pelo que a solução apresenta-se como
evidente, mas perante um grafo com o dobro ou o triplo das arestas seria muito
complicado realizar uma distribuição eficaz e sem a repetição desnecessária de alguns
percursos. A solução para este problema passa pela utilização da SST.
A estrutura de uma SST é muito diferente da estrutura de uma árvore resultante
da aplicação do CMC. Ao utilizar uma SST como base de decisão, garante-se que a
distância entre os vértices de um determinado “ramo” da árvore é a menor,
eliminando-se a possibilidade de repetir percursos quando o mesmo se apresenta
desvantajoso. A utilização do CMC permite determinar regiões para as quais, o custo
entre o vértice inicial e os diversos vértices finais é o menor.
Conclusão
Conclusão
Conclusão
No começo deste trabalho, pensou-se que a aplicação do conceito das SST bastaria
para encontrar algumas respostas, na verdade e como vimos tal não aconteceu. As
características particulares deste problema obrigaram, à sua divisão em duas partes.
A primeira parte, relacionada com uma perspectiva global, onde era necessário
encontrar uma solução que permitisse a co-existência dos quatros pontos de distribuição. A
utilização do CMC em conjunto com as especificidades do problema, determinou a criação de
quatro regiões de abastecimento distintas, apresentando também uma solução para casos
particulares.
Na segunda parte, relacionada com uma perspectiva regional, optou-se pela aplicação
das SST, que e de acordo com as suas características se revelou como o mais correcto. Como
na primeira parte as soluções não se basearam única e exclusivamente num único conceito,
na verdade a natureza do problema obrigou a uma conjugação para se atingir resultados
fiáveis.
As árvores, tradicionalmente aplicadas para a construção de gasodutos e de
estradas, revelaram-se como um instrumento muito útil para a resolução deste
problema. De relaçar também a utilização de dois conceitos diferentes (caminhos e
árvores) para a resolução de um problema.
Bibliografia
Bibliografia
Bibliografia
Harris, J. M., Hirst, J.L. e Mossingoff, M. J. (2000), Combinatorics and Graph Theory ,
Springer.
Minieka, E. (1978), Optimization Algorithms for Networks and Graphs.
Christofidis (1975), Graphs an Algoritmic Aproach, Wiley.
Goldbarg, M. C. e Luna, H. P. L. (2000), Optimização Combinatória e Programação Linear,
Editora Campus.
Hillier, F. S. Lieberman, G. J. (1995), Introduction to Operations Research, McGraw-Hill.
Suporte Informático
Aplicação Informática de Suporte
1. Objectivo:
Resultante da natureza dos algoritmos necessários a este trabalho, foi
necessário construir uma aplicação informática de suporte que efectuasse, de uma
forma rápida, os cálculos necessários e que a informação resultante, fosse de fácil
interpretação e análise.
2. Arquitectura e Linguagem:
A aplicação foi desenvolvida em Visual Basic (VB6) e em Visual Basic for
Aplications (VBA) da Microsoft. É uma aplicação Stand Alone, que poderá também
funcionar como uma aplicação do tipo Client - Server.
3. Descrição e Potencial:
A aplicação lê uma Matriz de Custos que esteja armazenada numa folha de
Excel 2000, armazenando-a numa variável global, mais precisamente, um array bi-
dimensional para que a mesma esteja disponível em toda a aplicação.
Ao criar esta aplicação, houve a preocupação de a tornar o mais versátil
possivel. Para além de resolver o caso particular que abordamos neste trabalho,
também permite a aplicação dos algoritmos de Dijkstra (Algoritmo 3.1) e Prim
Suporte Informático
(Algoritmo 4.1) para qualquer matriz de custo, que esteja de acordo com as definições
dos mesmos. Assim, é possivel determinar o Caminho Mais Curto entre quaisquer dois
vértices, a Árvore de Caminhos Mais Curtos e a Árvore de Custo Minimo. Permite
também, visualizar o grafo associado à Matriz de Custos em causa. Para isso bastará
que a informação em termos de disposição cartesiana seja introduzida no ficheiro de
Excel, sendo desta forma possível visualizar, por exemplo, o caminho mais curto
resultante da aplicação do algoritmo de Dijsktra.
Regressando ao caso particular, a aplicação desenvolvida determina as Regiões
de Abastecimento, de acordo com o ponto 3.6 do Capitulo III, permitindo também
determinar as Regiões de Abastecimento, utilizando o algoritmo de Prim. Esta opção
resulta de todo o percurso percorrido durante a elaboração deste trabalho, sendo
possível comparar os resultados obtidos pelos dois algoritmos. Para facilitar esta
comparação, é possível construir um gráfico tridimensional, o qual compara para cada
vértice, o custo associado a um determinado armazém, de acordo com o algoritmo
escolhido. Permite também, guardar as matrizes de custos associadas a cada região, de
forma que seja possível determinar as Zonas de Suporte de acordo com o Capitulo I.
graphtheorysftfc

Mais conteúdo relacionado

Mais procurados (7)

Princípios básicos da matemática do movimento - PDF
Princípios básicos da matemática do movimento - PDFPrincípios básicos da matemática do movimento - PDF
Princípios básicos da matemática do movimento - PDF
 
Tccfinal
TccfinalTccfinal
Tccfinal
 
Vibracoes
VibracoesVibracoes
Vibracoes
 
Árvores Espalhadas Mínimas
Árvores Espalhadas MínimasÁrvores Espalhadas Mínimas
Árvores Espalhadas Mínimas
 
Sequencias e-series
Sequencias e-seriesSequencias e-series
Sequencias e-series
 
Calculo do residuo
Calculo do residuoCalculo do residuo
Calculo do residuo
 
Aula flexao composta assimétricas
Aula flexao composta assimétricasAula flexao composta assimétricas
Aula flexao composta assimétricas
 

Destaque (6)

Graph Theory - Exercises - Chapter 2 - Part II
Graph Theory - Exercises - Chapter 2 - Part IIGraph Theory - Exercises - Chapter 2 - Part II
Graph Theory - Exercises - Chapter 2 - Part II
 
Cap1 grafos 2001
Cap1 grafos 2001Cap1 grafos 2001
Cap1 grafos 2001
 
Introdução à Teoria das Redes (estudo dos graphos)
Introdução à Teoria das Redes (estudo dos graphos)Introdução à Teoria das Redes (estudo dos graphos)
Introdução à Teoria das Redes (estudo dos graphos)
 
Introdução a Teoria dos Grafos
Introdução a Teoria dos GrafosIntrodução a Teoria dos Grafos
Introdução a Teoria dos Grafos
 
Introdução à Teoria dos Grafos
Introdução à Teoria dos GrafosIntrodução à Teoria dos Grafos
Introdução à Teoria dos Grafos
 
Teoria dos Grafos
Teoria dos GrafosTeoria dos Grafos
Teoria dos Grafos
 

Semelhante a graphtheorysftfc

Análise Estrutural III - José Carlos Sussekind.pdf
Análise Estrutural III - José Carlos Sussekind.pdfAnálise Estrutural III - José Carlos Sussekind.pdf
Análise Estrutural III - José Carlos Sussekind.pdf
Mário Rueda Jr
 
Süssekind curso de análise estrutural 3
Süssekind   curso de análise estrutural 3Süssekind   curso de análise estrutural 3
Süssekind curso de análise estrutural 3
Uniceuma
 
Livrocalcii
LivrocalciiLivrocalcii
Livrocalcii
cavip
 
Algebra linear 1
Algebra linear 1Algebra linear 1
Algebra linear 1
Yasmim Yang
 
Observatório da Cultura Digital - Conexões Científicas 2009: Análise de padr...
Observatório da Cultura Digital - Conexões Científicas 2009: Análise de padr...Observatório da Cultura Digital - Conexões Científicas 2009: Análise de padr...
Observatório da Cultura Digital - Conexões Científicas 2009: Análise de padr...
AcessaSP
 

Semelhante a graphtheorysftfc (20)

Paalga
PaalgaPaalga
Paalga
 
Espaços metricos
Espaços metricosEspaços metricos
Espaços metricos
 
Dissertação
DissertaçãoDissertação
Dissertação
 
Teoria dos grafos
Teoria dos grafosTeoria dos grafos
Teoria dos grafos
 
Introducao_a_Algebra_Linear.pdf
Introducao_a_Algebra_Linear.pdfIntroducao_a_Algebra_Linear.pdf
Introducao_a_Algebra_Linear.pdf
 
Aa booklet
Aa bookletAa booklet
Aa booklet
 
Análise Estrutural III - José Carlos Sussekind.pdf
Análise Estrutural III - José Carlos Sussekind.pdfAnálise Estrutural III - José Carlos Sussekind.pdf
Análise Estrutural III - José Carlos Sussekind.pdf
 
Curso de Analise estrutural
Curso de Analise estrutural Curso de Analise estrutural
Curso de Analise estrutural
 
Süssekind curso de análise estrutural 3
Süssekind   curso de análise estrutural 3Süssekind   curso de análise estrutural 3
Süssekind curso de análise estrutural 3
 
4 groebner danton4 dissertacao
4 groebner danton4 dissertacao4 groebner danton4 dissertacao
4 groebner danton4 dissertacao
 
Livrocalcii
LivrocalciiLivrocalcii
Livrocalcii
 
Apostila elementos de matemática aplicada
Apostila elementos de matemática aplicadaApostila elementos de matemática aplicada
Apostila elementos de matemática aplicada
 
Algebra kat
Algebra  katAlgebra  kat
Algebra kat
 
Equacoes_Diferenciais_Parciais.pdf
Equacoes_Diferenciais_Parciais.pdfEquacoes_Diferenciais_Parciais.pdf
Equacoes_Diferenciais_Parciais.pdf
 
Algebra linear operações com matrizes
Algebra linear operações com matrizesAlgebra linear operações com matrizes
Algebra linear operações com matrizes
 
Edp1 aulas-22-8-13
Edp1 aulas-22-8-13Edp1 aulas-22-8-13
Edp1 aulas-22-8-13
 
Apostila algebra de boole e mapas de karnaugh com exercicios resolvidos
Apostila algebra de boole e mapas de karnaugh com exercicios resolvidosApostila algebra de boole e mapas de karnaugh com exercicios resolvidos
Apostila algebra de boole e mapas de karnaugh com exercicios resolvidos
 
Algebra linear 1
Algebra linear 1Algebra linear 1
Algebra linear 1
 
Exercicios resolvidos quantica
Exercicios resolvidos   quanticaExercicios resolvidos   quantica
Exercicios resolvidos quantica
 
Observatório da Cultura Digital - Conexões Científicas 2009: Análise de padr...
Observatório da Cultura Digital - Conexões Científicas 2009: Análise de padr...Observatório da Cultura Digital - Conexões Científicas 2009: Análise de padr...
Observatório da Cultura Digital - Conexões Científicas 2009: Análise de padr...
 

graphtheorysftfc

  • 1. UNIVERSIDADE DE ÉVORA Licenciatura em Matemática Aplicada A Teoria de Grafos aplicada a um caso particular de Distribuição Trabalho de Fim de Curso realizado por: Sérgio Cláudio Fontes ÉVORA
  • 2. Prefácio Prefácio Este trabalho é o resultado do interesse particular por uma área que considero extremamente interessante e sem dúvida indispensável. Surgiu por acaso a hipótese de estudar uma situação que me pareceu relevante e que eu próprio desconhecia. Na verdade não sabia à partida que conceitos deveria utilizar. O problema que aqui me proponho estudar está directamente relacionado com a distribuição onde existem vários armazéns para proceder ao abastecimento. Assim procuro encontrar respostas para várias questões sobre as quais as empresas de distribuição ou qualquer outra empresa que possua uma frota de distribuição se questionam. Existirão outros conceitos, provavelmente mais indicados para resolver este problema que nada têm a ver com Teoria de Grafos, mas este era o desafio. Optei por introduzir os vários conceitos à medida que o problema se tornava mais específico, pelo que este trabalho relata o percurso por mim percorrido desde o início, existindo apenas uma omissão à qual farei referência no Capítulo III. Assim, apresento possíveis soluções para várias situações que da minha parte pareciam importantes em deterimento de outras. Foi minha preocupação na apresentação dos Algoritmos de Prim e de Dijsktra (CMC), cobrir todas as situações possiveis já que é sobre estes dois algoritmos que este trabalho se baseia. De realçar, que ao contrário do que eu esperava a conjugação destes dois algoritmos irá ser a chave para a resolução do problema.
  • 3. Índice Índice Capítulo I - Introdução -----------------------------------------------------------------------------4 1.1 O Aparecimento de uma Teoria------------------------------------------------5 O Problema das Pontes de nisbergoK .. ----------------------------5 1.2 Uma Primeira Definição --------------------------------------------------------7 Definição de Grafo -----------------------------------------------------7 1.3 A construção de um Grafo ------------------------------------------------------7 Capítulo II – Alguns conceitos sobre Teoria de Grafos ------------------------------------- 12 2.1 Grafos orientados e não orientados------------------------------------------ 13 2.2 A Função correspondência---------------------------------------------------- 14 Definição de correspondência -------------------------------------- 14 Propriedades da Função Correspondência------------------------ 15 2.3 Outra definição de Grafo e o Grau de um Vértice------------------------- 17 Definição de Grafo --------------------------------------------------- 17 Definição de Grau de um vértice----------------------------------- 18 2.4 A Representação Matricial---------------------------------------------------- 19 Matriz de Adjacência ------------------------------------------------ 19 Matriz de Incidência ------------------------------------------------- 20 2.5 Caminhos------------------------------------------------------------------------ 21 Definição de caminho------------------------------------------------ 22 2.6 Peso, cumprimento ou custo-------------------------------------------------- 22
  • 4. Índice Definição de custo de um caminho -------------------------------- 24 2.7 Matriz de Custos --------------------------------------------------------------- 24 Matriz de custos ------------------------------------------------------ 24 2.8 Outros Conceitos --------------------------------------------------------------- 25 Definição de Grafo Conexo----------------------------------------- 25 Definição de Caminho Elementar---------------------------------- 25 Definição de Circuito ------------------------------------------------ 25 Definição de Matriz dos Graus ------------------------------------- 26 Capítulo III - CMC, Árvores e as Zonas de Abastecimento -------------------------------- 27 3.1 Porquê o Algoritmo do Caminho mais Curto (CMC)--------------------- 28 3.2 Algoritmo de Dijkstra --------------------------------------------------------- 28 Algoritmo de Dijkstra ou CMC------------------------------------ 29 Algoritmo para o caminho resultante do CMC------------------- 30 3.3 Árvores -------------------------------------------------------------------------- 38 Teorema 3.1 ----------------------------------------------------------- 38 Definição de Árvore não Orientada------------------------------- 40 Teorema 3.2 ----------------------------------------------------------- 40 3.4 Subgrafos e Grafos Parciais -------------------------------------------------- 42 Definição de Grafo Parcial------------------------------------------ 42 Definição de Subgrafo----------------------------------------------- 42 3.5 Raiz de uma Árvore e Árvores Orientadas --------------------------------- 43 Definição de Raiz de um vértice ----------------------------------- 43
  • 5. Índice Definição de Árvore Orientada------------------------------------- 43 3.6 Regiões de Abastecimento---------------------------------------------------- 43 Algoritmo para o cálculo da zonas de abastecimento ----------- 44 3.7 O primeiro caso particular ---------------------------------------------------- 47 Algoritmo para a resolução do primeiro caso particular-------- 49 3.8 Conclusões ---------------------------------------------------------------------- 52 Capítulo IV - SST e os Trajectos de Entrega -------------------------------------------------- 54 4.1 Árvores de Suporte------------------------------------------------------------- 55 Definição de Árvores de Suporte----------------------------------- 55 Teorema para o cálculo do número de árvores de suporte ----- 57 4.2 Algoritmo de Prim (SST)------------------------------------------------------ 62 Algoritmo de Prim ou SST ------------------------------------------ 63 4.3 Zonas de Entrega --------------------------------------------------------------- 69 4.4 Trajectos de Entrega ----------------------------------------------------------- 73 4.5 Conclusões ---------------------------------------------------------------------- 78 Capítulo V – Conclusão-------------------------------------------------------------------------- 79 Conclusão---------------------------------------------------------------------------- 80 Bibliografia ---------------------------------------------------------------------------------------- 82 Anexo----------------------------------------------------------------------------------------------- 83
  • 6. Introdução 4 1.1 O Aparecimento de uma Teoria. A Teoria de Grafos surgiu no ano de 1736 através de um artigo publicado pela Academy of Science em St. Petersburg. O seu autor, Leonhard Euler (1707-1783), procurava resolver o então intitulado Problema das Pontes de Konisberg. O problema consistia em sete pontes que faziam a ligação entre duas ilhas e as duas margens do Rio Pregel. Euler pretendia saber se seria possível sair de sua casa, atravessar o rio e regressar passando uma única vez por cada uma das setes pontes. Para uma melhor compreensão, está ilustrado na figura 1.1 o Problema das Pontes de Konisberg (PPK): Ao tentar resolver este problema rapidamente ficaremos com a sensação de que não tem solução mas uma afirmação destas tem que ser provada. Euler verificou que a solução deste problema depende única e exclusivamente das propriedades de ligação e não da forma das margens do rio. Na procura de uma apresentação mais prática e de fácil utilização, Figura 1.1: Problema das Pontes de Konisberg (PPK) considerado por Euler num artigo publicado pela Academy of Science em St. Petersburg.
  • 7. Introdução 5 designamos como arestas as linhas que fazem a ligação entre as margens e aos pontos de intersecção chamamos vértices. No caso do PPK o conjunto dos vértices seria { }4,3,2,1 , para representar uma aresta qualquer utilizariamos um par de vértices, por exemplo ( )2,1 . Na figura 1.2 encontra-se a representação usualmente utilizada de acordo com a Teoria de Grafos do problema apresentado na figura 1.1. Utilizando a figura 1.2 vamos procurar um caminho que satisfaça o problema inicial. Supunhamos que começamos pelo vértice 1 (margem) quando regressarmos a 1 pela primeira vez já utilizamos 2 das 3 arestas (pontes) que fazem a ligação a 1, logo no próximo regresso teremos que passar de novo por uma das arestas (pontes), por onde já passamos que fazem a ligação a 1 logo não existe nenhuma possibilidade de regressar a 1 passando por todos os outros vértices (margens) e passando uma única vez por cada aresta (ponte). Na verdade cada vértice (margem) tem um número ímpar de arestas (pontes) logo será impossível regressar a qualquer um deles passando por todas as arestas (pontes) uma única vez. Figura 1.2: Figura (grafo) representativa do PPK de acordo com a Teoria de Grafos.
  • 8. Introdução 6 1.2 Uma primeira definição... Apresentado que está o problema que originou a Teoria de Grafos, vamos introduzir ao longo deste trabalho várias definições e propriedades de forma a que se possa estudar correctamente do ponto de vista matemático uma situação específica. Definição 1.1: Seja X o conjunto de todos os vértices e seja A o conjunto de pares de vértices ( )ji xx , . Designamos como Grafo o par ( )AXG ,= . Se estivermos a estudar um caso que envolva um elevado número de vértices a nomenclatura acima descrita não será a mais indicada pelo que geralmente é feita uma simplificação do seguinte modo: ( )AX,GondeXxix ii =∈∀= 1.3 A construção de um grafo Para o caso que aqui nos propomos estudar vamos utilizar a simplificação acima mencionada porque estamos perante um problema que possui 90 vértices. Supunhamos que uma determinada empresa possui uma carteira de clientes para a qual necessita de uma rede de entrega a nível nacional (Portugal Continental), como já possui frota própria está fora de questão contratar um empresa especializada. Além disso esta empresa possui 4 armazéns, um dos quais está situado junto à fábrica enquanto que todos os outros são
  • 9. Introdução 7 abastecidos diariamente ou então de dois em dois dias. Assim, o objectivo é encontrar uma solução de forma a que se rentabilize a existência dos 4 armazéns sem que os mesmos entrem em “conflito”. Na construção do nosso grafo, o qual designaremos daqui em diante por grafo GI (presente na figura 1.3), foi necessário adicionar alguns pontos para além dos pontos de entrega porque o acesso a determinados locais implica a passsagem por um mesmo ponto sem que este seja um local de entrega. Cada local de entrega, de passagem ou armazém será designado como um vértice de acordo com a Teoria de Grafos e que apresentamos na Tabela 1.1, onde cada aresta será a ligação rodoviária entre cada ponto considerado. Optou-se por manter o grafo resultante (figura 1.3) de acordo com a morfologia da região considerada pois torna a sua visualização mais fácil e compreensível. Poderiamos considerar muitos mais pontos de distribuição mas já iríamos por exemplo entrar com vários pontos dentro de uma mesma cidade. Como optámos por considerar um problema de escala nacional não fará sentido impor certas restrições, tais como o sentido do tráfego. Obviamente que se o nosso problema estivesse relacionado com a distribuição dentro de uma cidade, por exemplo a distribuição de encomendas postais, o seu “esquecimento” levaria a resultados desastrosos. Pelo que a imposição dessas restrições, seria não só importantíssima mas também fundamental.
  • 10. Introdução 8 Figura1.3: Grafo GI - Grafo resultante da construção acima descrita que representa o problema considerado. .
  • 11. Introdução 9 Vértices Local Vértices Local 1 V. R. S. António 39 Ponto de passagem 2 Mértola 40 Coruche 3 Tavira 41 Porto Alto 4 Olhão 42 Vila Franca de Xira 5 Faro 43 Lisboa 6 Loulé 44 Alverca 7 Albufeira 45 Ponto de passagem 8 Ponto de passagem 46 Ponto de passagem 9 Armazém da Guia 47 Oeiras 10 Portimão 48 Cascais 11 Lagos 49 Sintra 12 Odemira 50 Amadora 13 Sines 51 Armazém de Torres Vedras 14 Santiago do Cacém 52 Torres Vedras 15 Ponto de passagem 53 Almeirim 16 Ponto de passagem 54 Santarém 17 Beja 55 Ponto de Passagem 18 Évora 56 Tomar 19 Armazém de Évora 57 Torres Novas 20 Estremoz 58 Caldas da Rainha 21 Elvas 59 Leiria 22 Álcacer do Sal 60 Alcobaça 23 Portalegre 61 Nazaré 24 Ponto de passagem 62 Marinha Grande 25 Castelo Branco 63 Pombal 26 Abrantes 64 Fogueira da Foz 27 Arraiolos 65 Coimbra 28 Montemo-o-Novo 66 Ponto de passagem 29 Ponto de passagem 67 Aveiro 30 Vendas Novas 68 Guarda 31 Ponto de Passagem 69 Covilhã 32 Ponto de passagem 70 Ovar 33 Setúbal 71 Ponto de passagem 34 Ponto de passagem 72 São João da Madeira 35 Seixal 73 Ponto de passagem 36 Almada 74 Bragança 37 Barreiro 75 Mirandela 38 Montijo 76 Chaves Tabela 1.1: Tabela que indica a correspondência entre vértices, locais de entrega, armazéns ou pontos de passagem considerados.
  • 12. Introdução 10 Vértices Local Vértices Local 77 Vila Real 84 Póvoa do Varzim 78 Amarante 85 Esposende 79 Paredes 86 Viana do Castelo 80 Vila Nova de Gaia 87 Braga 81 Porto 88 Vila Nova de Famalicão 82 Matosinhos 89 Guimarães 83 Armazém da Maia 90 Viseu Tabela 1.1(cont.): : Tabela que indica a correspondência entre vértices, locais de entrega, armazéns ou pontos de passagem considerados.
  • 13. CAPÍTULO II ALGUNS CONCEITOS SOBRE TEORIA DE GRAFOS 12
  • 14. CAPÍTULO II ALGUNS CONCEITOS SOBRE TEORIA DE GRAFOS 13 2.1 Grafos orientados e não orientados Olhando atentamente para o GI verificamos que não estamos a impor sentidos de tráfego, estamos a partir do princípio de que se pode deslocar nos dois sentidos em cada aresta considerada, mas e se existissem restrições em relação ao sentido do tráfego? Como construiríamos o nosso Grafo? Para responder a esta questão será necessário fazer uma distinção entre este dois tipos de grafos. Considerando o grafo GI onde o sentido do tráfego é irrelevante estamos perante um Grafo Não Orientado, mas e se todas as arestas tivessem um sentido pré-definido? Então o grafo designar-se-ia como um Grafo Orientado e no caso de num qualquer grafo considerado existirem em conjunto as duas hipóteses anteriores, que na realidade é o mais frequente, então estariamos perante um Grafo Misto. Como mero exemplo e para uma melhor compreensão apresentamos de seguida as três hipóteses possiveis: (a) (b) (c) Figura 2.1: Exemplo de um grafo não orientado (a), de um grafo orientado (b) e de um grafo misto (c).
  • 15. Alguns conceitos sobre Teoria de Grafos 14 Qualquer grafo não orientado é também um grafo orientado, bastará que se substitua cada aresta existente por duas arestas com sentidos opostos. 2.2 A Função correspondência Embora a definição 1.1 apresentada no capítulo I seja a mais usual, existe uma outra definição equivalente que se revelará muito útil mais adiante. Para a poder apresentar é necessário construir uma função que irá relacionar os vértices de um qualquer grafo G e que representaremos por Γ . Aplicando este operador a um qualquer vértice iremos obter um conjunto de vértices cuja definição apresentamos de seguida: Definição 2.1: Seja ( )AXG ,= um grafo qualquer e consideremos o operador Γ que relaciona os elementos de X entre si. Designamos como Correspondência a função Γ tal que: XX →Γ : ( ) ( ){ }Axxxxx jijii ∈=Γ→ ,: . Ora vejamos em relação ao grafo GI o que resulta da aplicação da função de correspondência: ( ) { }3,21 =Γ ( ) { }17,16,12,815 =Γ ( ) { }64,63,62,60,57,56,5459 =Γ
  • 16. Alguns conceitos sobre Teoria de Grafos 15 ( ) { }90,71,70,67,6566 =Γ ( ) { }77,68,66,6590 =Γ De realçar que poderão surgir casos em que ( ) ∅=Γ ix ou até ( ) { }ii xx =Γ e neste caso estamos perante a existência de uma aresta que usualmente se designa por Loop, que indica a existência de um trajecto onde partindo de ix chegamos a ix sem passar por qualquer outro vértice. Do mesmo modo poderemos apresentar a Função Correspondência Inversa: Definição 2.2 Seja ( )AXG ,= um grafo qualquer e consideremos o operador 1− Γ que relaciona os elementos de X entre si. Designamos como Correspondência Inversa a função 1− Γ ,tal que: XX →Γ− :1 ( ) ( ){ }Axxxxx ijjii ∈=Γ→ − ,:1 . Em relação ao nosso problema, será exactamente igual à função correspondência, já que o grafo GI é um grafo não orientado, mas vejamos por exemplo em relação à figura 2.1b: ( ) { } ( ) ∅=Γ≠=Γ − 121 1 ( ) { } ( ) {}1232 1 =Γ≠=Γ − ( ) ( ) { }233 1 =Γ≠∅=Γ −
  • 17. Alguns conceitos sobre Teoria de Grafos 16 ( ) { } ( ) ∅=Γ≠=Γ − 434 1 A função que definimos em 2.1 goza de várias propriedades relacionadas com a Teoria de Conjuntos, que nos irão ser muito uteis para demonstrações posteriores e que convém mencionar e verificar: Propriedade 2.1 : a) Seja { } ( ) ( ) ( ) ( )qqqq xxxXxxxX ΓΓΓ=Γ= ........então,.....,, 2121 b) ( ) ( ) ( )( )i q i q xx 1− ΓΓ=Γ c) ( ) ( ) ( )( )i q i q xx 11 −−−− ΓΓ=Γ d) Para um grafo não orientado G, ( ) ( )ii xx 1− Γ=Γ . Demonstração: a) Provemos por indução em INn ∈ , onde n corresponde ao número de vértices de um qualquer grafo. i) Para 2=n Supondo que existe a aresta ( )21 , xx { } ( ) { }( ) { } ( ) ( )2121212212 ,,, xxxxxxXxxX Γ∪Γ==Γ=Γ= Se não existir ( ) ( ) ( ) { } { } { }=∪=Γ∪Γ=Γ 212X xx ii) Se { } ( ) ( ) ( )nnnn xxXxxXseINn Γ∪∪Γ=Γ=∈∀ ..,..,, 11 , então
  • 18. Alguns conceitos sobre Teoria de Grafos 17 { } ( ) ( ) ( ) ( )111111 ++++ Γ∪Γ∪∪Γ=Γ= nnnnnn xx..xXx,x,..,xXse . Vejamos: { } { } { }1111 +++ ∪=∪= nnnnn xXxx,..,xX , então e por hipótese de indução verificamos que: ( ) { }( ) ( ) { }( ) ( ) ( ) ( ) ( ) ( )11 1111 + ++++ Γ∪Γ∪∪Γ= =Γ∪Γ=Γ∪Γ=∪Γ=Γ nn nnnnnnn xx..x xXxXxXX como queríamos provar. b) Provemos por indução em INn ∈ , onde n representa o número de vezes que aplicamos a função correspondência i) Para ( ) ( ) INi,xx,n ii ∈∀Γ=Γ= 1 1 . ii) Se ( ) ( )( ) INixxINn i n i n ∈∀ΓΓ=Γ∈∀ − ,, 1 , então ( ) ( )( ) INi,xx i n i n ∈∀ΓΓ=Γ +1 . Por hipótese de indução sabemos que: ( ) ( )( ) ( )( )( )ii n i n x.....xx ΓΓΓ=ΓΓ=Γ −1 , n vezes ( )( ) ( )( )( ) vezesn vezesn ii n x...x 1+ ΓΓΓΓ=ΓΓ , se depois de aplicar Γ n vezes aplico Γ mais uma vez então estou a aplicar Γ n+1 vezes logo provámos que: ( ) ( )( ) INi,xx i n i n ∈∀ΓΓ=Γ +1 c) esta demonstração é análoga à anterior.
  • 19. Alguns conceitos sobre Teoria de Grafos 18 d) Como o grafo G é não orientado o conjunto ( )ixΓ (conjunto de “partida” de xi ) é igual ao conjunto de ( )ix1− Γ (conjunto de “chegada” de xi). 2.3 Outra definição de Grafo e o Grau de um Vértice Definida a função Correspondência (2.1) podemos então apresentar uma definição equivalente à definição 1.1, que constitui, também ela, uma definição de grafo mas utilizando a função correspondência: Definição 2.3: Seja ∅≠X um conjunto qualquer de vértices e seja Γ função correspondência entre os vértices de X , definimos o grafo ( )AXG ,= , definido em 1.2, como ( )Γ= ,XG . Outro conceito que convém mencionar é o de grau de um vértice. Olhando atentamente para um qualquer grafo G, mais precisamente para os seus vértices INixi ∈∀ , poderemos calcular o número de arestas que têm ix como vértice final ou como vértice inicial. Definição 2.4: Seja ( )Γ= ,XG um grafo e xi um vértice qualquer de X: i) Chamamos grau externo, ( )ixd0 ao número de arestas que têm o vértice xi, como vértice inicial. Ou seja, ( ) ( )ii xxd Γ=0 .
  • 20. Alguns conceitos sobre Teoria de Grafos 19 ii) Chamamos grau interno, ( )it xd ao número de arestas que têm o vértice xi, como vértice final. Ou seja, ( ) ( )iit xxd 1− Γ= . iii) Chamamos grau, ( ) ( )ii xxd Γ= quando o grafo é não orientado. Na definição 1.1 introduzimos o Conjunto A como o conjunto de pares de vértices ( )ji xx , que estão ligados entre si num determinado grafo que não é mais do que o conjunto de todas as arestas do grafo considerado. Assim, podemos designar como adjacentes os vértices ix e jx quando a aresta ( ) Axx ji ∈, . 2.4 A representação matricial Do ponto de vista da programação, a forma utilizada na figura 1.3 para representar um grafo não será concerteza a mais adequada, pelo que, é necessário encontrar uma outra forma de representar um qualquer grafo. A forma encontrada foi a matricial, criando-se assim a chamada Matriz de Adjacência que nos indica como estão ligados os vértices entre si. Definição 2.5: Seja ( )AXG ,= , nX = . A matriz quadrada nn × , [ ]ijaA = é designada por Matriz de Adjacência e é dada por: ( ) ( )∉= ∈= Axxa Axxa jiij jiij ,arestaase,0 ,arestaase,1
  • 21. Alguns conceitos sobre Teoria de Grafos 20 A matriz de Adjacência define completamente a estrutura de qualquer grafo G. Por exemplo a soma de todos os elementos da linha ix dá-nos o valor do grau externo do vértice ix e a soma de todos os elementos da coluna ix dá-nos o valor do grau interno do vértice ix , poderemos também obter as correspondências Γ , isto é, o conjunto de colunas que possuem entrada com valor 1 na linha ix é o conjunto ( )ixΓ , analogamente o conjunto de linhas que possuem entrada com valor 1 na coluna ix é o conjunto ( )ix1− Γ . Para confirmar estas afirmações calculemos a matriz de Adjacência do grafo 2.1b presente na figura 2.1: = 0100 0000 0100 001 1 0 4 3 2 1 A 432 A soma das entradas pertencentes à linha 1de A é 1 que é igual ao valor do grau externo do vértice 1, ( ) 110 =d . A soma das entradas pertencentes à coluna 3 de A é 2 que é igual ao valor do grau interno do vértice 3, ( ) 23 =td . Existe uma outra representação matricial que relaciona os vértices e as arestas de um grafo. Apesar de não definir completamente a estrutura de um grafo, já que a existência de Loop’s é omitida, irá ser muito útil mais adiante e que definimos de seguida: Definição 2.6: Seja ( )AXG ,= , tal que mAnX == e , definimos Matriz de incidência, como a matriz, mn × , [ ]ijb=B :
  • 22. Alguns conceitos sobre Teoria de Grafos 21 = −= = .uméseoudeterminalvérticeénãose0 arestadafinalvérticeoése1 arestadainicialvérticeoése1 loopaaxb axb axb jjiij jiij jiij Como o grafo GI tem 90 vértices e 122 arestas iremos utilizar de novo o grafo da figura 2.1b como exemplo onde ( ) ( ) ( )4332211 ,ae,a,,a 32 === para calcular a matriz B : −− − = 100 110 011 00 4 3 2 1 1 B aaa 321 Se o grafo G for um grafo não orientado então a matriz de incidência é definida da mesma forma, mas as entradas com valor –1 passam a ter valor 1, como seria o caso do grafo GI. 2.5 Caminhos Em áreas como a distribuição interessa ponderar a distância a percorrer, o tempo despendido e os gastos associados. Até agora ainda não associamos este conceitos à Teoria de Grafos mas iremos fazê-lo de imediato. Tendo em conta o grafo GI, se nos encontramos em Torres Vedras (vértice 52) e pretendemos ir até Santarém (vértice 54), poderíamos escolher os mais variados trajectos para atingir o nosso objectivo, por exemplo: 1ºtrajecto: ( ) ( ) ( ){ }54,60,60,58,58,52 2º trajecto: ( ) ( ) ( ) ( ){ }54,42,42,44,44,45,45,52
  • 23. Alguns conceitos sobre Teoria de Grafos 22 3ºtrajecto: ( ) ( ) ( ) ( )( ){ }54,4242,44,44,43,43,45,45,52 Na teoria de grafos chamamos a estas sequências de arestas, onde o vértice final de uma das arestas é o vértice inicial da aresta seguinte que definem um trajecto Caminhos . Definição 2.7: Seja G, um grafo orientado. A uma sequência de arestas, onde o vértice final de cada aresta é o vértice inicial da aresta seguinte chamamos Caminho, que usualmente representamos por µ. 2.6 Peso, comprimento ou custo Quando pretendemos realizar uma viagem é natural que nos surjam as seguintes questões: Quantos Km tem o percurso? Quanto tempo demora a realizar? Quantos litros de gasolina vou gastar? etc. Temos assim presente a noção de comprimento, custo, peso ou outra medida qualquer que na Teoria de Grafos serão exactamente a mesma coisa. Assim a cada aresta ( )ji xx , do grafo considerado associamos um comprimento, custo ou peso ijc . No caso do grafo GI iremos considerar as distâncias entre cada local, logo consideramos o comprimento. Tendo em conta o conceito de custo, se a cada aresta do grafo GI associarmos um valor ijc , podemos calcular a distância a percorrer tendo como ponto de partida um determinado vértice e obviamente outro como ponto de chegada. Um grafo em que a cada aresta está associado um custo designa-se como Grafo Ponderado (figura 2.2). Desta forma já podemos calcular o comprimento dos trajectos ou melhor dos caminhos acima considerados. Consultando previamente a figura 2.2 que se encontra na página 23 chegaríamos aos seguintes resultados:
  • 24. Alguns conceitos sobre Teoria de Grafos 23 Figura 2.2: Grafo GI Ponderado.
  • 25. Alguns conceitos sobre Teoria de Grafos 24 1ºCaminho: 94,3 Km. 2ºCaminho: 99,4 Km. 3ºCaminho: 124,4 Km.. O procedimento realizado poderá ser generalizado da seguinte forma: Definição 2.8: Seja µ, um caminho, num dado grafo G. O custo ou peso ou comprimento do caminho µ, é dado por: ( ) ( )∈ = µ µ ji xx ijcl , Apesar de nos interessar saber o comprimento do caminho a percorrer ou o número de litros que gastamos, na verdade, o que nos interessa saber é o caminho que tem menor custo. 2.7 Matriz de custos Também para um grafo ponderado existe uma representação matricial cuja existência é fundamental para programas de computador. Esta representação é matricial designada por Matriz de Custos e encontra-se definida de seguida: Definição 2.9: Seja ( )AXG ,= , tal que nX = , definimos Matriz de custos, como a matriz quadrada, nn × , [ ]ijcC = onde ijc é o custo associado à arestas ( )ji, .
  • 26. Alguns conceitos sobre Teoria de Grafos 25 2.8 Outros conceitos Nesta secção vamos mencionar algumas definições que serão necessárias para os conteúdos que iremos introduzir nos capítulos III e IV, tais como a definição de grafo conexo, definição de circuito, etc. Assim teremos: Definição 2.10: Seja ( )A,XG = um grafo qualquer. Definimos como Grafo Conexo todo o grafo G em que para qualquer par de vértices ( ) Xj,i ∈ existe um caminho que vai de i para j ou vice-versa. Definição 2.11: Seja ( )A,XG = um grafo qualquer. Definimos Caminho Elementar em G como um caminho que utiliza cada vértice uma única vez. Definição 2.12: Seja ( )A,XG = um grafo orientado qualquer. Definimos como Circuito um caminho µ em G cujo vértice inicial de µ é o vértice final de µ. No caso de G ser um grafo não orientado estaríamos perante um Ciclo. Lema 2.1: Seja G um grafo, m o número de arestas e n o número de vértices de G. Então a soma de todos os graus internos , é igual à soma de todos os graus externos, que por sua vez é igual ao número de arestas, i.e.
  • 27. Alguns conceitos sobre Teoria de Grafos 26 ( ) ( ) mxdxd n i it n i io == == 11 Definição 2.13: Seja ( )AXG ,= , tal que nX = , definimos Matriz dos graus de G, como a matriz, nn × , [ ]ijd=D onde cada ijd corresponde a ( )ixd com ji = para ji ≠ 0=ijd . Definição 2.14: Seja M uma matriz nn × . O co-factor i, j de M é definido como: ( ) ( )( )j|iMdet1 ji+ − . onde ( )( )j|iMdet é o determinante da matriz M retirando a linha i e a coluna j.
  • 28. CAPÍTULO III CMC, ÁRVORES E AS REGIÕES DE ABASTECIMENTO
  • 29. CAPÍTULO III CMC, ÁRVORES E AS REGIÕES DE ABASTECIMENTO 3.1 Porquê o Algoritmo do Caminho mais Curto? Como já foi mencionado no Capítulo I a empresa que considerámos possui 4 armazéns espalhados por Portugal Continental, pelo que poderemos equacionar a divisão do País em 4 regiões de abastecimento, uma para cada armazém. Como podemos fazer essa divisão? Para tentar responder a essa questão teremos que falar de alguns conceitos sobre os quais nada foi revelado até ao momento. Fará todo o sentido calcular as distâncias entre cada armazém e todos os outros pontos. Como serão 4 armazéns, teríamos que multiplicar por quatro o número de operações a realizar, pelo que será necessário encontrar um algoritmo que diminua uma grande parte do trabalho a realizar. Esse algoritmo é o Algoritmo de Dijkstra que iremos identificar como Algoritmo do Caminho Mais Curto, (CMC) 3.2 Algoritmo de Dijkstra O programador informático holandês Edsger W. Dijkstra (1930 - ) vencedor do Prémio Turing da Association for Computer Machinery em 1972, criou um algoritmo capaz de calcular o caminho mais curto entre dois vértices. O denominado Algoritmo de Dijsktra, consiste na atribuição de etiquetas permanentes e outras temporárias a cada vértice do grafo considerado e que apresentamos de seguida:
  • 30. CAPÍTULO III CMC, ÁRVORES E AS REGIÕES DE ABASTECIMENTO Algoritmo 3.1: Algoritmo do Caminho mais Curto (CMC) Seja G um grafo ponderado, ijc o custo associado a cada aresta ( )ji, , ( )ixl o caminho mais curto até ao vértice ix , kx o vértice inicial e tx o vértice final. Para calcular o CMC procedemos da seguinte forma: Passo 1: ( ) + = 0kxl (etiqueta permanente) ( ) ∞=≠∀ ilki (etiqueta temporária) Passo 2: Para cada vértice com etiqueta temporária para o qual a sua correspondência não é vazia ( ( ) ∅≠Γ i ), redefinimos ( )ixl da seguinte forma: ( ) ( ) ( ) ( ){ }ijcxlxlminxl jii ,; += . Passo3: Encontrar o menor ( )ixl . Passo 4: Fixar o menor ( )ixl com uma etiqueta permanente Passo 5: Se ti = o processo termina. Se ti ≠ regressar ao passo 2.
  • 31. CAPÍTULO III CMC, ÁRVORES E AS REGIÕES DE ABASTECIMENTO Será também muito importante determinar o trajecto a seguir já que o CMC nada nos informa acerca disso. Algoritmo 3.2: Para encontrar o caminho resultante da aplicação do CMC, aplicamos recursivamente a seguinte equação: ( ) ( )ijii xlcxl =+ '' considerando i como o último vértice e i’ o vértice cuja aresta inicia em i e termina em i’. Utilizando o grafo GI como exemplo, vamos calcular o caminho mais curto entre Torres Vedras e Vila Franca de Xira: Exercício 3.1 Passo 1: 4252 =∧= tk ( ) ( ) +∞=≠∀= + ili,l 52052 Passo 2: ( ) { }58,4552 =Γ+ ( ) { } { } 4,314,31;4,310;45 =∞+=+∞+= minl ( ) { } { } 4,394,39;4,390;58 =∞+=+∞+= minl Passo 3: ( ) ( ){ } ( )4558,45 lllmin = Passo 4: ( ) + = 4,3145l Passo 5: 4245 ≠ logo temos que regressar a 2.
  • 32. CAPÍTULO III CMC, ÁRVORES E AS REGIÕES DE ABASTECIMENTO Passo 2: ( ) { }50,44;4345 =Γ+ ( ) { } { } 9,479,47;5,164,31;43 =∞+=+∞+= minminl ( ) { } { } 9,479,47;5,164,31;44 =∞+=+∞+= minminl ( ) { } { } 3,503,5;9,184,31;50 =∞+=+∞+= minminl Passo 3: ( ) ( ) ( ) ( ){ } ( )585850,44,43 lllllmin = Passo 4: ( ) + = 5,3958l Passo 5: 4258 ≠ voltar a 2. Passo 2: ( ) { }61,6058 =Γ+ ( ) { } { } 6565;6,254,39;60 =∞+=+∞+= minminl ( ) { } { } 5,695,69;1,304,39;61 =∞+=+∞+= minminl Passo3: ( ) ( ) ( ) ( ) ( ){ } ( )4461,60,50,44,43 llllllmin = Passo 4: ( ) + = 9,4744l Passo 5: 4244 ≠ regressar a 2. Passo 2: ( ) { }43,4244 =Γ+ ( ) { } { } 1,551,55;2,79,47;42 =∞+=+∞+= minminl ( ) { } { } 9,479,72;9,47259,47;9,4743 ==+= minminl Passo 3: ( ) ( ) ( ) ( ) ( ){ } ( )4361,60,50,43,42 llllllmin = Passo 4: ( ) + = 9,4743l Passo 5: 4243 ≠ voltar a 2
  • 33. CAPÍTULO III CMC, ÁRVORES E AS REGIÕES DE ABASTECIMENTO Passo 2: ( ) { }46,3643 =Γ+ ( ) { } { } 3,583,58;4,109,47;36 =∞+=+∞+= minl ( ) { } { } 6,586,58;7,109,47;46 =∞+=+∞+= minl Passo 3: ( ) ( ) ( ) ( ) ( ) ( ){ } ( )5061,60,50,46,42,36 lllllllmin = Passo 4: ( ) + = 3,5050l Passo 5: 4250 ≠ voltar a 2 Passo 2: ( ) { }49,4650 =Γ+ ( ) { } { } 6,5870;6,587,103,50;6,5846 ==+= minl ( ) { } { } 1,631,63;8,123,50;49 =∞+=+∞+= minl Passo 3: ( ) ( ) ( ) ( ) ( ) ( ){ } ( )4261,60,49,46,42,36 lllllllmin = Passo 4: ( ) + = 1,5542l Passo 5: 4242 = pelo que determinámos o comprimento do caminho mais curto pretendido. Determinado o comprimento do caminho mais curto interessa calcular o trajecto respectivo. Calculemos então o trajecto que deveremos seguir para percorrer a menor distância possivel. Aplicando a algoritmo apresentado em 3.2 obtemos: 42=ix ( ) { }54,4442 =Γ− ( ) ( )421,552,79,4744 42,44 lcl ==+=+ ( ) ( )423,4454 42,54 lcl ≠+∞=++∞=+
  • 34. CAPÍTULO III CMC, ÁRVORES E AS REGIÕES DE ABASTECIMENTO 44=ix ( ) { }45,4344 =Γ− ( ) ( )449,72259,4743 44,43 lcl ≠=+=+ ( ) ( )449,475,164,3145 44,45 lcl ==+=+ 45=ix ( ) { }5245 =Γ− ( ) ( )454,314,31052 45,52 lcl ==+=+ então o caminho mais curto entre os vértices 52 e 42 é ( ) ( ) ( )42,44,44,45,45,52 , com um comprimento de 55,1 Km. Regressando ao objectivo deste trabalho, vamos aplicar o algorítmo do caminho mais curto em casos separados, ou seja vamos aplicá-lo 4 vezes uma para cada armazém considerando como ponto de partida de cada caso os armazéns de Torres Vedras, da Maia, da Guia e de Évora respectivamente os vértices 51, 83, 9 e 19.. Ao procedermos desta forma vamos obter quatro grafos, um para cada armazém, que possuem diversas características particulares muito interessantes, possuem menos uma aresta que o número total de vértices e não possuem circuitos, a estes grafos chamamos Árvores que definimos no capítulo seguinte e que estão presentes nas figuras 3.1, 3.2, 3.3 e 3.4.
  • 35. CAPÍTULO III CMC, ÁRVORES E AS REGIÕES DE ABASTECIMENTO Figura 3.1: Árvore resultante da aplicação do CMC, onde o vértice 51 é o ponto de partida.
  • 36. CAPÍTULO III CMC, ÁRVORES E AS REGIÕES DE ABASTECIMENTO Figura 3.2: Árvore resultante da aplicação do CMC, onde o vértice 83 é o ponto de partida.
  • 37. CAPÍTULO III CMC, ÁRVORES E AS REGIÕES DE ABASTECIMENTO Figura 3.3: Árvore resultante da aplicação do CMC, onde o vértice 9 é o ponto de partida.
  • 38. CAPÍTULO III CMC, ÁRVORES E AS REGIÕES DE ABASTECIMENTO Figura 3.4: Árvore resultante da aplicação do CMC, onde o vértice 19 é o ponto de partida.
  • 39. CAPÍTULO III CMC, ÁRVORES E AS REGIÕES DE ABASTECIMENTO 3.3 Árvores Os Grafos Árvores ou simplesmente Árvores são frequentemente utilizadas em estudos relacionados com Oleodutos, Gasodutos, Telecomunicações, Árvores Genealógicas e outros. As Árvores representadas nas figuras 3.1, 3.2, 3.3 e 3.4 possuem como já foi afirmado anteriormente várias particularidades sobre as quais nos vamos debruçar de seguida, mas será indispensável verificar alguns teoremas primeiro: Teorema 3.1 : Seja ( )AXG ,= um grafo não orientado, onde nX = . Então quaisquer das duas condições seguintes implicam a terceira: a) G é conexo. b) G não possui ciclos. c) G tem 1−n arestas. Demonstração: i) cba ∧ Suponhamos com vista a um absurdo que G tem n arestas. Como G é conexo sabemos que para qualquer par de vértices ),( ji xx de G, existe um caminho que vai de ix para jx ou vice-versa. Logo é possível construir um caminho com n-1 arestas que vai de ix a jx e ao juntar a
  • 40. CAPÍTULO III CMC, ÁRVORES E AS REGIÕES DE ABASTECIMENTO aresta restante de forma que ligue directamente ix a jx obtemos um grafo nas condições consideradas. Absurdo, estaríamos perante um grafo com ciclos portanto para verificar as hipóteses consideradas G terá n-1 arestas. ii) bca ∧ Seja G um grafo conexo com n-1 arestas. Queremos provar, que G não possui ciclos. Suponhamos com vista a um absurdo, que o grafo G possui um ciclo, o qual passa por todos os vértices do grafo G, Se retirarmos uma das arestas passaremos a ter um grafo com n-2 arestas conexo. Absurdo, provámos em i) que um grafo conexo com n vértices tem pelo menos n-1 arestas. Portanto G não possui ciclos. iii) abc ∧ Seja G por hipótese um grafo com n-1 arestas e n vértices que não possua ciclos, então G não pode conter nenhum vértice isolado. Assim, é possível para qualquer par de vértices ( )ji, de G ir de i para j ou de j para i. Estamos assim perante a definição de grafo conexo. Como queríamos demonstrar.
  • 41. CAPÍTULO III CMC, ÁRVORES E AS REGIÕES DE ABASTECIMENTO Definição 3.1: Designamos como Árvore não orientada o grafo ( )AXT ,= , onde nX = , 1−= nA e T é conexo. Para identificar um grafo como uma árvore podemos em vez de utilizar a definição 3.1 recorrer ao seguinte teorema: Teorema 3.2: Seja ( )AXT ,= uma árvore não orientada, então as seguintes afirmações são equivalentes: i) T é conexo, nX = e 1−= nA . ii) T é conexo mas não possui ciclos. iii) T é um grafo onde cada par de vértices é ligado através de um e um só caminho elementar. Demonstração: ( )iii De acordo com o teorema 3.1, o grafo T não possui ciclos. Sabemos que um ciclo não é mais do que um circuito, pelo que T não possui circuitos. Portanto está provada a primeira implicação.
  • 42. CAPÍTULO III CMC, ÁRVORES E AS REGIÕES DE ABASTECIMENTO ( )iiiii Como estamos perante um grafo conexo que não possui circuitos e considerando dois vértices Xxx ji ∈, , então existe um caminho onde o vértice xi é o vértice inicial e xj é o vértice final de tal forma que apenas passamos uma única vez por um qualquer vértice xk que pertença a esse caminho, logo estamos perante um caminho elementar. Suponhamos com vista a um absurdo que existem dois caminhos elementares que ligam os vértices ji xex , por exemplo 2e µµ1 , então existe um circuito. Absurdo, por hipótese T não possui circuitos. Está provada então a segunda implicação. ( )iiii Suponhamos que existe um caminho elementar com n vértices, podemos concluir que existem apenas n-1 arestas, caso contrário passaríamos a ter um caminho onde pelo menos um vértice seria “utilizado” mais do que uma vez. Portanto podemos concluir que T é conexo com n vértices possui n-1 arestas.
  • 43. CMC, Árvores e as Regiões de Abastecimento 3.4 Subgrafos e Grafos Parciais No caso em estudo e como as 4 árvores foram calculadas a partir de um grafo inicial, estamos perante subconjuntos do grafo inicial onde o número de vértices se mantém, mas o número de arestas altera-se. Assim será extremamente interessante e importante definir os vários tipos que poderão surgir, uma vez que devido ao objectivo deste trabalho iremos calcular vários subconjuntos. Inicialmente apresentamos a definição de grafo parcial e como exemplo podemos considerar qualquer uma das árvores calculadas com o algoritmo do CMC. Definição 3.2: Seja ( )AXG ,= um grafo qualquer, definimos Grafo Parcial de G como sendo o grafo ( )pp AXG ,= , onde AAp ⊆ . Se em vez de retirarmos algumas arestas a um qualquer grafo retirarmos alguns vértices e representarmos apenas as arestas que inicialmente ligavam esses mesmos vértices estamos perante um subgrafo. Mais adiante poderemos visualizar vários exemplos de Subgrafos do grafo GI. Definição 3.3: Consideremos um grafo ( )Γ= ,XG . Chamamos Subgrafo de G ao grafo ( ) ( ) ( ) siississss XxxXxXXXG ∩Γ=Γ∈∀⊆Γ= ,ecom,,
  • 44. CMC, Árvores e as Regiões de Abastecimento 3.5 Raiz de uma Árvore e Árvores Orientadas Olhando para qualquer uma das figuras 3.1, 3.2, 3.3 e 3.4 vemos que os vértices iniciais, respectivamente 51, 83, 9 e 19 são as raizes de cada uma das árvores consideradas (armazéns – inicio do trajecto), através desta caracteristica podemos distinguir uma árvore não orientada de uma árvore orientada: Definição 3.4: Seja ( )AXT ,= uma árvore. Seja Xxi ∈ tal que: ( ) 0=it xd . Então o vértice ix designa-se uma raiz de T. Definição 3.5: Seja ( )AXT ,= uma árvore. Diz-se que T é uma Árvore Orientada se para todo o vértice Xxi ∈ , com a excepção de um (por exemplo x1), ( ) 1=it xd . O vértice x1 é a raiz de T. 3.6 As Regiões de Abastecimento Estamos agora em condições de realizar certas operações que nos apresentarão as primeiras respostas ao problema que nos propusemos estudar. Com o auxilio de uma aplicação informática (anexo) vamos comparar as distâncias entre a raiz e os restantes vértices para as árvores calculadas com o CMC, com o objectivo de encontrar 4 (neste caso) regiões de abastecimento utilizando o algoritmo 3.3.
  • 45. CMC, Árvores e as Regiões de Abastecimento Algoritmo 3.3: Seja ( )jli a distância entre o vértice j e o vértice i, onde j pertence ao conjunto de vértices que são raizes das árvores consideradas no nosso problema e kR é uma região de abastecimento. Aplicando a seguinte condição: ( ){ }{ } ( ) kii i Rikljl ∈=min obtemos as várias regiões onde a distância entre a raiz e um outro vértice é minima. Vejamos um pequeno exemplo e de seguida os resultados obtidos: Para 1=i teremos ( ) ( ) ( ) ( ){ } { } 8,971,623;8,350;8,220;8,97min19,9,83,51min 1111 ==llll , então o vértice 1 pertencerá á região de abastecimento do vértice 9, ou seja uma loja situada em V.R.S. António será abastecida pelo armazém da Guia. Resultados do exemplo acima considerado: Para o armazém de Torres Vedras: { } { }∪∪= 38,37,36,35,34,33,322651R { }64,63,62,61,60,59,58,57,56,55,54,53,52,51,50,49,48,47,46,45,44,43,42,41∪
  • 46. CMC, Árvores e as Regiões de Abastecimento Para o armazém da Maia: { }∪= ,69,68,67,66,6583R { },90,89,88,87,86,85,84,83,82,81,80,79,78,77,76,75,74,73,72,71,70∪ Para o armazém da Guia: {} { } { }15,13,12,11,910,8,7,6,5,4,319 ∪∪=R Para o armazém de Évora: { } { } { }∪∪∪= ,26,25,24,23,22,21,20,19,18,17,1614219R { } { } { }6940,39,31,30,29,28,27 ∪∪∪ Estão calculadas então as 4 regiões de abastecimento pretendidas, podemos dizer que a partir deste ponto entrámos no problema própriamente dito. Representando estas regiões sob a forma de grafo facilmente verificamos pela definição 3.3 que estamos perante 4 subgrafos do nosso grafo GI. Para uma fácil compreensão estão representadas na figura 3.5 as quatro regiões de abastecimento onde o vértice com a forma identifica o respectivo armazém de cada região. Cada uma destas regiões que designaremos simplesmente por região de Torres Vedras, da Guia, de Évora e Maia e que representaremos por XkRk ∈onde , são subgrafos do grafo GI. Se retirarmos uma aresta de qualquer subgrafo e de acordo com a definição 3.4 estaremos perante um Subgrafo Parcial, que iremos encontrar nas figuras 4.2, 4.4, 4.5, 4.6 e 4.7.
  • 47. CMC, Árvores e as Regiões de Abastecimento Figura 3.5: Regiões de Abastecimento, kR .
  • 48. CMC, Árvores e as Regiões de Abastecimento 3.7 O primeiro caso particular Supunhamos que ocupamos o cargo de responsável pela distribuição de uma determinada empresa com as caracteristicas já conhecidas, como primeira impressão pensamos que o nosso problema não será muito dificil pois já dividimos o país em 4 zonas. Imagine que o departamento Comercial da nossa Empresa decidiu proceder a uma campanha de promoção para duas lojas que pertencem a regiões de distribuição diferentes e que essas lojas se localizam, por assim, dizer na fronteira das suas respectivas regiões. Como resolveriamos este problema? Obviamente que não iríamos enviar dois carros, um de cada armazém, sem dúvida que o nosso director financeiro não iria gostar muito e decisões deste género poderiam muito bem ser razão mais do que suficiente para a nossa demissão. A razão diz-nos que teriamos que enviar um só carro, mas de que região de abastecimento? Como no nosso problema considerámos as distâncias teremos que escolher o menor trajecto que permita proceder ao abastecimento das duas lojas em questão. A situação mencionada no parágrafo anterior pode ocorrer com bastante frequência, pelo que o ideal seria ter a solução para todos casos em que isto possa suceder. Assim, vamos procurar encontrar uma solução para este caso. Antes de mais será importante referir que apenas poderemos considerar os pares de vértices para os quais existem arestas ou seja para vértices adjacentes e que designaremos estes pontos como pontos críticos. Para que o método utilizado seja de fácil compreensão vamos utilizar um dos casos existentes no nosso problema e que está “ilustrado” no exercício 3.1. Obviamente que poderiamos considerar um outro caso qualquer.
  • 49. CMC, Árvores e as Regiões de Abastecimento Exercício 3.1: Supunhamos que é necessário proceder a uma entrega especial nas lojas de Sines (13) e de Santiago do Cacém (14), que pertencem a regiões de abastecimento diferentes, respectivamente Évora e Guia. Para determinar qual a zona que irá realizar o abastecimento, calculamos através do CMC a distância entre os vértices e os seus armazéns, adicionando de seguida o “custo” associado à aresta existente e calculando o valor mínimo como de seguida poderemos ver: ( ) ( ) 917414,98,231,1519 14,1313 Km,KmcKml ==∧= µ ( ) ( ) 8,18313,198,2316019 13,1414 KmKmcKml ==∧= µ como ( ) ( ){ } { } ( )14,99,1748,183;9,174min13,19;14,9min µµµ === concluimos que no caso de ser necessário abastecer exclusivamente os vértices 13 e 14 será muito mais vantajoso fazê-lo através do armazém da Guia. Recorrendo de novo ao auxílio da aplicação informática (anexo) vamos considerar todos os pontos críticos e proceder exactamente da mesma forma utilizando o algoritmo 3.3 que nos permite chegar aos resultados obtidos no exercíco acima considerado.
  • 50. CMC, Árvores e as Regiões de Abastecimento Algoritmo 3.3: Sejam ( )AXGRR vu ,desubgrafos, = e Xji ∈, onde uRi ∈ e vRj ∈ são dois pontos críticos de G tal que ( ) Aji ∈, e seja ( ) ( ) jii culju ,, +=µ . Se ( ) ( ){ } ( )ivivjumin ,,;, µµµ = então os vértices i e j serão abastecidos pela região de abastecimento v. Se ( ) ( ){ } ( )juivju ,,;,min µµµ = então os vértices i e j serão abastecidos pela região de abastecimento u. Na tabela 2 encontram-se as soluções para todos os pontos críticos do grafo GI, de realçar que até ao momento não fizemos a distinção dos vários tipos de vértices existentes. i Ru Li(u) j Rv Lj(v) min c(i,j) CMC Rk Caminho a seguir 1 9 97.8 2 19 153.1 97.8 67.7 165.5 9 {9,8,6,5,4,3,1,2} 13 9 151.1 14 19 160.0 151.1 23.8 174.9 9 {9,8,15,12,13,14} 15 9 40.9 16 19 127.8 40.9 109.9 150.8 9 {9,8,15,16} 15 9 40.9 17 19 100.1 40.9 95.5 136.4 9 {9,8,15,17} 24 19 125.4 26 51 161.9 125.4 60.0 185.4 19 {19,18,20,23,24,26} 30 19 62.0 38 51 97.1 62.0 44.8 106.8 19 {19,18,28,29,30,38} 31 19 77.4 32 51 82.7 77.4 22.1 99.5 19 {19,18,28,29,31,32} 39 19 77.7 41 51 69.7 69.7 15.8 85.5 51 {51,52,45,44.42,41,39} 40 19 105.5 53 51 102.5 102.5 31.5 137.0 19 {19,18,28,29,30,39,40,53} 69 19 216.8 68 83 218.7 216.8 43.8 260.6 19 {19,18,20,23,24,25,69,68} 56 51 145.9 65 83 158.4 145.9 82.2 228.1 51 {51,52,58,60,59,56,65} 63 51 124.4 65 83 158.4 124.4 45.3 169.7 51 {51,52,58,60,59,63,65} 64 51 150.8 67 83 110.1 110.1 61.4 171.5 83 {83,81,80,71,66,67,64} Tabela 3.1: Tabela que representa a solução para o problema da entrega especial a dois pontos pertencentes a regiões de abastecimento diferentes. Na penúltima coluna da direita está indicada a região de abastecimento que deve proceder ao mesmo e na coluna da direita está indicado o trajecto a seguir para proceder à entrega.
  • 51. CMC, Árvores e as Regiões de Abastecimento Todos os vértices do GI foram até agora considerados da mesma forma com a excepção dos vértices que representam os armazéns. Para continuar será necessário fazer alguma alterações à tabela 3.1, já que a natureza do nosso problema obriga-nos a olhar para alguns vértices de forma diferente. Ao construir o grafo GI foi necessário considerar certos pontos de passagem, uma vez que o seu “esquecimento” provocaria diferenças acentuadas e a respectiva adulteração dos resultados. Pelo que teremos de considerar as seguintes condições: i) Cada veículo não poderá fazer um número de entregas superior a 6. ii) Os vértices identificados no GI por λ têm dias de fixos de entrega. iii) Os vértices identificados no GI por ν são os Armazéns. iv) Os vértices identificados no GI por não têm dias fixos de entrega. v) Os vértices identificados no GI por são apenas locais de passagem. Quanto à restrição i) a sua razão de ser deve-se ao facto de no exemplo em estudo cada veículo não procede a mais do que 6 entregas, realizando em situações pontuais 6. As outras condições prendem-se com a construção do próprio grafo GI caso não as considerássemos iríamos cometer um grande erro. Desta forma o grafo GI, sofreria algumas alterações em relação ao apresentado na figura 1.3, por uma questão de simplicidade vamos utilizar a figura 3.5 e proceder então às alterações mencionadas uma vez que estas incidem apenas nos vértices, obtendo-se então o resultado que apresentamos na figura 3.6. As alterações a que procedemos serão de extrema importância no Capítulo IV.
  • 52. CMC, Árvores e as Regiões de Abastecimento Figura 3.6: Regiões de Abastecimento após as alterações que foram introduzidas e que estão directamente relacionadas com o objecto de estudo deste trabalho.
  • 53. CMC, Árvores e as Regiões de Abastecimento Regressando ao problema dos pontos críticos e à tabela 3.1 vamos apenas considerar os pares de pontos criticos em que ambos são locais de entrega obtendo-se a tabela 3.2, que será a mais indicada para proceder a uma análise dos resultados obtidos. Ao consultar a tabela 3.3 podemos então concluir que, se for necessário proceder a uma entrega, por exemplo nas lojas da Guarda (68) e da Covilhã (69), dever-se-á fazê-la a partir do armazém de Évora (19), já que a distância a percorrer será a menor em relação à outra opção que seria o armazém da Maia (83). i Ru Lu(i) j Rv Lv(j) min c(i,j) CMC Rk Caminho a seguir 1 9 97.8 2 19 153.1 97.8 67.7 165.5 9 {9,8,6,5,4,3,1,2} 13 9 151.1 14 19 160.0 151.1 23.8 174.9 9 {9,8,15,12,13,14} 30 19 62.0 38 51 97.1 62.0 44.8 106.8 19 {19,18,28,29,30,38} 40 19 105.5 53 51 102.5 102.5 31.5 137.0 19 {19,18,28,29,30,39,40,53} 69 19 216.8 68 83 218.7 216.8 43.8 260.6 19 {19,18,20,23,24,25,69,68} 56 51 145.9 65 83 158.4 145.9 82.2 228.1 51 {51,52,58,60,59,56,65} 63 51 124.4 65 83 158.4 124.4 45.3 169.7 51 {51,52,58,60,59,63,65} 64 51 150.8 67 83 110.1 110.1 61.4 171.5 83 {83,81,80,71,66,67,64} Tabela 3.2: Tabela que representa a solução para o problema da entrega especial a dois pontos pertencentes a regiões de abastecimento diferentes após a introdução de algumas condições de acordo com a especificidade do problema inicial deste trabalho. Na penúltima coluna da direita está indicada a região de abastecimento que deve proceder ao mesmo e na coluna da direita está indicado o trajecto a seguir para proceder à entrega. 3.8 Conclusões Embora não o tenhamos mencionado, tentámos resolver todo o problema de uma só vez . Na verdade no início utilizámos um outro conceito que, de acordo com a natureza do problema nos parecia ser o mais adequado. O conceito das SST - Árvore de Suporte de custo
  • 54. CMC, Árvores e as Regiões de Abastecimento mínimo - do qual falaremos no Capítulo IV, parecia-nos o mais acertado já que a distância entre cada loja seria a menor. Mas rapidamente obtemos os primeiros resultados desconcertantes. Como exemplo, vamos falar da loja situada em Beja, 17x : Apesar de se aplicar o mesmo princípio em relação à existência de quatro armazéns, inicialmente utilizámos o conceito das SST e com os valores obtidos, o vértice 17x pertenceria a 9R . Para abastecer a loja de Beja desde o armazém da Guia, 9x , seria necessário percorrer 136,4 Km, até aqui tudo bem mas comparando esta distãncia com a distância entre Beja e o armazém de Évora, verificaríamos que esta é inferior em 56,3 Km. Com este e outros resultados semelhantes foi necessário encontrar outra solução. O Algorítmo do Caminho Mais Curto garante-nos que a distância entre dois quaisquer vértices de um grafo é a menor. Apesar de não resolver o problema dos trajectos de entrega, o CMC juntamente com o algoritmo 3.3 garante, que um vértice pertencente a uma determinada região de abastecimento está mais perto do armazém pertencente a essa região, do que de qualquer outro armazém considerado. Desta forma garantimos que o espaço a percorrer, será o menor no caso da existência de 4 regiões de abastecimento. Possivelmente existirão outras soluções, provavelmente mais vantajosas mas a sua aplicação passaria pela alteração da estrutura do problema.
  • 55. SST, e os Trajectos de Entrega
  • 56. SST, e os Trajectos de Entrega 4.1 Árvores de Suporte Como sabemos uma empresa que faça a entrega de produtos não o faz apenas em situações pontuais, a maioria das suas entregas é periódica ou realiza-se várias vezes por mês ou até por semana, pelo que será do seu interesse possuir rotas de distribuição de modo que um qualquer veículo seu possa fazer mais do que uma ou duas entregas por dia, caso contrário não será muito produtivo. Olhando atentamente para este caso fará todo o sentido pensar que as distâncias entre os pontos de entrega sejam as menores de modo a que a distância total percorrida seja pequena e o número de entregas seja elevado. Para determinar essas rotas vamos utilizar o algoritmo da Árvore de Suporte de custo mínimo mas antes é necessário saber o que é uma árvore de suporte. Definição 4.1: Seja ( )AXG ,= um grafo não orientado tal que nX = , designamos por Árvore de Suporte de G o grafo parcial de G tal que pG , está nas condições do teorema 3.1. As árvores representadas nas figuras 3.1, 3.2, 3.3 e 3.4 são exemplos de árvores de suporte do grafo GI, na verdade quanto maior for o número de arestas de um grafo maior será o seu número de árvores de suporte. Consideremos a região de abastecimento da Guia (R9) presente na figura 4.1:
  • 57. SST, e os Trajectos de Entrega Será muito fácil cálcular todas as árvores de suporte do grafo representado na figura 4.1, como não poderemos ter circuitos e também não poderemos ter vértices isolados bastará considerar o único circuito existente, retirando uma aresta e obtendo-se uma das seis árvores de suporte existentes. Procedendo do mesmo modo, isto é, repondo a aresta retirada e retirando outra obteremos outra árvore de suporte, este processo está representado na figura 4.2 onde se encontram todas as Árvores de Suporte do grafo da figura 4.1 . Figura 4.1: Grafo representativo da Região de Abastecimento da Guia, R9 calculada no capítulo III, sem as condições de especificidade de cada vértice impostas também no capítulo III. Figura 4.2: Árvores de Suporte possíveis para o grafo da figura 4.1.
  • 58. SST, e os Trajectos de Entrega Fácilmente veríficamos que o número de árvores de suporte de um qualquer grafo depende do número de arestas que o mesmo possui estando assim também relacionado com a existência de circuitos. Surge-nos um problema se em estudo estiver um grafo com muitas arestas, utilizando o procedimento acima mencionado demorariamos muitas horas apenas para calcular as árvores de suporte e de seguida teriamos ainda de encontrar a árvore de custo mínimo, pelo que este não será o melhor caminho. O número total de árvores de suporte pode ser fácilmente calculado através do seguinte resultado: Teorema 4.1: Seja G um grafo conexo com matriz de adjacência A e matriz dos graus D, então o número de árvores de suporte de G é igual ao valor de qualquer co-factor da matriz D-A. Demonstração: Supunhamos que G tem n vértices ( )nxxx ,..., 21 e k arestas ( )kaa ,...1 . Como G é conexo, sabemos que k é no minimo 1−n . Seja B a matriz de incidência de G, como cada aresta de G é incidente com exactamente 2 vértices de G cada coluna de B tem 2 s'1 e 2−n zeros. Seja M a matrix kn × que resulta da alteração na matriz B, do primeiro 1 em cada coluna para 1− . Estamos a atribuir orientação a cada aresta.
  • 59. SST, e os Trajectos de Entrega Queremos provar que : A-DMMT = as entradas da matriz D-A são dadas por : ( ) ( ) ( )∉∧≠ ∈∧≠− = Ax Ax jixd j j i ,xjise0 ,xjise1 se i i quanto a T MM , as regras da multiplicação de matrizes dizem-nos que: [ ] [ ] [ ] [ ]( ) [ ] [ ] [ ]( )jkjjkiiiji , T ,2 T ,1 T ,2,1,, T M,...,M,MM,...,M,MMM ×= [ ] [ ] [ ]( ) [ ] [ ] [ ]( )kjjjkiii ,2,1,,2,1, M,...,M,MM,...,M,M ×= [ ] [ ] = = k r rjri 1 ,, MM Se i=j então para cada entrada da linha 1 diferente de zero adicionamos o valor 1, obtendo como resultado dessa soma o grau de cada vértice, ( )ixd . Se ( ) Axxji ji ∉∧≠ , as entradas quer nas colunas quer nas linhas são nulas pelo que o valor resultante é 0.
  • 60. SST, e os Trajectos de Entrega Se ( ) Axxji ji ∈∧≠ , a única coluna cujas linhas i e j dão diferentes de zero é a coluna correspondente à aresta ( )ji xx , . Provámos então que A-DMMT = . Seja H um subgrafo de G com n vértices e n-1 arestas. Seja p um inteiro qualquer entre 1 e n. M’ uma submatriz de M construida retirando a linha correspondente ao valor de p e a coluna correspondente às arestas de p em H. Se H for uma árvore então ( ) 1M'det = caso contrário ( ) 0M'det = . Supunhamos que H não é uma árvore, ao escolher um vértice, 1u , na “periferia” de H que não seja pv e digamos que 1a é a aresta de H que incide em 1u . Consideremos agora 1uH − e escolhemos um outro vértice 2u que se encontre na “periferia” de 1uH − no qual incide 2a . Se procedermos desta forma até restar o vértice pv criamos uma nova matriz M* fazendo cada linha i de M* a linha de M’ que corresponde ao vértice iu . Encontramos uma matriz triangular inferior cujo determinante terá o valo 1 ou –1, provámos então que: ( ) ( )M'det1*Mdet ==
  • 61. SST, e os Trajectos de Entrega Assim podemos investigar os co-factores de T MMA-D = . Como a soma das linhas e das colunas de T MM são zero os co-factores têm o mesmo valor, bastará olhar para um qualquer exemplo: Se 11 =∧= ji então estamos a retirar a 1º linha da matriz ( )AD − ou de T MM , o co-factor de ( )AD − é dado por: ( )( )( ) ( )( ) ( )T 11 T MMdet1|1MMdet1|1A-Ddet == Aplicando a fórmula de Cauchy-Binet que diz que o determinante acima descrito é a soma dos determinantes de ( ) ( )11 −×− nn submatrizes de 1M obtemos o valor total de árvores de suporte uma vez que provámos anteriormente que se a submatriz corresponde a uma árvore de suporte de G então seu determinante é 1. Vamos utilizar este resultado para calcular o número de árvores de suporte do grafo presente na figura 4.1. Para o poder fazer é necessário calcular a matriz de incidência da região de abastecimento da Guia e retirar de seguida uma das suas linhas. Vejamos:
  • 62. SST, e os Trajectos de Entrega = 0110000000000 0001000000000 0011100000000 0000110000000 0000011000000 0000001100000 1100000110000 1000000000000 0000000011000 0000000001100 0000000000110 0000000000011 0000000000001 15 13 12 11 10 9 8 7 6 5 4 3 1 M aaaaaaaa 13121110987654321 aaaaa retirando por exemplo a última linha, vamos obter a seguinte matriz 0M = 0 0 0 0 0 1 1 0 0 0 0 0 001000000000 011100000000 000110000000 000011000000 000001100000 100000110000 000000000000 000000011100 000000001100 000000000110 000000000011 000000000001 M0
  • 63. SST, e os Trajectos de Entrega aplicando o teorema 4.1 temos: 600 =T BB como já tinhamos calculado anteriormente. 4.2 Algoritmo de Prim Consideremos a região de abastecimento da Maia ( )83R que se encontra na figura 4.3. Se quisermos calcular trajectos para proceder à distribuição onde as distâncias entre os pontos de entrega são mínimas, parecerá razoável calcular todas as árvores de suporte e depois saber qual delas é a menor, uma vez que nos interessa que as distâncias sejam as menores. Aplicando o teorema 4.1, sabemos que o número total de árvores de suporte é bastante elevado logo de acordo com o processo descrito teríamos uma árdua tarefa. Terá que existir outra solução. Figura 4.3: Região de Abastecimento da Maia, R83.
  • 64. SST, e os Trajectos de Entrega Será que é possível calcular uma árvore de suporte em que as distâncias entre os vértices são mínimas? Sem dúvida, primeiro definimos a raiz da nossa árvore, tomando como exemplo o grafo presente na figura 4.3. Interessa-nos obviamente que a nossa raiz seja o vértice 83. Partindo do vértice 83 vamos colorir o grafo à medida que vamos avançando: o conjunto de correspondência do vértice 83 é ( ) { }88,84,82,8183 =Γ , existindo desta forma 4 arestas ( ) ( ) ( ) ( )83,88e83,84,83,82,81,83 com os respectivos pesos associados 13.6 Km, 11.5 Km, 22.4 Km e 30.7 Km. Vamos escolher a aresta de menor valor e colori-la, de seguida calculamos o conjunto correspondência do vértice final da aresta escolhida, caso existam vértices em comum aos conjuntos de correspondência já calculados teremos que encontrar o seu mínimo, procederíamos desta forma até não existir nenhum vértice isolado. Tal como no capítulo III existem algoritmos que tornam muito mais fácil a nossa tarefa. Um desses algoritmos é o Algoritmo de Prim que determina a árvore de suporte de custo mínimo (SST). Algoritmo 4.1: Algoritmo de Prim. Seja ( )AXG ,= um grafo ponderado e ijc o custo associado a cada aresta ( )ji, . A SST de G é obtida através do seguinte procedimento: Passo 1: Definimos rx como a raiz da nossa árvore pretendida T, tal que { } ∅=∧= rrr AxT .
  • 65. SST, e os Trajectos de Entrega Passo 2: Para todo o rj Tx ∈ encontrar um vértice rj T∈α tal que: ( ) ( )[ ] jji Tx jj xxcminxc rj βα == ∈ ,, e etiquetemos jx como [ ]jj βα , . Se nenhum vértice jα existir, i.é. se ( ) ∅=∩Γ rj Tx designamos jx como ( )∞,0 . Passo 3: Escolher o vértice * j x tal que [ ]j Txj rj min ββ ∉ =* . Actualize { } ( ){ }*** ,, jjrrjrr xAAxTT α∪=∪= . Se nTr = pare, as arestas rA formam a SST, caso contrário vá para o passo 4. Passo 4: Para todo o rj Tx ∉ e ( )* jj xx Γ actualize as etiquetas da seguinte forma: Se ( )jjj xxc ,*>β faça ( ) ** ,, jjjjj xxxc == αβ e volte a 3. Se ( )jjj xxc ,*≤β vá para 3. Para uma melhor compreensão deste algoritmo vamos realizar o seguinte exercício. Exercício 4.1: Calculemos a SST associada a 83R (Região de Abastecimento da Maia) recorrendo ao algoritmo 4.1, onde a raiz da árvore pretendida será o vértice 83 que representa o armazém da Maia.
  • 66. SST, e os Trajectos de Entrega Recordemos que: { },90,89,88,87,86,85,84,83,82,81,80,79,78,77,76,75,74,73,72,71,70,68,67,66,6583 =R Passo 1: Seja 83=rx , então { } ∅==∧== 8383 83 AATT rr Passo 2: ( ) { }88,84,82,8183 =Γ pelo que [ ]6,13;8381= [ ]5,11;8382 = [ ]4,22;8384 = [ ]7,30;8388 = Passo 3: O menor jβ é 5,1182 =β , como 8382 =α adicionamos a ligação ( ) ( )82,83, =jj xα . De seguida actualizamos o conjunto { } { } { }82,83828383 =∪=T e ( ){ }82,8383 =A . Como 8383 252 RT =≠= seguimos para o passo 4: Passo 4: ( ) 83818281 T∉∧Γ∈ logo 81: ( ) ( ) [ ]7,11;82817,1181,826,1381 =−=>= etiquetaasealteracβ , como ( )8284 Γ∉88e as suas etiquetas mantêm-se assim como todas as outras etiquetas são ( )∞;0 , temos então: [ ]7,11;8281= [ ]4,22;8384 = [ ]7,30;8388 = , volta-se a 3
  • 67. SST, e os Trajectos de Entrega Passo 3: O menor jβ é 7,1181 =β , como 8281 =α adicionamos a ligação ( )81,82 . De seguida actualizamos o conjunto : { } { } { }81,82,838182,8383 =∪=T e ( ) ( ){ }81,82,82,8383 =A . Como 8383 253 RT =≠= seguimos para o passo 4: Passo 4: : ( ) 838079818079 Tee ∉∧Γ∈ logo 79: ( ) ( ) [ ]33;81793379,8179 =−=>∞= etiquetaasealteracβ , 80: ( ) ( ) [ ]8,1;81808,180,8180 =−=>∞= etiquetaasealteracβ , como ( )8184 Γ∉88e as suas etiquetas mantêm-se assim como todas as outras etiquetas são ( )∞;0 , temos então: [ ]33;8179 = [ ]8,1;8180 = [ ]4,22;8384 = [ ]7,30;8388 = , volta-se a 3 Passo 3: o menor jβ é 8,180 =β , como 8180 =α adicionamos a ligação ( )80,81 . De seguida actualizamos o conjunto: { } { } { }80,81,82,838081,82,8383 =∪=T e ( ) ( ) ( ){ }80,81,81,82,82,8383 =A . Como 8383 254 RT =≠= seguimos para o passo 4: Passo 4: : ( ) 83718071 T∉∧Γ∈ logo
  • 68. SST, e os Trajectos de Entrega 71: ( ) ( ) [ ]1,53;80711,5371,8071 =−=>∞= etiquetaasealteracβ como ( )8184,79 Γ∉88e as suas etiquetas mantêm-se assim como todas as outras etiquetas são ( )∞;0 , temos então: [ ]33;8179 = [ ]1,53;8071 = [ ]4,22;8384 = [ ]7,30;8388 = , volta-se a 3 Passo 3: : o menor jβ é 4,2284 =β , como 8384 =α adicionamos a ligação ( )84,83 . De seguida actualizamos o conjunto: { } { } { }84,80,81,82,838480,81,82,8383 =∪=T e ( ) ( ) ( ) ( ){ }84,83,80,81,81,82,82,8383 =A . Como 8383 255 RT =≠= seguimos para o passo 4: Para obter a SST associada a 83R teríamos que continuar este processo até 8383 2525 RT === , obtendo-se como resultado final: { }68,65,75,90,74,73,76,67,66,72,70,71,77,78,79,89,87,88,86,85,84,80,81,82,8383 =T e ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ){ }∪= 89,87,87,88,88,83,86,85,85,84,84,83,80,81,81,82,82,8383A ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ){ }∪∪ 76,77,67,66,66,70,72,71,70,71,71,80,77,78,78,79,81,79 ( ) ( ) ( ) ( ) ( ) ( ){ }68,90,65,66,75,77,90,66,74,73,76,73∪
  • 69. SST, e os Trajectos de Entrega Figura 4.4: SST´s das Regiões de Abastecimento consideradas..
  • 70. SST, e os Trajectos de Entrega Calculámos a SST apenas para a região de abastecimento da Maia, 83R aplicando o mesmo algoritmo mas agora às regiões de abastecimento de Torres Vedras, Guia e Évora respectivamente 51R , 9R e 19R obteremos, juntamente com a SST calculada no exercício anterior, as quatro SST pretendidas para poder determinar as rotas de distribuição, que estão representadas na figura 4.4 . 4.3 Zonas de entrega Calculadas que estão as SST e utilizando as condições impostas ao grafo GI no Capítulo III podemos tentar encontrar os trajectos de entrega pretendidos. Utilizando como pontos de referencia os vários ramos das SST já calculadas, uma vez que as mesmas nos dão trajectos em que as distâncias entre os vários vértices são as menores, obtemos um primeiro esboço do pretendido. Este primeiro passo será o mais fácil de realizar uma vez que a construção da própria SST facilita o nosso trabalho, será no entanto necessário recorrer às árvores calculadas pelo CMC, para decidir casos onde a dúvida persista. Obtém-se assim os seguintes subgrafos do grafo GI que identificaremos por kZ (Zona k): Em relação à Região de Abastecimento de Torres Vedras, 51R : { },38,37,36,35,34,33,321 =Z { }50,49,48,47,46,432 =Z { }58,52,51,45,44,42,413 =Z { }57,56,55,54,53,264 =Z
  • 71. SST, e os Trajectos de Entrega { }64,63,62,61,60,595 =Z Estes subgrafos foram obtidos consultando apenas a SST resultante de 51R , mas surgem alguns problemas, por exemplo em 3Z temos um vértice pendente que não será muito vantajoso em termos de distribuição, temos também o caso do vértice 60 que pertence a 5P mas também poderia pertencer a 4Z , assim como o vértice 43 que poderia pertencer a 3P em vez de pertencer a 2Z . No entanto, não podemos fazer estas alterações sem uma justificação plausível. Vejamos a árvore resultante da aplicação do CMC ao grafo GI presente na figura 3.1: No caso do vértice 60 fará todo o sentido colocá-lo em 4Z já que o caminho mais curto para o vértice 54, passa por 60 não havendo assim perca de tempo. Sendo esta alteração apoiada pelo facto de podermos colocar o vértice 58 em 5Z já que o caminho mais curto para 61 passa por 58 e pelo facto da SST indicar que para ir para 59 o melhor trajecto será passar por 61 e 62. Falta apenas resolver o caso do vértice 43, optámos por colocá-lo em 1Z porque os vértices 43 e 44 são adjacentes e porque o ( ) ( )44,4543,45 cc = e porque 1Z tinha apenas 4 locais de entrega. Assim obtemos as seguintes zonas de entrega definitivas para 51R : { },38,37,36,35,34,33,321 =Z { }50,49,48,47,462 =Z { }52,51,45,44,43,42,413 =Z { }60,57,56,55,54,53,264 =Z { }64,63,62,61,59,585 =Z
  • 72. SST, e os Trajectos de Entrega Utilizando os mesmos critérios vamos obter os seguintes subgrafos para as outras regiões de abastecimento: Região de Abastecimento da Guia, 9R : { }15,13,12,11,10,9,8,76 =Z { }6,5,4,3,17 =Z Região de Abastecimento da Maia, 83R : { }90,70,68,67,66,658 =Z { }78,77,76,75,74,739 =Z { }89,88,87,86.85.84,8310 =Z { }79,82,81,80,72,7111 =Z Região de Abastecimento de Évora, 19R { }69,25,24,23,21,2012 =Z { }40,39,30,29,28,27,19,1813 =Z { }31,22,17,16,14,214 =Z
  • 73. SST, e os Trajectos de Entrega Figura4.5: 'kZ s resultantes das restrições acima anteriormente consideradas.
  • 74. SST, e os Trajectos de Entrega 4.4 Trajectos de entrega Encontrados os subgrafos, figura 4.5, respeitantes a cada veículo falta determinar qual a morfologia do trajecto isto é, qual a ordem de entrega, se será mais vantajoso percorrer um determinado circuito ou se será preferível voltar pelo mesmo caminho para proceder à entrega seguinte. Para a maioria dos subgrafos kZ será muito fácil determinar a morfologia do trajecto, kP porque o grafo GI tem poucas arestas e consequentemente poucos circuitos, logo não existirão muitos trajectos alternativos. Nesta parte da análise é importantíssimo ter em conta as restrições ii e v. Consideremos 6Z presente na figura 4.6, vamos assumir que um motorista não leva o seu veículo para casa pelo que no fim de cada distribuição tem que regressar ao seu armazém para deixar o veículo. Em relação ao exemplo considerado temos duas situações possíveis: Figura 4.6: Zona de Entrega 6Z .
  • 75. SST, e os Trajectos de Entrega a) Procede à entrega de acordo com a sequência { } ( ) Kml aa 7.3369,8,7,8,9,10,11,12,13,12,11,10,9 =∧= µµ . b) Procede à entrega de acordo com a sequência { } ( ) Kmul bb 1.3169,8,7,8,15,12,13,12,11,10,9 =∧=µ . De acordo com o critério por nós considerado durante este trabalho vamos optar pela menor sequência, neste caso a sequência b) porque a distância a percorrer é menor do que na opção a). Neste caso compensa percorrer um circuito mas poderão existir casos em que isso não seja vantajoso ou mesmo em que o circuito não existe. Vamos agora considerar o subgrafo 9Z presente na figura 4.7 como exemplo: Neste caso o vértice que representa o armazém da região a que pertence 9Z , não pertence a 9Z sendo assim necessário determinar qual o vértice pertencente a 9Z que está mais próximo do “armazém” para de seguida fazer uma análise semelhante à análise realizada em 6Z . Consultando a árvore resultante da aplicação do CMC e considerando o vértice 83 como a sua Figura 4.7: Zona de Entrega 9Z .
  • 76. SST, e os Trajectos de Entrega raiz, facilmente verificamos que o vértice 78 é o mais próximo do vértice 83. Agora bastará considerar os caminhos possíveis e encontrar o menor deles. a) Procede à entrega de acordo com a sequência { }78,77,75,74,73,76,77,78=aµ , que é igual à sequência { }78,77,76,73,74,75,77,78 , com Kma 2,364=µ b) Procede à entrega de acordo com a sequência { }78,77,75,74,75,77,76,77,78=bµ , que é igual à sequência { }78,77,76,77,75,74,75,77,78 , com Kmb 4,520=µ . Obviamente que neste caso vamos optar pelo caminho aµ . Na tabela 4.1 encontram-se os trajectos de entrega para a Região de Abastecimento da Maia. Procedendo de modo idêntico para os restantes subgrafos kP vamos obter os caminhos a percorrer pelas viaturas que irão proceder à entrega da mercadoria nos pontos de entrega considerados. Os resultados obtidos estão presentes nas tabelas 4.1, 4.2, 4.3 e 4.4. Zk Caminho até ao subgrafo Zk. µµµµ Caminhos possíveis l(µµµµ) Km µµµµ ideal a {9,10,11,12,13,12,11,10,9,8,7,8,9} 336.7 b {9,10,11,12,13,12,15,8,7,8,9} 316.16 c {9,8,7,8,15,12,13,12,11,10,9} 316.1 b ou c 7 {9,8,6} a {9,8,6,5,4,3,1,2,3,4,5,6,8,9} 195.6 a Tabela 4.1: Trajectos de entrega referentes à Região de Abastecimento da Guia, R9.
  • 77. SST, e os Trajectos de Entrega Zk Caminho até ao subgrafo Zk. µµµµ Caminhos possíveis l(µµµµ) Km µµµµ ideal a {83,81,80,71,70,66,67,66,65,68,90,66,70,71}∪ ∪{80,81,83} 570.1 b {83,81,80,71,70,66,90,68,65,66,67,66,70,71}∪ ∪{80,81,83} 570.1 c {83,81,80,71,70,66,67,66,65,68,90,66,71,80}∪ ∪{81,83} 564.5 d {83,81,80,71,66,90,68,65,66,67,66,70,71,80}∪ ∪{81,83} 564.5 e {83,81,80,71,70,66,67,66,65,66,90,68,90,66}∪ ∪{71,80,81,83} 600.4 f {83,81,80,71,66,90,68,90,66,65,66,67,66,70}∪ ∪{71,80,81,83} 600.4 g {83,81,80,71,70,66,67,66,65,66,90,68,90,66}∪ ∪{70,71,80,81,83} 606.0 h {83,81,80,71,70,66,90,68,90,66,65,66,67,66}∪ ∪{70,71,80,81,83} 606.0 i {83,81,80,71,70,66,67,66,65,90,68,90,66,70}∪ ∪{71,80,81,83} 606.2 j {83,81,80,71,70,66,90,68,90,65,66,67,66,70}∪ ∪{71,80,81,83} 606.2 k {83,81,80,71,70,66,67,66,65,90,68,90,66,70}∪ ∪{80,81,83} 600.6 8 {83,81,80,71,70} l {83,81,80,70,66,90,68,90,65,66,67,66,70,71}∪ ∪{80,81,83} 600.6 c ou d a {83,81,79,78,77,76,73,74,75,77,78,79,81,83} 513.4 b b{83,81,79,78,77,75,74,73,76,77,78,79,81,83} 513.4 c {83,81,79,78,77,76,77,75,74,75,77,78,79,81,83} 669.6 9 {83,81,79,78} d {83,81,79,78,77,75,74,75,77,76,77,78,79,81,83} 669.6 a ou b a {83,84,85,86,87,89,88,83} 196.9 b {83,88,89,87,86,85,84,83} 196.0 c {83,84,85,86,87,88,89,88,83} 221.6 d {83,88,89,88,87,86,85,84,83} 221.6 e {83,88,87,89,87,86,85,84,83} 209.6 10 f {83,84,85,86,87,89,87,88,83} 209.6 a ou b a {83,82,81,79,81,80,71,72,71,80,81,82,83} 241.0 b {83,82,81,79,81,80,71,72,71,80,81,83} 231.411 {83,82} c {86,81,80,71,72,71,80,81,79,81,82,83} 231.4 B ou c Tabela 4.2: Trajectos de entrega referentes à Região de Abastecimento da Maia, R83.
  • 78. SST, e os Trajectos de Entrega Zk Caminho até ao subgrafo Pk. µ Caminhos possíveis l(µ) Km µ ideal a {19,18,20,21,20,23,24,25,69,25,24,23,20,18,19} 486.0 12 {19,18,20} b {19,18,20,23,24,25,69,25,24,23,20,21,20,18,19} 486.0 a ou b a {19,18,28,27,28,30,39,40,39,30,28,18,19} 261.4 b {19,18,28,30,39,40,39,30,28,27,28,18,19} 261.4 c {19,18,28,27,28,29,30,39,40,39,30,28,18,19} 259.3 d {19,18,28,30,39,40,39,30,29,28,27,28,18,19} 259.3 13 e {19,18,28,27,28,29,30,39,40,39,30,29,28,18,19} 257.8 e a {19,18,17,2,17,16,14,16,22,16,17,18,19} 516.8 b {19,18,17,2,17,16,14,16,22,31,29,28,18,18} 453.2{19,18,17} c {19,18,17,16,22,16,14,16,17,2,17,18,19} 516.8 d {19,18,28,29,31,22,16,14,16,17,2,17,16,22}∪ ∪{31,29,28,18,19} 575.8 14 {19,18,28,29,31} e {19,18,28,29,31,22,16,14,16,17,2,17,18,19} 453.2 b ou e Tabela 4.3: Trajectos de entrega referentes à Região de Abastecimento de Évora, R19. Zk Caminho até ao subgrafo Pk. µ Caminhos possíveis l(µ) Km µ ideal 1 {51,52,45,43,36} a {51,52,45,43,36,35,34,37,38,37,34,32,33,32}∪ ∪{34,35,3643,45,52,51} 237.8 a a {51,52,45,50,49,48,46,47,46,48,49,50,45,52,51} 201.8 b {51,52,45,50,49,48,46,47,46,50,45,52,51} 169.92 {51,52,45,50} c {51,52,45,50,46,47,46,48,49,50,45,52,51} 169.9 b ou c a {51,52,45,43,44,42,41,42,44,45,52,51} 166.4 b {51,52,45,44,42,41,42,44,43,45,52,51} 166.4 c {51,52,45,43,45,44,42,41,42,44,45,52,51} 174.4 3 d {51,52,45,43,44,42,41,42,44,43,45,52,51} 191.4 a ou b 4 {51,52,58,60} a {51,52,58,60,54,53,54,57,55,26,55,56,55,57}∪ ∪{54,60,58,52,51} 368.2 a a {51,52,58,61,62,59,64,59,63,59,62,61,58,52,51} 386.6 b {51,52,58,61,62,59,64,59,63,59,60,58,52,51} 362.15 {51,52,58} c {51,52,58,60,59,63,59,64,59,62,61,58,52,51} 362.1 b ou c Tabela 4.4: Trajectos de entrega referentes à Região de Abastecimento de Torres Vedras, R51.
  • 79. SST, e os Trajectos de Entrega 4.5 Conclusões Ao analisar o GI, figura 1.3, verificamos que o grafo considerado não é muito denso, a maioria dos vértices possui 3 ou 4 arestas e as árvores resultantes da aplicação do CMC ao GI, possuem poucas ramificações pelo que a solução apresenta-se como evidente, mas perante um grafo com o dobro ou o triplo das arestas seria muito complicado realizar uma distribuição eficaz e sem a repetição desnecessária de alguns percursos. A solução para este problema passa pela utilização da SST. A estrutura de uma SST é muito diferente da estrutura de uma árvore resultante da aplicação do CMC. Ao utilizar uma SST como base de decisão, garante-se que a distância entre os vértices de um determinado “ramo” da árvore é a menor, eliminando-se a possibilidade de repetir percursos quando o mesmo se apresenta desvantajoso. A utilização do CMC permite determinar regiões para as quais, o custo entre o vértice inicial e os diversos vértices finais é o menor.
  • 81. Conclusão Conclusão No começo deste trabalho, pensou-se que a aplicação do conceito das SST bastaria para encontrar algumas respostas, na verdade e como vimos tal não aconteceu. As características particulares deste problema obrigaram, à sua divisão em duas partes. A primeira parte, relacionada com uma perspectiva global, onde era necessário encontrar uma solução que permitisse a co-existência dos quatros pontos de distribuição. A utilização do CMC em conjunto com as especificidades do problema, determinou a criação de quatro regiões de abastecimento distintas, apresentando também uma solução para casos particulares. Na segunda parte, relacionada com uma perspectiva regional, optou-se pela aplicação das SST, que e de acordo com as suas características se revelou como o mais correcto. Como na primeira parte as soluções não se basearam única e exclusivamente num único conceito, na verdade a natureza do problema obrigou a uma conjugação para se atingir resultados fiáveis. As árvores, tradicionalmente aplicadas para a construção de gasodutos e de estradas, revelaram-se como um instrumento muito útil para a resolução deste problema. De relaçar também a utilização de dois conceitos diferentes (caminhos e árvores) para a resolução de um problema.
  • 83. Bibliografia Bibliografia Harris, J. M., Hirst, J.L. e Mossingoff, M. J. (2000), Combinatorics and Graph Theory , Springer. Minieka, E. (1978), Optimization Algorithms for Networks and Graphs. Christofidis (1975), Graphs an Algoritmic Aproach, Wiley. Goldbarg, M. C. e Luna, H. P. L. (2000), Optimização Combinatória e Programação Linear, Editora Campus. Hillier, F. S. Lieberman, G. J. (1995), Introduction to Operations Research, McGraw-Hill.
  • 84. Suporte Informático Aplicação Informática de Suporte 1. Objectivo: Resultante da natureza dos algoritmos necessários a este trabalho, foi necessário construir uma aplicação informática de suporte que efectuasse, de uma forma rápida, os cálculos necessários e que a informação resultante, fosse de fácil interpretação e análise. 2. Arquitectura e Linguagem: A aplicação foi desenvolvida em Visual Basic (VB6) e em Visual Basic for Aplications (VBA) da Microsoft. É uma aplicação Stand Alone, que poderá também funcionar como uma aplicação do tipo Client - Server. 3. Descrição e Potencial: A aplicação lê uma Matriz de Custos que esteja armazenada numa folha de Excel 2000, armazenando-a numa variável global, mais precisamente, um array bi- dimensional para que a mesma esteja disponível em toda a aplicação. Ao criar esta aplicação, houve a preocupação de a tornar o mais versátil possivel. Para além de resolver o caso particular que abordamos neste trabalho, também permite a aplicação dos algoritmos de Dijkstra (Algoritmo 3.1) e Prim
  • 85. Suporte Informático (Algoritmo 4.1) para qualquer matriz de custo, que esteja de acordo com as definições dos mesmos. Assim, é possivel determinar o Caminho Mais Curto entre quaisquer dois vértices, a Árvore de Caminhos Mais Curtos e a Árvore de Custo Minimo. Permite também, visualizar o grafo associado à Matriz de Custos em causa. Para isso bastará que a informação em termos de disposição cartesiana seja introduzida no ficheiro de Excel, sendo desta forma possível visualizar, por exemplo, o caminho mais curto resultante da aplicação do algoritmo de Dijsktra. Regressando ao caso particular, a aplicação desenvolvida determina as Regiões de Abastecimento, de acordo com o ponto 3.6 do Capitulo III, permitindo também determinar as Regiões de Abastecimento, utilizando o algoritmo de Prim. Esta opção resulta de todo o percurso percorrido durante a elaboração deste trabalho, sendo possível comparar os resultados obtidos pelos dois algoritmos. Para facilitar esta comparação, é possível construir um gráfico tridimensional, o qual compara para cada vértice, o custo associado a um determinado armazém, de acordo com o algoritmo escolhido. Permite também, guardar as matrizes de custos associadas a cada região, de forma que seja possível determinar as Zonas de Suporte de acordo com o Capitulo I.