22
AED Algoritmos e Estruturas de Dados LEEC - 2005/2006 Teoria de Grafos e Algoritmos em Grafos AED (IST/DEEC) 2 Grafos - O que é um grafo? Objecto abstracto Dois tipos de entidades – Nós ou Vértices Ramos ou Arestas Vértices representam cidades, pessoas, máquinas, números, etc Arestas representam existência de ligações entre nós, valor da ligação entre nós, distância entre nós, etc

AED Algoritmose Estruturasde Dados LEEC -2005/2006 Teoria ...algos.inesc-id.pt/aed06/downloads/Slides/11-GrafosA.pdf · AED Algoritmose Estruturasde Dados LEEC -2005/2006 Teoria de

Embed Size (px)

Citation preview

Page 1: AED Algoritmose Estruturasde Dados LEEC -2005/2006 Teoria ...algos.inesc-id.pt/aed06/downloads/Slides/11-GrafosA.pdf · AED Algoritmose Estruturasde Dados LEEC -2005/2006 Teoria de

AED Algoritmos e Estruturas de Dados

LEEC - 2005/2006

Teoria de Grafos eAlgoritmos em Grafos

AED (IST/DEEC) 2

Grafos - O que é um grafo?

• Objecto abstracto• Dois tipos de entidades

– Nós ou Vértices– Ramos ou Arestas

• Vértices representam– cidades, pessoas, máquinas,

números, etc• Arestas representam

– existência de ligações entrenós, valor da ligação entrenós, distância entre nós, etc

Page 2: AED Algoritmose Estruturasde Dados LEEC -2005/2006 Teoria ...algos.inesc-id.pt/aed06/downloads/Slides/11-GrafosA.pdf · AED Algoritmose Estruturasde Dados LEEC -2005/2006 Teoria de

AED (IST/DEEC) 3

Grafos - Motivação• Mapas

– caminhos mais curtos; ca-minhos mais baratos.

• Circuitos Eléctricos– existência de curto-circui-

tos; existência de cruzamen-to entre ligações.

• Sequenciamento– tarefas a executar por um

conjunto de recursos sujei-tas a restrições de caráctertecnológico.

• Emparelhamento– processamento de imagem

estéreo; atribuição de pes-soas a lugares.

• Redes de dados– computadores ligados entre

si, enviando e recebendomensagens; existência de li-gação entre quaisquer nós; redundância.

• Estrutura de Programas– grafos gerados por compila-

dores representando a estru-tura de chamadas;

AED (IST/DEEC) 4

Grafos – Definições (1)• Def: Um grafo é um conjunto de vértices e um conjunto

de arestas que ligam pares de vértices distintos (com nunca mais que uma aresta a ligar qualquer par de vértices).

• Def: Dois vértices ligados por uma aresta dizem-se adjacentes.

• Def: Uma aresta que ligue dois vértices diz-se incidentede cada um dos vértices.

Page 3: AED Algoritmose Estruturasde Dados LEEC -2005/2006 Teoria ...algos.inesc-id.pt/aed06/downloads/Slides/11-GrafosA.pdf · AED Algoritmose Estruturasde Dados LEEC -2005/2006 Teoria de

AED (IST/DEEC) 5

Grafos – Definições (2)• Def: O número de arestas incidentes num vértice diz-se o

grau desse vértice.

• Def: O subconjunto de arestas e vértices a elas associadosdiz-se um sub-grafo do grafo original.

• Def: Uma sequência de vértices na qual os vérticessucessivos estão ligados por arestas do grafo diz-se umcaminho.

AED (IST/DEEC) 6

Grafos – Definições (3)• Def: Num caminho simples os vértices e arestas são

distintos.

• Def: Um caminho em que todos os vértices e arestas sãodistintos, excepto para o primeiro e último que são iguais, diz-se um ciclo.

• Def: Dois caminhos simples dizem-se disjuntos se não possuírem vértices comuns, excepto possivelmente para osvértices extremos.

