25/5/2016 Luciano Vargas Gonçalves Programa de Pós Graduação em Informática 1 Grafos Disciplina Estrutura de Dados Professor Dr. Paulo Roberto Gomes Luzzardi.

Slides:



Advertisements
Apresentações semelhantes
Algoritmos de Caminho Mínimo em Grafos
Advertisements

Grafos eulerianos 1.
Grafos Orientados (digrafos)
Árvores CC/EC/Mestrado Teoria dos Grafos ‏ 1.
Antonio Dirceu Rabelo de Vasconcelos Filho
Grafos - Caminhos Caminhos Máximo / Mínimo:
Teoria dos Grafos – Aula 2
Fluxo em Redes Prof. Ricardo R. Santos.
Análise de Decisão Aplicada a Gerência Empresarial – UVA Grafos - V
Teoria dos Grafos Um grafo é um conjunto de pontos, chamados vértices, conectados por linhas, chamadas de arestas. A Teoria dos Grafos é o ramo da matemática.
CC/EC/Mestrado/UFES Teoria dos Grafos (INF 5037/INF2781) Grafos Orientados (digrafos)
UFES CC/EC/Mestrado Teoria dos Grafos Árvores. UFES CC/EC/Mestrado Teoria dos Grafos Árvores Grafo Acíclico: não possui ciclos.
Grafos Grafo G = (V, E) V — conjunto de vértices
Pesquisa em profundidade
Grafos Grafo G = (V, E) V — conjunto de vértices
Estrutura de Dados e Algoritmos e Programação e Computadores II
CONCEITOS BÁSICOS DE GRAFOS
CONCEITOS BÁSICOS DE GRAFOS
HISTÓRICO E ORIGEM DOS GRAFOS
Teoria dos Grafos – Aula 6
Árvores.
Ronaldo Celso Messias Correia –
Árvore Geradora Mínima
Grafos Msc. Cintia Carvalho Oliveira Doutoranda em Computação – UFU
Buscas em Grafos Prof. André Renato 1º Semestre/2012
Grafos Msc. Cintia Carvalho Oliveira Doutoranda em Computação – UFU
Algoritmos em Grafos.
Algoritmos em Grafos Conceitos principais Prof. André Renato
T ÓPICOS DE I.A. Métodos de Busca Busca em Espaços de Estado Prof. Mário Dantas.
Teoria dos Grafos Caminhos e Noção de Grafos com pesos
Teoria dos Grafos Definições e Terminologia
Aula de Monitoria – Mini-prova 7
Exercícios PAA- Grafos
Algorítmos e estrutura de dados III
Histórico, exemplos e problemas
Operações com grafos União Exemplo
Histórico, exemplos e problemas
O problema do emparelhamento máximo
Teoria dos Grafos Introdução
Grafos Universidade Federal de Pernambuco Anjolina Grisi de Oliveira
Grafos Universidade Federal de Pernambuco Anjolina Grisi de Oliveira
Conceitos básicos em grafos
Á R V O R E S.
Teoria dos Grafos Conceitos Preliminares
Relator: Danilo M Lage Contestador: João Eduardo Maeda 2ª Reunião do Grupo de Estudos.
Inteligência Artificial
Msc. Daniele Carvalho Oliveira
Aula de Monitoria – Miniprova

Mestrado em Informática
Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2007.
Redes de transporte Uma rede ou grafo consiste num número finito de pontos chamados nós ou vértices interligados por arcos. Muitos sistemas, físicos ou.
Celso C. Ribeiro Caroline T. Rocha
Grafos Anjolina Grisi de Oliveira 2005
Grafos Eulerianos e Unicursais
Engenharia de Computação Mestrado em Informática
Grafos Anjolina Grisi de Oliveira 2007
MATCHINGS Grafos e Teoria da Complexidade Prof. Fabio Tirelo.
Teoria de Grafos. Tudo começou no século XVIII, na cidade medieval de Königsberg, situada no leste europeu. Königsberg é banhada pelo rio Pregel, que.
Algoritmo de Dijkstra.
 Prof. Miguel Gabriel Prazeres de Carvalho 1. 2 Redes Sociais GPS Para o correio. Para Viajantes. Pesquisas Biológicas. Distribuição de Tarefas. Recomendações.
