128
# Pesquisa e Ordenação # Aula Apoio - Grafos Prof. Leinylson Fontinele Pereira

Estrutura de Dados - Grafos

Embed Size (px)

Citation preview

Page 1: Estrutura de Dados - Grafos

# Pesquisa e Ordenação #Aula Apoio - Grafos

Prof. Leinylson Fontinele Pereira

Page 2: Estrutura de Dados - Grafos

17:20 2

TEOREMA

Pesquisa e Ordenação - Aula Apoio - Grafos

Page 3: Estrutura de Dados - Grafos

17:20 3

Um grafo conexo G é um grafo de Euler se e somente se todos os seus

vértices são de grau par.

Pesquisa e Ordenação - Aula Apoio - Grafos

Page 4: Estrutura de Dados - Grafos

17:20 4

Grafos?

Pesquisa e Ordenação - Aula Apoio - Grafos

Page 5: Estrutura de Dados - Grafos

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

Page 6: Estrutura de Dados - Grafos

O Mundo Não Gira Apenas no Banco Relacional

17:20

Muita gente ainda está viciadanos RDBMs, quando pensa em umnovo projeto, já começa imaginar aestrutura de tabelas;

Um arquiteto precisa pensar namelhor solução para cada caso esaber que o mundo da persistêncianão tem apenas os RDBMs.

Pesquisa e Ordenação - Aula Apoio - Grafos

Page 7: Estrutura de Dados - Grafos

Pensar Fora da Caixa

17:20Pesquisa e Ordenação - Aula Apoio - Grafos

Page 8: Estrutura de Dados - Grafos

Ser Eficiente

17:20

Usar a tecnologia certa no momento certo vai tornar seu trabalhoabsurdamente eficiente!

Pesquisa e Ordenação - Aula Apoio - Grafos

Page 9: Estrutura de Dados - Grafos

Grafos?

17:20

Leonhard Euler Inventor da teoria de grafos (1736)

Qual a possibilidade de atravessar todas aspontes da cidade sem repetir nenhuma?

Grafo EulerianoPesquisa e Ordenação - Aula Apoio - Grafos

Page 10: Estrutura de Dados - Grafos

Exemplo Clássico: Rede Social

17:20Pesquisa e Ordenação - Aula Apoio - Grafos

Page 11: Estrutura de Dados - Grafos

Isso é um Grafo?

17:20Pesquisa e Ordenação - Aula Apoio - Grafos

Page 12: Estrutura de Dados - Grafos

Isso é um Grafo?

17:20Pesquisa e Ordenação - Aula Apoio - Grafos

Page 13: Estrutura de Dados - Grafos

Isso é um Grafo?

17:20Pesquisa e Ordenação - Aula Apoio - Grafos

Page 14: Estrutura de Dados - Grafos

Isso é um Grafo?

17:20Pesquisa e Ordenação - Aula Apoio - Grafos

Page 15: Estrutura de Dados - Grafos

Isso é um Grafo?

17:20Pesquisa e Ordenação - Aula Apoio - Grafos

Page 16: Estrutura de Dados - Grafos

Isso é um Grafo?

17:20Pesquisa e Ordenação - Aula Apoio - Grafos

Page 17: Estrutura de Dados - Grafos

Isso é um Grafo?

17:20Pesquisa e Ordenação - Aula Apoio - Grafos

Page 18: Estrutura de Dados - Grafos

Isso é um Grafo?

17:20Pesquisa e Ordenação - Aula Apoio - Grafos

Page 19: Estrutura de Dados - Grafos

Isso é um Grafo?

17:20Pesquisa e Ordenação - Aula Apoio - Grafos

Page 20: Estrutura de Dados - Grafos

Isso é um Grafo?

17:20Pesquisa e Ordenação - Aula Apoio - Grafos

Page 21: Estrutura de Dados - Grafos

Isso é um Grafo?

17:20Pesquisa e Ordenação - Aula Apoio - Grafos

Page 22: Estrutura de Dados - Grafos

Isso é um Grafo?

17:20Pesquisa e Ordenação - Aula Apoio - Grafos

Page 23: Estrutura de Dados - Grafos

Isso é um Grafo?

17:20Pesquisa e Ordenação - Aula Apoio - Grafos

Page 24: Estrutura de Dados - Grafos

Isso é um Grafo?

