© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Busca em Grafos IF672 - Algoritmos e Estruturas de Dados CIn - UFPE ©

Slides:



Advertisements
Apresentações semelhantes
Caminhamento em Grafos
Advertisements

Algoritmos em Grafos (Parte 2)
Antonio Dirceu Rabelo de Vasconcelos Filho
Árvores Passeios.
Gustavo Sant´Anna Ferreira Rodrigo Ribeiro de Souza
CAMINHAMENTO EM GRAFOS (CONTINUAÇÃO)
Estruturas de Dados Árvores Binárias
Recursividade Prof. Rosana Palazon.
Problema do caixeiro viajante
Pesquisa em profundidade
Grafos Grafo G = (V, E) V — conjunto de vértices
Estrutura de Dados e Algoritmos e Programação e Computadores II
Árvores.
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
Ronaldo Celso Messias Correia –
Capítulo 3 - Russell e Norvig
Slides: Prof. João Fabro UTFPR - Curitiba
Lista Encadeada Circular Lista Duplamente Encadeada
Prof. Ernesto Lindstaedt
Árvore Geradora Mínima
Buscas em Grafos Prof. André Renato 1º Semestre/2012
Caminhos e caminhamentos em Grafos
Algoritmos em Grafos.
T ÓPICOS DE I.A. Métodos de Busca Busca em Espaços de Estado Prof. Mário Dantas.
Caminho Hamiltoniano ... em um grafo é o caminho que visita
Grafos Árvores Geradoras.
Caminhamento em Grafos: Busca em Largura e Busca em Profundidade
Prova AA.
INTELIGÊNCIA ARTIFICIAL
Celso C. Ribeiro Caroline T. Rocha
Árvores Binárias de Pesquisa
Implementação de FILAS com Alocação Dinâmica
Lista Encadeada Circular Lista Duplamente Encadeada
ALGORITMOS E ESTRUTURAS DE DADOS.
Introdução e Busca Cega
Algoritmos Gulosos em Grafos
Katia S. Guimarães Busca em Grafos Katia S. Guimarães
NP-Completude Algoritmos e Estruturas de Dados – IF672
Orientação a Objetos e Java Graduação em Ciência da Computação
© Copyright 2007 Algoritmos e Estruturas de Dados - Todos os direitos reservados Átila Valgueiro Malta Moreira Juliana Medeiros de Lucena Rafael Alberto.
Estruturas de Dados PROFESSOR DIÓGENES FURLAN. Estruturas de Dados (ED) Programas operam sobre dados Dados são relacionados e possuem estrutura Como representar.
Estruturas de Dados Aula 11: TAD Pilha
Educação Profissional Técnica de Nível Médio Curso Técnico de Informática
Algoritmo de PRIM para MST
Busca Combinatorial e Métodos de Heurística
Análise de Complexidade do Algoritmo de Dijkstra
© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Revisão IF672 - Algoritmos e Estruturas de Dados CIn - UFPE Allan Jefferson.
Prof. Hilton Cardoso Marins Junior ÁRVORES BINÁRIAS.
Msc. Daniele Carvalho Oliveira
CAMINHOS MAIS CURTOS EM GRAFOS
Algoritmos para Obtenção de Árvore Geradora Mínima
Katia S. Guimarães Busca em Grafos Katia S. Guimarães
Conjuntos Algoritmos e Estruturas de Dados - IF672
© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Grafos IF672 - Algoritmos e Estruturas de Dados CIn - UFPE Adriana Libório.
Árvores AVL Algoritmos e Estruturas de Dados - IF672

Análise e Síntese de Algoritmos
© Copyright 2007 Algoritmos e Estruturas de Dados - Todos os direitos reservados Estruturas de Dados Dinâmicas IF672 - Algoritmos e Estruturas de Dados.
© Copyright 2008 Algoritmos e Estruturas de Dados 1 IF672 - Algoritmos e Estruturas de Dados CIn - UFPE Adriana Libório Fernandes Lins Arthur Cavalcanti.
IF672 cc Algoritmos e Estruturas de Dados
Programação Dinâmica IF672 - Algoritmos e Estruturas de Dados CIn - UFPE Átila Valgueiro Malta Moreira Juliana Medeiros de Lucena Rafael Alberto Gomes.
Adriana Libório Fernandes Lins Arthur Cavalcanti Alem Átila Valgueiro Malta Moreira Flavio Juvenal da Silva Júnior Gustavo Cauê Silva.
USP – ICMC – SSC SSC0300 2º Semestre 2015 Disciplina de Linguagem de Programação e Aplicações [ Eng. Elétrica / Eletrônica ] 1 Prof. Dr. Daniel Rodrigo.
© Copyright 2007 Algoritmos e Estruturas de Dados - Todos os direitos reservados Ponteiros IF672 - Algoritmos e Estruturas de Dados CIn - UFPE Murilo Raphael.
Adriana Libório Fernandes Lins Arthur Cavalcanti Alem Átila Valgueiro Malta Moreira Flavio Juvenal da Silva Júnior Gustavo Cauê Silva Botelho Matheus Bispo.
© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Busca Gulosa em Grafos IF672 - Algoritmos e Estruturas de Dados CIn -
Adriana Libório Fernandes Lins Arthur Cavalcanti Alem Átila Valgueiro Malta Moreira Flavio Juvenal da Silva Júnior Gustavo Cauê Silva.
UNIVERSIDADE FEDERAL DE MINAS GERAIS Pilhas e Filas Cristiano Arbex Valle Vinicius Fernandes dos Santos
Entrada e Saída de Dados com Arquivos – Java
Estruturas de Dados Dinâmicas
Transcrição da apresentação:

© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Busca em Grafos IF672 - Algoritmos e Estruturas de Dados CIn - UFPE © Copyright 2008 Algoritmos e Estruturas de Dados - Todos os direitos reservados Adriana Libório Fernandes Lins Arthur Cavalcanti Alem Átila Valgueiro Malta Moreira Flavio Juvenal da Silva Júnior Gustavo Cauê Silva Botelho Matheus Bispo Arrais de Souza Murilo Raphael de Souza Lira Rafael Alberto Gomes Pereira Lima Rafael Brandão Lobo Rafael Loureiro de Carvalho Tiago Carneiro Pessoa Canto Vinicius Miranda Cesar

© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Busca em Grafos Escolhendo um vértice inicial, é possível visitar os vértices seguindo uma determinada ordem Vértices já visitados A cada iteração, escolhemos uma aresta que parte de um vértice já visitado. 2 Aresta escolhida

© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Busca em Grafos A cada passo, os vértices são divididos em três grupos: Vértices já escolhidos Vértices candidatos Vértices não visitados

© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Busca em Grafos Quando uma aresta é escolhida, os vértices podem mudar de grupo: Vértices já escolhidos Vértices candidatos Vértices não visitados 7

© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Busca em Grafos Utilizando as arestas escolhidas na ordem da busca, é possível montar uma árvore de busca: Início

© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Busca em Grafos As buscas mais comuns são: Busca em Profundidade (Depth-First Search) Escolhe arestas que partem do vértice mais recente Busca em Largura (Breadth-First Search) Escolhe arestas que partem do vértice mais antigo Buscas Gulosas (Greedy Search) Escolhe arestas com menor custo, menor caminho,...

© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Busca em Profundidade Nesse algoritmo a busca inicia a partir de um nó raiz e percorre cada caminho de forma a ir o mais longe possível antes de passar para outro caminho. O caminho percorrido por esta busca forma uma árvore profunda. Pode ser implementada com recursão (pilha).

© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Busca em Profundidade A B C D G E F Pilha

© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Busca em Profundidade A B C D G E F A Pilha

© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Busca em Profundidade A B C D G E F Pilha B A

© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Busca em Profundidade A B C D G E F Pilha B A E

© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Busca em Profundidade A B C D G E F Pilha B A E D

© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Busca em Profundidade A B C D G E F Pilha B A E D G

© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Busca em Profundidade A B C D G E F Pilha B A E D G F

© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Busca em Profundidade A B C D G E F Pilha B A E D G

© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Busca em Profundidade A B C D G E F Pilha B A E D

© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Busca em Profundidade A B C D G E F Pilha B A E D C

© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Busca em Profundidade A B C D G E F Pilha B A E D

© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Busca em Profundidade A B C D G E F Pilha B A E

© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Busca em Profundidade A B C D G E F Pilha B A

© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Busca em Profundidade A B C D G E F Pilha A

© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Busca em Profundidade A B C D G E F Pilha

© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Busca em Profundidade Caminho percorrido A B C D G E F

© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Busca em Profundidade void dfs(int inicio) { dfsRec(inicio); } void dfsRec(int v) { if (mark[v]) return; mark[v] = true; NoLista temp = adj[v].inicio; while (temp != null) { dfsRec(temp.vertice); temp = temp.next; } } Chamada recursiva para o vértice inicial Se o vértice já foi visitado, retorna Marca o vértice como visitado Lista de adjacências é percorrida Busca recursiva no vizinho Visita o próximo vizinho

© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Busca em Largura Outra forma de percorrer um grafo é através da busca em largura (também chamada de busca por nível). Esse tipo de busca visita primeiro todos os nós próximos da raiz da busca antes de visitar os mais distantes. A árvore gerada pelo caminho percorrido é uma árvore larga (pouco profunda, mas com muitos filhos por nó). Pode ser implementada com ajuda de uma fila.

© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Busca em Largura A B C D G E F Fila

© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Busca em Largura A B C D G E F A Fila

© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Busca em Largura A B C D G E F BC Fila

© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Busca em Largura A B C D G E F CE Fila

© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Busca em Largura A B C D G E F ED Fila

© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Busca em Largura A B C D G E F D Fila

© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Busca em Largura A B C D G E F FG Fila

© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Busca em Largura A B C D G E F G Fila

© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Busca em Largura A B C D G E F Fila

© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Busca em Largura Caminho percorrido A B C D G E F

© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Busca em Largura void bfs(int inicio) { fila.inserir(inicio); mark[inicio] = true; while (!fila.vazia()) { int v = fila.remover(); NoLista temp = adj[v].inicio; while (temp != null) { int w = temp.vertice; if (!mark[w]) { fila.inserir(w); mark[w] = true; } temp = temp.next; } } }