Page 4: AED Algoritmose Estruturasde Dados LEEC -2005/2006 Teoria ...algos.inesc-id.pt/aed06/downloads/Slides/11-GrafosA.pdf · AED Algoritmose Estruturasde Dados LEEC -2005/2006 Teoria de

AED (IST/DEEC) 7

• Def: Um grafo diz-se ligado se existir um caminho de cadavértice para todos os outros vértices do grafo.

• Def: Um grafo que não seja ligado é constituído porcomponentes ligadas, que se dizem sub-grafos ligadosmáximos.

• Def: Um grafo ligado acíclico, i.e. sem ciclos, diz-se umaárvore.

Grafos – Definições (4)

AED (IST/DEEC) 8

Grafos – Definições (5)• Def: Um conjunto de árvores diz-se uma floresta.

• Def: A árvore de suporte de um grafo ligado é um sub-grafo que contém todos os vértices e é uma árvore.

• A floresta de suporte de um grafo é um sub-grafo quecontém todos os seus vértices e é uma floresta.

Page 5: AED Algoritmose Estruturasde Dados LEEC -2005/2006 Teoria ...algos.inesc-id.pt/aed06/downloads/Slides/11-GrafosA.pdf · AED Algoritmose Estruturasde Dados LEEC -2005/2006 Teoria de

AED (IST/DEEC) 9

Grafos – Propriedades em árvores• Um grafo G de V vértices é uma árvore se e só se satisfizer

qualquer das seguintes condições:

– G tem V-1 arestas e nenhum ciclo.

– G tem V-1 arestas e é ligado.

– Existe apenas um caminho simples a unir quaisquer dois vértices.

– G é ligado mas retirando uma só aresta faz com que deixe de o ser.

AED (IST/DEEC) 10

Grafos – Exemplos (1)

• Os vértices 6 e 7 são adjacentes.• Os vértices 4 e 6 não são adjacentes.• O vértice 7 tem grau quatro.

1

4

2

76

5 8

3

G

Page 6: AED Algoritmose Estruturasde Dados LEEC -2005/2006 Teoria ...algos.inesc-id.pt/aed06/downloads/Slides/11-GrafosA.pdf · AED Algoritmose Estruturasde Dados LEEC -2005/2006 Teoria de

AED (IST/DEEC) 11

Grafos – Exemplos (2)

• G’ é um sub-grafo de G, gerado a partir das arestas a cheio.• O vértice 5 não pertence a G’.• G é um grafo ligado; G’ não é.• O sub-grafo G’ é constituído por um grafo completo com três

vértices e por uma árvore com quatro vértices

1

4

2

76

5 8

3

G’

AED (IST/DEEC) 12

Grafos – Exemplos (3)

1

4

2

76

5 8

3

G

• Caminho: 1-2-4-5-7-8

Page 7: AED Algoritmose Estruturasde Dados LEEC -2005/2006 Teoria ...algos.inesc-id.pt/aed06/downloads/Slides/11-GrafosA.pdf · AED Algoritmose Estruturasde Dados LEEC -2005/2006 Teoria de

AED (IST/DEEC) 13

Grafos – Exemplos (4)

1

4

2

76

5 8

3

G

• Ciclo: 3-4-5-6-7-8-3

AED (IST/DEEC) 14

Grafos – Exemplos (5)

1

4

2

76

5 8

3

G’’

• G’’: árvore de suporte de G.

Page 8: AED Algoritmose Estruturasde Dados LEEC -2005/2006 Teoria ...algos.inesc-id.pt/aed06/downloads/Slides/11-GrafosA.pdf · AED Algoritmose Estruturasde Dados LEEC -2005/2006 Teoria de

AED (IST/DEEC) 15

• Introdução– Definição de grafo– Motivação aplicacional

• Definições e notação• Propriedades elementares em grafos• Exemplos

Grafos – Síntese da Aula 1

AED (IST/DEEC) 16

