Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


Teoria dos Grafos, Notas de estudo de Matemática

Teoria dos Grafos

Tipologia: Notas de estudo

2016

Compartilhado em 28/03/2016

maxwell-aires-da-silva-10
maxwell-aires-da-silva-10 🇧🇷

4.7

(70)

97 documentos

1 / 22

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
AED
Algoritmose Estruturasde Dados
LEEC -2005/2006
Teoria de Grafos e
Algoritmos em Grafos
AED (IST/DEEC) 2
Grafos -O queéum grafo?
Objectoabstracto
Doistiposde entidades
Nósou Vértices
Ramos ou Arestas
Vérticesrepresentam
cidades, pessoas, máquinas,
meros, etc
Arestasrepresentam
existênciade ligaçõesentre
s, valor daligaçãoentre
s, distânciaentres, etc
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16

Pré-visualização parcial do texto

Baixe Teoria dos Grafos e outras Notas de estudo em PDF para Matemática, somente na Docsity!

AED

Algoritmos e Estruturas de Dados

LEEC - 2005/

Teoria de Grafos e

Algoritmos em Grafos

Grafos - O que é um grafo?

  • Objecto abstracto
  • Dois tipos de entidades
    • Nós ou Vértice s
    • 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 (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ácter tecnológico. - Emparelhamento - processamento de imagem estéreo; atribuição de pes- soas a lugares. - Redes de dados - computadores ligados entre si, enviando e recebendo mensagens; 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;

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 incidente de cada um dos vértices.

AED (IST/DEEC) 7

  • Def: Um grafo diz-se ligado se existir um caminho de cada vértice para todos os outros vértices do grafo.
  • Def: Um grafo que não seja ligado é constituído por componentes ligadas , que se dizem sub-grafos ligados máximos.
  • Def: Um grafo ligado acíclico, i.e. sem ciclos, diz-se uma árvore.

Grafos – Definições (4)

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 que contém todos os seus vértices e é uma floresta.

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.

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

6 7

5 8

3

G

AED (IST/DEEC) 13

Grafos – Exemplos (4)

1

4

2

(^67)

5 8

3

G

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

Grafos – Exemplos (5)

1

4

2

6 7

5 8

3

G’’

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

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

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 quando se obtém a partir de um grafo completo com o mesmo número de vértices de G, retirando-lhe todas as arestas de G.

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).

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.

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.

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.

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; }

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)

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

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.

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)

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)

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 V^2 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.
  • Grafos esparsos de grande dimensão requerem espaço de memória proporcional a V^2 ;
  • Neste casos, a simples inicialização do grafo

(proporcional a V^2 ) 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.

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.
  • 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)

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.

Grafos – Desempenho Relativo

V. de Arestas M. de Adj. L. de Adj. Espaço E V^2 V+E Inicialização 1 V^2 V Cópia E V^2 E Destruição 1 V E Inserir aresta 1 1 1 Encontrar aresta E 1 V Remover aresta E 1 V Vértice isolado? E V 1 Caminho de u a v? ElgV V*^2 E