• Nenhum resultado encontrado

06.AED.RepresentacaoGrafos

N/A
N/A
Protected

Academic year: 2021

Share "06.AED.RepresentacaoGrafos"

Copied!
45
0
0

Texto

(1)

Mestrado em

Mestrado em

Ciência da Computação

Ciência da Computação

Algoritmos e Estrutura de Dados

Algoritmos e Estrutura de Dados

Grafos:

Conceitos Básicos e

Representação Computacional

Prof. Rodrigo L. S. Silva, D.Sc.

Prof. Rodrigo L. S. Silva, D.Sc.

Prof. Stênio Sã R. F. Soares, D.Sc.

(2)

✔ Muitas aplicações em computação

necessitam considerar conjunto de conexões entre pares de objetos:

✔ Existe um caminho para ir de um objeto a

outro seguindo as conexões?

✔ Qual é a menor distância entre um objeto e

outro objeto?

✔ Quantos outros objetos podem ser alcançados

a partir de um determinado objeto?

✔ Existe um tipo abstrato chamado grafo

que é usado para modelar tais situações.

Motivação

(3)

✔Alguns exemplos de problemas práticos

que podem ser resolvidos através de uma modelagem em grafos:

✔ Ajudar máquinas de busca a localizar

informação relevante na Web

✔ Descobrir os melhores casamentos entre

posições disponíveis em empresas e pessoas que aplicaram para as posições de interesse

✔ Descobrir qual é o roteiro mais curto para

visitar as principais cidades de uma região turística.

Aplicações

(4)

Grafo: conjunto de vértices e arestas.

Vértice (ou nós): objeto simples que

pode ter nome e outros atributos.

Aresta: conexão entre dois vértices.

Conceitos Básicos

Notação: G = (V, A) G: grafo; V: conjunto de vértices ou nós; A: conjunto de arestas. 4

(5)

Um grafo direcionado G é um par (V, A), onde V é um conjunto finito de vértices e A é uma relação binária em V e constituído de pares ordenados.

✔ Um arco (u, v) sai do vértice u e entra no

vértice v. O vértice v é adjacente ao vértice u.

✔ Podem existir arestas de um vértice para ele

mesmo, chamadas de self-loops ou laços.

Grafos Direcionados (digrafos)

(6)

Um grafo não direcionado G é um par (V, A), onde o conjunto de arcos A é constituído de

pares não ordenados de vértices.

✔ As arestas (u, v) e (v, u) são consideradas

como uma única aresta. A relação de adjacência é simétrica.

Self-loops não são permitidos.

Grafos Não Direcionados

(7)

Grafo ponderado: possui pesos

associados às arestas.

Outras Classificações de Grafos

(8)

Grafo Completo: existe uma aresta

para todo par de vértices.

O que se pode afirmar sobre o número do arestas?

Outras Classificações de Grafos

(9)

Hipergrafo: grafo não direcionado em

que cada aresta conecta um número arbitrário de vértices.

Exemplo:

Outras Classificações de Grafos

(10)

✔ Em grafos não direcionados:

O grau de um vértice v (denotado d(v)) é o número de arestas que incidem nele.

Um vértice de grau zero é dito isolado ou não conectado.

Exemplo: d(1)= 2 e d(3)=0.

Grau de um Vértice

(11)

✔ Em grafos direcionados:

O grau de um vértice v é o número de arestas que saem dele (denotado d+(v))

mais o número de arestas que chegam nele (denotado d-(v)).

Ex.: d+(0) =2, d-(0)= 1 e d(0)=3.

Grau de um Vértice

(12)

✔ Um grafo em que todos os nós têm o

mesmo grau k é chamado grafo

k-regular.

Teorema: o número de vértices de grau ímpar em um grafo é par.

Prove:

Grau de um Vértice

(13)

Grafo bipartido: grafo não direcionado G

= (V, A) no qual V pode ser particionado em dois conjuntos U1 e U2 tal que (u, v)∈A implica que u∈U1 e v∈U2 ou u∈U2 e v∈U1

(todas as arestas ligam os dois conjuntos U1 e U2).

Outras Classificações de Grafos

13

U2 U1

(14)

Grafo bipartido completo: grafo

