SlideShare uma empresa Scribd logo
1 de 34
Grafos 
Samyra Lara 
Graduanda em Tecnologia em 
Sistemas para Internet – IFPB, 
campus João Pessoa.
Porque aprender Grafos? 
Estamos conhecendo: GRAFOS 
 Importante ferramenta matemática com aplicação em diversas áreas 
do conhecimento como: genética, química, pesquisa operacional, 
telecomunicações, engenharia elétrica, redes de computadores, 
conexão de voos aéreos, restrições de precedência, fluxo de 
programas, dentro outros; 
 Utilizados na definição e/ou resolução de problemas; 
 Existem centenas de problemas computacionais que empregam 
grafos com sucesso;
Porque aprender Grafos? 
Que tal começar pela Conectividade Social? 
Estamos conhecendo: GRAFOS
Aplicação Prática: Voos aéreos 
WebJet Linhas Aéreas: http://www.webjet.com.br 
Estamos conhecendo: GRAFOS
Definição de Grafos 
 É um conceito matemático que basicamente estuda os elementos de um 
conjunto e a relação entre eles; 
Definição matemática: 
G = {V, A} 
 V : Vértices (elementos); 
 A: Arestas ou Arcos (relações entre elementos); 
|V| e |A| representam a cardinalidade dos conjuntos V e A, isto é, número de 
elementos dos respectivos conjuntos. 
Terminologias: vértice = nós ; aresta = arco. 
Pode variar conforme o autor. 
Estamos conhecendo: GRAFOS
Definição e Notação 
 Exemplo: 
G={V,A} 
V={1,2,3,4,5,6} 
A={ (6,4), (4,3), (4,5), (4,6), (5,2), (5,1), (5,4) 
(3,2), (3,4), (2,5), (2,3), (2,1), (1,2), (1,5) } 
|V| = 6 
|A| = 14 
Estamos conhecendo: GRAFOS
Tipos de Grafos 
 NÃO-DIRIGIDOS: 
As arestas indicam uma conexão bidirecional 
 DIRIGIDOS: 
 As arestas determinam o sentido da conexão 
através de uma seta; 
Faz distinção entre origem e destino; 
Convenção: 
aresta: GND / arco: GD 
Estamos conhecendo: GRAFOS
Grafo dirigido 
 Exemplo de Grafo Dirigido 
G = {V,A} 
V = {0,1,2,3} 
A = { {0,1}, {0,3}, {1,2}, {1,3}, {2,3}, {2,2} , {3,0}} 
|V| = 4 
|A| = 7 
Estamos conhecendo: GRAFOS
Conceitos Básicos 
 Vértice Adjacente 
Vértices ligados por uma aresta 
Exemplo: 
• Vértice 1 é adjacente a 0 
• Vértice 1 é adjacente a 2 
 Aresta Incidente 
Uma aresta/arco que conecta dois vértices em particular 
Exemplo: 
• A aresta (0,1) é incidente aos vértices 0 e 1 
• O arco {3,4} é incidente de 3 ou incidente a 4 
Estamos conhecendo: GRAFOS 
(0,1)
Conceitos Básicos 
 Grau de um vértice 
Número de arestas/arcos incidentes a um vértice 
Exemplo: o grau do vértice “1” é 2; 
Tratando-se de Grafos dirigidos, temos: 
 Grau de Emissão: # arcos que partem de v; 
 Grau de Recepção: # arcos que chegam em v; 
Exemplo: Grau do vértice 0: 
Emissão: 2; 
Recepção: 1. 
Estamos conhecendo: GRAFOS
Grafo dirigido 
 Caminho: 
É determinado através da sequência de um ou mais arcos. É possível chegar 
até outro vértice (não adjacente), através do percurso dos arcos. 
Exemplo: 
“0” não é adjacente a “2”, é possível chegar 
até ele através dos arcos {0,1} e {1,2}. 
Estamos conhecendo: GRAFOS
Estamos conhecendo: GRAFOS 
Samyra, como eu represento isso?
Formas de representação 
1ª FORMA: Matriz de Adjacência (estática): 
A partir de um Grafo (G), dado por: 
G = (V, A); 
 n = número de vértices (n > 0). 