17:20Pesquisa e Ordenação - Aula Apoio - Grafos

Page 25: Estrutura de Dados - Grafos

Exemplos de Grafos

17:20Pesquisa e Ordenação - Aula Apoio - Grafos

Page 26: Estrutura de Dados - Grafos

Grafo Regular

17:20Pesquisa e Ordenação - Aula Apoio - Grafos

Page 27: Estrutura de Dados - Grafos

Grafo Regular

17:20Pesquisa e Ordenação - Aula Apoio - Grafos

Page 28: Estrutura de Dados - Grafos

Multigrafo

17:20Pesquisa e Ordenação - Aula Apoio - Grafos

Page 29: Estrutura de Dados - Grafos

Subgrafo

17:20Pesquisa e Ordenação - Aula Apoio - Grafos

Page 30: Estrutura de Dados - Grafos

Grafos Estrela

17:20Pesquisa e Ordenação - Aula Apoio - Grafos

Page 31: Estrutura de Dados - Grafos

Teoria dos Grafos

17:20

A teoria dos grafos é um ramo da matemática que estudaas 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 objetosdenominados vértices e A é um conjunto de pares nãoordenados de V, chamado arestas.

Pesquisa e Ordenação - Aula Apoio - Grafos

Page 32: Estrutura de Dados - Grafos

Representação de Grafos

17:20Pesquisa e Ordenação - Aula Apoio - Grafos

Page 33: Estrutura de Dados - Grafos

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

Page 34: Estrutura de Dados - Grafos

Quais as Opções para usar Grafos?

17:20Pesquisa e Ordenação - Aula Apoio - Grafos

Page 35: Estrutura de Dados - Grafos

Neo4J

17:20

Persistência apenas em Grafos;

Implementação em Java;

É o banco mais popular em Grafos;

GPL;

Cypher Query LanguagePesquisa e Ordenação - Aula Apoio - Grafos

Page 36: Estrutura de Dados - Grafos

Neo4J

17:20

MATCH (keanu:Person { name:'Keanu Reeves' })-[:ACTED_IN]-(movie:Movie)

RETURN movie

Pesquisa e Ordenação - Aula Apoio - Grafos

Page 37: Estrutura de Dados - Grafos

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

Page 38: Estrutura de Dados - Grafos

ArangoShell

17:20

arangosh> var graph_module = require("org/arangodb/general-graph");

arangosh> var graph = graph_module._create("myGraph");

arangosh> graph;

[ Graph myGraph EdgeDefinitions: [ ] VertexCollections: [ ] ]

arangosh> graph._addVertexCollection("shop");

arangosh> graph._addVertexCollection("customer");

arangosh> graph._addVertexCollection("pet");

arangosh> graph

arangosh> var rel = graph_module._directedRelation("isCustomer", ["shop"], ["customer"]);

arangosh> graph._extendEdgeDefinitions(rel);

arangosh> graph;

[ Graph myGraph EdgeDefinitions: [

"isCustomer: [shop] -> [customer]"

] VertexCollections: [ ] ]

Pesquisa e Ordenação - Aula Apoio - Grafos

Page 39: Estrutura de Dados - Grafos

OrientDB

17:20

Assim como ArangoDB, é multi-modelagem:DocumentoGrafos

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

Page 40: Estrutura de Dados - Grafos

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

Page 41: Estrutura de Dados - Grafos

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 querepresenta as relações entre objetos de umdeterminado conjunto.

Page 42: Estrutura de Dados - Grafos

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 maiseficientes Qual a melhor rota da minha casa até o

restaurante?

Duas pessoas tem amigos em comum?

Page 43: Estrutura de Dados - Grafos

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.

Page 44: Estrutura de Dados - Grafos

Definição

17:20Pesquisa e Ordenação - Aula Apoio - Grafos

Page 45: Estrutura de Dados - Grafos

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 naturezado problema modelado

Pessoas, uma tarefa em um projeto,lugares em um mapa, etc.

Page 46: Estrutura de Dados - Grafos

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 existiruma 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 ligandoos lugares), etc.

Page 47: Estrutura de Dados - Grafos

Conceitos Básicos

17:20

Praticamente qualquer objeto pode serrepresentado como um grafo.

Pesquisa e Ordenação - Aula Apoio - Grafos

Page 48: Estrutura de Dados - Grafos

