SlideShare uma empresa Scribd logo
EDII
Estruturas de Dados
Dreco
EDII
 Grafos
 Conceitos gerais e Representações
Definição
 Um grafo G=(V,E) é formado pelos vértices
V = {v1, v2, ..., vn} e pelas arestas E = {e1, e2, ...,
em}.
 Consideraremos sempre que |V| = n e |E| = m.
 Um exemplo:
e3
e2
e4
e5
e9
e6
e8 e10
e11
e1
e12
e7
v1
v2
v3 v4
v5
v6
v7
v8
v9
V = {v1, v2, v3, v4, v5, v6, v7, v8, v9} n = 9
E = {e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12} m = 12
Informações em um grafo
 Pode haver informações nos vértices e/ou nas arestas.
 Ex1: Fornecimento de produtos entre fábricas
 Vértice (fábrica): nome, localização, número de empregados
 Aresta (fornecimento): produto transportado, quantidade, custo
 Ex2: Mapa rodoviário
 Vértice (cidade): nome, número de habitantes, área, etc.
 Aresta (rodovia): distância, qualidade da rodovia, eventuais pedágios
 Ex3: Rede social
 Vértice (pessoa): nome, ocupação, idade, etc.
 Aresta (colaboração): trabalhos em conjunto, área de atuação, artigos
Algumas aplicações
 Administração comercial: diagramas de
processos, organogramas, etc.
 Bioinformática: mapas genéticos, interação de
proteínas
 Bancos de dados: relacionamento de entidades
 Internet: conexões entre redes, projeto e
otimização de sites
 Problemas em geral: diagramas de evolução,
validação de circuitos, autômatos finitos,
análise de linguagens, controle de fluxos, etc.
Exemplo: mapeamento de vizinhanças
Exemplo: metrô de Moscou
Exemplo: escalonamento de provas
 Southern Methodist
University (Dallas)
 Vértices representam
provas, arestas
significam conflitos
(pelo menos um aluno
em comum)
 Exames de mesma cor
poderiam ser realizados
simultaneamente (não
estão conectados)
Exemplo: mapas de redes P2P
 Criado por GnuMap
 Identificação de sub-
redes altamente
conectadas
 Identificação dos
servidores que
ficariam
desconectados em
caso de falha
Exemplo: autômatos e algoritmos
 Algoritmo para verificar a
divisibilidade de um número por 7
 Percurso começa no círculo
 Para cada dígito d do número,
andar d arestas azuis
 Ao passar para o dígito seguinte,
andar 1 aresta vermelha
 Repetir o processo até terminar
os dígitos do número
 Se terminar no círculo, o número
é divisível por 7
Arestas e vértices
 Uma aresta e  E é um par não-ordenado (u,v), onde
u,v  V.
 Neste caso, dizemos que os vértices u e v são
adjacentes entre si, e que a aresta e é incidente em
u e em v.
 Uma aresta e = (u,v) é chamada de laço quando u = v.
 d(u) é o grau do vértice u, isto é, o número de
incidências em u.
 É fácil observar que ΣuєV d(u) = 2.|E|.
Subgrafos
G(X)
X = {2, 3, 4, 5}
G
1 2
3
4
5
6
 O grafo G’=(V’,E’) é um subgrafo de G=(V,E) se V’  V e
E’  E, e todas arestas de E’ têm seus vértices em V’.
 Quando V’=V, G’ é chamado de subgrafo gerador de G.
 Seja X  V e E(X) o conjunto das arestas de E com ambos
os vértices em X. Dizemos que G(X)=(X,E(X)) é o subgrafo
de G induzido por X.
 Exemplo:
Sequências de vértices
 Caminho é uma sequência alternada de vértices e
arestas, onde cada aresta é incidente tanto ao
vértice que a antecede como ao que a segue.
 Caminho simples é um caminho no qual cada vértice
aparece uma única vez.
 Comprimento de um caminho é o seu número de
arestas.
 Ciclo ou circuito é um caminho que começa e termina
no mesmo vértice.
Componentes conexas
Grafo com 3
componentes conexas
 Dois vértices v e u são conectados se
houver um caminho entre eles. Neste caso,
dizemos que esses vértices pertencem à
mesma componente conexa.
 Um grafo é conexo se tiver uma única
componente conexa, ou seja, se todos seus
vértices estiverem conectados entre si.
 Exemplo:
