Вы находитесь на странице: 1из 63

BC0506: Comunicao e Redes Semana 3 Algoritmos em Grafos

Santo Andr, setembro de 2012

Parte 1: Algoritmos de Busca

Rediscutindo: Re resenta!es em Grafos

M a t r iz d e A d j a c n c ia " a t r i# d e $ n c id % n c ia & is t a d e A d ' a c % n c ia

"atri# de Ad'ac%ncia
A m a t r i# d e a d ' a cd %e n cu ia m g r a f o t e m c o lu n a s e lin ( a s in d e ) a d a s S eA for a m a t r i# d e a d ' a cd %e n c,n iad ic e ie s '- A . i- ' / 0 s 1 e o s * + r t ic i es ' forem c o n e c t a d o s o r u m a a rA e .sita ' /- 0 e -0 c a s o c o n t r 1 r io 2 m g r a f o s n o o r ie n a t am da otsr i# d e a d ' a c+ % nsceia m r se im + t r ic - ao u s e ' a - A .i-'/ 0 A . ' - i/

e lo s * +

2)em lo: Grafo 3o 4rientado e "atri# de Ad'ac%ncia

C o m o e sg te rafo + n o o r ie n t-a d ao m a t r i# d e a d ' a c+ %n s im c ia+ t r ic - ao u s e ' A a.i-'/ 0 A . ' - i/

2)em lo: Grafo 4rientado e "atri# de Ad'ac%ncia

"atri# de $ncid%ncia
A "atri# de $ncid%ncia re resenta com utacionalmente um grafo em 5ue as lin(as re resentam os *+rtices- e as colunas- as arestas Assim- dado um grafo com n *+rtices e m arestas- odemos re resent16lo or uma matri# B n ) m- guardando informa!es so7re a incid%ncia de *+rtices em cada aresta Para re resentar um grafo sem esos nas arestas e orientado- 7asta 5ue as entradas da matri# B conten(am 81 se a aresta c(ega no *+rtice- 61 se a aresta arte do *+rtice- e 0 caso a aresta no c(egue nem arta no9do *+rtice
7

2)em lo: "atri# de $ncid%ncia de Grafo 4rientado

2)em lo: "atri# de $ncid%ncia de Grafo 3o 4rientado

e1

e2

e3 e4

B(i,j) =

1 1 0 0

1 0 1 0

1 0 0 1

0 0 1 1

1 2 3 4

http://en.wikipedia.org/wiki/Incidence_matrix

Obs Em caso de aresta na f o r m a d e l a o (self-loop), podemos represent-la com o nmero 2 na respectiva posio lin a ! col"na
9

&ista de Ad'ac%ncia
4 * e t o r lis d et a s d e a d ' a c % dn e c ia u m g r a f o t e mlisutm a a e n c a d e aa draa c a d a u m d e s e u s * + r t ic e s A : lis t a d e c a d a * * +r ct oic nt e+ m t o d o s o s * + r t ic e s * i# in ( o s 5 u e a r t ir d*e : odem ser al

2)em lo: &ista de Ad'ac%ncia

Adj[1] = {2} Adj[2] = {1,3,5} Adj[3] = {4} Adj[4] = {1,5} Adj[5] = {2}
!i"ta encadeada (Linked list)

11

Grafos Ponderados
; mg ra fo o d e se r onderad oo un o o n d e r a d o S e t o d a s a s a r e s t a s a r e s e nm te as rm em o ue m .s oo u c u s t o / - d i# 6 s e g 5 ra uf e o o+ n o o n d e r a-d o e t o d a s a s a r e s t a s s o c o n s id e r a d a s c o m c u s t o ig u a l a 1 4 grafo ser1 onde sr ea dd ifoe r e n t e s a r e s t a s o s s u ,r e m c u s t o s d is t in t o s

12

2)em lo: Grafos Ponderados e 3o Ponderados


Em grafos onderados, representa-se entre par#nteses o c"sto da aresta

Pode6se ainda re resentar um grafo no onderado ignorando os custos das arestas 2m um grafo no onderado- todas as arestas ossuem custo igual a 1

13