Grafos - Definições e Propriedades (1)• Def: Um grafo diz-se completo quando existe uma aresta

ligando qualquer par de vértices.

• Prop: Um grafo com V vértices possui, no máximo,V(V-1)/2 arestas.

• Def: Um grafo G’ diz-se complemento do grafo G quandose obtém a partir de um grafo completo com o mesmonúmero de vértices de G, retirando-lhe todas as arestas de G.

Page 9: AED Algoritmose Estruturasde Dados LEEC -2005/2006 Teoria ...algos.inesc-id.pt/aed06/downloads/Slides/11-GrafosA.pdf · AED Algoritmose Estruturasde Dados LEEC -2005/2006 Teoria de

AED (IST/DEEC) 17

Grafos - Definições e Propriedades (2) • Def: Um grafo que possua um número de arestas próximo

do número máximo diz-se denso.

• Def: Um grafo cujo complemento seja denso diz-se esparso.

• Def: Densidade de um grafo: 2E/V, em que E é o númerode arestas e V o de vértices.

• Def: A um sub-grafo completo dá-se o nome de clique.

AED (IST/DEEC) 18

Grafos - Definições e Propriedades (3)• Def: Um grafo que possua a propriedade de ser possível

dividir os vértices em dois conjuntos tais que todas as arestas apenas ligam vértices de um conjunto a vértices do outro conjunto diz-se bipartido.

• Def: Quando existe um sentido atribuído às arestas, os grafos dizem-se direccionados, dirigidos ou digrafos.

• Def: O primeiro vértice de uma aresta direccionada diz-se fonte e o segundo diz-se destino.

Page 10: AED Algoritmose Estruturasde Dados LEEC -2005/2006 Teoria ...algos.inesc-id.pt/aed06/downloads/Slides/11-GrafosA.pdf · AED Algoritmose Estruturasde Dados LEEC -2005/2006 Teoria de

AED (IST/DEEC) 19

Grafos - Definições e Propriedades (4)• Prop: Apenas os vértices destino são adjacentes dos vérti-

ces fonte.

• Def: Um ciclo direccionado num digrafo é um ciclo em que todos os pares de vértices adjacentes surgem pela ordem especificada pelas arestas.

• Def: Um digrafo sem ciclos direccionados diz-se grafo direccionado acíclico, ou DAG (Directed Acyclic Graph).

AED (IST/DEEC) 20

Grafos - Definições e Propriedades (5) • Def: Quando se atribuem pesos às arestas, representando

custo, distância, etc., diz-se que o grafo é ponderado.

– Também é possível atribuir pesos aos próprios vértices, ou a pares vértice/aresta.

• Def: Grafos ponderados direccionados, dizem-se redes.

Page 11: AED Algoritmose Estruturasde Dados LEEC -2005/2006 Teoria ...algos.inesc-id.pt/aed06/downloads/Slides/11-GrafosA.pdf · AED Algoritmose Estruturasde Dados LEEC -2005/2006 Teoria de

AED (IST/DEEC) 21

Grafos - Interface ADT para Grafos (1)• Os algoritmos para processamento de grafos serão

desenvolvidos no contexto de uma ADT que define as tarefas de interesse.

• A nossa primeira interface elementar é tal que:– O número de vértices e arestas são especificados por inteiros;– Uma aresta é definida por um par de inteiros, designando os

vértices que une;– O número de vértices é limitado superiormente.

• Esta interface irá sendo alargada à medida das necessidades.

AED (IST/DEEC) 22

typedef struct {int v; int w;} Edge;Edge EDGE(int, int);

typedef struct graph *Graph;

Graph GRAPHinit(int);void GRAPHinsertE(Graph, Edge);void GRAPHremoveE(Graph, Edge);int GRAPHedges(Edge a[], Graph G);Graph GRAPHcopy(Graph);void GRAPHdestroy(Graph);

Grafos - Interface ADT para Grafos (2)

