Você está na página 1de 3

Comunicac

ao e Redes
1a Lista de exerccios
1. Desenhe o grafo completo em 6 vertices (vamos chama-lo de grafo G). Entao
responda:
(a) Qual e a ordem e o tamanho de G?
(b) Qual e o grau dos vertices de G?
(c) O grafo completo em 5 vertices e subgrafo de G? Explique.
(d) O grafo completo em 4 vertices e subgrafo de G? Explique.
(e) O grafo completo em 3 vertices e subgrafo de G? Explique.
(f) Qual e a conexidade de vertices de G?
(g) Qual e a conexidade de arestas de G?
2. Para os grafos da Figura 1, determine:
(a) a ordem;
(b) o tamanho;
(c) o diametro;
(d) o conjunto V e A do grafo da Figura 1 (b);
(e) existe caminho euleriano? Se sim, indique o caminho.
0
11

5
10

9
(a)

5
(b)

0
4

5
6

8
7

2
(c)

Figura 1:
3. Construa a matriz de adjacencias e a lista de adjacencias para os grafos da Figura 1.
4. Analise cada matriz de adjacencias abaixo e responda para cada uma delas:
(a) o grafo e orientado ou nao-orientado?
1

(b) o grafo e ponderado?


(c) qual a quantidade de arestas que saem dos vertices?
(d) qual a quantidade de arestas que chegam nos vertices?
(e) qual o(s) vertice(s) de maior grau?
(f) desenhe o grafo.

0
1
2
3

0
2
2
2

2
0
2
0

2
2
0
2

2
0
2
2

0
1
2
3
4

0
0
4
0
0

2
0
5
0
0

0
0
0
0
2

0
3
4
0
0

6
0
0
3
0

5. Determine o caminho mnimo a partir do vertice 0 para cada um dos grafos do


Exerccio 4.
6. Para os grafos da Figura 1, execute a busca em largura.
7. Para os grafos da Figura 1, execute a busca em profundidade.
8. Os algoritmos BFS e DFS podem ser usados para indicar se um grafo e conexo?
Explique.
9. Desenhe o grafo da matriz abaixo e execute a busca em largura e a busca em
profundidade comecando no vertice 0.
0
1
2
3
4
5
6
7

0
1
1
0
0
0
0
0

1
0
1
1
0
0
0
0

1
1
0
1
0
0
0
1

0
1
1
0
1
1
1
0

0
0
0
1
0
1
0
0

0
0
0
1
1
0
0
0

0
0
0
1
0
0
0
0

0
0
1
0
0
0
0
0

Pseudo-c
odigo da BFS
Considere um grafo G = (V, A), um vertice inicial s e uma fila Q inicialmente vazia:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

BFS(G, s):
para vertice u em V faca
u.visitado = False
u.d =
// armazena o nvel dos vertices
u.p = None
// armazena o pai do vertice na arvore gerada pela BFS
s.visitado = True
s.d = 0
enfileira(Q, s)
enquanto tamanho(Q) > 0 faca
u = desenfileira(Q)
para vertice v adjacente a u faca
se n
ao v.visitado ent
ao
v.d = u.d + 1
v.p = u
v.visitado = True
enfileira(Q, v)
Pseudo-c
odigo da DFS
Considere um grafo G = (V, A), um vertice inicial u e uma pilha S inicialmente
vazia:

1
2
3
4
5
6
7
8
9
10
11
12
13
14

DFS(G, u, cont=0):
para vertice v em V faca
v.visitado = False
v.d =
// armazena a ordem que o vertice foi visitado
v.p = None
// armazena o pai do vertice na arvore gerada pela DFS
empilha(S, u)
enquanto tamanho(S) > 0 faca
v = desempilha(S)
se n
ao v.visitado ent
ao
v.visitado = True
v.d = cont
cont = cont+1
para vertice w adjacente a v faca
empilha(S, w)

Você também pode gostar