Árvores e florestas
 Árvore é um grafo conexo sem circuitos.
 Exemplo:
 Portanto, todo caminho simples é uma árvore.
 Floresta é um grafo cujas componentes conexas são
árvores.
 Exemplo:
Vértices e arestas de articulação
 Em um grafo G, u  V é chamado de vértice
(ou ponto) de articulação se a sua remoção
desconecta G.
 Exemplo:
u
 Se uma componente conexa de um grafo não possui vértices
de articulação, ela é chamada de componente biconexa.
 Analogamente, uma aresta e, cuja remoção ocasiona a
desconexão do grafo, recebe o nome de ponte (ou aresta de
articulação).
 Exemplo: e
Digrafos ou grafos orientados
1
2
3
4
5
6
u v
v é sucessor de u
u é predecessor de v
 Digrafos são grafos orientados, isto é, suas arestas
possuem direção e são chamadas de arcos.
 Em um digrafo G=(V,E), uma aresta e  E é um par ordenado
(u,v), onde u,v  V.
 Cada vértice v tem um grau de saída d+(v) e um grau de
entrada d-(v), que correspondem respectivamente ao total
de arcos que saem ou chegam em v.
 Exemplo: d+(4) = 0
d-(4) = 3
d+(6) = 1
d-(1) = 1
Sequências de arcos
3
2
4
1
5
e1 e2
e3
e5
e6
e4
e7
e3, e4, e7, e5: caminho entre os vértices 2 e 1
e3, e6, e5, e1: ciclo ou circuito
 Caminho é uma sequência de arcos e1, e2, ..., eq tal
que a extremidade inicial de ei coincide com a
final de ei-1, 2 ≤ i ≤ q.
 Ciclo ou circuito é um caminho que começa e
termina no mesmo vértice.
 Exemplo:
Representação
Matriz de adjacências
1 2
3
4 













0
0
0
0
1
0
0
0
1
1
0
0
0
1
1
0
n
n
A
 Matriz de adjacências é formada por n linhas e n colunas.
 A posição aij dessa matriz indica se o vértice vj é sucessor
ou não do vértice vi.
 Exemplo:
Tamanho da estrutura: O(n2) Útil quando grafo é denso: m ~ n2
Lista de adjacências
1 2
3
4
1
2
3
4
2 3
3 4
4
vértices sucessores
 Lista de adjacências é formada por um vetor de n
ponteiros, onde cada vértice aponta para seus sucessores
(ou predecessores).
 Exemplo:
Tamanho da estrutura: O(n+m)
Código para manipulação do grafo é
mais complicado
Útil quando grafo é esparso: m << n2
Grafos não orientados
1 2
3
4














0
1
1
0
1
0
1
1
1
1
0
1
0
1
1
0
n
n
A
1
2
3
4
2 3
1 3 4
2
1 4
2 3
vértices sucessores
Matriz de adjacências
(simétrica em relação
à diagonal principal)
Lista de adjacências
 Exemplo:
Representação mais adequada
 Critérios para se escolher a melhor
representação:
 Espaço de armazenamento (depende do tamanho do
grafo)
 Teste de pertinência de uma aresta (matriz)
 Verificação do grau de um vértice (lista)
 Inserção ou remoção de uma aresta (matriz)
 Percurso no grafo (lista)
 Geralmente, a lista de adjacências costuma ser
mais vantajosa
Exemplo 1
 Fornecimento de produtos entre fábricas:
Representação 1:
Matriz de adjacências
Representação 2:
Lista de adjacências
Armazenamento de digrafo
 Seja um digrafo de fornecimento entre fábricas:
 Arcos: custo de fornecimento mensal (em R$)
 Deseja-se representá-lo através de uma lista de
adjacências, onde todas as dimensões são alocadas
dinamicamente
Armazenamento de digrafo
Referências Bibliográficas
 ZIVIANI, N. Projeto de Algoritmos.
 TANENBAUM, A.M., LANSAM, Y.,
AUGENSTEIN, M.J. Estruturas de Dados
usando C.
 GOODRICH, M.T., TAMASSIA, R. Projeto
de Algoritmos.
 PREISS, B.R. Estruturas de Dados e
Algoritmos.
 FEOFILOFF, E.P. Algoritmos em Linguagem
C.
Referências Bibliográficas
 CORMEN, T.H., LEISERSON, C.E., RIVEST,
