SlideShare una empresa de 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.

Más contenido relacionado

La actualidad más candente (20)

Geometria euclidiana
Geometria euclidianaGeometria euclidiana
Geometria euclidiana
 
5 queda livre
5  queda livre5  queda livre
5 queda livre
 
Determinantes 2º ano
Determinantes 2º anoDeterminantes 2º ano
Determinantes 2º ano
 
Grafos
GrafosGrafos
Grafos
 
Estrutura de Dados - Grafos
Estrutura de Dados - GrafosEstrutura de Dados - Grafos
Estrutura de Dados - Grafos
 
Espectros
EspectrosEspectros
Espectros
 
Retas e planos no espaço: Geometria de Posição
Retas e planos no espaço: Geometria de PosiçãoRetas e planos no espaço: Geometria de Posição
Retas e planos no espaço: Geometria de Posição
 
Teorema de pitágoras apresentação de slide
Teorema de pitágoras   apresentação de slideTeorema de pitágoras   apresentação de slide
Teorema de pitágoras apresentação de slide
 
Intersecções (GD)
Intersecções (GD)Intersecções (GD)
Intersecções (GD)
 
Grafos
GrafosGrafos
Grafos
 
Simetria em nosso cotidiano
Simetria em nosso cotidianoSimetria em nosso cotidiano
Simetria em nosso cotidiano
 
Interseção planos
Interseção planosInterseção planos
Interseção planos
 
Trigonometria - novo
Trigonometria - novo Trigonometria - novo
Trigonometria - novo
 
Aula 29 estudo do plano
Aula 29   estudo do planoAula 29   estudo do plano
Aula 29 estudo do plano
 
Proporcionalidade direta
Proporcionalidade diretaProporcionalidade direta
Proporcionalidade direta
 
Teorema de Pitágoras
Teorema de PitágorasTeorema de Pitágoras
Teorema de Pitágoras
 
Polinómios e monómios
Polinómios e monómiosPolinómios e monómios
Polinómios e monómios
 
Vetores
VetoresVetores
Vetores
 
Geometria euclidiana 2
Geometria euclidiana 2Geometria euclidiana 2
Geometria euclidiana 2
 
SucessõEs 4
SucessõEs 4SucessõEs 4
SucessõEs 4
 

Destacado

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
 

Destacado (11)

Kruskal
KruskalKruskal
Kruskal
 
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...
 
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
 

Similar 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
 
Labirintos 2D - Abordagem de grafos
Labirintos 2D - Abordagem de grafosLabirintos 2D - Abordagem de grafos
Labirintos 2D - Abordagem de grafosBruno Oliveira
 

Similar 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.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
 
Labirintos 2D - Abordagem de grafos
Labirintos 2D - Abordagem de grafosLabirintos 2D - Abordagem de grafos
Labirintos 2D - Abordagem de grafos
 

Último

ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx2m Assessoria
 

Último (6)

ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 

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.