Grafos - Busca
Profa.ElaineParrosMachadodeSousaalterações: Cristina Dutra de Aguiar Ciferri
Materialbaseadoemaulasdosprofessores:
GustavoBa5sta,RobsonCordeiro,MoacirPon5Jr.,MariaCris5naOliveiraeThiagoA.S.Pardo
ALGORITMOS E ESTRUTURAS DE DADOS II
BUSCAEMPROFUNDIDADE:DEFINIÇÃO¢ Depth-FirstSearch–DFS¢ Caracterís5cas:
� oalgoritmobuscaovér5ce“maisprofundo”nografosemprequepossível
� asarestassãoexploradasapar5rdovér5cevmaisrecentementedescobertoequeaindapossuiarestasnãoexploradassaindodele
� quandotodasasarestasadjacentesav5veremsidoexploradas,abusca“andaparatrás”(backtracking)paraexplorarvér5cesquesaemdovér5ceapar5rdoqualvfoidescoberto
BUSCAEMPROFUNDIDADE:ESTRATÉGIA¢ Cadavér5ceécoloridodebranco,cinzaoupreto� todososvér5cessãoinicialmentebrancos� quandoumvér5cevé“descoberto”pelaprimeiravezeletorna-secinzaerecebeummarcadordetempodedescoberta
� quandotodososvér5cesadjacentesavforemcompletamente“descobertos”,vtorna-sepretoerecebeummarcadordetempodetérmino
BUSCAEMPROFUNDIDADE:PILHA¢ Usodeumapilhaparaorganizarosvér5cesquedevemserdescobertos� acadaescolhadecaminhoaserpercorrido,empilha-seovér5ceoriginalesegue-seocaminho
� cadavezqueocaminhoacaba,retorna-seaovér5ceanteriorempilhado
pilhapodeserimplementadadeformaimplícita(viarecursão)ou
explícita
BUSCAEMPROFUNDIDADE:EXECUÇÃO¢ Execuçãodoalgoritmo
� geraumaárvoredebuscaemprofundidadea
¢ Classificaçãodasarestasdografo� arestasdeárvore:arestasqueocorremnaárvoredebuscaemprofundidade
� arestasderetorno:arestasqueligamumnóaumantecessornaárvore
� arestasdeavanço:arestasqueligamumnóaumdescendentenaárvore
� arestasdecruzamento:demaisarestas
BUSCAEMPROFUNDIDADE:EXECUÇÃO¢ Cadaaresta(u,v)
� classificadapelacordovér5cevalcançadoquandoaarestaépercorridapelaprimeiravez
¢ Classificaçãodasarestasdografo� arestasdeárvore:cordev=branco� arestasderetorno:cordev=cinzaa� arestasdeavanço:cordev=pretoetempoDescoberta(u)<tempoDescoberta(v)
� arestasdecruzamento:cordev=pretoetempoDescoberta(u)>tempoDescoberta(v)
2
5
1
6
3
7
4
8
BUSCAEMPROFUNDIDADE:EXEMPLO1
2
5
1
6
3
7
4
8
1/
Vértice origem: 1 Tempo de descoberta: 1 Ação: vértice 1 torna-se cinza Tempo de término: -
BUSCAEMPROFUNDIDADE:EXEMPLO1
1
árvore de busca em profundidade
2
5
1
6
3
7
4
8
1/
2/
Primeiro vértice não descoberto adjacente a 1: 6 Tempo de descoberta: 2 Ação: vértice 6 torna-se cinza Tempo de término: -
BUSCAEMPROFUNDIDADE:EXEMPLO1
1
6
árvore de busca em profundidade
arv
2
5
1
6
3
7
4
8
1/
2/
3/
Primeiro vértice não descoberto adjacente a 6: 3 Tempo de descoberta: 3 Ação: vértice 3 torna-se cinza Tempo de término: -
BUSCAEMPROFUNDIDADE:EXEMPLO1
3
1
6
árvore de busca em profundidade
arv arv
2
5
1
6
3
7
4
8
1/
2/
3/ 4/
Primeiro vértice não descoberto adjacente a 3: 4 Tempo de descoberta: 4 Ação: vértice 4 torna-se cinza Tempo de término: -
BUSCAEMPROFUNDIDADE:EXEMPLO1
4
3
1
6
árvore de busca em profundidade
arv
arv arv
2
5
1
6
3
7
4
8
1/
2/
3/ 4/
5/
Primeiro vértice não descoberto adjacente a 4: 8 Tempo de descoberta: 5 Ação: vértice 8 torna-se cinza Tempo de término: -
BUSCAEMPROFUNDIDADE:EXEMPLO1
8
4
3
1
6
árvore de busca em profundidade
arv arv
arv
arv
2
5
1
6
3
7
4
8
1/
2/
3/ 4/
5/ 6/
Primeiro vértice não descoberto adjacente a 8: 7 Tempo de descoberta: 6 Ação: vértice 7 torna-se cinza Tempo de término: -
BUSCAEMPROFUNDIDADE:EXEMPLO1
7
8
4
3
1
6
árvore de busca em profundidade
arv
arv arv
arv
arv
2
5
1
6
3
7
4
8
1/
2/
3/ 4/
5/ 6/7
BUSCAEMPROFUNDIDADE:EXEMPLO1
7
8
4
3
1
6
árvore de busca em profundidade
Primeiro vértice não descoberto adjacente a 7: nenhum Tempo de descoberta: - Ação: vértice 7 torna-se preto Tempo de término: 7
ret ret
ret
arv
arv
arv
arv
arv
2
5
1
6
3
7
4
8
1/
2/
3/ 4/
5/8 6/7
Primeiro vértice não descoberto adjacente a 8: nenhum Tempo de descoberta: - Ação: vértice 8 torna-se preto Tempo de término: 8
BUSCAEMPROFUNDIDADE:EXEMPLO1
7
8
4
3
1
6
árvore de busca em profundidade
ret ret
ret
arv
arv
arv
arv
arv
2
5
1
6
3
7
4
8
1/
2/
3/ 4/9
5/8 6/7
Primeiro vértice não descoberto adjacente a 4: nenhum Tempo de descoberta: - Ação: vértice 4 torna-se preto Tempo de término: 9
BUSCAEMPROFUNDIDADE:EXEMPLO1
7
8
4
3
1
6
árvore de busca em profundidade
ret ret
ret
arv
arv
arv
arv
arv
2
5
1
6
3
7
4
8
1/
2/
3/10 4/9
5/8 6/7
Primeiro vértice não descoberto adjacente a 3: nenhum Tempo de descoberta: - Ação: vértice 3 torna-se preto Tempo de término: 10
BUSCAEMPROFUNDIDADE:EXEMPLO1
7
8
4
3
1
6
árvore de busca em profundidade
ret ret
ret
arv
arv
arv
arv
arv
2
5
1
6
3
7
4
8
1/
2/11
3/10 4/9
5/8 6/7
Primeiro vértice não descoberto adjacente a 6: nenhum Tempo de descoberta: - Ação: vértice 6 torna-se preto Tempo de término: 11
BUSCAEMPROFUNDIDADE:EXEMPLO1
7
8
4
3
1
6
árvore de busca em profundidade
ret ret
ret
arv
arv
arv
arv
arv
2
5
1
6
3
7
4
8
1/
2/11
3/10 4/9
5/8 6/7
12/
Primeiro vértice não descoberto adjacente a 1: 2 Tempo de descoberta: 12 Ação: vértice 2 torna-se cinza Tempo de término: -
BUSCAEMPROFUNDIDADE:EXEMPLO1
2
7
8
4
3
1
6
árvore de busca em profundidade
arv
ret ret
ret
arv
arv
arv
arv
arv
2
5
1
6
3
7
4
8
1/
2/11
3/10 4/9
5/8 6/7
12/
13/
Primeiro vértice não descoberto adjacente a 2: 5 Tempo de descoberta: 13 Ação: vértice 5 torna-se cinza Tempo de término: -
BUSCAEMPROFUNDIDADE:EXEMPLO1
5
2
7
8
4
3
1
6
árvore de busca em profundidade
arv
arv
ret ret
ret
arv
arv
arv
arv
arv
2
5
1
6
3
7
4
8
1/
2/11
3/10 4/9
5/8 6/7
12/
13/14
Primeiro vértice não descoberto adjacente a 5: nenhum Tempo de descoberta: - Ação: vértice 5 torna-se preto Tempo de término: 14
BUSCAEMPROFUNDIDADE:EXEMPLO1
5
2
7
8
4
3
1
6
árvore de busca em profundidade
arv
ret ret
ret
arv
arv
arv
arv
arv arv
2
5
1
6
3
7
4
8
1/
2/11
3/10 4/9
5/8 6/7
12/15
13/14
Primeiro vértice não descoberto adjacente a 2: nenhum Tempo de descoberta: - Ação: vértice 2 torna-se preto Tempo de término: 15
BUSCAEMPROFUNDIDADE:EXEMPLO1
5
2
7
8
4
3
1
6
árvore de busca em profundidade
arv
arv
ret ret
ret
arv
arv
arv
arv
arv
2
5
1
6
3
7
4
8
1/16
2/11
3/10 4/9
5/8 6/7
12/15
13/14
Primeiro vértice não descoberto adjacente a 1: nenhum Tempo de descoberta: - Ação: vértice 1 torna-se preto Tempo de término: 16
BUSCAEMPROFUNDIDADE:EXEMPLO1
5
2
7
8
4
3
1
6
árvore de busca em profundidade
arv
arv
ret ret
ret
arv
arv
arv
arv
arv
2
5
1
6
3
7
4
8
1/16
2/11
3/10 4/9
5/8 6/7
12/15
13/14
BUSCAEMPROFUNDIDADE:EXEMPLO1
5
2
7
8
4
3
1
6
árvore de busca em profundidade
emumgrafonãodirecionado,todasas
arestassãodeárvoreouderetorno
arv
arv
ret ret
ret
arv
arv
arv
arv
arv
3 2 1
4 5 6
BUSCAEMPROFUNDIDADE:EXEMPLO2
3 2 1
4 5 6
1/ 1
BUSCAEMPROFUNDIDADE:EXEMPLO2
Vértice origem: 1 Tempo de descoberta: 1 Ação: vértice 1 torna-se cinza Tempo de término: -
árvore de busca em profundidade
3 2 1
4 5 6
1/ 2/ 1
2 arv
BUSCAEMPROFUNDIDADE:EXEMPLO2
Primeiro vértice não descoberto adjacente a 1: 2 Tempo de descoberta: 2 Ação: vértice 2 torna-se cinza Tempo de término:
árvore de busca em profundidade
3 2 1
4 5 6
1/ 2/ 3/ 1
2
3
arv arv
BUSCAEMPROFUNDIDADE:EXEMPLO2
Primeiro vértice não descoberto adjacente a 2: 3 Tempo de descoberta: 3 Ação: vértice 3 torna-se cinza Tempo de término:
árvore de busca em profundidade
3 2 1
4 5 6
1/ 2/ 3/ arv arv
1
2
3
6
arv
4/
BUSCAEMPROFUNDIDADE:EXEMPLO2
Primeiro vértice não descoberto adjacente a 3: 6 Tempo de descoberta: 4 Ação: vértice 6 torna-se cinza Tempo de término:
árvore de busca em profundidade
3 2 1
4 5 6
1/ 2/ 3/ arv arv
arv ret
4/5
1
2
3
6
BUSCAEMPROFUNDIDADE:EXEMPLO2
Primeiro vértice não descoberto adjacente a 6: nenhum Tempo de descoberta: - Ação: vértice 6 torna-se preto Tempo de término: 5
árvore de busca em profundidade
3 2 1
4 5 6
1/ 2/ 3/6 arv arv
arv ret
4/5
1
2
3
6
BUSCAEMPROFUNDIDADE:EXEMPLO2
Primeiro vértice não descoberto adjacente a 3: nenhum Tempo de descoberta: - Ação: vértice 3 torna-se preto Tempo de término: 6
árvore de busca em profundidade
3 2 1
4 5 6
1/ 2/ 3/6 arv arv
arv ret
4/5 7/
1
2
3
6
5
arv
BUSCAEMPROFUNDIDADE:EXEMPLO2
Primeiro vértice não descoberto adjacente a 2: 5 Tempo de descoberta: 7 Ação: vértice 5 torna-se preto Tempo de término: -
árvore de busca em profundidade
3 2 1
4 5 6
1/ 2/ 3/6 arv arv
arv ret
4/5 7/8
arv
1
2
3
6
5 cruz
BUSCAEMPROFUNDIDADE:EXEMPLO2
Primeiro vértice não descoberto adjacente a 5: nenhum Tempo de descoberta: - Ação: vértice 5 torna-se preto Tempo de término: 8
árvore de busca em profundidade
3 2 1
4 5 6
1/ 2/9 3/6 arv arv
arv ret
4/5 7/8
arv
1
2
3
6
5 cruz
BUSCAEMPROFUNDIDADE:EXEMPLO2
Primeiro vértice não descoberto adjacente a 2: nenhum Tempo de descoberta: - Ação: vértice 2 torna-se preto Tempo de término: 9
árvore de busca em profundidade
3 2 1
4 5 6
1/10 2/9 3/6 arv arv
arv ret
4/5 7/8
arv
cruz
1
2
3
6
5
ava
BUSCAEMPROFUNDIDADE:EXEMPLO2
Primeiro vértice não descoberto adjacente a 1: nenhum Tempo de descoberta: - Ação: vértice 1 torna-se preto Tempo de término: 10
árvore de busca em profundidade
3 2 1
4 5 6
1/10 2/9 3/6 arv arv
arv ret
4/5 7/8
arv
cruz 11/
ava
1
2
3
6
5
4
BUSCAEMPROFUNDIDADE:EXEMPLO2
Vértice origem: 4 Tempo de descoberta: 11 Ação: vértice 4 torna-se cinza Tempo de término: -
árvore de busca em profundidade
3 2 1
4 5 6
1/10 2/9 3/6 arv arv
arv ret
4/5 7/8
arv
cruz 11/12
cruz
cruz ava
1
2
3
6
5
4
BUSCAEMPROFUNDIDADE:EXEMPLO2
Primeiro vértice não descoberto adjacente a 4: nenhum Tempo de descoberta: - Ação: vértice 4 torna-se preto Tempo de término: 12
árvore de busca em profundidade
3 2 1
4 5 6
1/10 2/9 3/6 arv arv
arv ret
4/5 7/8
arv
cruz 11/12
cruz
cruz ava
BUSCAEMPROFUNDIDADE:EXEMPLO2
emumgrafodirecionado,podemocorreraindaarestasdeavançoede
cruzamento
árvore de busca em profundidade
1
2
3
6
5
4
¢ SegrafoGnãofor(fortemente)conectado=>buscaemprofundidadegeraumaflorestadeárvoresdebusca.
1
6
2
5
3
4
BUSCAEMPROFUNDIDADE:EXECUÇÃO
BUSCAEMPROFUNDIDADE:USO¢ Oalgoritmoébaseparaoutrosalgoritmosimportantes� verificaçãodegrafosacíclicos� descobertadecaminhos� ordenaçãotopológica� descobertadecomponentesfortementeconectados
¢ Caracterís5ca� linearemrelaçãoaotamanhodarepresentaçãodografousandolistasdeadjacência
¢ O(|V|)� cadavér5ceutorna-searaizdeumanovaárvoredebuscaemprofundidadeapenasumaúnicavez(visitaDFS)
¢ O(|A|)� novisitaDFS,olaçoéexecutado|adj[u]|vezes,ouseja,O(|A|)nototal
Busca em Profundidade: Complexidade
O(|V|+|A|)
BIBLIOGRAFIA¢ N.Ziviani.ProjetodeAlgoritmos,Thomson,2a.Edição,2004.
¢ T.H.Cormen,C.E.LeisersonandR.L.Rivest.Introduc5ontoAlgorithms,MITPress,2ndEdi5on,2001.