Grafos Prof. Miguel Gabriel Prazeres de Carvalho.
Funções Prof. Márcio.
1Definição 2Energia potencial elétrica 3Relações matemáticas 4Legenda 5Gráfico do potencial elétrico 6Potencial criado por várias partículas 7Diferença.
Cálculo Numérico Computacional Prof. Linder Cândido da Silva.
INE5408 Estruturas de Dados Introdução a Árvores - Conceitos - Árvores Binárias - Métodos e algoritmos de percurso - Métodos e algoritmos de balanceamento.
Cinemática Escalar Professor: Reinaldo.
Estatística Marcelo Pessoa Definições Importantes Noções de Estatística Podemos entender a Estatística como sendo o método de estudo de comportamento.
Algoritmos e Estruturas de Dados II Introdução a Grafos
Transcrição da apresentação:

25/5/2016 Luciano Vargas Gonçalves Programa de Pós Graduação em Informática 1 Grafos Disciplina Estrutura de Dados Professor Dr. Paulo Roberto Gomes Luzzardi Aluno Luciano Vargas Gonçalves

Luciano Vargas Gonçalves Programa de Pós Graduação em Informática 2 25/5/2016 Sumário  Introdução  Conceitos  Histórico  Aplicações  Definições Conceitos Representação  Percurso  Algoritmo Dijkstra Applet  Referencias

Luciano Vargas Gonçalves Programa de Pós Graduação em Informática 3 25/5/2016 Introdução  Porque estudar Grafos Importante ferramenta matemática com aplicação em diversas áreas do conhecimento:  Genética, química, pesquisa operacional, telecomunicações, redes de computadores, conexão de vôos aéreos, restrições de precedência, fluxo de programas, dentre outros Os estudos teóricos em grafos buscam o desenvolvimento de algoritmos mais eficientes.

Luciano Vargas Gonçalves Programa de Pós Graduação em Informática 4 25/5/2016 Conceitos  O que são Grafos Tipicamente um grafo é representado como um conjunto não vazio de pontos ou vértices ligados por retas, que são chamadas de arestas. Abstração matemática que representa situações reais através de um diagrama.

Luciano Vargas Gonçalves Programa de Pós Graduação em Informática 5 25/5/2016 Histórico  As pontes de Königsberg O rio Pregel divide o centro da cidade de Königsberg (Prússia no século XVII, atual Kaliningrado, Rússia) em quatro regiões. Essas regiões são ligadas por um complexo de sete (7) pontes, com- forme mostra a figura. Discutia-se nas ruas da cidade a possi- bilidade de atravessar todas as pontes, voltando ao lugar de onde se saiu, sem repetir alguma. Havia-se tornado uma lenda popular a possibilidade da faça- nha quando Euler, em 1736, provou que não existia caminho que possibilitasse tais restrições.

Luciano Vargas Gonçalves Programa de Pós Graduação em Informática 6 25/5/2016 Histórico  As pontes de Königsberg Resolvido em 1736 por Leonhard Euler Necessário um modelo para representar o problema Abstração de detalhes irrelevantes:  Área de cada ilha  Formato de cada ilha  Tipo da ponte, etc.

Luciano Vargas Gonçalves Programa de Pós Graduação em Informática 7 25/5/2016 Histórico  As pontes de Königsberg Euler generalizou o problema através de um modelo de grafos

Luciano Vargas Gonçalves Programa de Pós Graduação em Informática 8 25/5/2016 Aplicações  O problema das três casas e três recursos água luz telefone

Luciano Vargas Gonçalves Programa de Pós Graduação em Informática 9 25/5/2016 Aplicações  Questões sobre o caminho mínimo De forma a reduzir seus custos operacionais, uma empresa de transporte de cargas deseja oferecer aos motoristas de sua frota, um mecanismo que os auxilie a selecionar o melhor caminho (o de menor distância) entre quaisquer duas cidades por ela servidas, de forma a que sejam minimizados os custos de transporte.

Luciano Vargas Gonçalves Programa de Pós Graduação em Informática 10 25/5/2016 Aplicações

Luciano Vargas Gonçalves Programa de Pós Graduação em Informática 11 25/5/2016 Aplicações  Problema do ciclo Hamiltoniano (Hamilton 1859). Existem n cidades. Cada par de cidades pode ser adjacente ou não arbitrariamente. Partindo de uma cidade qualquer, o problema consiste em determinar um trajeto que passe exata- mente uma vez em cada cidade e retorne ao ponto de partida. (Caixeiro Viajante)

Luciano Vargas Gonçalves Programa de Pós Graduação em Informática 12 25/5/2016 Definições  Grafos – Elementos básicos Vértices ou nós (v1,v2,v3,v4,v5,v6) Arestas (a1,a2,a3,a4) v2v3 v4 v5 v6 v1 a1 a2 a3 a4