Consiste em uma matriz (E) quadrada (n x n), cujos elementos, são: 
 eij = 1, se a aresta <ei, ej> pertence a “A” 
 eij = 0, caso contrário. 
Estamos conhecendo: GRAFOS
Matriz de Adjacência 
Como montar essa matriz de adjacência ? 
1. Identificar a quantidade de vértices; 
2. Montar uma matriz com essa quantidade; 
3. Usar a regra (slide anterior) para determinar os 
elementos dessa matriz. 
Estamos conhecendo: GRAFOS
Matriz de Adjacência 
• O Grafo (G), possui 6 vértices. 
• Implica dizer que a matriz será 
composta por 6 linhas e 6 colunas. 
Estamos conhecendo: GRAFOS 
GRAFO G
Matriz de Adjacência 
 Matriz 6 x 6: 
Estamos conhecendo: GRAFOS
Matriz de Adjacência 
Vantagens: 
 Fácil visualização dos dados; 
 Pesquisas são facilmente respondidas: 
Quantidade de arestas/arcos do grafo; 
Grau de cada vértice; 
Existência de caminhos; 
Existência de ciclos; 
Existência de Laços (loop). 
Estamos conhecendo: GRAFOS
Matriz de Adjacência 
Desvantagens: 
Estamos conhecendo: GRAFOS 
 Geralmente essa matriz de representação é esparsa, uma vez que, são 
representados, mesmo que não existam, arestas/arcos entre os 
vértices; 
 Piorando a situação, as aplicações reais costumam não possuir 
limitações quanto ao número de vértices.
Formas de representação 
Estamos conhecendo: GRAFOS 
2ª FORMA: Lista de Adjacências (dinâmica) 
• É uma lista (L), onde cada nó possui uma lista de seus vértices 
adjacentes.
Lista de Adjacências 
Como montar essa lista de adjacência ? 
Estamos conhecendo: GRAFOS 
1. Identificar a quantidade de vértices; 
2. Montar uma lista com essa quantidade (nó); 
3. Cada nó dessa lista contém a identificação do vértice de um 
apontador para o próximo vértice, cujo valor será nulo (zero ou 
NULL) quando for o fim da lista.
Lista de Adjacências 
Estamos conhecendo: GRAFOS 
Exemplo: 
 Qual seria a representação do Grafo (G), usando a representação 
“Lista de Adjacência” ?
Lista de Adjacências 
Vantagens: 
• Fácil visualização dos dados; 
• Ocupa pouco espaço; 
• Fácil responder as perguntas. 
Desvantagens: 
• Complica “um pouco” a implementação. 
Estamos conhecendo: GRAFOS
Percursos 
Algumas regras 
Estamos conhecendo: GRAFOS 
 A partir de uma ordem pré-estabelecida, os vértices de um grafo são 
percorridos, a partir de um deles; 
 Todos os caminhos relacionados a um vértices devem ser percorridos; 
 A escolha desse vértice inicial pode ser aleatório ou predefinido; 
 Geralmente a ideia é descobrir o melhor caminho, ou seja, o de 
menor comprimento.
Percursos 
Algumas regras 
Estamos conhecendo: GRAFOS 
 É necessário que o algoritmo, de percurso, defina o primeiro “nó” a 
ser visitado, podendo ser: 
 Escolhido; 
Será selecionado aleatoriamente. 
 Também deve ser definido a ordem que será seguida para visitar os 
“nó” sucessores a um determinado “nó”.
Percursos 
Observações 
Estamos conhecendo: GRAFOS 
 Em um grafo nem sempre é possível atingir todos os demais “nó” a 
partir do “nó” inicial; 
 Não existe uma sequência natural entre os sucessores de um 
determinado “nó”;
Tipos de Percursos 
 Pesquisa Inicial em Profundidade (DFS): 
