Celso C. Ribeiro Caroline T. Rocha

Slides:



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

Caminhamento em Grafos
IFTO ESTRUTURA DE DADOS AULA 05 Prof. Manoel Campos da Silva Filho
Algoritmo de Caminho Mínimo
Árvores CC/EC/Mestrado Teoria dos Grafos ‏ 1.
Algoritmos em Grafos.
AULA 02 PROGRAMAÇÃO LINEAR INTEIRA
Celso C. Ribeiro Caroline T. Rocha
UNICAMP Universidade Estadual de Campinas Centro Superior de Educação Tecnológica Divisão de Telecomunicações Propagação de Ondas e Antenas Prof.Dr. Leonardo.
Análise de Decisão Aplicada a Gerência Empresarial – UVA Grafos - V
Material pedagógico Multiplicar x 5 Clica!
Vamos contar D U De 10 até 69 Professor Vaz Nunes 1999 (Ovar-Portugal). Nenhuns direitos reservados, excepto para fins comerciais. Por favor, não coloque.
Celso C. Ribeiro Caroline T. Rocha
Pontes Seja (G) o número de componentes conexas de G. Uma ponte é uma aresta a tal que (G - a) > (G)
Exercício do Tangram Tangram é um quebra-cabeças chinês no qual, usando 7 peças deve-se construir formas geométricas.
Nome : Resolve estas operações começando no centro de cada espiral. Nos rectângulos põe o resultado de cada operação. Comprova se no final.
Curso de ADMINISTRAÇÃO
Série de Exercícios.
Árvores.
EXPRESSÕES ARITMÉTICAS
EXPRESSÕES ARITMÉTICAS
Rodrigo Geraldo Ribeiro Denis Pinto Pinheiro Camila Leles Rezende
Projeto e Análise de Algoritmos
FUNÇÃO MODULAR.
Problema de designação
Problema de designação
Auditoria de Segurança da Informação
Técnica de Contagem.
Provas de Concursos Anteriores
Árvore Geradora Mínima
© GfK 2012 | Title of presentation | DD. Month
Buscas em Grafos Prof. André Renato 1º Semestre/2012
Grafos Msc. Cintia Carvalho Oliveira Doutoranda em Computação – UFU
Renda até 2 SM.
MECÂNICA - ESTÁTICA Cabos Cap. 7.
Caminhos e caminhamentos em Grafos
1 Celulose.
MECÂNICA - DINÂMICA Cinemática de uma Partícula Cap. 12.
MECÂNICA - DINÂMICA Exercícios Cap. 13, 14 e 17. TC027 - Mecânica Geral III - Dinâmica © 2013 Curotto, C.L. - UFPR 2 Problema
Cinemática Plana de um Corpo Rígido Cap. 16
MECÂNICA - DINÂMICA Cinemática de uma Partícula Cap Exercícios.
Árvores binárias de pesquisa com balanceamento
1 António Arnaut Duarte. 2 Sumário: primeiros passos;primeiros passos formatar fundo;formatar fundo configurar apresentação;configurar apresentação animação.
CATÁLOGO GÉIA PÁG. 1 GÉIA PÁG. 2 HESTIA PÁG. 3.
Resolução de problemas por meio de busca
Conceitos Básicos Alysson e Franklina 2ºs/
Lemas (Sudkamp)  .
Trabalho sobre Cor Thiago Marques Toledo.
Salas de Matemática.
MINISTÉRIO DO PLANEJAMENTO Projeto de Lei Orçamentária 2010 Ministro Paulo Bernardo Silva Brasília, 31 de agosto de 2009.
Coordenação Geral de Ensino da Faculdade
Centro de Gravidade e Centróide Cap. 9
EXERCÍCIOS PARA GUARDA-REDES
APOIOS PEDAGÓGICO ACRESCIDO
Projeto Medindo minha escola.
Introdução e Busca Cega
1 2 Observa ilustração. Cria um texto. Observa ilustração.
Grupo A – Azul Claro, Marrom, Laranja
Conceitos básicos em grafos
CALENDÁRIO SEXY Ele & Ela. CALENDÁRIO SEXY Ele & Ela.
1 Aplicações do Fecho Regular. 2 A interseção de uma linguagem livre de contexto e uma linguagem regular é uma linguagem livre de contexto livre de contexto.
Olhe fixamente para a Bruxa Nariguda
Rio Verde - Goiás - Brasil
Máquina de Turing Universal
Cinemática Plana de um Corpo Rígido Cap. 16
NOÇÕES DE PROBABILIDADE
Usando VNS Por: Vitor de Araújo Gabriel Leffa André Moraes (E Mestre Huang Ho)
Inteligência Artificial
GINÁSTICA LABORAL UM NOVO CAMINHO.
Algoritmos em Grafos Celso C. Ribeiro Caroline T. Rocha.
Transcrição da apresentação:

Celso C. Ribeiro Caroline T. Rocha Algoritmos em Grafos Celso C. Ribeiro Caroline T. Rocha

PARTE 6: Caminhamento em Grafos Algoritmos em Grafos

Caminhamento em Grafos Dados: G = (V,E) V = {1, 2, ..., n} conjunto de nós E = { (u1,v1), ..., (um,vm)} conjunto de arestas Representação por listas de adjacências 1 2 3 4 5 5 3 1 2 4 Algoritmos em Grafos

Caminhamento em Grafos Caminhar/percorrer um grafo: visitar todos os nós e arestas BUSCA EM PROFUNDIDADE Enquanto for possível, aprofundar-se no grafo. Quando não for mais possível, recuar. 7º 6º 8 9 1 5 4 2 6 3 7 10 1º 2 8º 3 10 1 10º 9 4 3º 6 2º 4º 7 5 9º 8 5º Algoritmos em Grafos

Caminhamento em Grafos 1 4 6 5 7 8 3 2 10 9 7º 6º 8 9 1 5 4 2 6 3 7 10 1º 2 8º 3 10 1 10º 9 4 3º 6 2º 4º 7 5 9º 8 5º Algoritmos em Grafos

Caminhamento em Grafos A ordem em que os nós e arestas são visitados depende: do nó inicial da ordem em que os nós e as arestas aparecem na estrutura de dados Algoritmos em Grafos

Caminhamento em Grafos Algoritmo recursivo para busca a partir de um nó Procedimento PROF(nó v) visitado(v)  sim Para cada nó w adjacente a v faça Se visitado(w) = não então PROF(w) fim-para Fim Algoritmos em Grafos

Caminhamento em Grafos Exemplo: 1 D A E B C F G H A A B C D E F G H X X 2 7 B C X X D E F G 3 X 5 6 8 X X H 4 X não visitado visitado Algoritmos em Grafos

Caminhamento em Grafos Exemplo: A B E F D H C G 1 D A E B C F G H A 2 7 B C D E F G 3 5 6 8 H 4 Árvore de busca em profundidade (pilha) Algoritmos em Grafos

Caminhamento em Grafos Algoritmo de busca em profundidade Procedimento BUSCA-PROF Para i = 1,...,n faça visitado(i)  não fim-para Se visitado(i) = não então PROF(i) Fim Algoritmos em Grafos

Caminhamento em Grafos Exemplo: 7 1 11 8 2 3 1 7 5 6 4 11 9 14 12 10 13 1 2 11 6 8 7 8 2 3 10 14 9 4 9 12 6 3 10 5 5 13 4 13 12 14 Algoritmos em Grafos

Caminhamento em Grafos Aplicações de busca em profundidade, grafo G=(V,E): G é acíclico? G é conexo? G é bipartido? G é planar? Quais são as componentes conexas de G? Quais são as componentes biconexas de G? Quais são os pontos de articulação de G? Algoritmos em Grafos

Caminhamento em Grafos Algoritmo para encontrar as componentes conexas Procedimento COMPONENTES-CONEXAS Para i = 1,...,n faça visitado(i)  0 fim-para componente  0 Se visitado(i) = 0 então componente  componente + 1 PROF(i, componente) fim-se Fim Algoritmos em Grafos

Caminhamento em Grafos Algoritmo para encontrar as componentes conexas Procedimento PROF(v, marca) visitado(v)  marca Para cada nó w adjacente a v faça Se visitado(w) = 0 então PROF(w, marca) fim-se fim-para Fim Algoritmos em Grafos