bipartido onde existe uma aresta para

todo par de nós (u,v) u∈U1 e v∈U2 ou u∈U2 e v∈U1.

Prove que se um grafo G é k-regular com k>0 e existe uma bipartição (U1, U2), então pode-se afirmar que |U1|=|U2| .

Outras Classificações de Grafos

(15)

✔ Há diversas formas de representação de

grafos em estruturas de dados

✔ matriz de adjacências ✔ lista de adjacências ✔ matriz de incidência ✔ Con juntos

Como representar os grafos?

(16)

Seja n o número de vértices de G. Uma matriz de adjacência para G(V, E) é uma matriz An × n = (aij) de booleanos, tal que

aij = 1 se (vi, vj) ∈ E.

Exemplo:Seja G=({1,2,3,4,5}, {(1,2), (1,4), (2,3), (2,5), (3,4),(3,5)})

Matriz de Adjacência

(17)

Matriz de Adjacência - Dígrafo

17

Para grafos direcionados A[i,j] = 1 se existe apenas a aresta de i para j (não considera aresta de j para i). Neste caso a matriz A não é simétrica.

A 1 2 3 4 5 1 0 1 0 0 0 2 1 0 1 0 1 3 0 0 0 1 0 4 1 0 0 0 1 5 0 1 0 0 0

(18)

Matriz de Adjacência - Dígrafo

18

Para grafos ponderados, A[i,j] contém o rótulo ou peso associado à aresta e, neste caso, a matriz não é de booleanos.

A 1 2 3 4 5 1 ? 1 ? ? ? 2 3 ? 1 ? 1 3 ? ? ? 2 ? 4 5 ? ? ? 1 5 ? 2 ? ? ?

Se não existir uma aresta de i para j, então é necessário utilizar um valor que não possa ser usado como rótulo ou peso, conforme a aplicação.

(19)

1. Os valores da diagonal principal da matriz são 0 (grafo sem laços).

2. O grau de um vértice, num grafo não direcionado, é igual ao número de 1´s na linha ou coluna correspondente ao vértice.

3. Seja qualquer matriz M simétrica, de tamanho n×n, é possível construir um grafo tal que M é a sua matriz de adjacência.

4. O tempo necessário para acessar um elemento é independente de |V| ou |A|.

Matriz de Adjacência-propriedades

(20)

1. É muito útil para algoritmos em que necessitamos saber com rapidez se existe uma aresta ligando dois vértices.

2. A maior desvantagem é que a matriz necessita Ω(|V|)2 de espaço. Ler ou

examinar a matriz tem complexidade de tempo O(|V|)2.

3. A inserção ou remoção de uma aresta

pode ser realizada com custo constante.

Matriz de Adjacência-propriedades

(21)

Para que seja possível a remodelagem de um grafo em tempo de execução, torna-se necessária a alocação dinâmica de sua representação.

A representação de adjacências entre vértices pode ser feita através de listas lineares.

Lista de adjacências

(22)

Sua constituição é realizada por um vetor dinâmico ou lista encadeada formando um índice de vértices.

De cada elemento de índice, parte uma lista encadeada descrevendo os vértices adjacentes ao vértice indicado por este índice.

Lista de adjacências

(23)

Há um vetor de n posições, onde cada uma aponta para uma lista. A posição i do vetor aponta para uma lista contendo números j tais que (Vi, Vj) ∈ E.

Exemplo (caso direcionado):

Lista de adjacências

V1 V2 • • V3 V4 V1 2 3 nil V2 4 nil V3 nil V4 2 3 nil 23

(24)

Lista de Adjacência

V1 • V2• • V3 V4 V1 2 3 nil V2 1 4 nil V3 1 4 nil V4 2 3 nil 24

(25)

✔ A lista encadeada é formada por nós que

contém o dado do vértice (letra ou número) e o ponteiro para o vértice adjacente.

✔ Eventualmente os nós poderão exigir

outros campos, tais como, valor da aresta, marcação de visita ao vértice, dados adicionais para processamento da sequência do grafo, etc.

Lista de Adjacência

(26)

Lista de Adjacência

26

Exemplo (grafo direcionado valorado):

A B C D E F * B 1 D 4 D 5 * F 8 * F 7 * E 6 * C 3 D 2 *

