Grafos - Inf

Propaganda
Grafo orientado
a = (v1,v2)
Arco
Caminho
Circuito
1
a1
5
Grafos – aula 2
a3
a2
2
a4
a5
Grafo nãonão-orientado
1
a1
4
a2
3
a6
4
2
a4
a = {v1,v2}
a3
Aresta
Cadeia
Ciclo
Clesio S. Santos, Nina Edelweiss & Luciana P. Nedel
Estruturas de Dados - Grafos
Algoritmos
3
Clesio S. Santos, Nina Edelweiss & Luciana P. Nedel
Estruturas de Dados - Grafos
Exame sistemático de vértices
Problemas principais:
• Complexidade
• Ciclos
„
„
Ao contrário das listas lineares e das árvores, que são
estruturas acíclicas, os grafos podem possuir ciclos
Dado um grafo qualquer, como fazer para percorrer
todos os seus vértices?
Por onde começar?
1
3
1
2
4
5
Clesio S. Santos, Nina Edelweiss & Luciana P. Nedel
2
3
6
5
4
Estruturas de Dados - Grafos
Clesio S. Santos, Nina Edelweiss & Luciana P. Nedel
Estruturas de Dados - Grafos
Exame sistemático de vértices
Exame sistemático de vértices
Percurso em profundidade
(Depth First Search)
1 1º
1
3
4
6
2
3 5º
5
4 6º
2 2º
6 4º
Clesio S. Santos, Nina Edelweiss & Luciana P. Nedel
5 3º
Estruturas de Dados - Grafos
1
3
3
1º
1
3º
4
2
2º
5
4º
2
4 6º
6
Clesio S. Santos, Nina Edelweiss & Luciana P. Nedel
Clesio S. Santos, Nina Edelweiss & Luciana P. Nedel
Estruturas de Dados - Grafos
Exame sistemático de vértices
Exame sistemático de vértices
Percurso em amplitude
(Breadth First Search)
Procedimento DFS (G: PGrafo; v: PVertice)
{ Exame em Profundidade (Depth First Search) }
{ visitado: atributo do nodo }
início
vÇ.visitado ← 1; { nodo v escolhido aleatoriamente }
para cada w adjacente a v
faça se wÇ.visitado = 0
então DFS(G,w);
fim; { DFS }
6
5º
5
Estruturas de Dados - Grafos
Procedimento BFS (G: PGrafo; v: PVertice)
{ Exame em Amplitude (Breadth First Search) }
{ visitado: atributo}
{ FV: Fila de vértices inicialmente vazia }
início
vÇ.visitado ← 1;
insere(FVÇ,v);
enquanto FV não vazia
faça início
v ← retira(FVÇ ); { retira primeiro elemento da fila }
para cada w adjacente a v
faça se wÇ.visitado = 0
então início
insere(FVÇ,w);
wÇ.visitado ← 1;
fim
fim
fim; { DFS }
Clesio S. Santos, Nina Edelweiss & Luciana P. Nedel
Estruturas de Dados - Grafos
Exercício
„
Escreva a ordem dos vértices percorridos pelos
caminhamentos em amplitude e profundidade para o
grafo abaixo:
1
2
7
3
4
8
Problema
„
„
Desejamos conectar todos os computadores em um
prédio de escritório usando a menor quantidade
possível de cabos
Como resolver o problema?
5
6
http://www.cs.duke.edu/csed/jawaa2/examples/DFS.html
http://www.cs.duke.edu/csed/jawaa2/examples/BFS.html
Clesio S. Santos, Nina Edelweiss & Luciana P. Nedel
Estruturas de Dados - Grafos
Árvore geradora de grafo
Clesio S. Santos, Nina Edelweiss & Luciana P. Nedel
Estruturas de Dados - Grafos
Algoritmo de Paton
Um grafo não-orientado G é uma árvore se satisfizer a
qualquer uma das seguintes condições:
G é conexo e sem ciclos;
G é conexo, com n vértices e n-1 arestas.
Uma árvore obtida pela remoção dos ciclos de
um grafo é chamada árvore geradora do
Objetivo: determinação de uma árvore geradora para um grafo
não-valorado
A – arestas de G
V – vértices de G
AA – arestas da árvore geradora
VA – vértices da árvore geradora
X vértices ainda não examinados
grafo.
Clesio S. Santos, Nina Edelweiss & Luciana P. Nedel
Estruturas de Dados - Grafos
Clesio S. Santos, Nina Edelweiss & Luciana P. Nedel
Estruturas de Dados - Grafos
Árvore geradora de grafo
Algoritmo de Paton
6
6
Objetivo: determinação de uma árvore geradora para um grafo
não-valorado
1
AA = 0; VA = 0; X = V;
1. Escolhe um vértice de V para raiz da árvore
2. Visita os vértices adjacentes a raiz
3. Repete-se mesmo procedimento para o último vértice
visitado
1
5
G
2
A1
2
4
Estruturas de Dados - Grafos
Algoritmo de Paton
A
3
6
1
5
2
4
3
Clesio S. Santos, Nina Edelweiss & Luciana P. Nedel
Estruturas de Dados - Grafos
Árvore geradora mínima
D
19
B
4
3
A2
Clesio S. Santos, Nina Edelweiss & Luciana P. Nedel
5
1
1
9
9
C
6
17
E
6
8
23
30
30
4
27
2
7
17
15
8
5
2
7
3
5
23
4
3
27
Árvore geradora mínima é, dentre as árvores
geradoras, aquela que apresenta a menor soma dos valores
associados às linhas.
Clesio S. Santos, Nina Edelweiss & Luciana P. Nedel
Estruturas de Dados - Grafos
Clesio S. Santos, Nina Edelweiss & Luciana P. Nedel
Estruturas de Dados - Grafos
Algoritmo de Kruskal
Algoritmo de Kruskal
Objetivo: determinação de uma árvore geradora para um grafo
valorado
1. Iniciar com os n vértices e nenhuma aresta
2. Fila ordenada dos arestas
3. Acrescentar uma aresta ainda não colocada e que não
fecha ciclo
4. Repetir o passo 3 até que n-1 arestas tenham sido
colocadas
Geração de árvore geradora mínima:
escolhendo sempre os menores
valores de arcos disponíveis
O algoritmo exige que se tenha um método para determinar se
uma aresta fecha ciclo ou não.
–http://students.ceid.upatras.gr/~papagel/project/kruskal.htm
Clesio S. Santos, Nina Edelweiss & Luciana P. Nedel
Estruturas de Dados - Grafos
Algoritmo de Kruskal
Clesio S. Santos, Nina Edelweiss & Luciana P. Nedel
Algoritmo de Kruskal
Algoritmo Kruskal (G);
G: Grafo não-orientado, sem laços, com n vértices v1 ... vn e m arestas a1={u1,w1} ..... am={um,wm}
A: Árvore de cobertura mínima
19
1
6
Estruturas de Dados - Grafos
2
7
6
4
Clesio S. Santos, Nina Edelweiss & Luciana P. Nedel
27
3
2
7
8
23
30
9
17
15
8
5
1
9
17
para cada vértice v em G faça
Defina um grupo elementar C(v) := {v} { um grupo é uma lista não ordenada de vértices }
Inicialize uma fila ordenada Q para conter todas as arestas em G,
usando seus pesos como chaves
1
19
9
Inicializa A
enquanto A tem menos de n-1 arestas faça
6
2
7
RetiraFila(u,v);
17
15
Seja C(v) o grupo contendo v e C(u) o grupo contendo u
8
23
se C(v) <> C(u) então
5
4
3
Coloque aresta (v,u) em A
30
27
Unifique C(v) e C(u) em um grupo
Retorna a árvore A
Clesio S. Santos, Nina Edelweiss & Luciana P. Nedel
Estruturas de Dados - Grafos
5
23
4
3
Estruturas de Dados - Grafos
Exercício
„
„
„
„
Existem 8 pequenas ilhas em um
arquipélago e o governo deseja
construir 7 pontes conectando-as
de forma que cada ilha possa ser
alcançada de qualquer outra ilha
através de uma ou mais pontes
O custo de construção de uma
ponte é proporcional ao seu
comprimento
As distâncias entre os pares de
ilhas são dados na tabela abaixo
Ache quais pontes devem ser
construídas para que o custo da
construção seja mínimo
Clesio S. Santos, Nina Edelweiss & Luciana P. Nedel
1
2
3
4
5
6
7
8
1
-
240
210
340
280
200
345
120
2
-
-
265
175
215
180
185
155
3
-
-
-
260
115
350
435
195
4
-
-
-
-
160
330
295
230
5
-
-
-
-
-
360
400
170
6
-
-
-
-
-
-
175
205
7
-
-
-
-
-
-
-
305
8
-
-
-
-
-
-
-
-
Estruturas de Dados - Grafos
Download