Você está na página 1de 4

MCTA028-17 – Teoria dos Grafos

Centro de Matemática, Computação e Cognição


Universidade Federal do ABC
Lista 2

Gustavo Henrique Barrionuevo

21 de Outubro de 2018

1. Dado um grafo G e uma aresta uv de G, escreva um algoritmo que verifica


se uv é ponte.

Solução:
Remova a aresta uv de G. Execute a BFS a partir do vértice u para encontrar
o vértice v. Se o vértice v não for encontrado então a aresta uv é ponte, caso
contrário, não é.

2. Explique como usar a BFS para calcular a cintura de um grafo.

Solução:
Podemos calcular a cintura de um grafo tomando a menor distância possı́vel
quando executamos a BFS para todo vértice do grafo e armazenando a menor
distância (camada) em que um vértice aparece pela segunda vez na busca. O
valor inicial da menor distância é ∞.

Esse algoritmos funciona, pois, caso o grafo contém um ciclo C de tamanho l


e executarmos a BFS em algum vértice do ciclo C, então somos garantidos a
alcançar um vértice já explorado na l-ésima iteração. Por outro lado, se a BFS
alcançar um vértice já explorado com distância l, então o grafo deve conter um
ciclo de tamanho ≤ l, isto é, a cintura do grafo é no máximo l.

3. Mostre que o seguinte vale para todo grafo G com n vértices e m arestas:
m ≥ n − c(G), onde c(G) denota a quantidade de componentes conexas de G.
Mostre que a igualdade vale apenas para quando G é uma floresta.

Solução: Pk
Seja G1 , G2 , . . . , Gk as componentes de G. Note que |E(G)| = i=1 |E(Gi )| e
Pk
|V (G)| = i=1 |V (Gi )|. Note que cada componente Gi , i = 1, . . . , c(G) é um

1
grafo conexo e pelo Teorema 8.1 cada Gi tem

|E(Gi )| ≥ |V (Gi )| − 1

Somando para todas as componentes, temos


c(G) c(G)
X X
|E(G)| = |E(Gi )| ≥ (|V (Gi )| − 1) = |V (G)| − c(G).
i=1 i=1

No caso em que G é uma floresta, ou seja, suas componentes são árvores, a


demonstração é a mesma, porém, utilizamos o Teorema 8.7 no lugar do Teorema
8.1, isto é
|E(Gi )| = |V (Gi )| − 1
somando para todas as componentes temos

|E(G)| = |V (G)| − c(G).

4. Indique um argumento na prova de corretude do Dijkstra que não é válido


quando o grafo em questão tem arestas com peso negativo.

Solução:
Quando é suposto a existência de um outro possı́vel menor caminho P de s a y
que não seja o construı́do pelo algoritmo. Então esse caminho P é dividido em
três possı́veis partes:

1a 2a
s k z
y
X

3a

Onde kz de P é a primeira aresta de P tal que k ∈ X e z ∈/ X. Então na terceira


parte, que é de z a y, assume-se que não existem arestas com peso negativo, ou
seja, adicionar uma aresta nunca pode fazer um caminho mais curto do que já
tinha.

5. Mostre que se G é uma árvore com ∆(G) ≥ 2, então G tem pelo menos ∆(G)
folhas.

Solução:
Seja v um vértice de grau ∆(G) na árvore G. Sejam v1 , v2 , . . . , v∆(G) os vértices
adjacentes a v. Para todo i ∈ [1, . . . , ∆(G)], considere o maior caminho Pi que

2
começa em v e contém vi . Seja wi o vértice extremo de Pi que não seja v. Note
que nenhum desses wi vértices são os mesmos, caso contrário G teria ciclo, o que
nenhuma árvore tem. Claramente, todo vértice wi é uma folha em G. Portanto
G tem pelo menos ∆(G) folhas.

6. Prove que toda árvore G com |V (G)| ≥ 2 possui pelo menos dois conjuntos
independentes maximais disjuntos.

Solução:
Por definição uma árvore não contém ciclos, ou seja, não contém ciclos ı́mpares e
portanto é um grafo bipartido que por definição possui pelo menos dois conjuntos
independentes maximais disjuntos.

7. Quantas orientações um grafo simples possui?

Solução:
Seja G(V, E) um grafo simples então G possui 2|E| orientações possı́veis.

8. Seja G um grafo par. Mostre que G possui uma orientação D tal que d+
D (v) =
d−
D (v) para todo v ∈ V (D).

Solução:
Seja G um grafo par qualquer, então G é euleriano. Claramente, uma possı́vel

orientação D que é d+
D (v) = dD (v) para todo v ∈ V (D), que faz com que D
tenha uma trilha direcionada Euleriana fechada, ou seja, também é euleriano.

9. Mostre que um grafo par não possui aresta de corte.

Solução:
Pelo Teorema 4.3 todo grafo par pode ser decomposto em ciclos e pelo Teorema
3.3 uma aresta é de corte se e somente se não pertence a nenhum ciclo. Portanto,
um grafo par não possui aresta de corte.

10. Mostre que todo grafo bipartido k-regular com bipartição (X, Y ) temos
|X| = |Y |.

Solução: P
Como cada vértice de G tem grau k, temos que k|X| = x∈X d(x) e k|Y | =
P
y∈Y d(y). Note que toda aresta em G tem exatamente uma extremidade em
X e outra extremidade em Y . Então
X X
d(x) = d(y) = |E(G)|
x∈X y∈Y

e portanto
k|X| = k|Y | = |E(G)|
|X| = |Y |.

3
11. Mostre que toda árvore possui uma folha na maior das partes da bipartição.

Solução:
Se não existe uma folha na maior das partes da bipartição, então todo vértice
nessa partição tem grau pelo menos 2. Mas então o número de arestas é pelo me-
nos 2|Vl | onde Vl é a maior das partes da bipartição, Vl tem pelo menos |V (G)|/2
vértices. Portanto, temos pelo menos |E(G)| = 2(|V (G)|/2) = |V (G)| arestas
no grafo, o que é uma contradição com o fato de toda árvore ter exatamente
|V (G)| − 1 arestas.