Sunteți pe pagina 1din 22

AED Algoritmos e Estruturas de Dados LEEC - 2005/2006 Teoria de Grafos e Algoritmos em Grafos

Grafos - O que um grafo?


Objecto abstracto Dois tipos de entidades
Ns ou Vrtices Ramos ou Arestas

Vrtices representam
cidades, pessoas, mquinas, nmeros, etc

Arestas representam
existncia de ligaes entre ns, valor da ligao entre ns, distncia entre ns, etc

AED (IST/DEEC)

Grafos - Motivao
Mapas
caminhos mais curtos; caminhos mais baratos.

Emparelhamento
processamento de imagem estreo; atribuio de pessoas a lugares.

Circuitos Elctricos
existncia de curto-circuitos; existncia de cruzamento entre ligaes.

Redes de dados
computadores ligados entre si, enviando e recebendo mensagens; existncia de ligao entre quaisquer ns; redundncia.

Sequenciamento
tarefas a executar por um conjunto de recursos sujeitas a restries de carcter tecnolgico.

Estrutura de Programas
grafos gerados por compiladores representando a estrutura de chamadas;
3

AED (IST/DEEC)

Grafos Definies (1)


Def: Um grafo um conjunto de vrtices e um conjunto de arestas que ligam pares de vrtices distintos (com nunca mais que uma aresta a ligar qualquer par de vrtices). Def: Dois vrtices ligados por uma aresta dizem-se adjacentes. Def: Uma aresta que ligue dois vrtices diz-se incidente de cada um dos vrtices.

AED (IST/DEEC)

Grafos Definies (2)


Def: O nmero de arestas incidentes num vrtice diz-se o grau desse vrtice. Def: O subconjunto de arestas e vrtices a elas associados diz-se um sub-grafo do grafo original. Def: Uma sequncia de vrtices na qual os vrtices sucessivos esto ligados por arestas do grafo diz-se um caminho.

AED (IST/DEEC)

Grafos Definies (3)


Def: Num caminho simples os vrtices e arestas so distintos. Def: Um caminho em que todos os vrtices e arestas so distintos, excepto para o primeiro e ltimo que so iguais, diz-se um ciclo. Def: Dois caminhos simples dizem-se disjuntos se no possurem vrtices comuns, excepto possivelmente para os vrtices extremos.
AED (IST/DEEC) 6

Grafos Definies (4)


Def: Um grafo diz-se ligado se existir um caminho de cada vrtice para todos os outros vrtices do grafo. Def: Um grafo que no seja ligado constitudo por componentes ligadas, que se dizem sub-grafos ligados mximos. Def: Um grafo ligado acclico, i.e. sem ciclos, diz-se uma rvore.

AED (IST/DEEC)

Grafos Definies (5)


Def: Um conjunto de rvores diz-se uma floresta. Def: A rvore de suporte de um grafo ligado um sub-grafo que contm todos os vrtices e uma rvore. A floresta de suporte de um grafo um sub-grafo que contm todos os seus vrtices e uma floresta.

AED (IST/DEEC)

Grafos Propriedades em rvores


Um grafo G de V vrtices uma rvore se e s se satisfizer qualquer das seguintes condies:
G tem V-1 arestas e nenhum ciclo. G tem V-1 arestas e ligado. Existe apenas um caminho simples a unir quaisquer dois vrtices. G ligado mas retirando uma s aresta faz com que deixe de o ser.

AED (IST/DEEC)

Grafos Exemplos (1)


G
1 2 3

Os vrtices 6 e 7 so adjacentes. Os vrtices 4 e 6 no so adjacentes. O vrtice 7 tem grau quatro.

AED (IST/DEEC)

10

Grafos Exemplos (2)


G
1 2 3

G um sub-grafo de G, gerado a partir das arestas a cheio. O vrtice 5 no pertence a G. G um grafo ligado; G no . O sub-grafo G constitudo por um grafo completo com trs vrtices e por uma rvore com quatro vrtices
11

AED (IST/DEEC)

Grafos Exemplos (3)


G
1 2 3

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

AED (IST/DEEC)

12

Grafos Exemplos (4)


G
1 2 3

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

AED (IST/DEEC)

13

Grafos Exemplos (5)


G
1 2 3

G: rvore de suporte de G.

AED (IST/DEEC)

14

Grafos Sntese da Aula 1


Introduo
Definio de grafo Motivao aplicacional

Definies e notao Propriedades elementares em grafos Exemplos

AED (IST/DEEC)

15

Grafos - Definies e Propriedades (1)