Graphinit cria grafo com o número final de vértices, sem arestas.GraphinsertE insere uma aresta, caso não exista.GraphremoveE retira uma aresta, caso exista.Graphedges conta o núme-ro de arestas.Graphcopy cria uma segun-da cópia do grafo.Graphdestroy faz o inver-so de Graphinit.

Page 12: AED Algoritmose Estruturasde Dados LEEC -2005/2006 Teoria ...algos.inesc-id.pt/aed06/downloads/Slides/11-GrafosA.pdf · AED Algoritmose Estruturasde Dados LEEC -2005/2006 Teoria de

AED (IST/DEEC) 23

Grafos - Matriz de Adjacências (1)• Matriz de Adjacências

– Matriz (V×V) de valores booleanos;– A entrada correspondente à linha v e coluna w é 1

se existir uma aresta ligando estes dois vértices;– A mesma entrada vale 0 caso contrário;– A matriz é simétrica, excepto para digrafos, em

que poderá não sê-lo.

AED (IST/DEEC) 24

Grafos - Matriz de Adjacências (2)

• Matriz

1 2 3 4 5 6 7 81 1 1 0 1 0 0 0 02 1 1 0 1 0 0 0 03 0 0 1 1 0 0 1 14 1 1 1 1 1 0 0 05 0 0 0 1 1 1 1 06 0 0 0 0 1 1 1 07 0 0 1 0 1 1 1 18 0 0 1 0 0 0 1 1

Matriz V ×V simétrica

• Grafo

1

4

2

76

5 8

3

G

Page 13: AED Algoritmose Estruturasde Dados LEEC -2005/2006 Teoria ...algos.inesc-id.pt/aed06/downloads/Slides/11-GrafosA.pdf · AED Algoritmose Estruturasde Dados LEEC -2005/2006 Teoria de

AED (IST/DEEC) 25

Grafos - Implementação de ADT (1)#include <stdlib.h>#include “GRAPH.h”struct graph {int V; int E; int **adj;};Graph GRAPHinit(int V){

Graph G = malloc(sizeof(struct graph));G->V = V; G->E = 0;G->adj = MATRIXint(V, V, 0);return G;}

void GRAPHinsertE(Graph G, Edge e){int v = e.v, w = e.w;if (G->adj[v][w] == 0) G->E++;G->adj[v][w] = 1; G->adj[w][v] = 1;

}

AED (IST/DEEC) 26

void GRAPHremoveE(Graph G, Edge e){int v = e.v, w = e.w;if (G->adj[v][w] == 1) G->E--;G->adj[v][w] = 0; G->adj[w][v] = 0;

}int GRAPHedges(Edge a[], Graph G){

int v, w, E = 0;for (v = 0; v < G->V; v++)for (w = v+1; w < G->V; w++)if (G->adj[v][w] == 1)a[E++] = EDGE(v, w);

return E;}

Grafos - Implementação de ADT (2)

Page 14: AED Algoritmose Estruturasde Dados LEEC -2005/2006 Teoria ...algos.inesc-id.pt/aed06/downloads/Slides/11-GrafosA.pdf · AED Algoritmose Estruturasde Dados LEEC -2005/2006 Teoria de

AED (IST/DEEC) 27

• Definições e propriedades– Grafos completos, complemento de um grafo, densidade, cliques,

grafos bipartidos, grafos direccionados, ciclos em grafos direccionados, grafos ponderados, redes.

• Estrutura abstracta de dados para grafos– Interface elementar

• Matrizes de adjacência– Representação de um grafo– Implementação da estrutura abstracta de dados

Grafos – Síntese da Aula 2

AED (IST/DEEC) 28

Grafos - Listas de Adjacências (1)

• Listas de Adjacências

– Cada vértice possui uma lista ligada;

– Os elementos constituintes da lista de um vértice são os seus vértices adjacentes;

– Em grafos simples, se os vértices v e w são adjacentes, então w pertence à lista de v e v pertence àlista de w.

