SlideShare uma empresa Scribd logo
1 de 30
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

Semelhante a Grafos Estruturas

Vetores-no-R2-e-no-R32.pdf
Vetores-no-R2-e-no-R32.pdfVetores-no-R2-e-no-R32.pdf
Vetores-no-R2-e-no-R32.pdfsilvania81
 
Teoria dos Grafos - História e COnceitos Iniciais
Teoria dos Grafos - História e COnceitos IniciaisTeoria dos Grafos - História e COnceitos Iniciais
Teoria dos Grafos - História e COnceitos IniciaisVictor Hazin da Rocha
 
Árvores Espalhadas Mínimas
Árvores Espalhadas MínimasÁrvores Espalhadas Mínimas
Árvores Espalhadas MínimasDiego Cavalca
 
Apostilageometriaanalticaplana 2ed-130825062334-phpapp01
Apostilageometriaanalticaplana 2ed-130825062334-phpapp01Apostilageometriaanalticaplana 2ed-130825062334-phpapp01
Apostilageometriaanalticaplana 2ed-130825062334-phpapp01Carlos Andrade
 
Apostila geometria analítica plana 2º ed.
Apostila geometria analítica plana   2º ed.Apostila geometria analítica plana   2º ed.
Apostila geometria analítica plana 2º ed.day ....
 
Aulas 11-guloso Algoritmos
Aulas 11-guloso AlgoritmosAulas 11-guloso Algoritmos
Aulas 11-guloso AlgoritmosKevin Takano
 
Introdução à Teoria dos Grafos
Introdução à Teoria dos GrafosIntrodução à Teoria dos Grafos
Introdução à Teoria dos GrafosBianca Dantas
 
Winged-Edge Report
Winged-Edge ReportWinged-Edge Report
Winged-Edge ReportMichel Alves
 
GEOMETRIA ANALÍTICA cap 05
GEOMETRIA ANALÍTICA cap  05GEOMETRIA ANALÍTICA cap  05
GEOMETRIA ANALÍTICA cap 05Andrei Bastos
 
Capítulo 8 - Algoritmos em grafos com Pseudocódigos e em Java
Capítulo 8 - Algoritmos em grafos com Pseudocódigos e em JavaCapítulo 8 - Algoritmos em grafos com Pseudocódigos e em Java
Capítulo 8 - Algoritmos em grafos com Pseudocódigos e em Javaprofjotamarcosduarte
 
Seminário sobre Grafos por Samyra Lara
Seminário sobre Grafos por Samyra LaraSeminário sobre Grafos por Samyra Lara
Seminário sobre Grafos por Samyra LaraIFPB
 
Transformação linear
Transformação linearTransformação linear
Transformação linearramos_unicap
 

Semelhante a Grafos Estruturas (20)

Vetores-no-R2-e-no-R32.pdf
Vetores-no-R2-e-no-R32.pdfVetores-no-R2-e-no-R32.pdf
Vetores-no-R2-e-no-R32.pdf
 
Teoria dos Grafos - História e COnceitos Iniciais
Teoria dos Grafos - História e COnceitos IniciaisTeoria dos Grafos - História e COnceitos Iniciais
Teoria dos Grafos - História e COnceitos Iniciais
 
Árvores Espalhadas Mínimas
Árvores Espalhadas MínimasÁrvores Espalhadas Mínimas
Árvores Espalhadas Mínimas
 
Apostilageometriaanalticaplana 2ed-130825062334-phpapp01
Apostilageometriaanalticaplana 2ed-130825062334-phpapp01Apostilageometriaanalticaplana 2ed-130825062334-phpapp01
Apostilageometriaanalticaplana 2ed-130825062334-phpapp01
 
Apostila geometria analítica plana 2º ed.
Apostila geometria analítica plana   2º ed.Apostila geometria analítica plana   2º ed.
Apostila geometria analítica plana 2º ed.
 
Aulas 11-guloso Algoritmos
Aulas 11-guloso AlgoritmosAulas 11-guloso Algoritmos
Aulas 11-guloso Algoritmos
 
Lecture01.pptx
Lecture01.pptxLecture01.pptx
Lecture01.pptx
 
Introdução à Teoria dos Grafos
Introdução à Teoria dos GrafosIntrodução à Teoria dos Grafos
Introdução à Teoria dos Grafos
 
Vetores
VetoresVetores
Vetores
 
4. espacos vectoriais
4. espacos vectoriais4. espacos vectoriais
4. espacos vectoriais
 
Winged-Edge Report
Winged-Edge ReportWinged-Edge Report
Winged-Edge Report
 
GEOMETRIA ANALÍTICA cap 05
GEOMETRIA ANALÍTICA cap  05GEOMETRIA ANALÍTICA cap  05
GEOMETRIA ANALÍTICA cap 05
 
Vetores
VetoresVetores
Vetores
 
Vetor resumo
Vetor resumoVetor resumo
Vetor resumo
 
Capítulo 8 - Algoritmos em grafos com Pseudocódigos e em Java
Capítulo 8 - Algoritmos em grafos com Pseudocódigos e em JavaCapítulo 8 - Algoritmos em grafos com Pseudocódigos e em Java
Capítulo 8 - Algoritmos em grafos com Pseudocódigos e em Java
 
1928 d
1928 d1928 d
1928 d
 
Grafos
GrafosGrafos
Grafos
 
Seminário sobre Grafos por Samyra Lara
Seminário sobre Grafos por Samyra LaraSeminário sobre Grafos por Samyra Lara
Seminário sobre Grafos por Samyra Lara
 
Transformação linear
Transformação linearTransformação linear
Transformação linear
 
Sc parabola
Sc parabolaSc parabola
Sc parabola
 

Grafos Estruturas

  • 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