R.L. Introduction to Algorithms.
 DROZDEK, A. Estrutura de Dados e
Algoritmos em C++
 SEDGEWICK, R. Algorithms in [C, C++,
Java].
 AHO, V. AHOPCROFT, J. E., ULLMAN, J. D.
Data Structures and Algorithms.
 SANCHES, C. A. A. BEZERRA, J. M. Material
Didático ITA. 2007.
Fim

Mais conteúdo relacionado

PPTX
Seminário sobre Grafos por Samyra Lara
PDF
Introdução aos grafos: Principais conceitos
PPTX
Grafos_1.pptx
PDF
ARS - Análise de Redes Sociais - VIII ERI MG
KEY
Treinamento Para competições de Programação do INF-UFG - Grafos Parte 1 - Tur...
PPT
Grafos e Árvores
PDF
Pesquisa operacional teoria dos grafos
Seminário sobre Grafos por Samyra Lara
Introdução aos grafos: Principais conceitos
Grafos_1.pptx
ARS - Análise de Redes Sociais - VIII ERI MG
Treinamento Para competições de Programação do INF-UFG - Grafos Parte 1 - Tur...
Grafos e Árvores
Pesquisa operacional teoria dos grafos

Semelhante a Grafos.ppt (20)

PPTX
Grafos - Organização de dados para a Matemática.pptx
PPTX
Grafos
PPTX
Análise de Redes Sociais: Introdução
PDF
Análise de Algoritmos - Conceitos de Grafos
PDF
Aula Grafos
PPTX
Capítulo 8 - Algoritmos em grafos com Pseudocódigos e em Java
PPTX
Grafos
PDF
Percursos em grafos
PDF
Teoria dos Grafos - História e COnceitos Iniciais
PDF
Introdução a Teoria dos Grafos
PPTX
Teoria de Grafos.ppt.pptx para estudar MACS
ODP
Grafos - Uma abordagem divertida - Latinoware 2014
PDF
Teoria dos Grafos
PPTX
MACS - grafos, trajetos e circuitos eulerianos; circuitos eulerianos...
PDF
Teoria dos grafos
PDF
Estrutura de Dados - Grafos
PPTX
Grafos .pptx
ODP
Elementary Circuits Enumeration in Graphs
PPTX
PowerPoint Introdução_aos_grafos 11º Ano.pptx
PDF
Grafos1
Grafos - Organização de dados para a Matemática.pptx
Grafos
Análise de Redes Sociais: Introdução
Análise de Algoritmos - Conceitos de Grafos
Aula Grafos
Capítulo 8 - Algoritmos em grafos com Pseudocódigos e em Java
Grafos
Percursos em grafos
Teoria dos Grafos - História e COnceitos Iniciais
Introdução a Teoria dos Grafos
Teoria de Grafos.ppt.pptx para estudar MACS
Grafos - Uma abordagem divertida - Latinoware 2014
Teoria dos Grafos
MACS - grafos, trajetos e circuitos eulerianos; circuitos eulerianos...
Teoria dos grafos
Estrutura de Dados - Grafos
Grafos .pptx
Elementary Circuits Enumeration in Graphs
PowerPoint Introdução_aos_grafos 11º Ano.pptx
Grafos1
Anúncio

Último (9)

PPTX
Proposta de Implementação de uma Rede de Computador Cabeada.pptx
PDF
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
PDF
eBook - GUIA DE CONSULTA RAPIDA EM ROTEADORES E SWITCHES CISCO - VOL I.pdf
PDF
Manejo integrado de pragas na cultura do algodão
PPTX
Utilizando code blockes por andre backes
PPTX
Viasol Energia Solar -Soluções para geração e economia de energia
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PPTX
Tipos de servidor em redes de computador.pptx
PPTX
Eng. Software - pontos essenciais para o início
Proposta de Implementação de uma Rede de Computador Cabeada.pptx
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
eBook - GUIA DE CONSULTA RAPIDA EM ROTEADORES E SWITCHES CISCO - VOL I.pdf
Manejo integrado de pragas na cultura do algodão
Utilizando code blockes por andre backes
Viasol Energia Solar -Soluções para geração e economia de energia
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
Tipos de servidor em redes de computador.pptx
Eng. Software - pontos essenciais para o início
Anúncio

