Académique Documents
Professionnel Documents
Culture Documents
Ol, caro aluno! Nesta nossa terceira aula, veremos conceitos relativos forma com que um grafo pode ser percorrido. Se dois vrtices so adjacentes, podemos passar de um vrtice a outro. Repetindo esta operao, podemos alcanar diversos vrtices do grafo, de vrias formas diferentes. Estas operaes resultam em importantes conceitos como caminho, distncia e conexidade.
Podemos ver na figura 1 um exemplo de passeio. Partindo-se do vrtice a, so percorridas as arestas ab, be e ec. Este passeio pode ser denotado pela sequncia de vrtices percorridos, indicando a sua adjacncia: a~b~e~c. Este passeio possui comprimento trs, j que trs arestas foram percorridas.
importante observar que no existem restries para passeios. Qualquer sequncia de vrtices adjacentes define um passeio, podendo vrtices serem repetidos, ou arestas percorridas mais de uma vez. No grafo da figura 1, a sequncia de vrtices a~b~e~c~b~e~d tambm um passeio de forma correta. Alguns passeios possuem caractersticas especiais. Quando no estamos mais passeando, mas em um caminho com o objetivo de chegar a um destino especfico, no faz sentido que passemos mais de uma vez pelo mesmo lugar. De forma semelhante, quando definimos um caminho entre dois vrtices de um grafo, no permitido que vrtices sejam repetidos. Scheinerman (2006, p.404) aproveita a definio de passeio para definir um caminho da seguinte forma.
Definio: (Caminho) Um caminho em um grafo um passeio em que nenhum vrtice repetido Temos, portanto, que a definio de caminho mais restrita que a definio de passeio. Assim, todo caminho um passeio, mas nem todo passeio um caminho. O passeio apresentado no grafo da figura 1 tambm um caminho, enquanto o passeio a~b~e~c~b~e~d repete os vrtices b e e, e portanto no um caminho. Um grafo especial que possui um nico caminho que passe por todos os seus vrtices e arestas chamado de grafo de um caminho (Pn) (SCHEINERMAN, 2006), em que n a quantidade de vrtices do grafo. Podemos ver um exemplo de um P4 na figura 2.
Sempre que existir ao menos um caminho entre dois vrtices, diremos que estes esto ligados. Se todos os vrtices de um grafo so ligados, dois a dois, este grafo um grafo conexo. Se isto no ocorrer, este ser um grafo desconexo. A ligao entre dois vrtices uma relao reflexiva, simtrica e transitiva. Reflexiva, pois um vrtice v sempre ligado a ele mesmo atravs do caminho v. Simtrica, pois de existe o caminho v~u~w que liga os vrtices v e w, ento tambm existe o caminho w~u~v que liga os vrtices w e v. Por fim transitiva, pois se v ligado a w por v~u~w e w ligado a y por w~x~y, ento v ligado a y pelo caminho v~u~w~x~y. Se um vrtice u do caminho entre v e w se repetir no caminho entre w e y, ento o caminho entre v e y ser: v~...~u~...~y (SCHEINERMAN, 2006). Outro tipo especial de passeio a trilha. Em uma trilha, da mesma forma que o significado comum desta palavra, tem-se uma sequncia de vrtices levando de um vrtice de partida at um vrtice de chegada. Em uma trilha no permitida a travessia de cada aresta mais de uma vez, no entanto pode-se passar pelo mesmo vrtice diversas vezes. Portanto, uma trilha um passeio em que todas as arestas percorridas so distintas (BONDY, 1982). fcil constatar que uma trilha um caso particular de passeio, no entanto existe uma relao interessante entre trilhas e caminhos. Como para se atravessar uma aresta mais de uma vez, claramente tambm preciso passar novamente pelos vrtices que so seus extremos, tem-se que todo caminho um caso particular de trilha. Podemos estabelecer a seguinte relao: Todo caminho uma trilha e toda trilha um passeio.
CICLOS E CIRCUITOS
Um passeio em que o vrtice de chegada o mesmo vrtice de partida chamado de passeio fechado. Se o passeio em questo for uma trilha, ento ele ser chamado de ciclo. Se este passeio for um caminho, ento ele ser chamado de circuito. As noes de ciclos e circuitos so frequentemente utilizadas na representao de problemas atravs de grafos. Podemos nos recordar do problema das sete pontes de Knigsberg. Nele, era preciso atravessar as sete pontes da cidade sem atravessar a mesma ponte mais de uma vez, e retornar ao ponto de partida. Podemos ver claramente que modelando o problema utilizando um grafo como fez Euler (lembra-se da nossa aula 1?), este resume-se a
encontrar um ciclo que passe por todas as arestas do grafo. Em homenagem a Euler, um ciclo que percorre todas as arestas de um grafo chamado de ciclos euleriano. Em contrapartida, os circuitos que passam por todos os vrtices de um grafo so chamados de circuitos hamiltonianos, em homenagem ao matemtico irlands William Rowan Hamilton.
Figura 3 - Grafo com um circuito hamiltoniano em um dodecaedro Fonte: Hamiltonian (2010, s.p.)
Para se saber se existe um ciclo euleriano em um grafo, basta aplicar a mesma idia de Euler sobre o problema das sete pontes de Knigsberg, e verificar se existem vrtices de grau mpar. No entanto, ainda no existem algoritmos eficientes para saber se existem circuitos hamiltonianos em um grafo (GERSTING, 2004). Todos os mtodos adotados tm por base a tentativa e o erro, o que faz com que a quantidade caminhos testados seja muito grande para grafos com muitos vrtices, tornando esta estratgia invivel.
A informao sobre todas as distncias entre quaisquer dois vrtices de um grafo pode ser organizada em uma matriz de distncias, em que cada posio da matriz possui a distncia entre o vrtice relativo linha e o vrtice relativo coluna da matriz. A menor distncia entre dois vrtices pode ser encontrada atravs de alguns algoritmos, entre eles o algoritmo de Dijkstra, que ser visto na prxima seo. A matriz de distncias pode ser utilizada na soluo de vrios importantes problemas modelados atravs de grafos, como o problema do caixeiro viajante, no qual se deve descobrir o circuito hamiltoniano de menor peso, e o problema do carteiro chins, que consiste em encontrar o passeio euleriano fechado de menor peso.
O algoritmo de Dijkstra (algoritmo 01) tem como entrada um grafo com pesos (linhas 01-04) e trabalha separando o conjunto de vrtices em dois subconjuntos: um subconjunto Fechado e um subconjunto Aberto. No conjunto fechado esto os vrtices para os quais j se conhece um caminho mnimo, e no conjunto aberto esto os vrtices para os quais ainda no se conhece um caminho mnimo. Sabemos que a distncia do vrtice inicial (v1) para si prprio zero (linha 05), enquanto as distncias de todos os demais vrtices ao vrtice inicial so consideradas provisoriamente infinitas (linha 06). Assim, o conjunto Fechado iniciado contendo apenas v1 (linha 07), enquanto todos os demais vrtices esto no conjunto Aberto (linha 08). Em cada iterao, ser conhecido um caminho mnimo para um vrtice do subconjunto aberto, e este vrtice ser transferido para o subconjunto fechado. Quando o subconjunto aberto estiver vazio, o algoritmo encerrado (linha 09). A cada novo vrtice vk inserido no conjunto fechado, comparada a distncia de cada um dos seus vrtices adjacentes vj at o vrtice inicial, passando por vk (linhas 10 e 11). Se o caminho que passa por vk for mais curto, esta ser a nova distncia provisria at vj e esta ser guardada na varivel D1j (linha 13), assim como a informao de que
vk o vrtice anterior a vi no menor caminho provisrio entre v1 e vi (linha 14). Em seguida, ser selecionado o vrtice vk com o menor caminho provisrio (linha 15), e este ser transferido do subconjunto Aberto para o subconjunto Fechado (linhas 16 e 17). A aresta entre vk e o vrtice anterior a ele so inseridas no conjunto de arestas do grfico de menor caminho (linha 18) que a resposta do algoritmo (linha 19) (DIJKSTRA, 1959).
01) V : Conjunto de n vrtices 02) A : Conjunto de arestas 03) d ij : Peso da aresta que liga vi e v j 04) G = {V , A} 05) D11 0 06) D1i +, para i = 2,L , n 07) Fechado {v1 } 08) Aberto V {v1 } 09) Enquanto V {}, faa : 10) Para toda aresta (v k , vi ) A, faa : 11) 12) 13) 14) 15) 16) 17) 18) T min( D1i , D1k + d ki ) se T < D1i ento D1i T anteriori v k v k {vi | D1i = min ( D1 j )}
v j Aberto
19) Retorne G 2 = {V , E}
Algoritmo 01- Algoritmo de Dijkstra Fonte: Adaptado de Dijkstra (1959, p.270)
Note que estaro sendo encontrados caminhos mnimos partindo de um vrtice inicial, para todos os demais vrtices ligados a ele. Se a inteno for encontrar o menor caminho at um vrtice especfico, o algoritmo poder ser encerrado quando este vrtice for transferido para o conjunto Fechado. Como exemplo da aplicao do algoritmo em questo, vejamos o grafo da figura 05, em que so apresentados os menores caminhos encontrados pelo algoritmo de Dijkstra, partindo do vrtice a.
Inicialmente, o subconjunto Fechado formado exclusivamente pelo vrtice va, sendo os demais pertencentes ao subconjunto Aberto. Ao calcularmos as distncias provisrias para os vrtices vb, vd e ve (vrtices pertencentes ao subconjunto Aberto e que so adjacentes ao vrtice va), encontramos:
Dab = min( Dab , Daa + d ab ) = min(+,0 + 4) = 4 Dad = min( Dad , Daa + d ad ) = min(+,0 + 2) = 2 Dae = min( Dae , Daa + d ae ) = min(+,0 + 1) = 1
As demais distncias ficam provisoriamente como infinitas. Entre todas as distncias provisrias, a menor Dae=1. Assim, ve transferido do subconjunto Aberto para o subconjunto Fechado, a aresta (va,ve) includa no conjunto de arestas do grafo de menor caminho, e termina a primeira iterao. Na segunda iterao, so calculadas as novas distncias provisrias para os vrtices adjacentes a ve e que pertencem ao subconjunto Aberto:
Dab = min( Dab , Daa + d ab ) = min(4,1 + 2) = 3 Daf = min( Daf , Daa + d af ) = min(+,1 + 3) = 4
Observe que a distncia provisria entre va e vb era igual a quatro na primeira iterao, e aps a segunda iterao foi reduzida para trs. Aps serem calculadas as novas distncias provisrias, percebemos que vd o vrtice com a menor distncia provisria para va. Assim, vd transferido do subconjunto Aberto para o subconjunto Fechado. Na terceira iterao, calculamos as novas distncias provisrias dos vrtices do subconjunto Aberto e que so adjacentes a vd:
Dac = min( Dac , Dad + d dc ) = min(+,2 + 4) = 6 Daf = min( Daf , Dad + d df ) = min(4,2 + 3) = 4
Podemos observar que a distncia provisria entre va e vf no se alterou, j que o caminho va~ve~vf (comprimento igual a quatro) mais curto que o caminho va~vd~vf (comprimento igual a cinco). Aps os novos clculos, vemos que vb possui a menor distncia provisria para va, e com isso ele ser
transferido do subconjunto Aberto para o subconjunto Fechado. Na sequncia do algoritmo, temos: Quarta Iterao: Clculo das distncias provisrias para vc, o nico vrtice do subconjunto
Aberto que adjacente vb: