Vous êtes sur la page 1sur 9

AULA 03 - PASSEIOS, CAMINHOS E TRILHAS

Autor: Ernesto Massa

Cada homem deve inventar o seu caminho. Jean-Paul Sartre

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.

CONECTIVIDADE ENTRE VRTICES


A possibilidade de percorrer arestas, passando de um vrtice para outro, abre algumas questes que sero desenvolvidas nesta aula. Ser que possvel partir de um determinado vrtice e atingir a outro vrtice especfico? Qual seria a menor sequncia de arestas atravessadas que nos permitiria atingir ao vrtice desejado? Ser que existiria algum vrtice inatingvel? Estas questes esto associadas aos conceitos de ligao, distncia e conexidade que so aplicveis na modelagem de diversos problemas reais e que sero vistos nas prximas sees.

PASSEIOS, CAMINHOS E TRILHAS


Ao atravessar sucessivas arestas adjacentes, sem qualquer regra ou restrio, agimos como em um passeio por ruas em que no temos o compromisso de chegar a lugar nenhum. Esta associao nos leva a entender, como passeio, uma sequncia de vrtices e arestas adjacentes. Formalmente podemos definir um passeio da seguinte forma:
Definio (Passeio): Seja G=(V,E) um grafo. Um passeio em G uma sequncia (ou lista) de vrtices, em que cada vrtice adjacente ao seguinte; isto : W=(v0, v1, v2, ..., vn) ou v0~v1~v2~...~vn O comprimento deste passeio n. Note que em um passeio de comprimento n existem n+1 vrtices no passeio. (SCHEINERMAN, 2006, p.402)

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.

Figura 1- Passeio em um grafo

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.

Figura 2 - Grafo Caminho P4

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.

DISTNCIA E CAMINHOS MNIMOS


A distncia entre dois vrtices vi e vj definida como o comprimento do menor caminho existente entre vi e vj (SZWARCFITER,1986), e representada por dij. Se estivermos trabalhando com grafos valorados, podemos considerar que o valor de cada aresta est associado ao seu comprimento (os valores das arestas podem ter diversos outros significados, mas adotaremos o comprimento para facilitar o entendimento). A distncia entre dois vrtices, vi e vj, pode ser calculada de vrias formas, entre elas a soma dos pesos das arestas que compem o menor caminho entre estes vrtices (BOAVENTURA NETTO,1996). A noo de distncia sempre possui a propriedade conhecida como desigualdade triangular: a distncia do caminho com incio em vi e trmino em vj nunca ser superior distncia entre os vrtices vi e vk, somada com a distncia entre os vrtices vk e vj.

dij dik + dkj

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.

ALGORITMO DE CAMINHO MNIMO (DIJKSTRA)


Em grafos que possuem muitos vrtices e arestas, muitas vezes no fcil encontrar um caminho de menor peso entre dois vrtices especficos. Atualmente, o algoritmo de maior relevncia na busca de um caminho mnimo algoritmo desenvolvido pelo holands Edsger Dijkstra (Figura 4).

Figura 4 - Edsger Dijkstra (1930-2002) Fonte: Edsger, 2010

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

Aberto Aberto {v k } Fechado Fechado {v k } E (v k , anteriork )

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.

Figura 05- Menor caminho encontrado pelo Algoritmo de Dijkstra

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:

Dac = min( Dac , Dab + d bc ) = min(6,3 + 2) = 5


Transferncia de vf do subconjunto Aberto para o subconjunto Fechado. Quinta Iterao: Clculo das distncias provisrias para vc, o nico vrtice do subconjunto
Aberto que adjacente vf:

Dac = min( Dac , Daf + d fc ) = min(5,4 + 2) = 5


Transferncia de vc do subconjunto Aberto para o subconjunto Fechado. Aps a transferncia de vc, o subconjunto Aberto fica vazio, determinando a finalizao do algoritmo.

SNTESE
Nesta aula vimos alguns conceitos sobre a forma como vrtices podem ser percorridos. Enquanto os passeios so formados por sequncias livres de vrtices adjacentes, as trilhas so passeios que no permitem a repetio de arestas e os caminhos no permitem a repetio de vrtices. Se o grafo possui um caminho que ligue qualquer um dos seus pares de vrtices, este ser um grafo conexo, caso contrrio ele ser um grafo desconexo. Passeios fechados so aqueles em que o vrtice de sada coincide com o vrtice de chegada. Um ciclo uma trilha fechada e um circuito um caminho fechado. Ciclos que passam por todas as arestas so ciclos eulerianos, e circuitos que passam por todos os vrtices so circuitos hamiltonianos. A distncia entre dois vrtices o comprimento do caminho mnimo que liga estes dois vrtices. O algoritmo de Dijkstra um algoritmo eficiente para se encontrar caminhos mnimos. Em nossa prxima aula, veremos um importante problema modelado por grafos orientados: o fluxo mximo em redes.

QUESTO PARA REFLEXO


Sabendo que os algoritmos para se resolver o problema do caixeiro viajante tm por base a anlise de cada possvel circuito, quantos circuitos

diferentes devem ser verificados para um percurso com vinte cidades? (considere que o grafo completo)

LEITURAS INDICADAS
Para fixao dos assuntos vistos nesta aula, faa a leitura do captulo 4: "Distncia, localizao, caminhos" do livro de Paulo Oswaldo Boaventura Netto, e da seo 45, captulo 9: "Conexo" do livro de Edward R. Scheinerman.

SITES INDICADOS
UFRGS - Problema do Caixeiro Viajante http://www.mat.ufrgs.br/~portosil/caixeiro.html http://en.wikipedia.org/wiki/Icosian_game William Hamilton http://en.wikipedia.org/wiki/William_Rowan_Hamilton

REFERNCIAS
BOAVENTURA NETTO, Paulo Oswaldo. Grafos: teoria, modelos, algoritmos. So Paulo: Ed. Edgard Blcher, 1996. BONDY, John Adrian; Murthy, U.S.R. Graph Theory with Applications, The MacMillan Press, London, fifth edition, 1982. DIJKSTRA, E.W. A note on two problems in connexion with graphs. Numerische Mathematik n.1, p.269-271, 1959. EDSGER W. DIJKSTRA, Wikipdia. Disponvel em < http://en.wikipedia.org/wiki/Edsger_W._Dijkstra>. Acesso em 27 fev 2010. GERSTING, Judith L. Fundamentos matemticos para a cincia da computao: Um tratamento moderno de matemtica discreta. 5Ed. Rio de Janeiro: LTC, 2004. HAMILTONIAN Path, Wikipdia. Disponvel em <http://en.wikipedia.org/wiki/Hamiltonian_path>. Acesso em 27 fev 2010. SCHEINERMAN, Edward R. Matemtica discreta: uma introduo. Thompson Learning, So Paulo, 2006. SZWARCFITER, Jaime Luiz. Grafos e algoritmos computacionais. 2. ed. Rio de Janeiro: Campus, 1986.

Vous aimerez peut-être aussi