Luciano Vargas Gonçalves Programa de Pós Graduação em Informática 13 25/5/2016 Definições  G = (V,E) V é um conjunto finito não-vazio de vértices (ou nós). E é um conjunto de pares não ordenados de elementos distintos de V, chamados de arestas. Cada aresta e pertencente ao conjunto E será denotada pelo par de vértices {x,y} que a forma. Dizemos que os vértices x e y são extremos (ou extremidades) da aresta e.

Luciano Vargas Gonçalves Programa de Pós Graduação em Informática 14 25/5/2016 Exemplos  G = ( V, E ) G = ( { 1 }, Ø) G = ( {1,2,3}, {(1,2), (2,3)} ) 1 Gráfico Trivial a1 a2

Luciano Vargas Gonçalves Programa de Pós Graduação em Informática 15 25/5/2016 Conceitos  Dois vértices x e y são ditos adjacentes ou vizinhos se existe uma aresta unindo-os.  Os vértices u e v são ditos incidentes na aresta e, se eles são extremos de e. Duas arestas são adjacentes se elas têm ao menos um vértice em comum. A aresta e={x,y} é incidente a ambos os vértices x e y.  Quando uma aresta possui indicação de sentido (uma seta), ela é chamada de arco.

Luciano Vargas Gonçalves Programa de Pós Graduação em Informática 16 25/5/2016 Conceitos  Orientação é a direção para a qual uma seta aponta, um grafo deste tipo é chamado grafo dirigido ou orientado.  Cardinalidade (ordem) de um conjunto de vértices é igual a quantidade de seus elementos ( grafo denso e pouco povoado). A Dimensão (A) é o número de arestas do grafo.  Laço é uma aresta que retorna ao mesmo vértice.

Luciano Vargas Gonçalves Programa de Pós Graduação em Informática 17 25/5/2016 Conceitos  Passeio é uma seqüência de vértices e arestas  Caminho é um passeio sem vértices repetidos. Circuito é um caminho de comprimento não nulo fechado, ou seja, tem os vértices extremos iguais (é um passeio onde v0 = vk.).  Trajeto é um passeio sem arestas repetidas.  Dois vértices são adjacentes se estão ligados por uma aresta. Um vértice é dito isolado se não existe aresta incidente sobre ele.

Luciano Vargas Gonçalves Programa de Pós Graduação em Informática 18 25/5/2016 Conceitos  Grau de um vértice, em um grafo não- dirigido, é o número de arestas incidentes ao vértice.  Em um grafo dirigido, pode-se dividir o grau em dois: grau de emissão (número de arestas que saem do vértice) e grau de recepção (número de arestas que chegam no vértice). AB Grau (A) = 3 Grau (B) = 1

Luciano Vargas Gonçalves Programa de Pós Graduação em Informática 19 25/5/2016 Conceitos  Toda árvore é um grafo, mas nem todo grafo é uma árvore. o grafo é uma árvore se, e somente se, não existirem arestas de retorno.  Um grafo onde existe um número associado a cada arco (peso) é chamado de rede ou grafo ponderado.

Luciano Vargas Gonçalves Programa de Pós Graduação em Informática 20 25/5/2016 Conceitos A D B C E a1 a3 a2 a5 a4 G = (V,E) V = {A,B,C,D,E} E = {a1,a2,a3,a4,a5,a6} Cardinalidade = 5 Grau (A) = 3 Dimensão = 6 Passeio = { (D,a1), (A,a2), (B,a3), (E,a4) } Caminho = (D, A, B, E) Circuito = (D, A, B, E, A) a6

Luciano Vargas Gonçalves Programa de Pós Graduação em Informática 21 25/5/2016 Tipos  Simples  Dirigido A B C A B C Completo D A B D C Multigrafo - Loop Valorado - Peso Planar - Sem cruzamento Regular – Mesmo Grau

Luciano Vargas Gonçalves Programa de Pós Graduação em Informática 22 25/5/2016 Representação  Lista de Adjacência – Grafo Dirigido

Luciano Vargas Gonçalves Programa de Pós Graduação em Informática 23 25/5/2016 Representação  Lista de Adjacência – Grafo não Dirigido

Luciano Vargas Gonçalves Programa de Pós Graduação em Informática 24 25/5/2016 Representação  Matriz de Adjacência – Grafo Dirigido