(27)

✔ Esta é a forma de representação mais

flexível para a representação de grafos.

✔ Obviamente que aplicações específicas

permitirão o uso de outras formas de representação.

Lista de Adjacência

(28)

Uma outra representação matricial possível para um grafo G(V, E) é a matriz de incidências Bn × m = (bij), tal que bij = 1 se a aresta ej é incidente ao vértice vi.

Este tipo de matriz representa um grafo a partir de suas arestas.

Matriz de Incidência

(29)

a1  a2  a3  a4  a5  a6  a7  a8  v1  0 0 0 1 0 1 0 0 v2  0 0 0 0 1 1 1 1 v3  0 0 0 0 0 0 0 1 v4  1 1 1 0 1 0 0 0 v5  0 0 1 1 0 0 1 0 v6  1 1 0 0 0 0 0 0 29

Matriz de Incidência

Exemplo:

(30)

1. Como cada aresta é incidente a exatamente dois vértices, cada coluna contém exatamente dois 1's.

2. O número de 1's em cada linha é igual ao grau do vértice correspondente.

3. Uma linha que contém somente zeros representa um vértice isolado.

4. Arestas paralelas resultam em duas colunas idênticas.

Matriz de Incidência: Propriedades

(31)

Matriz de Incidência - Dígrafo

a 1  a2  a3  a4  a5  a6  a7  a8  v 1   1  1  1  0  0  0  0  0 v2   0 -1  0 -1 -1  1  0  0 v3  -1  0  0  1  0  0  0  0 v4   0  0 -1  0  1  0 -1  0 v5   0  0  0  0  0  0  1 -1 v6   0  0  0  0  0 -1  0  1 31 Exemplo

(32)

Glicose ATP ADP Glic-6-P Fruc-6-P Fruc-1,6-P2 AMP_I v1 v2 v3 v4 v5 v6 v7 v8 Exemplo: (via metabólica)

(33)

Como exige muitas vezes a alocação de uma matriz maior do que no método da matriz de adjacências, não é tão utilizada quanto aquela.

Matriz de Incidência

(34)

Usa-se dois conjuntos: um para representar os vértices, outro para representar as arestas.

Uso de listas.

Conjuntos

(35)

Seja n o número de vértices e m o

número de arestas, é mostrado em negrito para cada caso a representação que geralmente é a melhor.

Complexidade

Mat. Inc. Mat. Adj. Lista 

Adj. Conjuntos Memória O(mn) O(n2) O(m+n) O(m+n)

Buscar todos os vizinhos de vi   O(mn) O(n) O(n) O(m) Conferir adjacência de ve vj O(m) O(1) O(n) O(m) Visitar todas as arestas O(mn) O(n2) O(m) O(m)

Calcular grau de um vértice  O(m) O(n) O(n) O(m)

(36)

✔ Importante considerar os algoritmos em

grafos como tipos abstratos de dados.

✔ Conjunto de operações associado a uma

estrutura de dados.

✔ Independência de implementação para

as operações.

(37)

1. FGVazio(Grafo): Cria um grafo vazio.

InsereAresta(V1,V2,Peso, Grafo): Insere uma aresta (V1,V2) no grafo.

2. ExisteAresta(V1,V2,Grafo): Verifica se existe

uma determinada aresta.

3. Obtem a lista de vértices adjacentes a um determinado vértice (tratada a seguir).

4. RetiraAresta(V1,V2,Peso, Grafo): Retira uma

aresta do grafo.

(38)

1. LiberaGrafo(Grafo): Liberar o espaço

ocupado por um grafo.

2. ImprimeGrafo(Grafo): Imprime um

grafo.

3. GrafoTransposto(Grafo,GrafoT): Obtém

o transposto de um grafo direcionado.

4. RetiraMin(A): Obtém a aresta de menor

peso de um grafo com peso nas arestas

Operações do TAD Grafo

(39)

✔ Atualização de lista dinâmica exige mais

tempo que a manipulação de uma tabela;

✔ Lista é ordenada, a adição de novos

elementos vai demorar mais, mas verificação de um elemento vai ser mais rápida;

✔ Lista de adjacência e a representação usando