Camin(os em Grafos
;m: camin(o: num grafo + uma se5u%ncia de *+rtices dotada da ro riedade de 5ue cada no*o *+rtice + ad'acente ao anterior A origem de um camin(o + o rimeiro *+rtice do camin(o- e o:t+rmino + o <ltimo *+rtice =i#6se 5ue um camin(o com origem s e t+rmino:t *ai de s a:t .em ingl%s- s 6 source- e t 6 target/ =i#emos 5ue uma aresta * > ertence a um camin(o se o *+rtice > + o sucessor de * no camin(o ?odas as arestas de um camin(o a ontam no mesmo sentido- de um *+rtice ara o seu sucessor
14

Camin(os em Grafos
Costuma6se diferenciar camin(o de asseio em grafos 2m um camin(o de s a t no ode (a*er nen(um *+rtice re etido- en5uanto em um asseio isso ode acontecer 4: com rimento: de um camin(o + o n<mero de termos da se5u%ncia menos um
Em o"tras palavras, $ o nmero de arestas do camin o

2m grafos no orientados- a e)ist%ncia de camin(os + uma ro riedade sim+trica:: ara 5uais5uer dois *+rtices s e t- e)iste camin(o de s a t- se e somente se- e)iste camin(o de t a:s
http://en.wikipedia.org/wiki/#ath_$graph_theor%&

15

2)em lo de Camin(o
P a r a o e ) e m lo a s e g u ir .n o o r ie n t a d o e n o a s s a n d o e lo * + r t ic e @ . o r e s c o l( a /

o n d e r a d o / - o c a m in ( o 1

%amin o & a '( & 2 ' %amin o ' a &( ' 2 &

16

2)em lo de Camin(o
P a r a g r a f o s o r ie n t a d o s . o n d e r a d o s o u n o s /a o t coadm e ins( eo r d if e erente do c a m in ( o t de as

E!emplo( %amin o & a '( &2' %amin o ' a &( ')&


17

Busca ou ?ra*essia em Grafos


;m algoritmo de 7usca .ou *arredura/ + um algoritmo 5ue e)amina- sistematicamente- todos os *+rtices e todas as arestas de um grafo Cada aresta + e)aminada uma sA *e# =e ois de *isitar a onta inicial de uma aresta- o algoritmo ercorre a aresta e *isita sua onta final Para 'ustificar a ala*ra B7uscaB- de*emos imaginar 5ue o algoritmo ercorre o grafo 7uscando todos os *+rtices 5ue so acess,*eis a artir de um determinado *+rtice em 5uesto- sem considerar es ecificamente seu o7'eti*o at+ 5ue o encontre
18

Busca ou ?ra*essia em Grafos


C 1 m u it a s m a n e ir a s d e f a # e r u m a t a l 7 u s c a C a d a e s t r a t + g ia d e 7 u s c a + c a r a c t e r i# a d a e la o r d e m e m 5 u e o s * + r A s s im a - o r d e m d e * is it a t o r n a 6 s e s e s d ses ne c' ia a lm o s d e t e r m in a r o u t r a s r o r ie d a d e s a l+ m d a m e r a c a r a c t e r ,s t ic a d e u m d e t e r m in a d o * + r t ic e a r t ir d e o u t r o

19

Busca ou ?ra*essia em Grafos


4 s a lg o r it m o s 7 udse ca em graf oo dse m e n t o n o s m o s t r a r o u t r a s c a r a c t e r ,s t i grafos 4 s a lg o r it m o s m a is c o m u m e n t e d is c u t id o s s o

b u s c a e m la r g u r a 7usca em

r o f u n d id

http://en.wikipedia.org/wiki/*readth()ir"t_"earch

http://en.wikipedia.org/wiki/'epth()ir"t_"earch

Busca em &argura
3o algoritmo de 7usca em largura- a lista de *+rtices o7edece a ol,tica D$D4 .Dirst6$n Dirst6 4ut- ou o rimeiro a entrar ser1 o rimeiro a sair E Dila/: o:*+rtice 5ue sai da lista + sem re o 5ue est1 l1 (1 mais tem o 4 algoritmo inta de reto todos os *+rtices 5ue odem ser alcanados a artir de um *+rtice de origem at+ alcanar o *+rtice de destino A rinci al caracter,stica desse algoritmo + 5ue a 7usca segue um modelo de arametri#ao ela distFncia a artir da origem 3o e)em lo a seguir- *amos su or 5ue este'amos 7uscando o camin(o entre 1 e 5
21

2)em lo: Busca em &argura


3o in,cio todos os *+rtices so intados de 7ranco Para o e)em lo a7ai)o- o *+rtice de origem + o 1- sendo marcado com GlarguraH igual a #ero 4 algoritmo inta de cin#a este *+rtice e o coloca em uma fila I- ma eando tam7+m seus *i#in(os
*este caso, ele se conecta apenas com o v$rtice 2

+,1
+ - queue $)i.a/ em ing.0"&
22

2)em lo: Busca em &argura


3o rA)imo asso- o *+rtice 1 + retirado da fila I e intado de reto- en5uanto o *+rtice @ + ma eado com GlarguraH igual a 1 e inserido na fila I 4 *+rtice @ + ento intado de cin#a e seus *i#in(os so ma eados
*o caso, os v$rtices &, ' e +

+,2

23

2)em lo: Busca em &argura


4 *+rtice @ + retirado da fila I e intado de reto- en5uanto os *+rtices 3 e 5 so intados de cin#a- colocados na fila I e ma eados com GlarguraH igual a @ 4 *+rtice 1 no + colocado na fila .a esar de (a*er uma cone)o/- ois '1 est1 intado de reto

+ , 3/ 5

24

2)em lo: Busca em &argura


4 *+rtice 3 + retirado da fila I e intado de retoen5uanto o *+rtice J + intado de cin#a- colocado na fila I e ma eado com GlarguraH igual a 3

Obs ,"ando "m v$rtice $ pintado de preto, isso si-nifica ."e todos os se"s n/s ad0acentes 0 foram descobertos, o" se0a, no podem ter a cor branca

+ , 5/ 4

25

2)em lo: Busca em &argura


2m seguida o *+rtice 5 tam7+m + *isitado- intado de reto e retirado da fila I Como sua <nica cone)o + com o *+rtice @ .'1 intado de reto/- nada + feito