Conceitos Básicos

17:20

Praticamente qualquer objeto pode serrepresentado como um grafo.

Pesquisa e Ordenação - Aula Apoio - Grafos

Page 49: Estrutura de Dados - Grafos

Conceitos Básicos

17:20

As arestas podem ou não ter direção

Pesquisa e Ordenação - Aula Apoio - Grafos

Page 50: Estrutura de Dados - Grafos

Conceitos Básicos

17:20

As arestas podem ou não ter direção

Pesquisa e Ordenação - Aula Apoio - Grafos

Page 51: Estrutura de Dados - Grafos

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:• grau de entrada: número de arestas que chegam ao vértice;• grau de saída: número de arestas que partem do vértice

Pesquisa e Ordenação - Aula Apoio - Grafos

Page 52: Estrutura de Dados - Grafos

Conceitos Básicos

17:20Pesquisa e Ordenação - Aula Apoio - Grafos

Page 53: Estrutura de Dados - Grafos

Conceitos Básicos

17:20Pesquisa e Ordenação - Aula Apoio - Grafos

Page 54: Estrutura de Dados - Grafos

Conceitos Básicos

17:20

Laço Uma aresta é chamada de laço

se seu vértice de partida é omesmo que o de chegada

Pesquisa e Ordenação - Aula Apoio - Grafos

Page 55: Estrutura de Dados - Grafos

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

Page 56: Estrutura de Dados - Grafos

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

Page 57: Estrutura de Dados - Grafos

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 arestasparalelas

Pesquisa e Ordenação - Aula Apoio - Grafos

Page 58: Estrutura de Dados - Grafos

Tipos de Grafos

17:20Pesquisa e Ordenação - Aula Apoio - Grafos

Page 59: Estrutura de Dados - Grafos

Tipos de Grafos

17:20

Grafo completo

Grafo simples onde cada vértice se conecta a todos osoutros vértices do grafo.

Pesquisa e Ordenação - Aula Apoio - Grafos

Page 60: Estrutura de Dados - Grafos

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

Page 61: Estrutura de Dados - Grafos

Tipos de Grafos

17:20

Subgrafo Gs(Vs, As) é um subgrafo deG(V, A) se o conjunto de vértices Vs for um subconjunto

deV, Vs ⊆ V, e se o conjunto de arestas As for um subconjunto de A,As ⊆ A.

Pesquisa e Ordenação - Aula Apoio - Grafos

Page 62: Estrutura de Dados - Grafos

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

Page 63: Estrutura de Dados - Grafos

Tipos de Grafos

17:20

Grafos isomorfosDois grafos, G1(V1, A1) e G2(V2, A2),

são ditos isomorfos se existe uma função quefaça o mapeamento de vértices e arestas demodo que os dois grafos se tornem coincidentes.

Pesquisa e Ordenação - Aula Apoio - Grafos

Page 64: Estrutura de Dados - Grafos

Tipos de Grafos

17:20

Grafos isomorfos

Pesquisa e Ordenação - Aula Apoio - Grafos

Page 65: Estrutura de Dados - Grafos

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

Page 66: Estrutura de Dados - Grafos

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

Page 67: Estrutura de Dados - Grafos

Tipos de Grafos

17:20

Grafo Semi-Euleriano

Grafo que possui um caminho aberto que visita todas assuas arestas apenas uma vez.

Pesquisa e Ordenação - Aula Apoio - Grafos

Page 68: Estrutura de Dados - Grafos

Tipos de Grafos

17:20

Grafo HamiltonianoGrafo que possui um caminho que visita todos os seus

vértices apenas uma vez.

Pesquisa e Ordenação - Aula Apoio - Grafos

Page 69: Estrutura de Dados - Grafos

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

Page 70: Estrutura de Dados - Grafos

Tipos de Representação

17:20

Matriz de adjacência Utiliza uma matriz N x N para armazenar o grafo, ondeN é 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

Page 71: Estrutura de Dados - Grafos

Tipos de Representação

17:20

Matriz de adjacência

Pesquisa e Ordenação - Aula Apoio - Grafos

Page 72: Estrutura de Dados - Grafos

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

tamanhoN 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 aquelevértice se conecta

Pesquisa e Ordenação - Aula Apoio - Grafos

Page 73: Estrutura de Dados - Grafos

