Você está na página 1de 64

Teoria dos Grafos

Rotulação de Arestas
Profª. Dayse Silveira de Almeida
daysesa@ufg.br

Universidade Federal de Goiás (UFG)/Regional Catalão


Curso de Ciência da Computação
2019.2
Árvore de Busca em Profundidade
• A execução do algoritmo de busca em profundidade gera
uma árvore chamada árvore de busca em
profundidade.
Árvore de Busca em Profundidade
Árvore de Busca em Profundidade
Árvore de Busca em Profundidade
Árvore de Busca em Profundidade
Árvore de Busca em Profundidade
Árvore de Busca em Profundidade
Árvore de Busca em Profundidade
Árvore de Busca em Profundidade
Árvore de Busca em Profundidade
Árvore de Busca em Profundidade
Árvore de Busca em Profundidade
Árvore de Busca em Profundidade
Árvore de Busca em Profundidade
Árvore de Busca em Profundidade
Árvore de Busca em Profundidade
Árvore de Busca em Profundidade
Floresta de Árvores de Busca
• Caso o grafo G for não (fortemente) conectado, então a
busca em profundidade irá criar uma floresta de árvores
de busca.
Classificação de Arestas
• As arestas de um grafo podem ser classificadas conforme a
sua árvore de busca em profundidade:

• Arestas de árvore: arestas que ocorrem na árvore de busca em


profundidade;
• (u, v) – se v foi descoberto pela primeira vez ao percorrer (u, v).

• Arestas de retorno: arestas que ligam com um nó antecessor na


árvore;
• As arestas self-loops são consideradas de retorno.

• Arestas de avanço: arestas que ligam com um nó descendente na


árvore;
• Não pertencem a árvore, conectam u a um descente de v que pertence à
árvore.

• Arestas de cruzamento: demais arestas.


• Podem conectar vértices na mesma árvore ou em duas árvores diferentes.
Árvore de Busca em Profundidade
• Cada aresta será classificada no momento em que é
percorrida.
Árvore de Busca em Profundidade
• Cada aresta (u, v) pode ser classificada pela cor do
vértice v alcançado quando a aresta é percorrida pela
primeira vez:

• Branco indica uma aresta de árvore;

• Cinza indica uma aresta de retorno;


• Atinge um antecessor.

• Preto indica uma aresta de avanço ou uma aresta de cruzamento.


• Aresta (u, v) é de avanço – d[u] < d[v];
• Cruzamento – d[u] > d[v].
Árvore de Busca em Profundidade
Árvore de Busca em Profundidade
Árvore de Busca em Profundidade
Árvore de Busca em Profundidade
Árvore de Busca em Profundidade
Árvore de Busca em Profundidade

• Atingiu um antecessor – aresta de retorno.


Árvore de Busca em Profundidade

• Atingiu um antecessor – aresta de retorno.


Árvore de Busca em Profundidade

• Atingiu um antecessor – aresta de retorno.


Árvore de Busca em Profundidade
Árvore de Busca em Profundidade
Árvore de Busca em Profundidade
Árvore de Busca em Profundidade
Árvore de Busca em Profundidade
Árvore de Busca em Profundidade
Árvore de Busca em Profundidade
Árvore de Busca em Profundidade
Árvore de Busca em Profundidade
Árvore de Busca em Profundidade
Árvore de Busca em Profundidade

Em um grafo não orientado todas as


arestas são de árvore ou de retorno.
Árvore de Busca em Profundidade
• É importante reparar que a classificação das arestas
pode ser diferente se a ordem os vértices adjacentes
percorridos for alterada.
• Em outras palavras, a classificação das arestas depende
da árvore de busca em profundidade.
• Entretanto, a maioria dos algoritmos que faz uso da
classificação das arestas, não depende de uma
classificação específica, mas sim da existência de um
tipo de aresta.
• Por exemplo, algoritmo de detecção de ciclos requer encontrar
uma aresta de retorno.
Árvore de Busca em Profundidade
• O algoritmo de busca em profundidade funciona
igualmente bem para grafos direcionados.

• Nesse caso, podem ocorrer arestas de avanço e de


cruzamento.
Árvore de Busca em Profundidade
1/
2 1 1
3

6 5 4
Árvore de Busca em Profundidade
Árvore de Busca em Profundidade
Árvore de Busca em Profundidade
Árvore de Busca em Profundidade
Árvore de Busca em Profundidade
Árvore de Busca em Profundidade
Árvore de Busca em Profundidade
Árvore de Busca em Profundidade

• d[5] > d[6] – aresta de cruzamento.


Árvore de Busca em Profundidade
Árvore de Busca em Profundidade
Árvore de Busca em Profundidade

• d[1] < d[5] – aresta de avanço.


Árvore de Busca em Profundidade
Árvore de Busca em Profundidade
Árvore de Busca em Profundidade

• d[4] > d[5] – aresta de cruzamento.


Árvore de Busca em Profundidade

• d[4] > d[1] – aresta de cruzamento.


Árvore de Busca em Profundidade
Exercícios
1. Mostre como a busca em profundidade funciona para o
grafo a seguir. Mostre a sequência de vértices
visitados, a árvore ou floresta de busca em
profundidade e o vetor antecessor.

2. Verifique também se o grafo contém ciclos utilizando a


rotulação de arestas.
Exercícios
3. Mostre como a busca em profundidade funciona para o
grafo da figura abaixo, usando o vértice 1 como origem.
Classifique as arestas.
Exercícios
4. Mostre a árvore de busca em profundidade gerada a
partir da execução do algoritmo de busca em
profundidade iniciando no vértice 1 do grafo abaixo.
Classifique cada aresta como: aresta de retorno, ou
aresta de árvore, ou aresta de avanço, ou aresta de
cruzamento. Todas as classificações possíveis para as
arestas foram usadas? Por quê?
Créditos
• Batista, Gustavo. Grafos: definições. Algoritmos e
Estruturas de Dados II. Slides. Ciência de Computação.
ICMC/USP, 2009.

Você também pode gostar