Grafos.ppt

  • 2. EDII  Grafos  Conceitos gerais e Representações
  • 3. Definição  Um grafo G=(V,E) é formado pelos vértices V = {v1, v2, ..., vn} e pelas arestas E = {e1, e2, ..., em}.  Consideraremos sempre que |V| = n e |E| = m.  Um exemplo: e3 e2 e4 e5 e9 e6 e8 e10 e11 e1 e12 e7 v1 v2 v3 v4 v5 v6 v7 v8 v9 V = {v1, v2, v3, v4, v5, v6, v7, v8, v9} n = 9 E = {e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12} m = 12
  • 4. Informações em um grafo  Pode haver informações nos vértices e/ou nas arestas.  Ex1: Fornecimento de produtos entre fábricas  Vértice (fábrica): nome, localização, número de empregados  Aresta (fornecimento): produto transportado, quantidade, custo  Ex2: Mapa rodoviário  Vértice (cidade): nome, número de habitantes, área, etc.  Aresta (rodovia): distância, qualidade da rodovia, eventuais pedágios  Ex3: Rede social  Vértice (pessoa): nome, ocupação, idade, etc.  Aresta (colaboração): trabalhos em conjunto, área de atuação, artigos
  • 5. Algumas aplicações  Administração comercial: diagramas de processos, organogramas, etc.  Bioinformática: mapas genéticos, interação de proteínas  Bancos de dados: relacionamento de entidades  Internet: conexões entre redes, projeto e otimização de sites  Problemas em geral: diagramas de evolução, validação de circuitos, autômatos finitos, análise de linguagens, controle de fluxos, etc.
  • 6. Exemplo: mapeamento de vizinhanças
  • 8. Exemplo: escalonamento de provas  Southern Methodist University (Dallas)  Vértices representam provas, arestas significam conflitos (pelo menos um aluno em comum)  Exames de mesma cor poderiam ser realizados simultaneamente (não estão conectados)
  • 9. Exemplo: mapas de redes P2P  Criado por GnuMap  Identificação de sub- redes altamente conectadas  Identificação dos servidores que ficariam desconectados em caso de falha
  • 10. Exemplo: autômatos e algoritmos  Algoritmo para verificar a divisibilidade de um número por 7  Percurso começa no círculo  Para cada dígito d do número, andar d arestas azuis  Ao passar para o dígito seguinte, andar 1 aresta vermelha  Repetir o processo até terminar os dígitos do número  Se terminar no círculo, o número é divisível por 7
  • 11. Arestas e vértices  Uma aresta e  E é um par não-ordenado (u,v), onde u,v  V.  Neste caso, dizemos que os vértices u e v são adjacentes entre si, e que a aresta e é incidente em u e em v.  Uma aresta e = (u,v) é chamada de laço quando u = v.  d(u) é o grau do vértice u, isto é, o número de incidências em u.  É fácil observar que ΣuєV d(u) = 2.|E|.
  • 12. Subgrafos G(X) X = {2, 3, 4, 5} G 1 2 3 4 5 6  O grafo G’=(V’,E’) é um subgrafo de G=(V,E) se V’  V e E’  E, e todas arestas de E’ têm seus vértices em V’.  Quando V’=V, G’ é chamado de subgrafo gerador de G.  Seja X  V e E(X) o conjunto das arestas de E com ambos os vértices em X. Dizemos que G(X)=(X,E(X)) é o subgrafo de G induzido por X.  Exemplo:
  • 13. Sequências de vértices  Caminho é uma sequência alternada de vértices e arestas, onde cada aresta é incidente tanto ao vértice que a antecede como ao que a segue.  Caminho simples é um caminho no qual cada vértice aparece uma única vez.  Comprimento de um caminho é o seu número de arestas.  Ciclo ou circuito é um caminho que começa e termina no mesmo vértice.
  • 14. Componentes conexas Grafo com 3 componentes conexas  Dois vértices v e u são conectados se houver um caminho entre eles. Neste caso, dizemos que esses vértices pertencem à mesma componente conexa.  Um grafo é conexo se tiver uma única componente conexa, ou seja, se todos seus vértices estiverem conectados entre si.  Exemplo:
  • 15. Árvores e florestas  Árvore é um grafo conexo sem circuitos.  Exemplo:  Portanto, todo caminho simples é uma árvore.  Floresta é um grafo cujas componentes conexas são árvores.  Exemplo:
  • 16. Vértices e arestas de articulação  Em um grafo G, u  V é chamado de vértice (ou ponto) de articulação se a sua remoção desconecta G.  Exemplo: u  Se uma componente conexa de um grafo não possui vértices de articulação, ela é chamada de componente biconexa.  Analogamente, uma aresta e, cuja remoção ocasiona a desconexão do grafo, recebe o nome de ponte (ou aresta de articulação).  Exemplo: e
  • 17. Digrafos ou grafos orientados 1 2 3 4 5 6 u v v é sucessor de u u é predecessor de v  Digrafos são grafos orientados, isto é, suas arestas possuem direção e são chamadas de arcos.  Em um digrafo G=(V,E), uma aresta e  E é um par ordenado (u,v), onde u,v  V.  Cada vértice v tem um grau de saída d+(v) e um grau de entrada d-(v), que correspondem respectivamente ao total de arcos que saem ou chegam em v.  Exemplo: d+(4) = 0 d-(4) = 3 d+(6) = 1 d-(1) = 1
  • 18. Sequências de arcos 3 2 4 1 5 e1 e2 e3 e5 e6 e4 e7 e3, e4, e7, e5: caminho entre os vértices 2 e 1 e3, e6, e5, e1: ciclo ou circuito  Caminho é uma sequência de arcos e1, e2, ..., eq tal que a extremidade inicial de ei coincide com a final de ei-1, 2 ≤ i ≤ q.  Ciclo ou circuito é um caminho que começa e termina no mesmo vértice.  Exemplo:
  • 19. Representação Matriz de adjacências 1 2 3 4               0 0 0 0 1 0 0 0 1 1 0 0 0 1 1 0 n n A  Matriz de adjacências é formada por n linhas e n colunas.  A posição aij dessa matriz indica se o vértice vj é sucessor ou não do vértice vi.  Exemplo: Tamanho da estrutura: O(n2) Útil quando grafo é denso: m ~ n2
  • 20. Lista de adjacências 1 2 3 4 1 2 3 4 2 3 3 4 4 vértices sucessores  Lista de adjacências é formada por um vetor de n ponteiros, onde cada vértice aponta para seus sucessores (ou predecessores).  Exemplo: Tamanho da estrutura: O(n+m) Código para manipulação do grafo é mais complicado Útil quando grafo é esparso: m << n2
  • 21. Grafos não orientados 1 2 3 4               0 1 1 0 1 0 1 1 1 1 0 1 0 1 1 0 n n A 1 2 3 4 2 3 1 3 4 2 1 4 2 3 vértices sucessores Matriz de adjacências (simétrica em relação à diagonal principal) Lista de adjacências  Exemplo:
  • 22. Representação mais adequada  Critérios para se escolher a melhor representação:  Espaço de armazenamento (depende do tamanho do grafo)  Teste de pertinência de uma aresta (matriz)  Verificação do grau de um vértice (lista)  Inserção ou remoção de uma aresta (matriz)  Percurso no grafo (lista)  Geralmente, a lista de adjacências costuma ser mais vantajosa
  • 23. Exemplo 1  Fornecimento de produtos entre fábricas:
  • 26. Armazenamento de digrafo  Seja um digrafo de fornecimento entre fábricas:  Arcos: custo de fornecimento mensal (em R$)  Deseja-se representá-lo através de uma lista de adjacências, onde todas as dimensões são alocadas dinamicamente
  • 28. Referências Bibliográficas  ZIVIANI, N. Projeto de Algoritmos.  TANENBAUM, A.M., LANSAM, Y., AUGENSTEIN, M.J. Estruturas de Dados usando C.  GOODRICH, M.T., TAMASSIA, R. Projeto de Algoritmos.  PREISS, B.R. Estruturas de Dados e Algoritmos.  FEOFILOFF, E.P. Algoritmos em Linguagem C.
  • 29. Referências Bibliográficas  CORMEN, T.H., LEISERSON, C.E., RIVEST, R.L. Introduction to Algorithms.  DROZDEK, A. Estrutura de Dados e Algoritmos em C++  SEDGEWICK, R. Algorithms in [C, C++, Java].  AHO, V. AHOPCROFT, J. E., ULLMAN, J. D. Data Structures and Algorithms.  SANCHES, C. A. A. BEZERRA, J. M. Material Didático ITA. 2007.
  • 30. Fim