Def: Um grafo diz-se completo quando existe uma aresta ligando qualquer par de vrtices. Prop: Um grafo com V vrtices possui, no mximo, V(V-1)/2 arestas. Def: Um grafo G diz-se complemento do grafo G quando se obtm a partir de um grafo completo com o mesmo nmero de vrtices de G, retirando-lhe todas as arestas de G.

AED (IST/DEEC)

16

Grafos - Definies e Propriedades (2)


Def: Um grafo que possua um nmero de arestas prximo do nmero mximo diz-se denso. Def: Um grafo cujo complemento seja denso diz-se esparso. Def: Densidade de um grafo: 2E/V, em que E o nmero de arestas e V o de vrtices. Def: A um sub-grafo completo d-se o nome de clique.

AED (IST/DEEC)

17

Grafos - Definies e Propriedades (3)


Def: Um grafo que possua a propriedade de ser possvel dividir os vrtices em dois conjuntos tais que todas as arestas apenas ligam vrtices de um conjunto a vrtices do outro conjunto diz-se bipartido. Def: Quando existe um sentido atribudo s arestas, os grafos dizem-se direccionados, dirigidos ou digrafos. Def: O primeiro vrtice de uma aresta direccionada diz-se fonte e o segundo diz-se destino.
AED (IST/DEEC) 18

Grafos - Definies e Propriedades (4)


Prop: Apenas os vrtices destino so adjacentes dos vrtices fonte. Def: Um ciclo direccionado num digrafo um ciclo em que todos os pares de vrtices adjacentes surgem pela ordem especificada pelas arestas. Def: Um digrafo sem ciclos direccionados diz-se grafo direccionado acclico, ou DAG (Directed Acyclic Graph).

AED (IST/DEEC)

19

Grafos - Definies e Propriedades (5)


Def: Quando se atribuem pesos s arestas, representando custo, distncia, etc., diz-se que o grafo ponderado.
Tambm possvel atribuir pesos aos prprios vrtices, ou a pares vrtice/aresta.

Def: Grafos ponderados direccionados, dizem-se redes.

AED (IST/DEEC)

20

Grafos - Interface ADT para Grafos (1)


Os algoritmos para processamento de grafos sero desenvolvidos no contexto de uma ADT que define as tarefas de interesse. A nossa primeira interface elementar tal que:
O nmero de vrtices e arestas so especificados por inteiros; Uma aresta definida por um par de inteiros, designando os vrtices que une; O nmero de vrtices limitado superiormente.
Esta interface ir sendo alargada medida das necessidades.

AED (IST/DEEC)

21

Grafos - Interface ADT para Grafos (2)


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); Graphinit cria grafo com

o nmero final de vrtices, sem arestas. GraphinsertE insere uma aresta, caso no exista. GraphremoveE retira uma aresta, caso exista. Graphedges conta o nmero de arestas. Graphcopy cria uma segunda cpia do grafo. Graphdestroy faz o inverso de Graphinit.
22

AED (IST/DEEC)

Grafos - Matriz de Adjacncias (1)


Matriz de Adjacncias

Matriz (VV) de valores booleanos; A entrada correspondente linha v e coluna w 1 se existir uma aresta ligando estes dois vrtices; A mesma entrada vale 0 caso contrrio; A matriz simtrica, excepto para digrafos, em que poder no s-lo.

AED (IST/DEEC)

23

Grafos - Matriz de Adjacncias (2)


Grafo
G
1 2 3 1 2 3 4 5 6 7 8 1 1 1 0 1 0 0 0 0 2 1 1 0 1 0 0 0 0 3 0 0 1 1 0 0 1 1 4 1 1 1 1 1 0 0 0 5 0 0 0 1 1 1 1 0 6 0 0 0 0 1 1 1 0 7 0 0 1 0 1 1 1 1 8 0 0 1 0 0 0 1 1

Matriz

Matriz V V simtrica

AED (IST/DEEC)

24

Grafos - Implementao 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) 25

Grafos - Implementao de ADT (2)


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; }
AED (IST/DEEC) 26

Grafos Sntese da Aula 2


Definies 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 adjacncia
Representao de um grafo Implementao da estrutura abstracta de dados

AED (IST/DEEC)

27

Grafos - Listas de Adjacncias (1)


Listas de Adjacncias
Cada vrtice possui uma lista ligada; Os elementos constituintes da lista de um vrtice so os seus vrtices adjacentes; Em grafos simples, se os vrtices v e w so adjacentes, ento w pertence lista de v e v pertence lista de w.

AED (IST/DEEC)

28

Grafos - Listas de Adjacncias (2)


