Você está na página 1de 2

Universidade Federal de Lavras

Instituto de Ciências Exatas e Tecnológicas


Departamento de Ciência da Computação
GCC218 - Algoritmos em Grafos
Prof. MAYRON CESAR DE OLIVEIRA MOREIRA

Aplicações da BFS e da DFS

1. Dizemos que um grafo não-direcionado é uma árvore se for conexo e


acíclico. Suponha 𝑇 = (𝑉𝑇, 𝐸𝑇) uma árvore. O diâmetro de 𝑇 é definido como
𝑚𝑎𝑥𝑢,𝑣∈𝑉 𝐷(𝑢, 𝑣), em que 𝐷(𝑢, 𝑣) é o menor caminho (em número de arestas)
𝑇

de 𝑢 a 𝑣. Apresente um algoritmo eficiente para o cálculo do diâmetro de uma


árvore, e analise sua complexidade no pior caso.

2. Apresente um algoritmo para ordenação topológica em 𝑂(𝑛 + 𝑚), baseado


em BFS. Note que 𝑛 é o número de vértices do grafo, e 𝑚 é o número de
arestas do grafo.

3. Como o número de componentes fortemente conexas em um grafo


direcionado pode mudar com a adição de um novo arco? Justifique sua
resposta.

4. Um professor afirma que: “o algoritmo de componentes fortemente


conectadas, baseado em DFS e visto em aula, poderia ser mais simples se
utilizado apenas o grafo original (sem utilizar o grafo transposto) na segunda
passada da DFS, levando em conta os vértices em ordem crescente de
tempos de finalização”. Essa modificação, proposta pelo professor, está
correta? Justifique sua resposta.

5. Desenvolva um algoritmo em 𝑂(𝑛 + 𝑚), em que 𝑛 é o número de vértices e


𝑚 é o número de arcos de um grafo direcionado, que calcule o grafo
componente de um algoritmo para determinação de componentes fortemente
conectadas de um grafo.

6. Dizemos que um grafo direcionado 𝐺 = (𝑉, 𝐸) é semi-fortemente conexo se


∀𝑢, 𝑣 ∈ 𝑉, existe um caminho 𝑢⤳𝑣 ou 𝑣⤳𝑢. Apresente um algoritmo eficiente
que determina se 𝐺 é semi-fortemente conexo, ou não. Analise a
complexidade do seu algoritmo.

7. Dado o grafo abaixo (Figura 1), rotule os vértices usando a DFS de Tarjan
(escreva os rótulos de cada vértice em frente a “disc” (também conhecido
como “dfs_num”) e “dfs_low”. Supondo que a busca começará no vértice 8 e
que o grafo está armazenado em uma lista de adjacência ordenada (onde os
vizinhos de um vértice são sempre processados em ordem crescente de
rótulo).

Figura 1. Grafo da questão sobre o Algoritmo de Tarjan.

Você também pode gostar