Luciano Vargas Gonçalves Programa de Pós Graduação em Informática 25 25/5/2016 Representação  Matriz de Adjacência – Grafo não Dirigido

Luciano Vargas Gonçalves Programa de Pós Graduação em Informática 26 25/5/2016 Percurso  Percurso em Amplitude  Percurso em Profundidade  Em ambos os percursos parte-se de um nodo qualquer escolhido arbitrariamente e visita-se este nodo. A seguir, considera-se cada um dos nodos adjacentes ao nodo escolhido.

Luciano Vargas Gonçalves Programa de Pós Graduação em Informática 27 25/5/2016 Percurso em Amplitude 1. Seleciona-se um vértice para iniciar o caminhamento. 2. Visitam-se os vértices adjacentes, marcando-os como visitados. 3. Coloca-se cada vértice adjacente numa fila. 4. Após visitar os vértices adjacentes, o primeiro da fila torna-se o novo vértice inicial. Reinicia-se o processo. 5. O caminhamento termina quanto todos os vértices tiverem sido visitados ou o vértice procurado for encontrado

Luciano Vargas Gonçalves Programa de Pós Graduação em Informática 28 25/5/2016 Percurso em Amplitude  Exemplo A D B C E a1a3 a2 a5 a4 a6 Fila

Luciano Vargas Gonçalves Programa de Pós Graduação em Informática 29 25/5/2016 Percurso em Amplitude  Exemplo A D B C E a1a3 a2 a5 a4 a6 Fila A

Luciano Vargas Gonçalves Programa de Pós Graduação em Informática 30 25/5/2016 Percurso em Amplitude  Exemplo A D B C E a1a3 a2 a5 a4 a6 Fila C B

Luciano Vargas Gonçalves Programa de Pós Graduação em Informática 31 25/5/2016 Percurso em Amplitude  Exemplo A D B C E a1a3 a2 a5 a4 a6 Fila E C

Luciano Vargas Gonçalves Programa de Pós Graduação em Informática 32 25/5/2016 Percurso em Amplitude  Exemplo A D B C E a1a3 a2 a5 a4 a6 Fila E

Luciano Vargas Gonçalves Programa de Pós Graduação em Informática 33 25/5/2016 Percurso em Amplitude  Exemplo Seqüência: D, A, B, C, E A D B C E a1a3 a2 a5 a4 a6 Fila

Luciano Vargas Gonçalves Programa de Pós Graduação em Informática 34 25/5/2016 Percurso em Profundidade 1. Seleciona-se um vértice para iniciar o caminhamento. 2. Visita-se um primeiro vértice adjacente, marcando-o como visitado. 3. Coloca-se o vértice adjacente visitado numa pilha. 4. O vértice visitado torna-se o novo vértice inicial. 5. Repete-se o processo até que o vértice procurado seja encontrado ou não haja mais vértices adjacentes. Se verdadeiro, desempilha-se o topo e procura-se o próximo adjacente, repetindo o algoritmo. 6. O processo termina quando o vértice procurado for encontrado ou quando a pilha estiver vazia e todos os vértices tiverem sido visitados.

Luciano Vargas Gonçalves Programa de Pós Graduação em Informática 35 25/5/2016 Percurso em Profundidade  Exemplo A D B C E a1a3 a2 a5 a4 a6 D Pilha

Luciano Vargas Gonçalves Programa de Pós Graduação em Informática 36 25/5/2016 Percurso em Profundidade  Exemplo A D B C E a1a3 a2 a5 a4 a6 ADAD Pilha

Luciano Vargas Gonçalves Programa de Pós Graduação em Informática 37 25/5/2016 Percurso em Profundidade  Exemplo A D B C E a1a3 a2 a5 a4 a6 BADBAD Pilha

Luciano Vargas Gonçalves Programa de Pós Graduação em Informática 38 25/5/2016 Percurso em Profundidade  Exemplo A D B C E a1a3 a2 a5 a4 a6 EBADEBAD Pilha

Luciano Vargas Gonçalves Programa de Pós Graduação em Informática 39 25/5/2016 Percurso em Profundidade  Exemplo A D B C E a1a3 a2 a5 a4 a6 BADBAD Pilha

Luciano Vargas Gonçalves Programa de Pós Graduação em Informática 40 25/5/2016 Percurso em Profundidade  Exemplo A D B C E a1a3 a2 a5 a4 a6 ADAD Pilha

Luciano Vargas Gonçalves Programa de Pós Graduação em Informática 41 25/5/2016 Percurso em Profundidade  Exemplo A D B C E a1a3 a2 a5 a4 a6 CADCAD Pilha