Grafo
G
1 2 3 1 2 3 4 5 6 7 8 4 1 4 3 4 5 5 3 2 4 8 1 6 7 3 7 7 2 7 6 5 8

Listas de Adjacncias

Tabela com V listas de arestas


AED (IST/DEEC) 29

Grafos - Implementao 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; }
AED (IST/DEEC) 30

Grafos - Implementao de ADT (2)


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++;}
AED (IST/DEEC) 31

Grafos - Implementao de ADT (3)


void GRAPHremoveE(Graph G, Edge e){ /* Fica como exerccio */ } 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; }

AED (IST/DEEC)

32

Grafos - Vantagens das M. de Adj.


Representao de eleio quando
h espao disponvel; os grafos so densos; os algoritmos requerem mais que V2 operaes.

Adio e remoo de arestas feita de forma eficiente; fcil evitar a existncia de arestas paralelas; fcil determinar se dois vrtices esto ou no ligados.
AED (IST/DEEC) 33

Grafos - Inconvenientes das M. de Adj.


Grafos esparsos de grande dimenso requerem espao de memria proporcional a V2; Neste casos, a simples inicializao do grafo (proporcional a V2) pode ser do-minante na execuo global do algoritmo; Pode nem sequer armazenar a matriz. existir memria suficiente para

AED (IST/DEEC)

34

Grafos - Vantagens das L. de Adj.


Inicializao proporcional a V. Utiliza sempre espao proporcional a V+E
adequado para grafos esparsos. algoritmos que assentem na anlise de arestas em grafos esparsos.

Adio de arestas feita de forma eficiente.

AED (IST/DEEC)

35

Grafos - Inconvenientes das L. de Adj.


Arestas paralelas e adjacncia entre vrtices
requer que se pesquise as listas de adjacncias, o que pode levar um tempo proporcional a V.

Remoo de arestas
pode levar um tempo proporcional a V (este problema pode ser contornado).

No aconselhvel para
grafos de grande dimenso que no podem ter arestas paralelas; grande utilizao de remoo de arestas.

AED (IST/DEEC)

36

Grafos - Variantes e Extenses (1)


Outros tipos de grafos Digrafos
ambas facilmente extensveis; arestas representadas s uma vez;

Grafos ponderados e redes


M. de Adj. preenchida com pesos; L. De Adj. com campos extra para representao dos pesos.

AED (IST/DEEC)

37

Grafos - Variantes e Extenses (2)


Alterao da estrutura de dados Tipo EDGE contendo informao adicional, para alm dos vrtices que liga. Vectores indexados pelos vrtices
Manuteno da informao do grau do vrtice.

Vector de arestas
Forma alternativa de representao de grafos.

AED (IST/DEEC)

38

Grafos - Representaes alternativas


Trs mecanismos bsicos de representao de grafos Vector de arestas; Matriz de adjacncias; Listas de adjacncias. Produzem diferentes desempenhos ao nvel das operaes de manipulao. Escolha dever depender do problema a resolver.

AED (IST/DEEC)

39

Grafos Desempenho Relativo


Espao Inicializao Cpia Destruio Inserir aresta Encontrar aresta Remover aresta Vrtice isolado? Caminho de u a v? V. de Arestas M. de Adj. L. de Adj. V2 V+E E 1 E 1 1 E E E Elg*V V2 V2 V 1 1 1 V V2 V E E 1 V V 1 E

AED (IST/DEEC)

40

Grafos - Encontrar e remover arestas (1)


Eficientes em representaes por matriz de adjacncias. Como torn-las eficientes para as outras representaes? Atribuir um smbolo inteiro a cada aresta Aresta v-w fica com o smbolo v*V+w. Por exemplo, fazer uso de tabelas de disperso (hashtables) Quando uma aresta inserida, fcil testar se o smbolo j foi usado.
AED (IST/DEEC) 41

Grafos - Encontrar e remover arestas (2)


Remoo em digrafos
ponteiro na tabela de disperso para a sua representao na lista de adjacncias; requer listas duplamente ligadas.

Remoo em grafos simples


colocao de ambos os ponteiros na tabela de disperso; ou ponteiro entre os vrtices.

AED (IST/DEEC)

42

Grafos Sntese da Aula 3


Listas de adjacncia
Representao de um grafo Implementao da estrutura abstracta de dados

Comparao das representaes alternativas


Vantagens e inconvenientes das matrizes de adjacncia Vantagens e inconvenientes das listas de adjacncia

Variantes e extenses
Grafos direccionados, ponderados e redes Outras representaes

Comparao das representaes alternativas


Memria e tempo de execuo
AED (IST/DEEC) 43

S-ar putea să vă placă și