+,4

26

2)em lo: Busca em &argura


3o t+rmino da e)ecuo deste e)em lo- o *+rtice J + intado de reto e retirado da fila I Como suas cone)!es le*am a *+rtices '1 intados de reto .1 e 5/- nada + feito e a fila torna6se *a#ia .fim do algoritmo/

+ 1a2ia

27

2)em lo: Busca em &argura


Para o camin(o entre origem e destino arte6se do *+rtice de destino- e)aminado seus redecessores at+ c(egar K origem =e ois in*erte6se o *etor conseguido
1ara este e!emplo, o camin o $ & 2+

A seguir + a resentado um seudocAdigo do algoritmo de 7usca em largura

+ 1a2ia

28

PseudocAdigo: Busca em &argura


Busca_largura(Adj,origem,destino) // 3d4 5 a .i"ta de ad4ac0ncia do gra)o t = tamanho de Adj; para u = 1 at t, 1 cor(u) = branco; //6odo" o" 15rtice" "7o pintado" de 8ranco fim cor(origem) = cinza; //9 15rtice de origem 5 pintado de cin2a 2 fila(1) = origem; i = 1; f = 2; //9 15rtice de origem 5 co.ocado na )i.a enquanto i < f, u = fila(i); i = i + 1; c = Adj{u}; //9 15rtice mai" antigo 5 retirado da )i.a se (c n o ! "azio), //6odo" o" 15rtice" ad4acente" de : "er7o para " = 1 at tamanho de c, //;de"co8erto"; e pintado" de cin2a se cor(c(")) == branco, 3 4 5 6 7 cor(c(")) = cinza; #redece$$or(c(")) = u; //: pa""a a "er o <pai; de c$1& fila(f) = c("); f = f + 1; //c$1& 1ai para o )im da )i.a$)& fim fim fim cor(u) = #reto; // depoi" =:e todo" o" 15rtice" ad4acente" a Fim // : )oram examinado"/ : 5 pintado de preto caminho(1) = de$tino; #re" = #redece$$or(de$tino); enquanto (#re" %= origem), caminho(tamanho do caminho + 1) = #re"; de$tino = #re"; #re" = #redece$$or(de$tino); fim caminho(tamanho do caminho + 1) = #re"; //>aminho na ordem in1er"a $decre"cente& para i = 1 at tamanho de caminho caminho2(i) = caminho(tamanho do caminho&i+1); Fim //>aminho na ordem nat:ra. $cre"cente&

29

2)em lo: Simulao do Algoritmo de Busca em &argura


Adj[1] = {2} Adj[2] = {1,3,5} Adj[3] = {4} Adj[4] = {1,5} Adj[5] = {2}
i
&

f
2

I .fila/
(&)

u
-

c.*/ Ad'.u/
-

i
& 2

f
2 '

I .fila/
(&) (2)

u
(&)

c.*/
(2)

Ad'.u/
(2)

i
& 2 ' '

f
2 ' ) +

I .fila/
(&) (2) (') (',+)