Tipos de Representação

17:20

Lista de adjacência

Pesquisa e Ordenação - Aula Apoio - Grafos

Page 74: Estrutura de Dados - Grafos

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 havendonenhuma outra informação associada a aresta, o uso deuma matriz de adjacência se torna mais eficiente

Pesquisa e Ordenação - Aula Apoio - Grafos

Page 75: Estrutura de Dados - Grafos

Material: https://sites.google.com/site/leinylsonuespi

17:20

Material baseado nas aulas de:

Christiano Anderson, Grafos - Uma abordagem divertida

Matemática com o Google Earth, Professor Fernando Brito

Linguagem C Descomplicada , Dr. André R. Backes

Pesquisa e Ordenação - Aula Apoio - Grafos

Page 76: Estrutura de Dados - Grafos

17:20 76

Desafio!Pesquisa e Ordenação - Aula Apoio - Grafos

Page 77: Estrutura de Dados - Grafos

Desafio Matematicamente Impossível!!

17:20Pesquisa e Ordenação - Aula Apoio - Grafos

Page 78: Estrutura de Dados - Grafos

Do que Trata o Desafio?

17:20Pesquisa e Ordenação - Aula Apoio - Grafos

Page 79: Estrutura de Dados - Grafos

Explicação do Desafio

17:20Pesquisa e Ordenação - Aula Apoio - Grafos

Page 80: Estrutura de Dados - Grafos

17:20 80

AtividadePesquisa e Ordenação - Aula Apoio - Grafos

Page 81: Estrutura de Dados - Grafos

17:20 81

Konigsberg Bridges

Pesquisa e Ordenação - Aula Apoio - Grafos

Page 82: Estrutura de Dados - Grafos

Situação-problema

17:20Pesquisa e Ordenação - Aula Apoio - Grafos

Por muito tempo os moradores da cidade de Königsberg(atualmente Kaliningrado, na Rússia) perguntavam-se se erapossível fazer um passeio na cidade cruzando todas as setepontes que cortavam o rio Pregel.

Passando apenas uma vez por cada ponte, retornando aoponto de partida, ou seja, percorrendo um caminho fechado.

Page 83: Estrutura de Dados - Grafos

Mapa de Königsberg de 1652

17:20Pesquisa e Ordenação - Aula Apoio - Grafos

Page 84: Estrutura de Dados - Grafos

Konigsberg Bridges

17:20Pesquisa e Ordenação - Aula Apoio - Grafos

Muitos tentaram fazer um percurso,mas as tentativas foram semprefalhas.

Até que o matemático suíçoLeonhard Euler (1707 − 1783),usando argumentos muito simples,provou em 1736 que não erapossível realizar tal feito.

Page 85: Estrutura de Dados - Grafos

Konigsberg Bridges

17:20Pesquisa e Ordenação - Aula Apoio - Grafos

Ele usou um diagrama, chamado de grafo2, para reproduzir os principaiselementos do mapa, onde desenhou pontos (vértices) representando as porções deterra e linhas (arestas) representando os percursos pelas sete pontes.

Page 86: Estrutura de Dados - Grafos

Konigsberg Bridges

17:20Pesquisa e Ordenação - Aula Apoio - Grafos

Daí Euler percebeu que só seria possível fazer o trajetopassando uma única vez em cada ponte e retornando ao pontode partida, se houvesse, partindo de cada vértice, um númeropar de arestas

Isto é, todos os vértices deveriam ser de grau par.

Assim, esse famoso problema matemático tornou-se ponto departida para o desenvolvimento da Teoria dos Grafos.

Page 87: Estrutura de Dados - Grafos

Konigsberg Bridges

17:20Pesquisa e Ordenação - Aula Apoio - Grafos

Da mesma forma, outras situações reais podem serrepresentadas 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 dehierarquia, amizade e trabalho.

Page 88: Estrutura de Dados - Grafos

Konigsberg Bridges

17:20Pesquisa e Ordenação - Aula Apoio - Grafos

Page 89: Estrutura de Dados - Grafos

Konigsberg Bridges – Várias Abstrações

17:20Pesquisa e Ordenação - Aula Apoio - Grafos

Page 90: Estrutura de Dados - Grafos

Modelo do Problema

17:20Pesquisa e Ordenação - Aula Apoio - Grafos