“Depth First Search”. 
 Pesquisa Inicial em Largura (BFS): 
“Breadth First Search”. 
Estamos conhecendo: GRAFOS
Pesquisa em profundidade (DFS) 
Estamos conhecendo: GRAFOS 
Faz uma análise nos arcos de um grafo.
Pesquisa em profundidade (DFS) 
Estamos conhecendo: GRAFOS 
A busca em profundidade procura acessar todos os vértices em um 
grafo. Para acessar todos os possíveis vértices, varre a lista de arestas 
de cada vértice do grafo.
Pesquisa em profundidade (DFS) 
empilha primeiro vértice (origem) 
repita enquanto pilha não vazia{ 
"V" <- vértice do topo da pilha 
se (existir vértice adjacente){ 
remove o arco que está incidindo 
se o vértice adjacente não está marcado{ 
marca o vértice adjacente 
empilha o vértice adjacente 
} 
} 
senao desempilha "V" 
} 
Estamos conhecendo: GRAFOS
Pesquisa em amplitude (BFS) 
Estamos conhecendo: GRAFOS 
Faz uma análise nos vértices de um grafo.
Pesquisa em amplitude (BFS) 
Estamos conhecendo: GRAFOS 
Dado um grafo e um vértice de origem, a busca em largura 
explora as arestas do grafo até explorar todos os vértices 
alcançáveis a partir do vértice de origem.
Pesquisa em amplitude (BFS) 
insere o primeiro vértice na fila 
repita enquanto fila não vazia{ 
"V" <- primeiro vértice da fila 
repita para todos os arcos incidentes a "V“ (adjac.){ 
se (vértice adjacente não está marcado){ 
marca o vértice adjacente 
insere o vértice adjacente no final da fila 
} 
} 
remova o vértice da fila 
} 
Estamos conhecendo: GRAFOS
Vamos ao código... 
Estamos conhecendo: GRAFOS
REFERÊNCIAS 
Estamos conhecendo: GRAFOS 
• Material do Curso de Extensão de Grafos, ministrado pelo Professor 
M.Sc. Alex Sandro da Cunha Rêgo; 
• Material do Projeto Olímpico de Programação, ministrado pela Ms. 
Valéria Maria Bezerra Cavalcanti; 
• ASCENCIO, A. F. G.; ARAÚJO, G. S.. Estrutura de Dados: Algoritmos, 
análise da Complexidade e Implementações em Java e 
C/C++. Editora PEARSON, 2010. 
• VELOSO, Paulo.; SANTOS, Clesio dos; AZEREDO, Paulo; FURTADO, 
Antonio Estruturas de Dados. Rio de Janeiro: Editora Campus, 1984.

Mais conteúdo relacionado

Mais procurados (20)

Função.quadratica
Função.quadraticaFunção.quadratica
Função.quadratica
 
Sequencias e Regularidades
Sequencias e RegularidadesSequencias e Regularidades
Sequencias e Regularidades
 
Função exponencial
Função exponencialFunção exponencial
Função exponencial
 
Função afim-linear-constante-gráficos
Função  afim-linear-constante-gráficosFunção  afim-linear-constante-gráficos
Função afim-linear-constante-gráficos
 
Razao e proporção
Razao e proporçãoRazao e proporção
Razao e proporção
 
Área do prisma
Área do prismaÁrea do prisma
Área do prisma
 
Geometria plana
Geometria planaGeometria plana
Geometria plana
 
Aula 22 probabilidade - parte 1
Aula 22   probabilidade - parte 1Aula 22   probabilidade - parte 1
Aula 22 probabilidade - parte 1
 
Sucessões: Exercícios Resolvidos
Sucessões: Exercícios ResolvidosSucessões: Exercícios Resolvidos
Sucessões: Exercícios Resolvidos
 
Probabilidades - Resumo teórico 9º Ano
Probabilidades - Resumo teórico 9º AnoProbabilidades - Resumo teórico 9º Ano
Probabilidades - Resumo teórico 9º Ano
 