u
(&) (2) (2)

c.*/
(2) (') (+)

Ad'.u/
(2) (',+) (',+)

3 4
i
& 2 ' ' )

f
2 ' ) + 2

I .fila/
(&) (2) (') (',+) (+,))

u
(&) (2) (2) (')

c.*/
(2) (') (+) ())

Ad'.u/
(2) (',+) (',+) ())

i
& 2 ' ' ) +

f
2 ' ) + 2 3

I .fila/
(&) (2) (') (',+) (+,)) ())

u
(&) (2) (2) (') (+)

c.*/
(2) (') (+) ()) -

Ad'.u/
(2) (',+) (',+) ()) -

i
& 2 ' ' ) + 2

f
2 ' ) + 2 3 4

I .fila/
(&) (2) (') (',+) (+,)) ()) -

u
(&) (2) (2) (') (+) ())

c.*/
(2) (') (+) ()) -

Ad'.u/
(2) (',+) (',+) ()) -

Busca em Profundidade
A e s t r a t g i a s e g u i d7au spceal a e m * e # m a is f u n d o n o g r a f o r o f u n d+id - acd oe m o s e u n o m e im lic a 3 e s s a 7 u s c a a s a r e s t a s s o e ) lo r a d a s a va m r tair is d ro e c* e+ nr tt eic me nte d e s c o 7 e r t o 5 u e a in d a o s s u i a r e s t a s in e ) lo r a d a s s a in d o d e le

rocura

L g i cL a I F O(L a s t - I n F i r s t -oO " uptil a )

I u a n d o t o d a s a s a r e s t a s a lc a n a d a s a a r t ir d o * + r t ic e d e o r ig e m s o r e g r e s s a a r a e ) lo r a r a s a r e s t a s 5 u e a r t e m d * of o*i+ d rt eic sc eo 7 de or t 5o ual

1 a r a o e ! e m p lo a s e - " ir , t e n t a r e m o s d e s c c a m in o d e & a +

31

2)em lo: Busca em Profundidade


3o in,cio todos os *+rtices so 7rancos, mas partindo do v$rtice &, este $ pintado de cin5a e s"a aresta $ e!aminada, levando ao v$rtice 2 O v$rtice & $ marcado com dist6ncia 7

32

2)em lo: Busca em Profundidade


4 *+rtice 1 + intado de reto 4 *+rtice @ + intado de cin#aL en5uanto suas arestas sero e)aminadas- + atri7u,da a ele a distFncia 1 A rimeira aresta de @ le*a ao *+rtice 1- '1 intado de reto Partindo ara a segunda aresta- esta le*a ao *+rtice 3

33

2)em lo: Busca em Profundidade


4 *+rtice 3 + ento intado de cin#a e a ele + atri7u,da uma distFncia @ Sua <nica aresta + e)aminada- le*ando ao *+rtice J

34

2)em lo: Busca em Profundidade


4 *+rtice 3 + intado de reto e o *+rtice J + intado de cin#a- sendo 5ue a ele + atri7u,da a distFncia 3 Suas arestas sero e)aminadasM A rimeira le*a a um nA '1 intado de reto- logo no recisa ser analisada A segunda- le*a ao *+rtice 5

35

2)em lo: Busca em Profundidade


4 *+rtice J + intado de reto e o *+rtice 5 + intado de cin#a- sendo 5ue a ele + atri7u,da a distFncia J Sua aresta + e)aminada- constatando6se 5ue le*a a um *+rtice '1 intado de cin#a

36

2)em lo: Busca em Profundidade

4 * + r t ic e 5 + in t a d o d e r e t o e a r t e 6 s e e ) a m e d a < lt im a a r e s t a e r t e n c e n t e a o *

37

2)em lo: Busca em Profundidade


Como neste momento esta aresta remete a um *+rtice '1 intado de reto .*+rtice 5/- o *+rtice @ tam7+m + intado de reto e o algoritmo + terminado =iferentemente da 7usca em largura- este algoritmo rodu# um camin(o 1 @ 3 J 5 ara o camin(o de 1 a 5

38