os conjuntos: mesma complexidade em memória, mas na verdade no segundo caso menos espaço de memória é ocupado;

Conclusões

(40)

✔ Quando o número de arestas é grande, a lista

de adjacência oferece um melhor tempo de acesso.

Conclusões

(41)

1. Desenhe o grafo G que corresponde à seguinte matriz de adjacência:

Exercícios

41 G 1 2 3 4 5 6 7 1 0 0 0 1 0 1 1 2 0 1 0 0 1 1 1 3 0 0 0 0 0 0 0 4 1 1 1 0 1 0 0 5 0 0 1 1 1 0 1 6 1 1 0 0 1 0 0 7 1 1 0 0 1 1 1

(42)

1. Escreva um algoritmo para realizar cada uma das seguintes transformações de representações:

a. Matriz de adjacência para matriz de incidência.

b. Matriz de adjacência para lista de adjacência.

c. Estrutura dos dois conjuntos para lista de adjacência.

2. Considere o problema de decidir se um vértice é isolado num grafo representado por suas listas de adjacência. Quanto tempo consome a solução do problema? Dê sua resposta em função do número de vértices

3. Seja um grafo G=(V,E) tal que |V|=n, |E|=m e os vértices de V possuem grau k ou k+1. Prove que se G possui x vértices de grau k e y vértices de graus k+1, então x = (k+1)*n – 2m.

Exercícios

(43)

4. A figura abaixo sugere o vetor de listas de adjacências de um grafo.  De quantas maneiras diferentes essas listas poderiam ser reescritas sem deixar de representar o mesmo grafo? Desenhe o grafo. 0: 6 5 1 2 7: 8 1: 0 8: 7 2: 0 9: 12 11 10 3: 5 4 10: 9 4: 6 5 3 11: 12 9 5: 3 0 4 12: 9 11 6: 0 4

Sugestão: leia o texto e resolva os exercícios em:

http://www.ime.usp.br/~pf/algoritmos_para_grafos/aulas/adjmatrix.html

Exercícios

(44)

5. Considere o problema em que dado um grafo G=(V,E), obter C ⊆ V tal que para toda aresta (vi,vj) ∊ E, vi∊ C ou vj∊ C e |C| é mínima. Apresente um algoritmo para este problema.

6. Ler o texto e resolver os exercícios em:

http://www.ime.usp.br/~pf/algoritmos_para_graf os/aulas/adjmatrix.html http://www.ime.usp.br/~pf/algoritmos_para_graf os/aulas/adjlists.html

Exercícios

44

(45)

Material baseado em:

http://sites.ffclrp.usp.br/ccp/(SEM %204)/TGA/representacao.ppt

Prof. Daniel Facciolo Pires

http://www2.dcc.ufmg.br/livros/algoritmos/c ap7/slides/c/completo1/cap7.pdf

Prof. Nívio Ziviani

Representação computacional de grafos

Referências

Documentos relacionados

 Alternativa [C] [C] está está incorreta, incorreta, o o volume volume do do balão balão que que foi foi colocado em água fria diminuiu, porque a pressão do colocado

Considerando-se o número crescente de CBC, a necessidade de resultados estéticos com procedimentos cirúrgicos cada vez menores, redução de recorrências e a identificação

A síntese da Política Nacional de Educação Ambiental aborda o fato de que o papel da Educação Ambiental já estava reconhecido, internacional e nacionalmente, muito antes

A classificação final constará de listagem, em ordem alfabética, dos candidatos selecionados para cada linha de pesquisa e será divulgada no site oficial da Uniso

(Lei Complementar nº 130/2009) Integrar as ações pedagógicas, didáticas e tecnológicas desenvolvidas nas unidades escolares municipais, com vistas à melhoria da qualidade do

2º Ficam criadas 30 (trinta) vagas para o cargo de Auxiliar de Desenvolvimento Infantil – ADI, conforme as condições e características de que dispõe esta Lei,

Vamos acrescentar ao nosso projeto exemplo informações de custo, como mostra a tabela a

: Uiversidade de São Paulo (USP), Faculdade de Saúde Pública, Departamento de Saúde Materno-Infantil. Rodrigues da Silva SRS, S. Estudo do perfil das portadoras de adenocarcinoma