Caminhamento em Grafos Exemplo: Problema do mosaico 4 5 3 8 2 7 1 6 ■ Novas configurações (mosaicos) são obtidas através do movimento de um elemento para a posição vazia. Quantos e quais mosaicos intermediários existem entre dois mosaicos específicos? 4 5 3 8 2 7 1 6 ■ 1 2 3 4 5 7 6 8 ■ Algoritmos em Grafos

Caminhamento em Grafos 4 ■ 6 2 7 5 1 3 8 4 5 6 ■ 7 2 1 3 8 4 5 6 2 7 ■ 1 3 8 4 5 6 2 7 3 1 ■ 8 4 5 6 2 7 1 ■ 3 8 4 5 6 2 7 1 8 3 ■ 4 5 6 2 ■ 1 7 3 8 1 2 3 4 5 ■ 6 8 7 ? Algoritmos em Grafos

Caminhamento em Grafos 1 2 8 3 1 6 4 7 ■ 5 Busca em profundidade 2 NÓ INICIAL 18 2 8 3 1 6 4 ■ 7 5 2 8 3 1 ■ 4 7 6 5 2 8 3 1 6 4 7 5 ■ 3 19 28 2 8 3 ■ 6 4 1 7 5 2 8 3 ■ 1 4 7 6 5 2 ■ 3 1 8 4 7 6 5 2 8 3 1 4 ■ 7 6 5 4 8 20 24 29 ■ 8 3 2 6 4 1 7 5 2 8 3 6 ■ 4 1 7 5 ■ 8 3 2 1 4 7 6 5 2 8 3 7 1 4 ■ 6 5 ■ 2 3 1 8 4 7 6 5 2 3 ■ 1 8 4 7 6 5 5 9 12 15 21 25 30 8 ■ 3 2 6 4 1 7 5 2 ■ 3 6 8 4 1 7 5 2 8 3 6 4 ■ 1 7 5 2 8 3 6 7 4 1 ■ 5 8 ■ 3 2 1 4 7 6 5 2 8 3 7 1 4 6 ■ 5 1 2 3 ■ 8 4 7 6 5 NÓ ALVO 6 7 10 11 13 14 16 17 22 23 26 27 31 8 3 ■ 2 6 4 1 7 5 8 6 3 2 ■ 4 1 7 5 ■ 2 3 6 8 4 1 7 5 2 3 ■ 6 8 4 1 7 5 2 8 ■ 6 4 3 1 7 5 2 8 3 6 4 5 1 7 ■ 2 8 3 6 7 4 ■ 1 5 2 8 3 6 7 4 1 5 ■ 8 3 ■ 2 1 4 7 6 5 8 1 3 2 ■ 4 7 6 5 2 8 3 7 ■ 4 6 1 5 2 8 3 7 1 4 6 5 ■ 1 2 3 8 ■ 4 7 6 5 1 2 3 7 8 4 ■ 6 5 Algoritmos em Grafos

Caminhamento em Grafos BUSCA EM AMPLITUDE Enquanto for possível, examinar todos os nós à mesma distância do nó inicial. Quando não for mais possível, aprofundar. 5 6 8 9 1 5 4 2 6 3 7 10 1 2 9 3 10 1 2 9 4 7 6 4 10 7 5 3 8 8 Algoritmos em Grafos

Caminhamento em Grafos D A E B C F G Exemplo: Árvore de busca em profundidade (pilha) Árvore de busca em amplitude (fila) B C A F G D E D E A F G C B Algoritmos em Grafos

Caminhamento em Grafos Algoritmo de busca em amplitude Procedimento BUSCA-AMPL(v) visitado(v)  sim Colocar v em uma fila Enquanto fila não vazia faça w  retirar o elemento da frente da fila Para cada vértice i adjacente a w faça Se visitado(i) = não então visitado(i)  sim Colocar i no final da fila fim-se fim-para fim-enquanto Fim Algoritmos em Grafos

Caminhamento em Grafos Exemplo: A B C D E F G H 1 D A E B C F G H A 2 3 B C D E F G 4 5 6 7 H 8 Fila w = G H F B D E A C não visitado visitado F G H B C A E D E C D B G F D F E C D E Algoritmos em Grafos

Caminhamento em Grafos Exemplo: D A E B C F G H 1 D A E B C F G H A 2 3 B C D E F G 4 5 6 7 H 8 Árvore de busca em amplitude (fila) Algoritmos em Grafos