𝑉 = { 𝑚 | 𝑚 é 𝑢𝑚𝑎 𝑖𝑙ℎ𝑎 𝑜𝑢 𝑢𝑚𝑎 𝑚𝑎𝑟𝑔𝑒𝑚 }𝐴 = { (𝑚1,𝑚2, 𝑝} | 𝑒𝑥𝑖𝑠𝑡𝑒 𝑢𝑚𝑎 𝑝𝑜𝑛𝑡𝑒 𝑝 𝑢𝑛𝑖𝑛𝑑𝑜 𝑎𝑠 𝑚𝑎𝑟𝑔𝑒𝑛𝑠/𝑖𝑙ℎ𝑎𝑠 𝑚1 𝑒 𝑚2 }

𝑉 = { 𝐴, 𝐵, 𝐶, 𝐷 }𝐴 = { (𝐴, 𝐶, 𝑐), (𝐴, 𝐶, 𝑑), (𝐴, 𝐵, 𝑎), (𝐴, 𝐵, 𝑏), (𝐴, 𝐷, 𝑒), (𝐵, 𝐷, 𝑓), (𝐶, 𝐷, 𝑔) }

Page 91: Estrutura de Dados - Grafos

Kaliningrado - Federação Russa (Atualmente)

17:20Pesquisa e Ordenação - Aula Apoio - Grafos

Page 92: Estrutura de Dados - Grafos

Konigsberg Bridges (Atualmente)

17:20Pesquisa e Ordenação - Aula Apoio - Grafos

Page 93: Estrutura de Dados - Grafos

Relação do Desafio com Konigsberg Bridges

17:20Pesquisa e Ordenação - Aula Apoio - Grafos

Page 94: Estrutura de Dados - Grafos

Teoria dos Grafos

17:20Pesquisa e Ordenação - Aula Apoio - Grafos

Um Caminho Euleriano é um caminho em umgrafo que visita cada aresta apenas uma vez.

Com caso especial, um Circuito Euleriano é umcaminho Euleriano que começa e termina nomesmo vértice.

Page 95: Estrutura de Dados - Grafos

Grafo de Königsberg

17:20Pesquisa e Ordenação - Aula Apoio - Grafos

Page 96: Estrutura de Dados - Grafos

Teoria dos Grafos

17:20Pesquisa e Ordenação - Aula Apoio - Grafos

Pela análise do grafo modelo G para o problema das pontesde 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 quenã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 paraconcluirmos que o grafo em questão não é um grafo de Euler.

Page 97: Estrutura de Dados - Grafos

Grafo Euleriano

17:20Pesquisa e Ordenação - Aula Apoio - Grafos

Page 98: Estrutura de Dados - Grafos

Caminho Hamiltoniano

17:20Pesquisa e Ordenação - Aula Apoio - Grafos

Um caminho hamiltoniano é um caminho que permite passarpor todos os vértices de um grafo G, não repetindo nenhum, ou,seja, passar por todos uma e uma só vez por cada.

Page 99: Estrutura de Dados - Grafos

Caminho Hamiltoniano

17:20Pesquisa e Ordenação - Aula Apoio - Grafos

Page 100: Estrutura de Dados - Grafos

Matriz de Adjacência

17:20Pesquisa 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𝐴).

Page 101: Estrutura de Dados - Grafos

Lista de Adjacência

17:20Pesquisa e Ordenação - Aula Apoio - Grafos

Page 102: Estrutura de Dados - Grafos

Problema do Caixeiro-Viajante – (PCV)

17:20Pesquisa e Ordenação - Aula Apoio - Grafos

É um problema que tenta determinar a menor rota parapercorrer uma série de cidades (visitando uma única vez cadauma delas), retornando à cidade de origem.

Trata-se de um problema de otimização inspirado nanecessidade dos vendedores em realizar entregas em diversoslocais (as cidades) percorrendo o menor caminho possível,reduzindo o tempo necessário para a viagem e os possíveiscustos com transporte e combustível.

Page 103: Estrutura de Dados - Grafos

Problema do Caixeiro-Viajante – (PCV)

17:20Pesquisa e Ordenação - Aula Apoio - Grafos

Page 104: Estrutura de Dados - Grafos

Algoritmo ACO (Ant Colony Optimization)

17:20Pesquisa e Ordenação - Aula Apoio - Grafos