Page 15: AED Algoritmose Estruturasde Dados LEEC -2005/2006 Teoria ...algos.inesc-id.pt/aed06/downloads/Slides/11-GrafosA.pdf · AED Algoritmose Estruturasde Dados LEEC -2005/2006 Teoria de

AED (IST/DEEC) 29

Grafos - Listas de Adjacências (2)

• Grafo

1

4

2

76

5 8

3

G

• Listas de Adjacências

1 424 8 73

13 2 544 6 75

6 5 77 35 6 88 3 7

4 21

Tabela com V listas de arestas

AED (IST/DEEC) 30

Grafos - Implementação de ADT (1)#include <stdlib.h>#include “GRAPH.h”

typedef struct node *link;struct node {int v; link next;};struct graph{int V; int E; link *adj;};

link NEW(int v, link next){link x = malloc(sizeof(struct node));x->v = v; x ->next = next;return x;

}

Page 16: AED Algoritmose Estruturasde Dados LEEC -2005/2006 Teoria ...algos.inesc-id.pt/aed06/downloads/Slides/11-GrafosA.pdf · AED Algoritmose Estruturasde Dados LEEC -2005/2006 Teoria de

AED (IST/DEEC) 31

Graph GRAPHinit(int V)}int v; Graph G = malloc(sizeof(struct graph));G->V = V; G->E = 0;G->adj = malloc(V * sizeof(link));for (v = 0; v < V; v++)

G->adj[v] = NULL;return G;}

void GRAPHinsertE(Graph G, Edge e){int v = e.v, w = e.w;G->adj[v] = NEW(w, G->adj[v]);G->adj[w] = NEW(v, G->adj[w]);G->E++;}

Grafos - Implementação de ADT (2)

AED (IST/DEEC) 32

void GRAPHremoveE(Graph G, Edge e){/* Fica como exercício */ }

int GRAPHedges(Edge a[], Graph G){int v, E = 0; link t;for (v = 0; v < G->V; v++)for (t = G->adj[v]; t != NULL; t = t->next)

if (v < t->v )a[E++] = EDGE(v, t->v);

return E;}

Grafos - Implementação de ADT (3)

Page 17: AED Algoritmose Estruturasde Dados LEEC -2005/2006 Teoria ...algos.inesc-id.pt/aed06/downloads/Slides/11-GrafosA.pdf · AED Algoritmose Estruturasde Dados LEEC -2005/2006 Teoria de

AED (IST/DEEC) 33

Grafos - Vantagens das M. de Adj.• Representação de eleição quando

– há espaço disponível;– os grafos são densos;– os algoritmos requerem mais que V2 operações.

• Adição e remoção de arestas é feita de forma eficiente;

• É fácil evitar a existência de arestas paralelas;

• É fácil determinar se dois vértices estão ou não ligados.

AED (IST/DEEC) 34

• Grafos esparsos de grande dimensão requerem espaço de memória proporcional a V2;

• Neste casos, a simples inicialização do grafo (proporcional a V2) pode ser do-minante na execução global do algoritmo;

• Pode nem sequer existir memória suficiente para armazenar a matriz.

Grafos - Inconvenientes das M. de Adj.

Page 18: AED Algoritmose Estruturasde Dados LEEC -2005/2006 Teoria ...algos.inesc-id.pt/aed06/downloads/Slides/11-GrafosA.pdf · AED Algoritmose Estruturasde Dados LEEC -2005/2006 Teoria de

AED (IST/DEEC) 35

Grafos - Vantagens das L. de Adj.• Inicialização é proporcional a V.

• Utiliza sempre espaço proporcional a V+E– adequado para grafos esparsos.– algoritmos que assentem na análise de arestas em grafos esparsos.

• Adição de arestas é feita de forma eficiente.

AED (IST/DEEC) 36

• Arestas paralelas e adjacência entre vértices– requer que se pesquise as listas de adjacências, o que pode levar

um tempo proporcional a V.

• Remoção de arestas– pode levar um tempo proporcional a V (este problema pode ser

contornado).