Principio Fundamental Da Contagem
Principio Fundamental Da ContagemPrincipio Fundamental Da Contagem
Principio Fundamental Da Contagem
 
Teorema de pitagoras
Teorema de pitagorasTeorema de pitagoras
Teorema de pitagoras
 
Tipos de movimento e aceleração
Tipos de movimento e aceleraçãoTipos de movimento e aceleração
Tipos de movimento e aceleração
 
Introdução à Teoria dos Grafos
Introdução à Teoria dos GrafosIntrodução à Teoria dos Grafos
Introdução à Teoria dos Grafos
 
Sistema de equações
Sistema de equaçõesSistema de equações
Sistema de equações
 
Perímetros, áreas e volumes
Perímetros, áreas e volumesPerímetros, áreas e volumes
Perímetros, áreas e volumes
 
Grafos
GrafosGrafos
Grafos
 
Grupo de Estudos - Aula 1 - Porcentagem
Grupo de Estudos - Aula 1 - PorcentagemGrupo de Estudos - Aula 1 - Porcentagem
Grupo de Estudos - Aula 1 - Porcentagem
 
Função afim
Função afimFunção afim
Função afim
 
Equação do 2º grau
Equação do 2º grauEquação do 2º grau
Equação do 2º grau
 

Destaque

Análise de Redes Sociais: Introdução
Análise de Redes Sociais: IntroduçãoAnálise de Redes Sociais: Introdução
Análise de Redes Sociais: IntroduçãoAlexandre Duarte
 
Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperl...
Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperl...Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperl...
Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperl...Thiago Colares
 
Pesquisa operacional teoria dos grafos
Pesquisa operacional teoria dos grafosPesquisa operacional teoria dos grafos
Pesquisa operacional teoria dos grafosDiego Henrique
 
Caminho Mínimo em Grafos - Algoritmo de Bellman-Ford
Caminho Mínimo em Grafos - Algoritmo de Bellman-FordCaminho Mínimo em Grafos - Algoritmo de Bellman-Ford
Caminho Mínimo em Grafos - Algoritmo de Bellman-FordGabriel Albuquerque
 
MACS - grafos, trajetos e circuitos eulerianos; circuitos eulerianos...
MACS - grafos, trajetos e circuitos eulerianos; circuitos eulerianos...MACS - grafos, trajetos e circuitos eulerianos; circuitos eulerianos...
MACS - grafos, trajetos e circuitos eulerianos; circuitos eulerianos...Joana Pinto
 
Introdução à Teoria dos Grafos e Análise de Redes Sociais
Introdução à Teoria dos Grafos e Análise de Redes SociaisIntrodução à Teoria dos Grafos e Análise de Redes Sociais
Introdução à Teoria dos Grafos e Análise de Redes Sociaisfabiomalini
 

Destaque (14)

Kruskal
KruskalKruskal
Kruskal
 
Grafos e Árvores
Grafos e ÁrvoresGrafos e Árvores
Grafos e Árvores
 
Teoria dos Grafos
Teoria dos GrafosTeoria dos Grafos
Teoria dos Grafos
 
Análise de Redes Sociais: Introdução
Análise de Redes Sociais: IntroduçãoAnálise de Redes Sociais: Introdução
Análise de Redes Sociais: Introdução
 
Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperl...
Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperl...Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperl...
Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperl...
 
Pesquisa operacional teoria dos grafos
Pesquisa operacional teoria dos grafosPesquisa operacional teoria dos grafos
Pesquisa operacional teoria dos grafos
 
Aula sobre Tabela Hash
Aula sobre Tabela HashAula sobre Tabela Hash
Aula sobre Tabela Hash
 
Caminho Mínimo em Grafos - Algoritmo de Bellman-Ford
Caminho Mínimo em Grafos - Algoritmo de Bellman-FordCaminho Mínimo em Grafos - Algoritmo de Bellman-Ford
Caminho Mínimo em Grafos - Algoritmo de Bellman-Ford
 
