Post on 18-Feb-2018
7/23/2019 Algoritmos de Caminhamento
http://slidepdf.com/reader/full/algoritmos-de-caminhamento 1/19
SUMÁRIO
INTRODUÇÃO...................................................................................2
1 ALGORITMO DE KRUSKAL......................................................3
1.1 Árvore Mínima de Suor!e "MST#..............................................3
1.$ U!i%i&ando o MST..........................................................................4
1.' (ro)%ema da Árvore de Li*a+,e- Mínima-.................................41. A%*ori!mo........................................................................................5
1./ Me%0oria- no A%*ori!mo................................................................6
$ ALGORITMO DE DIKSTRA.......................................................6
$.1 2un3ionamen!o do A%*ori!mo.......................................................6
' ALGORITMO DE (RIM..............................................................11'.1 A%*ori!mo......................................................................................12
'.$ Ou!ro A%*ori!mo..........................................................................14
ALGORITMO DE 4ELLMAN52ORD........................................15
.1 A%*ori!mo......................................................................................15
/ ALGORITMO DE 2LO6D57ARS8ALL...................................16
/.1 A%*ori!mo......................................................................................17
9ON9LUSÃO...................................................................................18
RE2ER:N9IAS 4I4LIOGRÁ2I9AS............................................19
7/23/2019 Algoritmos de Caminhamento
http://slidepdf.com/reader/full/algoritmos-de-caminhamento 2/19
INTRODUÇÃO
Este trabalho tem como objetivo apresentar os Algoritmos de aminhamento!
descrevendo s"as caracter#sticas e partic"laridades! disc"tindo os processos $"e os
englobam! mostrar com representa%&es gr'(icas o se" ("ncionamento e est"dar os c)digos.
2
7/23/2019 Algoritmos de Caminhamento
http://slidepdf.com/reader/full/algoritmos-de-caminhamento 3/19
1 ALGOR;TMO DE KRUSKAL
Este algoritmo "tili*a tr+s conj"ntos e! ! e v-. , - "sado para g"ardar as arestas da
'rvore epandida. / algoritmo trabalha trans(ormando "ma (loresta epandida de g em
"ma 0nica 'rvore. / conj"nto vs cont-m os conj"ntos das 'rvores da (loresta epandida.
nicialmente vs cont-m todos os v-rtices de g! onde cada v-rtice - "m conj"nto "nit'rio.
As arestas so escolhidas por ordem crescente de c"sto. "ando "ma aresta "ne
d"as s"b'rvores da (loresta epandida! estas so "nidas em vs! $"ando no! ela -
descartada! pois (orma ciclo.
1.1 Árvore Mínima de Suor!e "M-!#
st minim"m spannig tree o" msct 'rvore geradora de peso m#nimo minim"m
cost spanning tree "ma árvore mínima de suporte (mst) de "m gra(o ponderado - o
conj"nto de arestas ligando todos os v-rtices! tais $"e a soma dos pesos das arestas -! pelo
menos! to baia $"anto a soma dos pesos de $"al$"er o"tro conj"nto de arestas ligando
todos os v-rtices.
Eemplo
3
ig. 1 :ra(o /riginal
ig. 2 ;rvore #nima de<"porte
7/23/2019 Algoritmos de Caminhamento
http://slidepdf.com/reader/full/algoritmos-de-caminhamento 4/19
1.$ U!i%i&ando o M-!
=ado "m gra(o coneo no orientado g! com peso positivo nas arestas e > r?!
encontrar "ma 'rvore geradora de g de peso m#nimo. @ara resolver este problema acima o
algoritmo de r"sBal - "ma das op%&es! temos o"tras op%&es como o @rim e o Cor"vBa.
/ algoritmo de r"sBal - g"loso. omo o nome s"gere! estrat-gia "sada por esse
algoritmo consiste na escolha da melhor sol"%o em determinados instantes. sto -! ele (a*
"ma escolha )tima localmente esperando $"e esta escolha leve a "ma sol"%o )tima global.
@or ve*es cond"* a "ma sol"%o )tima! mas nem sempre isso ocorre.
1.' (ro)%ema da Árvore de Li*a+,e- Mínima-
=escri%o do @roblema
encontrar a 'rvore de comprimento total m#nimo sobre "ma rede orientada o" no
de distDncia! tempos! etc.
Algor#tmos de r"sBal
.constr"ir "ma lista das arestas da rede e orden'las por ordem crescente de
distDncias.
.come%ar por escolher a 1 aresta da listaF
.repetir 2 at- todos os v-rtices (a*erem parte da 'rvore identi(icadaF
.a 'rvore de liga%&es m#nimas - constit"#das pelas arestas escolhidas e tem
comprimento total ig"al a soma dos comprimentos das arestasF
asos Especiais
se! no ponto 3! temos arcos alternativos com ig"al comprimento e ao escolher ambos
(ormamse ciclos! ento eistem sol"%&es degeneradasF
se eistirem n conj"nto de m arcos nas condi%&es anteriores ento eistiro mn sol"%&es
)timasF
4
7/23/2019 Algoritmos de Caminhamento
http://slidepdf.com/reader/full/algoritmos-de-caminhamento 5/19
1. A%*ori!mo
"n%o r"sBal :GH!E gra(oF omprimento EIJ conj"nto de arestasKiniciali*a%oL
/rdenar E por ordem crescente do comprimento
M NHN
, O Karestas da 'rvore geradora m#nimaL
niciali*ar n conj"ntos! cada "m com n) de H
Kla%o g"losoL
repita
e K"!vLPP a menor aresta no considerada
"comp achar"
vcomp acharv
se "comp Q vcomp ento
j"ntar "comp!vcomp, , R KeL
at- N,N G n1
retornar ,
A compleidade do algoritmo pode ser analisada
/rdena%o das arestasF
niciali*a%o dos conj"ntos disj"ntosF
:asto para achar as arestasF
5
ig. 3 ;rvore :eradorado :ra(o /riginal
7/23/2019 Algoritmos de Caminhamento
http://slidepdf.com/reader/full/algoritmos-de-caminhamento 6/19
:asto para j"n%o.
1./ Me%0ora- no A%*ori!mo
@odese colocar "ma b"sca e ordena%o mais e(icientes! nas b"scas de "nio pode
se "tili*ar ShalvingT! SmergesortT - o"tra dica para se "tili*ar na ordena%o.
$ ALGORITMO DE DIKSTRA
/ algoritmo de =ijBstra - o mais (amoso dos algoritmos para c'lc"lo de caminho de
c"sto m#nimo entre v-rtices de "m gra(o e! na pr'tica! o mais empregado.
Escolhido "m v-rtice como rai* da b"sca! este algoritmo calc"la o c"sto m#nimo
deste v-rtice para todos os demais v-rtices do gra(o. / algoritmo pode ser "sado sobre
gra(os orientados d#gra(os! o" no! e admite $"e todas as arestas poss"em pesos no
negativos n"lo - poss#vel. Esta restri%o - per(eitamente poss#vel no conteto de redes de
transportes! onde as arestas representam normalmente distDncias o" tempos m-dios de
perc"rsoF podero eistir! no entanto! aplica%&es onde as arestas apresentam pesos
negativos! nestes casos o algoritmo no ("ncionar' corretamente.
$.1 2un3ionamen!o do A%*ori!mo
Ass"miremos "m conj"nto! hamaloemos PERM ! $"e cont-m inicialmente
apenas o v-rtice (onte rai* da b"sca s. A $"al$"er momento PERM cont-m todos os
v-rtices para os $"ais j' (oram determinados os menores caminhos "sando apenas v-rticesem PERM a partir de s. @ara cada v-rtice z (ora de PERM matemos a menor distDncia
dist[z] de s a z "sando caminhos onde o 0nico v-rtice $"e no est' em PERM seja z . U
necesss'rio tamb-m arma*enar o v-rtice adjacente precedente a z neste caminho em
path[z].
omo (a*er com $"e PERM cres%a! o" seja! $"al v-rtice deve ser incl"#do em
PERM a seg"irV ,omamos o v-rtice! entre todos os $"e ainda no pertencem a PERM ! com
menor distDncia dist . Acrescentamos ento este v-rtice chamemolo de current ! a PERM ! e
recalc"lamos as distDncias dist para todos os v-rtices adjacentes a ele $"e no estejam em
6
7/23/2019 Algoritmos de Caminhamento
http://slidepdf.com/reader/full/algoritmos-de-caminhamento 7/19
PERM ! pois pode haver "m caminho menor a partir de s! passando por current ! do $"e
a$"ele $"e havia antes de current ser agregado a PERM . <e ho"ver "m caminho mais c"rto
precisamos tamb-m at"ali*ar path[z] de (orma a indicar $"e current - o v-rtice adjacente a
z pelo novo caminho m#nimo.
Hejamos o ("ncionamento do algoritmo sob "ma o"tra representa%o
1 =e(inise inicialmente o n) de origem rai*! neste caso s! e incl"ise este n) em
PERM ig"ra 1. Atrib"ise *ero a s"a distDncia dist[s] por$"e o c"sto de ir de s
a s - obviamente W. ,odos os o"tros n)s i tem s"as distDncias dist[i] iniciali*adas
com "m valor bastante grande Xin(initoX.
ig. 4 Jepresenta%o do Algoritmo de =ijBstra
2 A partir de s cons"ltase os v-rtices adjacentes a ele! $"e no gra(o G so u e x
ig"ra 2. @ara todos os v-rtices adjacentes! $"e chamaremos z ! calc"lase
<e distY*Z I distYsZ ? pesos! * distY*Z G distYsZ ? pesos! *
7
7/23/2019 Algoritmos de Caminhamento
http://slidepdf.com/reader/full/algoritmos-de-caminhamento 8/19
pathY*Z G s
im <e
ig. 5 Jepresenta%o do Algoritmo de =ijBstra
3 =entre todos os v-rtices no pertencentes a PERM escolhese a$"ele com a menor
distDncia ig"ra 3. Meste caso - o v-rtice x! pois distYZ G 5.
ig. 6 Jepresenta%o do Algoritmo de =ijBstra
4 Ento! incl"ise x em PERM e a partir de x cons"ltase os v-rtices adjacentes a ele
$"e no esto em PERM ! $"e no gra(o G so u! v e y ig"ra 4. @ara todos os
v-rtices adjacentes! $"e chamaremos z ! calc"lase
<e distY*Z I distYZ ? peso! * distY*Z G distYZ ? peso! *
pathY*Z G
im <e
8
7/23/2019 Algoritmos de Caminhamento
http://slidepdf.com/reader/full/algoritmos-de-caminhamento 9/19
ig. 7 Jepresenta%o do Algoritmo de =ijBstra
5 =entre todos os v-rtices no pertencentes a PERM escolhese a$"ele com a menor
distDncia ig"ra 5. Meste caso - o v-rtice y! pois distY[Z G 7.
ig. 8 Jepresenta%o do Algoritmo de =ijBstra
6 ncl"ise ento y em PERM e a partir de y cons"ltase os v-rtices adjacentes a ele
$"e no esto em PERM ! $"e no gra(o G - apenas o v-rtice v ig"ra 6.
<e distYvZ I distY[Z ? peso[! v
distYvZ G distY[Z ? peso[! v
pathYvZ G [
im <e
9
7/23/2019 Algoritmos de Caminhamento
http://slidepdf.com/reader/full/algoritmos-de-caminhamento 10/19
ig. 9 Jepresenta%o do Algoritmo de =ijBstra
7 =entre todos os v-rtices no pertencentes a PERM escolhese a$"ele com a menor
distDncia ig"ra 7. Meste caso - o v-rtice u! pois distY"Z G 8.
ig. 1W Jepresenta%o do Algoritmo de =ijBstra
8 ncl"ise ento u em PERM e a partir de u cons"ltase os v-rtices adjacentes a ele
$"e no esto em PERM ! $"e no gra(o G - apenas o v-rtice v ig"ra 8.
<e distYvZ I distY"Z ? peso"! v
distYvZ G distY"Z ? peso"! v
pathYvZ G "
im <e
1W
7/23/2019 Algoritmos de Caminhamento
http://slidepdf.com/reader/full/algoritmos-de-caminhamento 11/19
ig. 11 Jepresenta%o do Algoritmo de =ijBstra
9 =entre todos os v-rtices no pertencentes a PERM escolhese a$"ele com a menor
distDncia ig"ra 9. Meste caso - o 0nico v-rtice restante v e distYvZ G 9.
ig. 12 Jepresenta%o do Algoritmo de =ijBstra
1W@or (im (a*se v pertencer a PERM . Meste ponto! todos os v-rtices j' esto em
PERM e a b"sca - (inali*ada ig"ra 13.
11
7/23/2019 Algoritmos de Caminhamento
http://slidepdf.com/reader/full/algoritmos-de-caminhamento 12/19
ig. 13 Jepresenta%o do Algoritmo de =ijBstra
' ALGORITMO DE (RIM
A caracter#stica principal do algoritmo de r"sBal - $"e ele seleciona a melhor
arestas sem se preoc"par da coneo com as arestas selecionadas antes. / res"ltado - "ma
proli(era%o de 'rvores $"e event"almente se j"ntam para (ormar "ma 'rvore.
\' $"e sabemos $"e no (inal temos $"e prod"*ir "ma 'rvore s)! por $"e no tentar
(a*er com $"e "ma 'rvore cres%a nat"ralmente at- a obten%o da 'rvore geradora m#nimaV
Assim! a pr)ima aresta selecionada seria sempre "ma $"e se conecta > arvore $"e j'
eiste. sso - a id-ia do algoritmo de @rim
Mo in#cio o conj"nto C cont-m "m v-rtice arbitr'rio. A cada passo! o algoritmo
considere todas as arestas $"e tocam C e seleciona a de menor peso. =epois! o algoritmo
acrescenta em C o v-rtice ligada por essa aresta $"e no estava em C. / processo contin"a
at- $"e C contenha todos os v-rtices de :.
'.1 A%*ori!mo
("n%o PrimG = (!") #ra$o conj"nto de arestas
% G KL
& G Rm v-rtice de :
En$"anto & no cont-m todos os v-rtices
(u!v) G aresta de menor peso tal $"e u ' & e v &
% G % R K(u!v)L
& G & R KuL
Jetornar ,
@ara il"strar! consideremos o gra(o da (ig"ra 14! come%ando arbitrariamente pelo v-rtice a
@asso Aresta considerada onj"nto Cn#cio KaL1 b!a Ka!bL2 c!b Ka!b!cL3 d!a Ka!b!c!dL4 e!d Ka!b!c!d!eL
12
7/23/2019 Algoritmos de Caminhamento
http://slidepdf.com/reader/full/algoritmos-de-caminhamento 13/19
5 g!d Ka!b!c!d!e!gL6 (!g Ka!b!c!d!e!(!gL
A (ig"ra a seg"ir il"stra a progresso na composi%o da 'rvore geradora
13
ig. 14 :ra(o
ig. 15 @rogresso na composi%o da'rvore geradora.
7/23/2019 Algoritmos de Caminhamento
http://slidepdf.com/reader/full/algoritmos-de-caminhamento 14/19
@ara implementar e(icientemente esse algoritmo! "tili*ase "ma matri* de
adjac+ncia AY1..n! 1..nZ! onde cada elemento indica a distDncia entre dois v-rtices. aso
dois v-rtices no (orem ligados por "ma aresta o valor ser' . @ara representar o conj"nto
C! podemos "tili*ar d"as tabelas de n elementos! "ma indicando para cada v-rtice o v-rtice
de C $"e - mais perto! "ma o"tra $"e d' a distDncia at- o v-rtice de C $"e - mais perto.
<eja maisperto[*++n] e distmaisperto[*++n] essas d"as tabelas! respectivamente.
@ara "m v-rtice $"e j' pertence a C! colocamos 1 na entrada correspondente na tabela.
'.$ Ou!ro A%*ori!mo
("n%o Prim , = [*++n! *++n] #ra$o conj"nto de arestas
Knicialmente consideramos $"e o v-rtice 1 - o 0nico elemento de CL
% G KL
@ara i G 2 at- n
maisperto[i] G 1
distmaisperto[i] G ,[i!*]
Jepetir n* ve*esmin G
@ara - G 2 at- n
<e W distmaisperto[-] ] min ento
min G distmaisperto[-]
. G -
% G % R (.!maisperto[.])L
distmaisperto[.] G 1@ara - G 2 at- n
<e ^YB!jZ ] distmaisperto[-] ento
distmaisperto[-] G ,[.!-]
maisperto[-] G .
Jetornar ,
Analisando esse algoritmo! concl"ise $"e ele tem "m tempo de eec"%o em
/n2. "al - o melhor entre esse algoritmo e o algoritmo de r"sBalV <e o gra(o tem
14
7/23/2019 Algoritmos de Caminhamento
http://slidepdf.com/reader/full/algoritmos-de-caminhamento 15/19
m"itas arestas! isto -! ele tem "m n0mero de arestas $"e se aproima de nn1! o tempo de
eec"%o com o algoritmo de r"sBal - em /n2 lg n! portanto pior $"e o algoritmo de
@rim. as se o gra(o - esparso! o n0mero de arestas se aproima de n. Messe caso! o
algoritmo de r"sBal est' em /n lg n e - o melhor. Ma verdade! eistem o"tros
algoritmos melhores no caso de gra(o esparso.
ALGORITMO DE 4ELLMAN52ORD
/ algoritmo de Cellmanord (a* "so da mesma t-cnica "tili*ada pelo algoritmo
de =ijBstra. Este algoritmo comp"ta os caminhos mais c"rtos de "m v-rtice inicial deorigem a todos os demais! incl"sive em gra(os com pesos negativos. A 0nica restri%o -
$"e o gra(o no poss"a nenh"m circ"ito de peso negativo.
.1 A%*ori!mo
En!rada< 1 :ra(o G com pesos nas arestasF 2 H-rtice s de origemF 3 atri* / de
pesos das arestasFSaída< aminho mais c"rto de s at- todos os demais v-rtices de G
para cada v-rtice v 0 ' $ a%a
d[v] 1
(im para
d Y sZ W
para i 1 at- 2' 2 1 (a%a para cada aresta u! v 0 E (a%a
se d YvZ 3 d YuZ ? /u! v ento
d YvZ d YuZ ? /u! v
(im se
(im para
(im para
para cada aresta u! v 0 E (a%a
se d YvZ 3 d YuZ ? /u! v ento
15
7/23/2019 Algoritmos de Caminhamento
http://slidepdf.com/reader/full/algoritmos-de-caminhamento 16/19
retorne A^</
(im se
(im para
retorne HEJ=A=EJ/
omo j' (oi dito! se eistir "m circ"ito negativo! no poderemos garantir $"e os
caminhos encontrados nos gra(os correspondem aos caminhos mais c"rtos. /" seja! se
eistirem arestas u! v tais $"e /u! v ? d YuZ 4 d YvZ! o algoritmo retorna A^</. Esse
teste - reali*ado pelo passo 12 do algoritmo. A compleidade de tempo do algoritmo de
Cellmanord - 52E2 2'2. =essa (orma! se voc+ precisa resolver o problema dos
caminhos mais c"rtos para "m gra(o com arestas com peso positivo! o algoritmo de
=ijBstra nos d' "ma sol"%o mais e(iciente. <e todas as arestas do gra(o poss"em peso
ig"al a 1! "m algoritmo de b"sca em larg"ra! $"e ser' disc"tido mais adiante! - o mais
indicado. @or (im! para encontrar os caminhos mais c"rtos entre todos os v-rtices de "m
gra(o com pesos nas arestas! vamos apresentar o algoritmo de lo[d_arshall.
/ ALGORITMO DE 2LO6D57ARS8ALL
<e todas as arestas de G so no negativas! podemos "sar o algoritmo de =ijBstra! o
$"e nos d' "m algoritmo de compleidade 52' 23. <e o algoritmo cont-m arestas de peso
negativo! mas sem circ"itos de peso negativo! podemos "sar o algoritmo de Cellmanord!
$"e nos d' "m algoritmo com compleidade de tempo 52' 222E2 o" 52' 24! no caso de
gra(os densos.
@ara o algoritmo de lo[d_arshall! vamos s"por $"e temos "ma matri* de pesos
/n6n! tal $"e a posi%o /i! - da matri* de adjac+ncias arma*ena o peso da aresta i -.
aso esta aresta no eista! /i! - G 1. / algoritmo de lo[d_arshall considera os
v-rtices intermedi'rios de "m caminho mais c"rto P ! o" seja! os v-rtices de P $"e no so
os etremos e consiste de n itera%&es! onde n - o total de v-rtices do gra(o. Ma primeira
itera%o! trocamos a aresta i + -! para 1 = i! - = n! pelo caminho mais c"rto de i a -! eceto i
e -! $"e passe somente pelo v-rtice 1. Esta opera%o - eec"tada pela compara%o entre
/i! 1 ? /1 ! - e /i! - e selecionando o menor valor! onde /i! - G /Wi! - correspondeao peso da aresta i + -. / res"ltado desta compara%o - chamado /1i! -. Ma seg"nda
16
7/23/2019 Algoritmos de Caminhamento
http://slidepdf.com/reader/full/algoritmos-de-caminhamento 17/19
itera%o! trocamos o caminho de i a - calc"lado d"rante a primeira itera%o pelo caminho
de menor peso de i a - $"e! desta ve*! pode passar pelos v-rtices 1 e 2. Este caminho -
determinado pela compara%o entre /1i! 2 ? /12 ! - e /1i! -. / menor entre esses dois
valores ser' /2i! -. ="rante a . -sima itera%o! comp"tamos
/. i! - G min/.1i! - ! /.1i! . ? /.1.! - 2.1
para determinar o caminho mais c"rto entre i e - $"e passa somente pelos v-rtices 1 ! 2 !+++! . .
/ caminho mais c"rto entre cada par de v-rtices ser' encontrado ap)s a n-sima
itera%o. As posi%&es /. i- em cada matri* indicam o peso de caminho mais c"rto de i a -
$"e atravessa somente os v-rtices 7 1 ! 2 ! + + + ! .8. @ara simpli(icar! o gra(o da (ig"ra no
incl"i os caminhos calc"lados a cada est'gio dos algoritmos! mas estes no so di(#ceis de
serem encontrados.
/.1 A%*ori!mo
Entrada atri* de adjac+ncias "n6n do gra(o G! contendo os pesos das arestas
<a#da Ma matri* "! a distDncia entre todos os pares de v-rtices de G
para . 1 at- n (a%a
para i 1 at- n (a%a
para - 1 at- n (a%a
/i! - min/i! - ! /i! . ? /.! -
(im para
(im para
(im para
Ao (inal da eec"%o! o algoritmo encontrar' os caminhos mais c"rtos entre todos
os pares de v-rtices do gra(o de entrada. Este algoritmo poss"i compleidade de 52' 23.
17
7/23/2019 Algoritmos de Caminhamento
http://slidepdf.com/reader/full/algoritmos-de-caminhamento 18/19
9ON9LUSÃO
=e acordo com o ass"nto abordado! torno"se poss#vel entender "m po"co melhor o
("ncionamento dos algoritmos de caminhamento! s"as ("n%&es e a as di(eren%as de "m
m-todo pra o"tro.
18
7/23/2019 Algoritmos de Caminhamento
http://slidepdf.com/reader/full/algoritmos-de-caminhamento 19/19
RE2ER:N9IAS 4I4LIOGRÁ2I9AS
Mi30e%. Árvore-http://www.inf.ufpr.br/~andre/Disciplinas/BSc/CI065/michel/ Acessadoem 3WPW5PW4
Si%va= Leonardo. Ana%i-e de A%*ori!mo- "U9D4#http://www.ec.ucdb.br/~marco/courses03a/aa/seminars/ ! Acessado em3WPW5PW4
9a-!ro unior= Amaur> A. Im%emen!a+?o e Ava%ia+?o de A%*ori!mo-4S(@9GM ara o 2e30o Tran-i!ivo de (ro)%ema- Re%a3ionado-www.dct.ufms.br/mestrado/dissertacoes/ ! Acessado em 3WPW5PW4
San!o-= 9%e-io S. Grao-www.inf.ufr"s.br/~nedel/inf0#$03/ ! Acessado em 3WPW5PW4
O%iveira= Deni-e. Teoria do- Grao- e AnB%i-e 9om)ina!Cria "U2RGS#www.inf.ufr"s.br/~edenise/inf055#$/ ! Acessado em 3WPW5PW4
Univer-idade 2edera% da 4a0ia "U24A#http://www.im.ufba.br/mat#56/ ! Acessado em 3WPW5P2WW4
19