• Não aconselhável para– grafos de grande dimensão que não podem ter arestas paralelas;– grande utilização de remoção de arestas.

Grafos - Inconvenientes das L. de Adj.

Page 19: AED Algoritmose Estruturasde Dados LEEC -2005/2006 Teoria ...algos.inesc-id.pt/aed06/downloads/Slides/11-GrafosA.pdf · AED Algoritmose Estruturasde Dados LEEC -2005/2006 Teoria de

AED (IST/DEEC) 37

Grafos - Variantes e Extensões (1)• Outros tipos de grafos

– Digrafos• ambas facilmente extensíveis;• arestas representadas só uma vez;

– Grafos ponderados e redes• M. de Adj. preenchida com pesos;• L. De Adj. com campos extra para representação dos

pesos.

AED (IST/DEEC) 38

• Alteração da estrutura de dados– Tipo “EDGE” contendo informação adicional, para

além dos vértices que liga.

– Vectores indexados pelos vértices• Manutenção da informação do grau do vértice.

– Vector de arestas• Forma alternativa de representação de grafos.

Grafos - Variantes e Extensões (2)

Page 20: AED Algoritmose Estruturasde Dados LEEC -2005/2006 Teoria ...algos.inesc-id.pt/aed06/downloads/Slides/11-GrafosA.pdf · AED Algoritmose Estruturasde Dados LEEC -2005/2006 Teoria de

AED (IST/DEEC) 39

Grafos - Representações alternativas• Três mecanismos básicos de representação de grafos

– Vector de arestas;– Matriz de adjacências;– Listas de adjacências.

• Produzem diferentes desempenhos ao nível das opera-ções de manipulação.

• Escolha deverá depender do problema a resolver.

AED (IST/DEEC) 40

Grafos – Desempenho Relativo

V. de Arestas M. de Adj. L. de Adj.Espaço E V2 V+E

Inicialização 1 V2 VCópia E V2 E

Destruição 1 V EInserir aresta 1 1 1

Encontrar aresta E 1 VRemover aresta E 1 V

Vértice isolado? E V 1Caminho de u a v? Elg*V V2 E

Page 21: AED Algoritmose Estruturasde Dados LEEC -2005/2006 Teoria ...algos.inesc-id.pt/aed06/downloads/Slides/11-GrafosA.pdf · AED Algoritmose Estruturasde Dados LEEC -2005/2006 Teoria de

AED (IST/DEEC) 41

Grafos - Encontrar e remover arestas (1)• Eficientes em representações por matriz de adjacências.

• Como torná-las eficientes para as outras representações?

• Atribuir um símbolo inteiro a cada aresta– Aresta v-w fica com o símbolo v*V+w.

• Por exemplo, fazer uso de tabelas de dispersão (“hash-tables”)

• Quando uma aresta é inserida, é fácil testar se o símbolo já foi usado.

AED (IST/DEEC) 42

Grafos - Encontrar e remover arestas (2)

• Remoção em digrafos– ponteiro na tabela de dispersão para a sua representação

na lista de adjacências;– requer listas duplamente ligadas.

• Remoção em grafos simples– colocação de ambos os ponteiros na tabela de dispersão;– ou ponteiro entre os vértices.

Page 22: AED Algoritmose Estruturasde Dados LEEC -2005/2006 Teoria ...algos.inesc-id.pt/aed06/downloads/Slides/11-GrafosA.pdf · AED Algoritmose Estruturasde Dados LEEC -2005/2006 Teoria de

AED (IST/DEEC) 43

• Listas de adjacência– Representação de um grafo– Implementação da estrutura abstracta de dados

• Comparação das representações alternativas– Vantagens e inconvenientes das matrizes de adjacência– Vantagens e inconvenientes das listas de adjacência

• Variantes e extensões– Grafos direccionados, ponderados e redes– Outras representações

• Comparação das representações alternativas– Memória e tempo de execução

Grafos – Síntese da Aula 3