MACS - grafos, trajetos e circuitos eulerianos; circuitos eulerianos...
MACS - grafos, trajetos e circuitos eulerianos; circuitos eulerianos...MACS - grafos, trajetos e circuitos eulerianos; circuitos eulerianos...
MACS - grafos, trajetos e circuitos eulerianos; circuitos eulerianos...
 
Estrutura de Dados - Grafos
Estrutura de Dados - GrafosEstrutura de Dados - Grafos
Estrutura de Dados - Grafos
 
Projeto de Experimentos
Projeto de ExperimentosProjeto de Experimentos
Projeto de Experimentos
 
Prismas e áreas
Prismas e áreasPrismas e áreas
Prismas e áreas
 
Introdução à Teoria dos Grafos e Análise de Redes Sociais
Introdução à Teoria dos Grafos e Análise de Redes SociaisIntrodução à Teoria dos Grafos e Análise de Redes Sociais
Introdução à Teoria dos Grafos e Análise de Redes Sociais
 
Apostila grafos
Apostila grafosApostila grafos
Apostila grafos
 

Semelhante a Seminário sobre Grafos por Samyra Lara

Topological Sorting (Portuguese)
Topological Sorting (Portuguese)Topological Sorting (Portuguese)
Topological Sorting (Portuguese)Hudson Miranda
 
Treinamento Para competições de Programação do INF-UFG - Grafos Parte 1 - Tur...
Treinamento Para competições de Programação do INF-UFG - Grafos Parte 1 - Tur...Treinamento Para competições de Programação do INF-UFG - Grafos Parte 1 - Tur...
Treinamento Para competições de Programação do INF-UFG - Grafos Parte 1 - Tur...Murilo Adriano Vasconcelos
 
Introdução aos grafos: Principais conceitos
Introdução aos grafos: Principais conceitosIntrodução aos grafos: Principais conceitos
Introdução aos grafos: Principais conceitosssusera0fc94
 
Análise de Algoritmos - Conceitos de Grafos
Análise de Algoritmos - Conceitos de GrafosAnálise de Algoritmos - Conceitos de Grafos
Análise de Algoritmos - Conceitos de GrafosDelacyr Ferreira
 
Algoritmo de Kosaraju
Algoritmo de KosarajuAlgoritmo de Kosaraju
Algoritmo de KosarajuMarcos Castro
 
Busca em largura (breadth first search)
Busca em largura (breadth first search)Busca em largura (breadth first search)
Busca em largura (breadth first search)Rafael Coelho Silva
 
Teoria de Grafos.ppt.pptx para estudar MACS
Teoria de Grafos.ppt.pptx para estudar MACSTeoria de Grafos.ppt.pptx para estudar MACS
Teoria de Grafos.ppt.pptx para estudar MACSsandra soares
 
Á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 ....
 
Graph Theory - Exercises - Chapter 8
Graph Theory - Exercises - Chapter 8Graph Theory - Exercises - Chapter 8
Graph Theory - Exercises - Chapter 8Michel Alves
 
ARS - Análise de Redes Sociais - VIII ERI MG
ARS - Análise de Redes Sociais - VIII ERI MGARS - Análise de Redes Sociais - VIII ERI MG
ARS - Análise de Redes Sociais - VIII ERI MGPetronio Candido
 

Semelhante a Seminário sobre Grafos por Samyra Lara (20)

Grafos
GrafosGrafos
Grafos
 
Topological Sorting (Portuguese)
Topological Sorting (Portuguese)Topological Sorting (Portuguese)
Topological Sorting (Portuguese)
 
Treinamento Para competições de Programação do INF-UFG - Grafos Parte 1 - Tur...
Treinamento Para competições de Programação do INF-UFG - Grafos Parte 1 - Tur...Treinamento Para competições de Programação do INF-UFG - Grafos Parte 1 - Tur...
Treinamento Para competições de Programação do INF-UFG - Grafos Parte 1 - Tur...
 
Introdução aos grafos: Principais conceitos
Introdução aos grafos: Principais conceitosIntrodução aos grafos: Principais conceitos
Introdução aos grafos: Principais conceitos
 