Nos algoritmos ACO, as formigas são simples agentes que, no casodo PCV, constroem circuitos através do movimento entre cidadesno grafo do problema.

A solução construída pelas formigas é elaborada por trilhos deferomonas (artificiais) e pela disponibilidade de informaçãoheurística, à priori.

Quando o algoritmo ACO é aplicado, é associada uma força daferomona, onde 𝜏𝑖𝑗(𝑡) é uma informação numérica que émodificada durante o algoritmo, e t é o contador das iterações

Page 105: Estrutura de Dados - Grafos

Algoritmo ACO (Ant Colony Optimization)

17:20Pesquisa e Ordenação - Aula Apoio - Grafos

Page 106: Estrutura de Dados - Grafos

Algoritmo ACO (Ant Colony Optimization)

17:20Pesquisa e Ordenação - Aula Apoio - Grafos

Page 107: Estrutura de Dados - Grafos

Teorema das Quatro Cores

17:20Pesquisa e Ordenação - Aula Apoio - Grafos

Page 108: Estrutura de Dados - Grafos

Teorema das Quatro Cores

17:20Pesquisa e Ordenação - Aula Apoio - Grafos

Page 109: Estrutura de Dados - Grafos

Teorema das Quatro Cores

17:20Pesquisa e Ordenação - Aula Apoio - Grafos

Page 110: Estrutura de Dados - Grafos

17:20 110

Agora é sua vez!

Pesquisa e Ordenação - Aula Apoio - Grafos

Page 111: Estrutura de Dados - Grafos

Atividade com o Google Maps

17:20Pesquisa e Ordenação - Aula Apoio - Grafos

As Sete Pontes de Königsberb

Construa o grafo no quadro (indicando as coordenadas) edetermine 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íbaShopping, retornando à sua residência, sem repetir nenhuma rua ouponte, não necessariamente nesta ordem.

Page 112: Estrutura de Dados - Grafos

Atividade com o Google Maps

17:20Pesquisa e Ordenação - Aula Apoio - Grafos

Page 113: Estrutura de Dados - Grafos

Atividade com o Google Maps

17:20Pesquisa e Ordenação - Aula Apoio - Grafos

Page 114: Estrutura de Dados - Grafos

Alguma Dúvida?

17:20

Até a prova!

[email protected]

Page 115: Estrutura de Dados - Grafos

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

Page 116: Estrutura de Dados - Grafos

Lista Está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

Page 117: Estrutura de Dados - Grafos

Lista Estática Sequencial

17:20

ListaSequencial.c

O tipo de dados lista

Implementar as suas funções

Estrutura de Dados - Aula Apoio - Grafos

Page 118: Estrutura de Dados - Grafos

17:20 118

Definindo o Grafo

Estrutura de Dados - Aula Apoio - Grafos

Page 119: Estrutura de Dados - Grafos

Definindo o Grafo: TAD Grafo

17:20Estrutura de Dados - Aula Apoio - Grafos

Page 120: Estrutura de Dados - Grafos

17:20 120

Criando o Grafo

Estrutura de Dados - Aula Apoio - Grafos

Page 121: Estrutura de Dados - Grafos

Criando o Grafo

17:20Estrutura de Dados - Aula Apoio - Grafos

Page 122: Estrutura de Dados - Grafos

Criando o Grafo

17:20Estrutura de Dados - Aula Apoio - Grafos

Page 123: Estrutura de Dados - Grafos

17:20 123

Destruindo o Grafo

Estrutura de Dados - Aula Apoio - Grafos

Page 124: Estrutura de Dados - Grafos

Destruindo o Grafo

17:20Estrutura de Dados - Aula Apoio - Grafos

Page 125: Estrutura de Dados - Grafos

Destruindo o Grafo

17:20Estrutura de Dados - Aula Apoio - Grafos

Page 126: Estrutura de Dados - Grafos

17:20 126

Inserindo uma Aresta no Grafo

Estrutura de Dados - Aula Apoio - Grafos

Page 127: Estrutura de Dados - Grafos

Inserindo uma Aresta no Grafo

17:20Estrutura de Dados - Aula Apoio - Grafos

Page 128: Estrutura de Dados - Grafos

Inserindo uma Aresta no Grafo

17:20Estrutura de Dados - Aula Apoio - Grafos