Академический Документы
Профессиональный Документы
Культура Документы
"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 * +
"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
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
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
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
19
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
+,1
+ - queue $)i.a/ em ing.0"&
22
+,2
23
+ , 3/ 5
24
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
+,4
26
+ 1a2ia
27
+ 1a2ia
28
29
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
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
32
33
34
35
36
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
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
=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
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
43
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
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
=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
&;
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
D=1 D= D= D=0
D=
49
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
2
1 2 1
5
1
4
5
53
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
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
56
Algoritmo de DloNd6Tars(all
a r e s d e c a m in ( o s m ,n i
57
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
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
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
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
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