Grafos_1.pptx
Grafos_1.pptxGrafos_1.pptx
Grafos_1.pptx
 
Análise de Algoritmos - Conceitos de Grafos
Análise de Algoritmos - Conceitos de GrafosAnálise de Algoritmos - Conceitos de Grafos
Análise de Algoritmos - Conceitos de Grafos
 
Algoritmo de Kosaraju
Algoritmo de KosarajuAlgoritmo de Kosaraju
Algoritmo de Kosaraju
 
Busca em largura (breadth first search)
Busca em largura (breadth first search)Busca em largura (breadth first search)
Busca em largura (breadth first search)
 
slidesWtisc(1).pptx
slidesWtisc(1).pptxslidesWtisc(1).pptx
slidesWtisc(1).pptx
 
Apresentação ia
Apresentação iaApresentação ia
Apresentação ia
 
Teoria de Grafos.ppt.pptx para estudar MACS
Teoria de Grafos.ppt.pptx para estudar MACSTeoria de Grafos.ppt.pptx para estudar MACS
Teoria de Grafos.ppt.pptx para estudar MACS
 
Árvores Espalhadas Mínimas
Árvores Espalhadas MínimasÁrvores Espalhadas Mínimas
Árvores Espalhadas Mínimas
 
Grafos
GrafosGrafos
Grafos
 
Grafos.ppt
Grafos.pptGrafos.ppt
Grafos.ppt
 
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.
 
Trabalho2
Trabalho2Trabalho2
Trabalho2
 
App
AppApp
App
 
Graph Theory - Exercises - Chapter 8
Graph Theory - Exercises - Chapter 8Graph Theory - Exercises - Chapter 8
Graph Theory - Exercises - Chapter 8
 
ARS - Análise de Redes Sociais - VIII ERI MG
ARS - Análise de Redes Sociais - VIII ERI MGARS - Análise de Redes Sociais - VIII ERI MG
ARS - Análise de Redes Sociais - VIII ERI MG
 

