O documento discute grafos e sua representação em computação. Ele define grafos, apresenta conceitos básicos como vértices, arestas e grau. Também descreve tipos de grafos como completos, regulares e ponderados. Por fim, aborda formas de representar grafos no computador como matriz e lista de adjacência.
5. Grafo Não é Algo Recente
17:20
Quem se lembra das aulas de estrutura de dados?
Vetores (arrays);
Fila;
Pilha;
Árvores;
Grafos...
Pesquisa e Ordenação - Aula Apoio - Grafos
6. O Mundo Não Gira Apenas no Banco Relacional
17:20
Muita gente ainda está viciada
nos RDBMs, quando pensa em um
novo projeto, já começa imaginar a
estrutura de tabelas;
Um arquiteto precisa pensar na
melhor solução para cada caso e
saber que o mundo da persistência
não tem apenas os RDBMs.
Pesquisa e Ordenação - Aula Apoio - Grafos
7. Pensar Fora da Caixa
17:20
Pesquisa e Ordenação - Aula Apoio - Grafos
8. Ser Eficiente
17:20
Usar a tecnologia certa no momento certo vai tornar seu trabalho
absurdamente eficiente!
Pesquisa e Ordenação - Aula Apoio - Grafos
9. Grafos?
17:20
Leonhard Euler
Inventor da teoria de grafos (1736)
Qual a possibilidade de atravessar todas as
pontes da cidade sem repetir nenhuma?
Grafo Euleriano
Pesquisa e Ordenação - Aula Apoio - Grafos
31. Teoria dosGrafos
17:20
A teoria dos grafos é um ramo da matemática que estuda
as relações entre os objetos de um determinado conjunto.
Para tal são empregadas estruturas chamadas de grafos,
G(V,A), onde V é um conjunto não vazio de objetos
denominados vértices e A é um conjunto de pares não
ordenados de V, chamado arestas.
Pesquisa e Ordenação - Aula Apoio - Grafos
33. Para que usar Grafos?
17:20
Sistemas de recomendação
Catálogo de produtos
Filtragem colaborativa
Redes sociais (o clássico)
Sistemas geoespaciais
e muito mais...
Pesquisa e Ordenação - Aula Apoio - Grafos
34. Quais as Opções para usar Grafos?
17:20
Pesquisa e Ordenação - Aula Apoio - Grafos
35. Neo4J
17:20
Persistência apenas em Grafos;
Implementação em Java;
É o banco mais popular em Grafos;
GPL;
Cypher Query Language
Pesquisa e Ordenação - Aula Apoio - Grafos
36. Neo4J
17:20
MATCH (keanu:Person { name:'Keanu Reeves' })-
[:ACTED_IN]-(movie:Movie)
RETURN movie
Pesquisa e Ordenação - Aula Apoio - Grafos
37. ArangoDB
17:20
Multi Modelagem:
Grafos
Documentos
Query Language poderosa (AQL);
Desenvolvido em C++
Interface REST HTTP;
FOXX → Framework que auxilia desenvolvimento web;
Drivers nativos para quase todas as linguagens;
Livre, mas possui suporte comercial.
Pesquisa e Ordenação - Aula Apoio - Grafos
39. OrientDB
17:20
Assim como ArangoDB, é multi-modelagem:
Documento
Grafos
Desenvolvido em Java;
Suporta transações ACID;
Possui linguagem semelhante a SQL;
Livre, mas possui suporte comercial também.
Pesquisa e Ordenação - Aula Apoio - Grafos
40. Query Language - Exemplos
17:20
orientdb> insert into V set name = 'Jay'
create record with RID #9:0
orientdb> create vertex V set name = 'Jay'
create vertex with RID #9:1
orientdb> create edge Eat from (select from Person where name =
'Luca') to (select from Restaurant where name = 'Dante')
Pesquisa e Ordenação - Aula Apoio - Grafos
41. Definição
17:20
Como representar um conjunto de objetos e as suas relações?
Pesquisa e Ordenação - Aula Apoio - Grafos
Diversos tipos de aplicações necessitam disso
Um grafo é um modelo matemático que
representa as relações entre objetos de um
determinado conjunto.
42. Definição
17:20
Grafos em computação
Pesquisa e Ordenação - Aula Apoio - Grafos
Forma de solucionar problemas computáveis
Buscam o desenvolvimento de algoritmos mais
eficientes
Qual a melhor rota da minha casa até o
restaurante?
Duas pessoas tem amigos em comum?
43. Definição
17:20
Um grafo G(V,A) é definido por dois conjuntos
Pesquisa e Ordenação - Aula Apoio - Grafos
Conjunto V de vértices (não vazio)
Itens representados em um grafo;
Conjunto A de arestas
Utilizadas para conectar pares de vértices, usando
um critério previamente estabelecido.
45. Conceitos Básicos
17:20
Vértice é cada um dos itens representados no grafo.
Pesquisa e Ordenação - Aula Apoio - Grafos
O seu significado depende da natureza
do problema modelado
Pessoas, uma tarefa em um projeto,
lugares em um mapa, etc.
46. Conceitos Básicos
17:20
Aresta liga dois vértices
Pesquisa e Ordenação - Aula Apoio - Grafos
Diz qual a relação entre eles
Dois vértices são adjacentes se existir
uma aresta ligando eles.
Pessoas (parentesco entre elas ou amizade), tarefas
de um projeto (pré-requisito entre as tarefas),
lugares de um mapa (estradas que existem ligando
os lugares), etc.
51. Conceitos Básicos
17:20
Grau
Indica o número de arestas que conectam um vértice do
grafo a outros vértices
•número de vizinhos que aquele vértice possui no grafo
No caso dos dígrafos, temos dois tipos de grau:
•graude entrada: número de arestas que chegam ao vértice;
•graude saída: número de arestas que partem do vértice
Pesquisa e Ordenação - Aula Apoio - Grafos
54. Conceitos Básicos
17:20
Laço
Uma aresta é chamada de laço
se seu vértice de partida é o
mesmo que o de chegada
Pesquisa e Ordenação - Aula Apoio - Grafos
55. Conceitos Básicos
17:20
Caminho
Um caminho entre dois vértices é uma sequência de vértices onde cada
vértice está conectado ao vértice seguinte por meio de uma aresta.
Pesquisa e Ordenação - Aula Apoio - Grafos
56. Conceitos Básicos
17:20
Ciclo
Caminho onde o vértice inicial e o final são o mesmo vértice.
Pesquisa e Ordenação - Aula Apoio - Grafos
57. Tipos de Grafos
17:20
Grafo trivial
Possui um único vértice e nenhuma aresta
Grafo simples
Grafo não direcionado, sem laços e sem arestas
paralelas
Pesquisa e Ordenação - Aula Apoio - Grafos
59. Tipos de Grafos
17:20
Grafo completo
Grafo simples onde cada vértice se conecta a todos os
outros vértices do grafo.
Pesquisa e Ordenação - Aula Apoio - Grafos
60. Tipos de Grafos
17:20
Grafo regular
Grafo onde todos os seus vértices possuem o mesmo grau
Pesquisa e Ordenação - Aula Apoio - Grafos
61. Tipos de Grafos
17:20
Subgrafo
Gs(Vs, As) é um subgrafo de G(V, A) se o conjunto de vértices Vs for um subconjunto
de V, Vs ⊆ V, e se o conjunto de arestas As for um subconjunto de A, As ⊆ A.
Pesquisa e Ordenação - Aula Apoio - Grafos
62. Tipos de Grafos
17:20
Grafo conexo e desconexo
Grafo conexo: existe um caminho ligando quaisquer dois vértices.
Pesquisa e Ordenação - Aula Apoio - Grafos
63. Tipos de Grafos
17:20
Grafos isomorfos
Dois grafos, G1(V1, A1) e G2(V2, A2),
são ditos isomorfos se existe uma função que
faça o mapeamento de vértices e arestas de
modo que os dois grafos se tornem coincidentes.
Pesquisa e Ordenação - Aula Apoio - Grafos
65. Tipos de Grafos
17:20
Grafo ponderado
É um grafo que possui pesos associados a cada uma de suas arestas.
Pesquisa e Ordenação - Aula Apoio - Grafos
66. Tipos de Grafos
17:20
Grafo Euleriano
Grafo que possui um ciclo que visita todas as suas arestas apenas
uma vez, iniciando e terminando no mesmo vértice.
Pesquisa e Ordenação - Aula Apoio - Grafos
67. Tipos de Grafos
17:20
Grafo Semi-Euleriano
Grafo que possui um caminho aberto que visita todas as
suas arestas apenas uma vez.
Pesquisa e Ordenação - Aula Apoio - Grafos
68. Tipos de Grafos
17:20
Grafo Hamiltoniano
Grafo que possui um caminho que visita todos os seus
vértices apenas uma vez.
Pesquisa e Ordenação - Aula Apoio - Grafos
69. Tipos de Representação
17:20
Como representar um grafo no computador?
Matriz de Adjacência
Lista de Adjacência
Qual a representação que deve ser utilizada?
Depende da aplicação!
Pesquisa e Ordenação - Aula Apoio - Grafos
70. Tipos de Representação
17:20
Matriz de adjacência
Utiliza uma matriz N x N para armazenar o grafo, onde
N é o número de vértices
• Alto custo computacional, O(N2
)
Uma aresta é representada por uma marca na posição
(i , j) da matriz
• Aresta liga o vértice i ao j
Pesquisa e Ordenação - Aula Apoio - Grafos
72. Tipos de Representação
17:20
Lista de adjacência
Utiliza uma lista de vértices para descrever as relações entre
os vértices.
•Um grafo contendo N vértices utiliza um array de ponteiros de
tamanho N para armazenar os vértices do grafo
•Para cada vértice é criada uma lista de arestas, onde cada
posição da lista armazena o índice do vértice a qual aquele
vértice se conecta
Pesquisa e Ordenação - Aula Apoio - Grafos
74. Tipos de Representação
17:20
Qual representação utilizar?
Lista de adjacência é mais indicada para um grafo que
possui muitos vértices mas poucas arestas ligando-os.
A medida que o número de arestas cresce e não havendo
nenhuma outra informação associada a aresta, o uso de
uma matriz de adjacência se torna mais eficiente
Pesquisa e Ordenação - Aula Apoio - Grafos
82. Situação-problema
17:20
Pesquisa e Ordenação - Aula Apoio - Grafos
Por muito tempo os moradores da cidade de Königsberg
(atualmente Kaliningrado, na Rússia) perguntavam-se se era
possível fazer um passeio na cidade cruzando todas as sete
pontes que cortavam o rio Pregel.
Passando apenas uma vez por cada ponte, retornando ao
ponto de partida, ou seja, percorrendo um caminho fechado.
83. Mapa de Königsberg de 1652
17:20
Pesquisa e Ordenação - Aula Apoio - Grafos
84. Konigsberg Bridges
17:20
Pesquisa e Ordenação - Aula Apoio - Grafos
Muitos tentaram fazer um percurso,
mas as tentativas foram sempre
falhas.
Até que o matemático suíço
Leonhard Euler (1707 − 1783),
usando argumentos muito simples,
provou em 1736 que não era
possível realizar tal feito.
85. Konigsberg Bridges
17:20
Pesquisa e Ordenação - Aula Apoio - Grafos
Ele usou um diagrama, chamado de grafo2, para reproduzir os principais
elementos do mapa, onde desenhou pontos (vértices) representando as porções de
terra e linhas (arestas) representando os percursos pelas sete pontes.
86. Konigsberg Bridges
17:20
Pesquisa e Ordenação - Aula Apoio - Grafos
Daí Euler percebeu que só seria possível fazer o trajeto
passando uma única vez em cada ponte e retornando ao ponto
de partida, se houvesse, partindo de cada vértice, um número
par de arestas
Isto é, todos os vértices deveriam ser de grau par.
Assim, esse famoso problema matemático tornou-se ponto de
partida para o desenvolvimento da Teoria dos Grafos.
87. Konigsberg Bridges
17:20
Pesquisa e Ordenação - Aula Apoio - Grafos
Da mesma forma, outras situações reais podem ser
representadas por grafos como, por exemplo:
Esquemas de circuitos integrados; rotas otimizadas para empresas de transporte
sistemas de engenharia de tráfego;
Distribuição de serviços de energia, água, e telefone.
Além disso, também é possível modelar relações de
hierarquia, amizade e trabalho.
94. Teoria dos Grafos
17:20
Pesquisa e Ordenação - Aula Apoio - Grafos
Um Caminho Euleriano é um caminho em um
grafo que visita cada aresta apenas uma vez.
Com caso especial, um Circuito Euleriano é um
caminho Euleriano que começa e termina no
mesmo vértice.
96. Teoria dos Grafos
17:20
Pesquisa e Ordenação - Aula Apoio - Grafos
Pela análise do grafo modelo G para o problema das pontes
de Königsberg, observa-se que Para Todo v E V, gr(v) é ímpar.
Logo, o grafo G não é um grafo de Euler.
Isso significa que o problema não possui solução. Note que
não é necessário que tenhamos Para Todo v E V, gr(v) é impar ,
basta que Exista Pelo Menos Um v E V | gr(v) é impar para
concluirmos que o grafo em questão não é um grafo de Euler.
98. Caminho Hamiltoniano
17:20
Pesquisa e Ordenação - Aula Apoio - Grafos
Um caminho hamiltoniano é um caminho que permite passar
por todos os vértices de um grafo G, não repetindo nenhum, ou,
seja, passar por todos uma e uma só vez por cada.
100. Matriz de Adjacência
17:20
Pesquisa e Ordenação - Aula Apoio - Grafos
Uma matriz de adjacência é uma das formas de se representar um grafo.
Dado um grafo G com n vértices, podemos representá-lo em uma matriz 𝑛 𝑥 𝑛
𝐴(𝐺) = [𝑎𝑖𝑗] (ou simplesmente 𝐴).
102. Problema do Caixeiro-Viajante – (PCV)
17:20
Pesquisa e Ordenação - Aula Apoio - Grafos
É um problema que tenta determinar a menor rota para
percorrer uma série de cidades (visitando uma única vez cada
uma delas), retornando à cidade de origem.
Trata-se de um problema de otimização inspirado na
necessidade dos vendedores em realizar entregas em diversos
locais (as cidades) percorrendo o menor caminho possível,
reduzindo o tempo necessário para a viagem e os possíveis
custos com transporte e combustível.
104. AlgoritmoACO (Ant Colony Optimization)
17:20
Pesquisa e Ordenação - Aula Apoio - Grafos
Nos algoritmos ACO, as formigas são simples agentes que, no caso
do PCV, constroem circuitos através do movimento entre cidades
no grafo do problema.
A solução construída pelas formigas é elaborada por trilhos de
feromonas (artificiais) e pela disponibilidade de informação
heurística, à priori.
Quando o algoritmo ACO é aplicado, é associada uma força da
feromona, onde 𝜏𝑖𝑗(𝑡) é uma informação numérica que é
modificada durante o algoritmo, e t é o contador das iterações
110. 17:20 110
Agora é sua vez!
Pesquisa e Ordenação - Aula Apoio - Grafos
111. Atividade como Google Maps
17:20
Pesquisa e Ordenação - Aula Apoio - Grafos
As Sete Pontes de Königsberb
Construa o grafo no quadro (indicando as coordenadas) e
determine um percurso optimizado do trecho descrito a seguir:
Partindo da sua residência, trace o menor percurso para chegar à
Faculdade Maurício de NASSAU. Seu trajeto deve incluir uma visita à
Catedral de N. S. das Graças, Rodoviária de Municipal e Parnaíba
Shopping, retornando à sua residência, sem repetir nenhuma rua ou
ponte, não necessariamente nesta ordem.
115. Prática
17:20 115
As aulas práticas foram baseadas no material de
Linguagem C Descomplicada , Dr. André R. Backes.
Disponível em: https://programacaodescomplicada.wordpress.com/
Estrutura de Dados - Aula Apoio - Grafos
116. ListaEstática Sequencial
17:20
ListaSequencial.h
Os protótipos das funções
O tipo de dado armazenado na lista
O ponteiro lista
Tamanho do vetor usado na lista
Estrutura de Dados - Aula Apoio - Grafos