Caminhamento em Grafos 1 2 8 3 1 6 4 7 ■ 5 Busca em amplitude Exemplo do mosaico: 2 NÓ INICIAL 3 4 2 8 3 1 6 4 ■ 7 5 2 8 3 1 ■ 4 7 6 5 2 8 3 1 6 4 7 5 ■ 5 6 7 8 9 2 8 3 ■ 6 4 1 7 5 2 8 3 ■ 1 4 7 6 5 2 ■ 3 1 8 4 7 6 5 2 8 3 1 4 ■ 7 6 5 2 8 3 1 4 ■ 7 6 5 10 11 12 13 14 15 16 17 18 19 ■ 8 3 2 6 4 1 7 5 2 8 3 6 ■ 4 1 7 5 ■ 8 3 2 1 4 7 6 5 2 8 3 7 1 4 ■ 6 5 ■ 2 3 1 8 4 7 6 5 2 3 ■ 1 8 4 7 6 5 2 8 ■ 1 4 3 7 6 5 2 8 3 1 4 5 7 6 ■ 2 8 3 1 ■ 6 7 5 4 2 8 ■ 1 6 3 7 5 4 20 21 22 23 24 25 26 8 ■ 3 2 6 4 1 7 5 2 ■ 3 6 8 4 1 7 5 2 8 3 6 4 ■ 1 7 5 2 8 3 6 7 4 1 ■ 5 8 ■ 3 2 1 4 7 6 5 2 8 3 7 1 4 6 ■ 5 1 2 3 ■ 8 4 7 6 5 2 3 4 1 8 ■ 7 6 5 2 ■ 8 1 4 3 7 6 5 2 8 3 1 4 5 7 ■ 6 2 8 3 ■ 1 6 7 5 4 2 ■ 3 1 8 6 7 5 4 2 8 3 1 5 6 7 ■ 4 2 ■ 8 1 6 3 7 5 4 NÓ ALVO 27 8 3 ■ 2 6 4 1 7 5 8 6 3 2 ■ 4 1 7 5 ■ 2 3 6 8 4 1 7 5 2 3 ■ 6 8 4 1 7 5 2 8 ■ 6 4 3 1 7 5 2 8 3 6 4 5 1 7 ■ 2 8 3 6 7 4 ■ 1 5 2 8 3 6 7 4 1 5 ■ 8 3 ■ 2 1 4 7 6 5 8 1 3 2 ■ 4 7 6 5 2 8 3 7 ■ 4 6 1 5 2 8 3 7 1 4 6 5 ■ 1 2 3 8 ■ 4 7 6 5 1 2 3 7 8 4 ■ 6 5 Algoritmos em Grafos

Caminhamento em Grafos Algoritmo de Dijkstra: Caminho mais curto do nó 1 (inicial) ao nó n (final) Grafo G = (V,E) distâncias cij  0 Passo 0: (1)  0, (i)  +,  i = 2,...,n Passo 1: Obter i  V tal que (i) = minjV (j) Passo 2: Se i = n, então terminar Passo 3: V  V – {i} Passo 4: Atualizações: (j)  min{(j), (i)+cij}, j  +(i) Passo 5: Voltar ao passo 1 Algoritmos em Grafos

Caminhamento em Grafos Suponha-se que exista um oráculo que, para cada nó, estima o comprimento h* do caminho mais curto deste nó até o nó final. *(i) 1 i n i h*(i) Valor do caminho mais curto de 1 a i Valor do caminho mais curto de i a n Qual é a interpretação de *(i) + h*(i) ? Caminho mais curto de 1 a n passando pelo nó i Algoritmos em Grafos

Caminhamento em Grafos  = 2  =  5 3 1 2 5 3 6 4 8 7  = 4  =   = 0 5 2  = 5  =  5  = 3  =   = 3  =  h*(j)  = 5  =   = 1  =  4 3 Caminho mais curto de 1 a 8: aplicando Dijkstra 5 (1  3  4  8) O que acontece se no passo 1 escolhermos (i) = minjN{ (j) + h*(j) } ? Algoritmos em Grafos