Seminário sobre Grafos por Samyra Lara

  • 1. Grafos Samyra Lara Graduanda em Tecnologia em Sistemas para Internet – IFPB, campus João Pessoa.
  • 2. Porque aprender Grafos? Estamos conhecendo: GRAFOS  Importante ferramenta matemática com aplicação em diversas áreas do conhecimento como: genética, química, pesquisa operacional, telecomunicações, engenharia elétrica, redes de computadores, conexão de voos aéreos, restrições de precedência, fluxo de programas, dentro outros;  Utilizados na definição e/ou resolução de problemas;  Existem centenas de problemas computacionais que empregam grafos com sucesso;
  • 3. Porque aprender Grafos? Que tal começar pela Conectividade Social? Estamos conhecendo: GRAFOS
  • 4. Aplicação Prática: Voos aéreos WebJet Linhas Aéreas: http://www.webjet.com.br Estamos conhecendo: GRAFOS
  • 5. Definição de Grafos  É um conceito matemático que basicamente estuda os elementos de um conjunto e a relação entre eles; Definição matemática: G = {V, A}  V : Vértices (elementos);  A: Arestas ou Arcos (relações entre elementos); |V| e |A| representam a cardinalidade dos conjuntos V e A, isto é, número de elementos dos respectivos conjuntos. Terminologias: vértice = nós ; aresta = arco. Pode variar conforme o autor. Estamos conhecendo: GRAFOS
  • 6. Definição e Notação  Exemplo: G={V,A} V={1,2,3,4,5,6} A={ (6,4), (4,3), (4,5), (4,6), (5,2), (5,1), (5,4) (3,2), (3,4), (2,5), (2,3), (2,1), (1,2), (1,5) } |V| = 6 |A| = 14 Estamos conhecendo: GRAFOS
  • 7. Tipos de Grafos  NÃO-DIRIGIDOS: As arestas indicam uma conexão bidirecional  DIRIGIDOS:  As arestas determinam o sentido da conexão através de uma seta; Faz distinção entre origem e destino; Convenção: aresta: GND / arco: GD Estamos conhecendo: GRAFOS
  • 8. Grafo dirigido  Exemplo de Grafo Dirigido G = {V,A} V = {0,1,2,3} A = { {0,1}, {0,3}, {1,2}, {1,3}, {2,3}, {2,2} , {3,0}} |V| = 4 |A| = 7 Estamos conhecendo: GRAFOS
  • 9. Conceitos Básicos  Vértice Adjacente Vértices ligados por uma aresta Exemplo: • Vértice 1 é adjacente a 0 • Vértice 1 é adjacente a 2  Aresta Incidente Uma aresta/arco que conecta dois vértices em particular Exemplo: • A aresta (0,1) é incidente aos vértices 0 e 1 • O arco {3,4} é incidente de 3 ou incidente a 4 Estamos conhecendo: GRAFOS (0,1)
  • 10. Conceitos Básicos  Grau de um vértice Número de arestas/arcos incidentes a um vértice Exemplo: o grau do vértice “1” é 2; Tratando-se de Grafos dirigidos, temos:  Grau de Emissão: # arcos que partem de v;  Grau de Recepção: # arcos que chegam em v; Exemplo: Grau do vértice 0: Emissão: 2; Recepção: 1. Estamos conhecendo: GRAFOS
  • 11. Grafo dirigido  Caminho: É determinado através da sequência de um ou mais arcos. É possível chegar até outro vértice (não adjacente), através do percurso dos arcos. Exemplo: “0” não é adjacente a “2”, é possível chegar até ele através dos arcos {0,1} e {1,2}. Estamos conhecendo: GRAFOS
  • 12. Estamos conhecendo: GRAFOS Samyra, como eu represento isso?
  • 13. Formas de representação 1ª FORMA: Matriz de Adjacência (estática): A partir de um Grafo (G), dado por: G = (V, A);  n = número de vértices (n > 0). Consiste em uma matriz (E) quadrada (n x n), cujos elementos, são:  eij = 1, se a aresta <ei, ej> pertence a “A”  eij = 0, caso contrário. Estamos conhecendo: GRAFOS
  • 14. Matriz de Adjacência Como montar essa matriz de adjacência ? 1. Identificar a quantidade de vértices; 2. Montar uma matriz com essa quantidade; 3. Usar a regra (slide anterior) para determinar os elementos dessa matriz. Estamos conhecendo: GRAFOS
  • 15. Matriz de Adjacência • O Grafo (G), possui 6 vértices. • Implica dizer que a matriz será composta por 6 linhas e 6 colunas. Estamos conhecendo: GRAFOS GRAFO G
  • 16. Matriz de Adjacência  Matriz 6 x 6: Estamos conhecendo: GRAFOS
  • 17. Matriz de Adjacência Vantagens:  Fácil visualização dos dados;  Pesquisas são facilmente respondidas: Quantidade de arestas/arcos do grafo; Grau de cada vértice; Existência de caminhos; Existência de ciclos; Existência de Laços (loop). Estamos conhecendo: GRAFOS
  • 18. Matriz de Adjacência Desvantagens: Estamos conhecendo: GRAFOS  Geralmente essa matriz de representação é esparsa, uma vez que, são representados, mesmo que não existam, arestas/arcos entre os vértices;  Piorando a situação, as aplicações reais costumam não possuir limitações quanto ao número de vértices.
  • 19. Formas de representação Estamos conhecendo: GRAFOS 2ª FORMA: Lista de Adjacências (dinâmica) • É uma lista (L), onde cada nó possui uma lista de seus vértices adjacentes.
  • 20. Lista de Adjacências Como montar essa lista de adjacência ? Estamos conhecendo: GRAFOS 1. Identificar a quantidade de vértices; 2. Montar uma lista com essa quantidade (nó); 3. Cada nó dessa lista contém a identificação do vértice de um apontador para o próximo vértice, cujo valor será nulo (zero ou NULL) quando for o fim da lista.
  • 21. Lista de Adjacências Estamos conhecendo: GRAFOS Exemplo:  Qual seria a representação do Grafo (G), usando a representação “Lista de Adjacência” ?
  • 22. Lista de Adjacências Vantagens: • Fácil visualização dos dados; • Ocupa pouco espaço; • Fácil responder as perguntas. Desvantagens: • Complica “um pouco” a implementação. Estamos conhecendo: GRAFOS
  • 23. Percursos Algumas regras Estamos conhecendo: GRAFOS  A partir de uma ordem pré-estabelecida, os vértices de um grafo são percorridos, a partir de um deles;  Todos os caminhos relacionados a um vértices devem ser percorridos;  A escolha desse vértice inicial pode ser aleatório ou predefinido;  Geralmente a ideia é descobrir o melhor caminho, ou seja, o de menor comprimento.
  • 24. Percursos Algumas regras Estamos conhecendo: GRAFOS  É necessário que o algoritmo, de percurso, defina o primeiro “nó” a ser visitado, podendo ser:  Escolhido; Será selecionado aleatoriamente.  Também deve ser definido a ordem que será seguida para visitar os “nó” sucessores a um determinado “nó”.
  • 25. Percursos Observações Estamos conhecendo: GRAFOS  Em um grafo nem sempre é possível atingir todos os demais “nó” a partir do “nó” inicial;  Não existe uma sequência natural entre os sucessores de um determinado “nó”;
  • 26. Tipos de Percursos  Pesquisa Inicial em Profundidade (DFS): “Depth First Search”.  Pesquisa Inicial em Largura (BFS): “Breadth First Search”. Estamos conhecendo: GRAFOS
  • 27. Pesquisa em profundidade (DFS) Estamos conhecendo: GRAFOS Faz uma análise nos arcos de um grafo.
  • 28. Pesquisa em profundidade (DFS) Estamos conhecendo: GRAFOS A busca em profundidade procura acessar todos os vértices em um grafo. Para acessar todos os possíveis vértices, varre a lista de arestas de cada vértice do grafo.
  • 29. Pesquisa em profundidade (DFS) empilha primeiro vértice (origem) repita enquanto pilha não vazia{ "V" <- vértice do topo da pilha se (existir vértice adjacente){ remove o arco que está incidindo se o vértice adjacente não está marcado{ marca o vértice adjacente empilha o vértice adjacente } } senao desempilha "V" } Estamos conhecendo: GRAFOS
  • 30. Pesquisa em amplitude (BFS) Estamos conhecendo: GRAFOS Faz uma análise nos vértices de um grafo.
  • 31. Pesquisa em amplitude (BFS) Estamos conhecendo: GRAFOS Dado um grafo e um vértice de origem, a busca em largura explora as arestas do grafo até explorar todos os vértices alcançáveis a partir do vértice de origem.
  • 32. Pesquisa em amplitude (BFS) insere o primeiro vértice na fila repita enquanto fila não vazia{ "V" <- primeiro vértice da fila repita para todos os arcos incidentes a "V“ (adjac.){ se (vértice adjacente não está marcado){ marca o vértice adjacente insere o vértice adjacente no final da fila } } remova o vértice da fila } Estamos conhecendo: GRAFOS
  • 33. Vamos ao código... Estamos conhecendo: GRAFOS
  • 34. REFERÊNCIAS Estamos conhecendo: GRAFOS • Material do Curso de Extensão de Grafos, ministrado pelo Professor M.Sc. Alex Sandro da Cunha Rêgo; • Material do Projeto Olímpico de Programação, ministrado pela Ms. Valéria Maria Bezerra Cavalcanti; • ASCENCIO, A. F. G.; ARAÚJO, G. S.. Estrutura de Dados: Algoritmos, análise da Complexidade e Implementações em Java e C/C++. Editora PEARSON, 2010. • VELOSO, Paulo.; SANTOS, Clesio dos; AZEREDO, Paulo; FURTADO, Antonio Estruturas de Dados. Rio de Janeiro: Editora Campus, 1984.