Luciano Vargas Gonçalves Programa de Pós Graduação em Informática 42 25/5/2016 Percurso em Profundidade  Exemplo Seqüência: D, A, B, E, C A D B C E a1a3 a2 a5 a4 a6 Pilha

Luciano Vargas Gonçalves Programa de Pós Graduação em Informática 43 25/5/2016 Caminho Mínimo  Clássicos da Ciência da Computação. Este problema consiste, genericamente, em encontrar o caminho de menor custo entre dois nós da rede, considerando a soma dos custos associados aos arcos percorridos.

Luciano Vargas Gonçalves Programa de Pós Graduação em Informática 44 25/5/2016 Algoritmo Dijkstra (1959).  O nome se origina de seu inventor, o cientista da computação Edsger Dijkstra, soluciona o problema do caminho mais curto em grafo dirigido com arestas de peso não negativo, em tempo computacional O([m+n]log n) onde m é o número de arestas e n é o número de vértices. O algoritmo que serve para resolver o mesmo problema em um grafo com pesos negativos é o algoritmo de Bellman-Ford.  Um exemplo prático de problema que pode ser resolvido pelo algoritmo de Dijkstra é: alguém precisa se deslocar de uma cidade para outra. Para isso, ela dispõe de várias estradas, que passam por diversas cidades. Qual delas oferece uma trajetória de menor caminho?

Luciano Vargas Gonçalves Programa de Pós Graduação em Informática 45 25/5/2016 Algoritmo Dijkstra (1959).  Atribua valor zero à estimativa do custo mínimo do vértice s (a raiz da busca) e infinito às demais estimativas;  Atribua um valor qualquer aos precedentes (o precedente de um vértice t é o vértice que precede t no caminho de custo mínimo de s para t);  Enquanto houver vértice aberto: seja k um vértice ainda aberto cuja estimativa seja a menor dentre todos os vértices abertos; feche o vértice k Para todo vértice j ainda aberto que seja sucessor de k faça:  some a estimativa do vértice k com o custo do arco que une k a j;  caso esta soma seja melhor que a estimativa anterior para o vértice j, substitua-a e anote k como precedente de j.

Luciano Vargas Gonçalves Programa de Pós Graduação em Informática 46 25/5/2016 Algoritmo Dijkstra (1959).  Exemplo – Estado inicial

Luciano Vargas Gonçalves Programa de Pós Graduação em Informática 47 25/5/2016 Algoritmo Dijkstra (1959).  Exemplo

Luciano Vargas Gonçalves Programa de Pós Graduação em Informática 48 25/5/2016 Algoritmo Dijkstra (1959).  Exemplo

Luciano Vargas Gonçalves Programa de Pós Graduação em Informática 49 25/5/2016 Algoritmo Dijkstra (1959).  Exemplo

Luciano Vargas Gonçalves Programa de Pós Graduação em Informática 50 25/5/2016 Algoritmo Dijkstra (1959).  Exemplo

Luciano Vargas Gonçalves Programa de Pós Graduação em Informática 51 25/5/2016 Algoritmo Dijkstra (1959).  Exemplo

Luciano Vargas Gonçalves Programa de Pós Graduação em Informática 52 25/5/2016 Algoritmo Dijkstra (1959).  Exemplo

Luciano Vargas Gonçalves Programa de Pós Graduação em Informática 53 25/5/2016 Algoritmo Dijkstra (1959).  Exemplo

Luciano Vargas Gonçalves Programa de Pós Graduação em Informática 54 25/5/2016 Algoritmo Dijkstra (1959).  Exemplo

Luciano Vargas Gonçalves Programa de Pós Graduação em Informática 55 25/5/2016 Algoritmo Dijkstra (1959).  Exemplo

Luciano Vargas Gonçalves Programa de Pós Graduação em Informática 56 25/5/2016 Applet  Applet Java Dijkstra u.ac.jp/~ikeda/suuri/dijkstra/Dijkstra.shtml u.ac.jp/~ikeda/suuri/dijkstra/Dijkstra.shtml  Implementação C algoritmos.com/ejemplos/source-154.html algoritmos.com/ejemplos/source-154.html

Luciano Vargas Gonçalves Programa de Pós Graduação em Informática 57 25/5/2016 Referencias  Livros Estrutura de Dados – Luzzardi, Paulo Roberto – Universidade Católica de Pelotas.  Sites u.ac.jp/~ikeda/suuri/dijkstra/Dijkstra.shtml