Caminhamento em Grafos  = 2  =  7 7 1 2 5 3 6 4 8 7  = 4  =  1  = 0 5 8 5  = 5  =  5  = 3  =   = 3  =  (j) + h*(j)  = 5  =   = 1  =  5 8 Oráculo: h*(1) = 5 h*(2) = 5 h*(3) = 4 h*(4) = 2 h*(5) = 5 h*(6) = 3 h*(7) = 3 h*(8) = 0 Se a soma (j) + h*(j) é utilizada, apenas os nós do caminho mais curto são examinados. Algoritmos em Grafos

Caminhamento em Grafos  = 2  =  3 7 1 2 5 3 6 4 8 7  = 4  =  1  = 0 5 7 4  = 5  =  4  = 3  =   = 3  =  (j) + h(j)  = 5  =   = 1  =  4 7 O que acontecerá se usarmos h(j)  h*(j) ? Se a soma (j) + h(j) é utilizada, o número de nós aumenta à medida que h(j) decresce de h*(j) até 0. h(1) = 4 h(2) = 1 h(3) = 3 h(4) = 1 h(5) = 4 h(6) = 3 h(7) = 2 h(8) = 0 Em especial, a que corresponde o caso h(j) = 0 j ? Algoritmos em Grafos

Caminhamento em Grafos 3 7 1 2 5 3 6 4 8 7  = 2  =   = 4  =  1  = 0 7 7 8  = 7  =   = 3  =   = 3  =   = 5  =   = 1  =  5 8 Finalmente, o que poderá acontecer se usarmos h(j) > h*(j) ? A utilização de h(j) > h*(j) pode levar à perda do caminho mais curto. h(1) = 0 h(2) = 1 h(3) = 4 h(4) = 5 h(5) = 4 h(6) = 3 h(7) = 3 h(8) = 0 Algoritmos em Grafos

Caminhamento em Grafos Algoritmo A* A cada etapa, selecionar o nó com menor valor de *(j) + h*(j) Na prática, usar h(j) (estimativa) e não h*(j). h(i)  h*(i) h(n) = 0 (alvo) solução ótima, caminho mais curto cij = 1 h(i)  0 busca em amplitude h  h* menor número de nós Algoritmos em Grafos

Caminhamento em Grafos Exemplo: Problema do mosaico 4 5 3 8 2 7 1 6 ■ 1 2 3 4 5 7 6 8 ■ Que heurísticas podem ser usadas para estimar a distância (número de movimentos) para chegar no alvo? h1  número de peças fora de posição h2  distância da peça mais afastada h3  soma das distâncias de todas as peças Algoritmos em Grafos

Caminhamento em Grafos 1 2 8 3 1 6 4 7 ■ 5 h1= número de peças fora de posição 0+4 NÓ INICIAL 2 2 8 3 1 6 4 ■ 7 5 2 8 3 1 ■ 4 7 6 5 2 8 3 1 6 4 7 5 ■ 1+5 1+3 1+5 3 4 2 8 3 ■ 1 4 7 6 5 2 ■ 3 1 8 4 7 6 5 2 8 3 1 4 ■ 7 6 5 2+3 2+3 2+4 5 ■ 8 3 2 1 4 7 6 5 2 8 3 7 1 4 ■ 6 5 ■ 2 3 1 8 4 7 6 5 2 3 ■ 1 8 4 7 6 5 3+3 3+4 3+2 3+4 6 1 2 3 ■ 8 4 7 6 5 4+1 7 1 2 3 8 ■ 4 7 6 5 1 2 3 7 8 4 ■ 6 5 NÓ ALVO 5+0 5+2 Algoritmos em Grafos

Caminhamento em Grafos 1 2 8 3 1 6 4 7 ■ 5 h3= soma das distâncias 0+5 NÓ INICIAL 2 2 8 3 1 6 4 ■ 7 5 2 8 3 1 ■ 4 7 6 5 2 8 3 1 6 4 7 5 ■ 1+6 1+4 1+6 3 2 8 3 ■ 1 4 7 6 5 2 ■ 3 1 8 4 7 6 5 2 8 3 1 4 ■ 7 6 5 2+5 2+3 2+5 4 ■ 2 3 1 8 4 7 6 5 2 3 ■ 1 8 4 7 6 5 3+2 3+3 5 1 2 3 ■ 8 4 7 6 5 4+1 6 1 2 3 8 ■ 4 7 6 5 1 2 3 7 8 4 ■ 6 5 NÓ ALVO 5+0 5+2 Algoritmos em Grafos