Busca em Profundidade:=etal(es
4 algoritmo de 7usca em rofundidade na sua forma mais ro7usta utili#a um recurso com utacional c(amado recurso- em 5ue uma dada funo Gc(ama a si mesmaH ;m seudocAdigo ara o algoritmo de 7usca em rofundidade 5ue encontra o camin(o entre dois *+rtices + mostrado a seguir Claramente (1 uma grande diferena no modo de im lementao e nos resultados dos dois algoritmos =esta forma- 5uando (1 a necessidade de o7teno do camin(o m,nimo entre dois *+rticesoutros algoritmos de*em ser utili#ados
39

PseudocAdigo: Busca em Profundidade


Busca_profundidade(Adj,origem,destino) //3d4 5 a .i"ta de ad4ac0ncia do gra)o t = tamanho de Adj; para u = 1 at t, cor(u) = branco; //6odo" o" 15rtice" "7o pintado" de 8ranco fim caminho(1) = origem; c = busca_em_prof(Adj,origem,destino,caminho); funo busca_em_prof(Adj,u,d,caminho) //?etorna :m caminho cor(u) = cinza; //9 15rtice origem 5 pintado de cin2a " = Adj'u(; caminho2 = caminho; se (" n o ! "azio), para i = 1 at tamanho("), //9 @.timo 15rtice do caminho 5 te"tado para se (caminho(tamanho(caminho))) %= d), //1er "e 5 di)erente do 15rtice de"tino se ("(i) == d), cor("(i)) = #reto; caminho = caminho2; caminho(tamanho(caminho2)+1) = d; )alto; //9 caminho )ina. )oi encontrado seno se (cor("(i)) == branco), caminho = caminho2; caminho(tamanho(caminho2)+1) = "(i); c = busca_em_prof(Adj, (i),d,caminho); caminho = c; fim fim fim cor(u) = #reto; fim

=istFncia
;m camin(o C num grafo + m,nimo se no e)iste outro camin(o com a mesma origem e o mesmo t+rmino 5ue Ce com com rimento menor 5ue o de:C A: distFncia: de um *+rtice s a um *+rtice t num grafo + o com rimento de um camin(o m,nimo de s a t
8e no e!iste camin o al-"m de s a t, a dist6ncia de s a t $ infinita9

A:distFncia de s a t + d se e somente se:


(&)9e!iste "m camin o de comprimento d de s a9t9 e9 (2)9nen "m camin o de s a t tem comprimento menor ."e9 d

2m geral- num grafo direcionado a distFncia de um *+rtice s a um *+rtice t + diferente da distFncia de t a:s Se o grafo + no orientado- entretanto- as duas distFncias so iguais
41

Grafos Ponderados
"uitas a lica!es associam um n<mero a cada aresta de um grafoM: =iremos 5ue esse n<mero + o custo da aresta- 5ue ode ser remetido a uma caracter,stica f,sica da cone)o Por e)em lo- se duas arestas de um grafo re resentam cone)!es de ca7os Aticos entre cidades A- B e C .*+rtices do grafo/- sendo 5ue a distFncia entre A e B + o do7ro da distFncia de A a C- ento ode6se atri7uir um custo maior K aresta 5ue liga os *+rtices A e B =e endendo da a licao- ode ser mais a ro riado di#er: B esoB ou Bcom rimentoB no lugar de BcustoB:
42

2)em lo: Camin(o de Custo ",nimo


Se o grafo onderado e direcionado a7ai)o for tomado como e)em lo- o camin(o m,nimo C de 1 a 5 tem custo d igual a @- le*ando a um camin(o 1 @ 5 Perce7a 5ue e)iste um outro camin(o 1 @ 3 J 5- mas este ossui custo d igual a 5

43

Parte @: Algoritmos de Camin(os ",nimos

Busca de Camin(os ",nimos


P a r a a 7 u s c ac adm e in ( o s m ,n im e mo s g r a f o s - ( 1 a lg o r it m o s e s e c ia lm e n t e d e s e ara e)ecutar essa tarefa

2 n t r e t a n t o f( or 1 m a s e s e c ,f ic ar aa s t r a t a r o r o 7 le m a - s e n d o d if e r e n t e s 5 u a 7uscam c a m in ( o s m ,n im o s a a r t ir d e u m d ou a d5ou a *n +d rt o icsee 7 u s ccam a m in( o s os m ,n im o s e n t r e t o d o s o s a r e s d e * + r t ic e s

45

Pro7lema dos Camin(os ",nimos com 4rigem Di)a: =ado um *+rtice s de um grafo com custos nos arcos- encontrar- ara cada *+rtice t 5ue ode ser alcanado a artir de:s- um camin(o m,nimo sim les de s a:t ?odos os algoritmos ara esses ro7lemas e) loram a seguinte ro riedade 71sica: Pro riedade ?riangular:: Para 5uais5uer *+rtices )N e # de um grafo com custos no negati*os nos arcos- tem6se
d.)-#/: O: d.)-N/ 8 d.N-#/ :, sendo d(i,0) 2a dist6ncia de i a 0 2
2 2 % x % x % x % x

Camin(o ",nimo com 4rigem Di)a

46

Algoritmo de =i'Pstra
;m algoritmo eficiente ara a o7teno do camin(o m,nimo em grafos com custos no negati*os + o c(amado algoritmo de =i'Pstra 4:algoritmo ode ser usado- em articularara encontrar um camin(o de custo m,nimo de um dado *+rtice a outro- ou a todos os outros *+rtices 4 algoritmo de =i'Pstra funciona de forma iterati*a- asso a asso- como mostrado a seguir
: entrada $ a matri5 de ad0ac#ncia do -rafo
47

Algoritmo de =i'Pstra
1M

4 rimeiro asso + atri7uir uma distFncia ara todos os ares de *+rtices


1M

=e in,cio + atri7u,da uma distFncia infinita ara todos , menos para o v$rtice de ori-em, ."e recebe dist6ncia 5ero

@M 3M

"ar5ue todos os *+rtices como no *isitados e defina o *+rtice inicial como *+rtice atual Para este *+rtice atual- considere todos os seus *+rtices *i#in(os no *isitados e calcule a distFncia a artir do *+rtice inicial
&;

8e a dist6ncia for menor do ."e a definida anteriormente, s"bstit"a a dist6ncia

JM

Iuando todos os *i#in(os do *+rtice atual forem *isitados- mar5ue6 o como *isitado- o 5ue far1 com 5ue ele no se'a mais analisado .sua distFncia + m,nima e final/ 2le'a o *+rtice no *isitado com a menor distFncia .a artir do *+rtice inicial/ como o *+rtice atual e continue a artir do asso 3

5M

48

2)em lo: Algoritmo de =i'Pstra


P a r a o e x e m p l o a s e*g+uri r t, ic e o +1 o * + r t ic e in ic eiaol* + r t ic e a t d uo a l in ,c io d o a lg o r it m o A d is t F n c ia d e le A d is t F n c ia a r a t o d o s o s o u t r o s * + r t ic e * se + r mm eo l( so trada em a r a s e u * i# in ( o . * + r t ic e @ / + ig u a l a 1

D=1 D= D= D=0

D=

49

2)em lo: Algoritmo de =i'Pstra


4 * + r t ic e @a s s a a s e * r+ o r t ic e a t u a l A a r t ir d e le - a t in g e m 6 s e o s * + r t ic e s 3 e 5 - s e n d o a s r e s e c t i* a s d is a r a @ . a o in * + s d e in f in it o / e @

D=1 D=2 D=1 D=2 D= D=0

4 *+rtice 3 + o *+rtice atual A artir dele alcana6se o *+rtice J- com distFncia J


Em se-"ida, visita-se o v$rtice +, mas s"a dist6ncia no m"da

2)em lo: Algoritmo de =i'Pstra

3este onto todos os *+rtices foram *isitados e o *etor de distFncias m,nimas a artir do *+rtice 1 + = 0 Q0 1 @ J @R
D=2 D=1 D=2 D=4 D=0 D=2
51

PseudocAdigo: Algoritmo de =i'Pstra


!ij"stra(grafo,origem) para cada rtice em grafo //Inicializao distancia# $ % &nfinito' // ada !rtice inicializado com dist" in#inita predecessor# $ % ()' //$%arda os !rtices do camin&o m'nimo fim distancia#origem$ % *' + % todos os rtices de grafo' //(rtices n)o !isitados #icam em * enquanto (+ no esti er a,io) faa, //+n,%anto &o%!er !rtices n)o !isitados u % rtice do grafo com menor dist-ncia . origem' se (distancia#u$ %% &nfinito) /alta o lao' fim remo a u de +' para cada i,inho de u d % distancia#u$ 0 distancia entre u e ' se (d 1 distancia# $), distancia# $ % d' //Somente o menor camin&o interessa predecessor# $ % u' //-odos os !rtices do camin&o m'nimo fim fim fim fim
52

Algoritmo de =i'Pstra: 2)em lo


1
6 1 3 1 2

2
1 2 1

5
1

4
5

3 ,"al o camin o m<nimo entre & e 2=

3.gorithm" )or A!BI 'e"ign 3:tomation/ Ba8ih C. Dere2

53

Algoritmo de =i'Pstra: Simulao


D=0
1 6 1 2

D=
6 6 3 1 1

D=0
1

D=
6 6 3 1 1

D=0
1

D=.
6

D=/
2 1 2 1 4 5 3 1

D=/
2 1 2 1 4 5 1

D=/
2 1 2 1 4 5 1

D=.

D=2

D=2

D=1

D=1

D=1

D=

1
D=0
1 6 1

D=/

2
D=0
1 6 1

D=/

3
D=0
1 6 1

D=.
6

D=.
6

D=.
6

D=4
2 1 2 1 4 5 3 1

D=4
2 1 2 1 4 5 1

D=4
2 1

2 1 4 5

D=2

D=2

D=2

D=1

D=1

D=1

D=/

D=0

D=0

6
54

,"al o camin o m<nimo entre & e 2=

3.gorithm" )or A!BI 'e"ign 3:tomation/ Ba8ih C. Dere2

Algoritmo de =i'Pstra: 4utro 2)em lo


,"al o valor do camin o m<nimo entre & e 2, ', ) e +=
$terao S >&? >&,2? >&,2,)? >&,2,),'? >&,2,),',+? S+rtice Atual & 2 ) ' + 1 +7 3 =Q@R &7 =Q3R =QJR '7 '7 =Q5R &77 &77 A7 27 27

1
1 1 3

Ori-em &

@
27 +7

2
5 1

5
6

2 ' )

- 8e d"rante a sim"lao o predecessor de cada n/ for arma5enado n"m vetor, ento o camin(o m,nimo entre dois n/s pode ser facilmente refeito - :ssim, 1B2C D &, 1B'C D ), 1B)C D & e 1B+C D ' 1ara refa5er o camin(o m,nimo entre os n/s & e +, por e!;, basta se-"ir os predecessores em ordem reversa( &, ), ', +
Data Structures and Algorithms/ 3ho/ Copcro)t E F..man

55

Camin(os m,nimos entre todos os ares de *+rtices


4 A lg o r it m o d e D lo N d 6 T+ a u rm s ( a ll lg o r it m o m u it o e f ic ie n t e a r a e n c o n t r a r d is t F n c ia s m ,n im a s d o s a r e s d e c a m in ( o s e m u m g r a f o

2 m a lic a ! e s e m 5 u e s e f a # n e c e s s 1 r ia a m ca r ia t r i# od e d ec a u m in a (os m ao ,n im o s in * + s d e u m * e t o r - o u s e ' a - a o in * + s d e a lic a r o a lg o r it m o d e = i' P s t r c o n s id e r a d o c o m o o r ig ea mlg -oe r it s tm e o d e D lo N d 6 T+a rm sa ( is a ll a c o n s e l( 1 * e l

56

Algoritmo de DloNd6Tars(all

4 a lg o r it m o d e D lo N d 6 Tda er*se( a ll r im e ir a m e n t e m o d if ic a r a m a t r i# d e a d ' a g r a f o - d e m o d o 5 u e t o d a s a s o s i ! e s d o s a r e s d e * + r t ic e s e m 5 u e c o n e ) ! e s r e c e 7 a m c o m o * a lo r $ n f in it o - e ) c e t o a d ia g o n a l r in c i a l . 5 u #eros/ ; m s e u d o c A d ig o d a im le m e n t a o + m o s t r a d o ean tsreagdua ir d os e nrd oo ga ra am a r A r ia m a t r i# d e a d ' a c % n c ia 4 r o g r a m a r e t o r n a u m a m a t r i# c o m t o d o s o s

a r e s d e c a m in ( o s m ,n i

57

PseudocAdigo: Algoritmo de DloNd6Tars(all


Floid2arshall(3atri,Adj) para cada linha i em 3atri,Adj para cada coluna j em 3atri,Adj se (3atri,Adf#i$#j$ %% * 44 i 5% j) 3atri,Adj#i$#j$ % &nfinito' fim fim fim t % numero de linhas de 3atri,Adj' 6min % 3atri,Adj' para " %% ) at t, para i %% ) at t, para j %% ) at t, 6min#i$#j$ % min(6min#i$#j$,6min#i$#"$06min#"$#j$)' fim fim fim retorna 6min' fim
58

Algoritmo de DloNd6Tars(all
k
C k1

k 1i,

k1

1k ,j2

Ck-11i,j2

- O Algoritmo de DloNd6Tars(all e!ec"ta n iteraEes sobre a c/pia da "atri# de Ad'ac%ncia CQi-'R -Ele e!plora o fato de ."e ap/s F iteraEes sobre a c/pia da "atri# Ad'acente, o camin(o m,nimo entre os v$rtices i e 0 pode event"almente ser "m camin o com "m v$rtice F intermedirio - 1or isso, o al-oritmo escol e o c"sto m<nimo na F-$sima iterao( - CPminQi-PR 0 min.CP61minQiRQ'R-CP61minQiRQPR8CP61minQPRQ'R/ - Esta f/rm"la $ partic"larmente vlida ."ando no "ma aresta entre i e 0, e na respectiva posio da matri5 de ad0ac#ncia foi atrib"<do o valor infinito
Data Structures and Algorithms/ 3ho/ Copcro)t E F..man

59

Algoritmo de DloNd6Tars(all
2
3 .

3 1 2 3

3 1 2 3

0 3 0 C0(i,j) = . 0 2 0

0 3 0 C1(i,j) = . 0 3 2 0

%&(2,') D min.> $2/3&/ > $2/1&G> $1/3&5 =6 k,1

1 1 2 3

C2(i,j) =

0 . 5

3 0 2

0 3 0

C3(i,j) =

0 . 5

4 0 2

0 3 0

1 2 3

%2(',&) D min.>1$3/1&/ >1$3/2&G>1$2/1&5 =6 k,2

%'(&,2) D min.>2$1/2&/ >2$1/3&G>2$3/2&5 =6 k,3


Data Structures and Algorithms/ 3ho/ Copcro)t E F..man

Refer%ncias Bi7liogr1ficas
?M CM Cormen- CM CM &eiserson- RM &M Ri*est- CM SteinM HAlgoritmos: ?eoria e Pr1ticaH- 2ditora Cam us- @00@M RM Sedge>icPM GAlgorit(ms in CH- Addison TesleN- 1UU0M AM SM A(o- VM 2M Co croft- VM =M ;llmanM G=ata Structures and Algorit(msH- Addison6TesleN- 1UWXM (tt :99>>>MimeMus M7r9Y f9algoritmosZ araZgrafos9L acessado em 30M0UM1@ (tt :99>>>MimeMus M7r9Y f9analiseZdeZalgoritmos9lecturesM( tml L acessado em 30M0UM1@ (tt :99enM>iPi ediaMorg9>iPi9=i'Pstra[@XsZalgorit(m L acessado em 30M0UM1@ (tt :99>>>Malgorit(mistMcom9inde)M ( 9DloNd6Tars(all [@XsZAlgorit(m L acessado em 30M0UM1@
61

2)erc,cios Pro ostos


grafo no onderado + re resentado ela lista de ad'ac%ncias Ad' 0 \Q@RL Q3RL QJ-5-WRL QRL Q6-XRL Q1RL QURL Q10RL Q10RL QR]M Re resente graficamente este grafo e a li5ue o algoritmo de 7usca em largura e 7usca em rofundidade ara encontrar o camin(o entre os *+rtices 1 e 10M @M Considere um grafo orientado e onderado 5ue se'a re resentado ela matri# de ad'ac%ncia a7ai)oM Simule o algoritmo de =i'Pstra e determine o *etor de distFncias a artir do *+rtice 1M Daa gr1ficos ara mostrar a e*oluo do algoritmoM
1M ;m

3M ;sando a mesma matri# de ad'ac%ncias do e)erc,cio anterior- im lemente o algoritmo de Dloid6Tars(all em 5ual5uer linguagem ara calcular a matri# de camin(os m,nimosM 2) li5ue o resultadoM
62

Ati*idade ara 2ntrega


;ma rede de informao ossui uma to ologia re resentada or um grafo cu'a matri# de ad'ac%ncias + dada a seguirM

A As um certo tem o de o erao t o roteador re resentado elo *+rtice @ cai- dei)ando de e)istir as cone)!es 5ue c(egam e saem deste *+rticeM Passado um tem o t a As a 5ueda do *+rtice @ o *+rtice 6 tam7+m cai e a As @t + a *e# do *+rtice 1@ sair de o eraoM ;tili#ando recursos com utacionais- faa uma an1lise dos custos re resentados ara o escoamento de informao de*ido K ino era7ilidade destes roteadores e 'ustifi5ue suas afirma!es or meio de gr1ficos e ta7elasM Iual destas fal(as re resenta a rinci al fal(a indi*idual^ =ica: analise as estat,sticas ara os camin(os m,nimos glo7ais em cada situaoM 2ntrega: 0691@9@013

63

Вам также может понравиться