Katia S. Guimarães katia@cin.ufpe.br Busca em Grafos Katia S. Guimarães katia@cin.ufpe.br katia@cin.ufpe.br.

Slides:



Advertisements
Apresentações semelhantes
Árvores CC/EC/Mestrado Teoria dos Grafos ‏ 1.
Advertisements

Grafo k-conexo Seja k um inteiro positivo. Diz-se que um grafo G é k-conexo em vértices quando não existe corte de vértices de tamanho menor que k Analogamente,
Algoritmos em Grafos (Parte 2)
HASHING Katia Guimarães julho/2002
Antonio Dirceu Rabelo de Vasconcelos Filho
CAMINHAMENTO EM GRAFOS (CONTINUAÇÃO)
Grafos – Parte 2 Projeto e Análise de Algoritmos Aline Vasconcelos
ALINHAMENTOS LOCAIS E SEMI-GLOBAIS
Katia S. Guimarães QUICKSORT Katia S. Guimarães
Grafos Introdução
Exercícios PAA- Grafos
Exercícios PAA- Grafos
UFES CC/EC/Mestrado Teoria dos Grafos Árvores. UFES CC/EC/Mestrado Teoria dos Grafos Árvores Grafo Acíclico: não possui ciclos.
Conectividade e Separabilidade
Grafo k-conexo Seja k um inteiro positivo. Diz-se que um grafo G é k-conexo em vértices quando não existe corte de vértices de tamanho menor que k.
Pesquisa em profundidade
Grafos Grafo G = (V, E) V — conjunto de vértices
Prof. M.Sc. Fábio Francisco da Costa Fontes Abril
Teoria dos Grafos – Aula 3 Árvores
Árvores.
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
SEMINÁRIO DE ALGORITMOS
Qualiti Courses :: Documento de Requisitos. {icc2, jmmn, mmc2, CIn-UFPE Equipe Ivan Cordeiro Cardim Julio Maravitch Maurício.
Ronaldo Celso Messias Correia –
Complexidade de Computação Para avaliar a qualidade de um algoritmo usamos como critério o espaço e o tempo de execução. Ao.
Introdução à NP-completude
Backtracking Katia Guimarães.
Árvore Geradora Mínima
Buscas em Grafos Prof. André Renato 1º Semestre/2012
Grafos Msc. Cintia Carvalho Oliveira Doutoranda em Computação – UFU
Silogística Tudo o que os artistas fazem é arte.
Algoritmos em Grafos.
T ÓPICOS DE I.A. Métodos de Busca Busca em Espaços de Estado Prof. Mário Dantas.
Grafos Árvores Geradoras.
Intr. à Biologia Computacional
Intr. à Biologia Computacional
Intr. à Biologia Computacional ALINHAMENTO DE SEQÜÊNCIAS.
Exercícios PAA- Grafos
Metodologia da Pesquisa em Ensino de Ciências I
FABER Cirurgia & Implantes.
LÓGICA FILOSÓFICA. Teoria Obj: Construir um conceito de lógica
PLATÃO MITO DA CAVERNA 02/04/2017
Introdução e Busca Cega
ALINHAMENTOS LOCAIS E SEMI-GLOBAIS
Introdução à NP-completude Katia S. Guimarães
Algoritmos Gulosos em Grafos
Abordagens para problemas NP-completos
Árvores Binárias e Encaminhamentos
Katia S. Guimarães Heaps Katia S. Guimarães
Remoção e Inserção em Heaps
Katia S. Guimarães Heapsort Katia S. Guimarães
Ferramentas de Planejamento
ÁRVORES Def.: Um grafo é acíclico se não possui ciclos.
Julho Fabrício Murai – Sobre dois fenômenos em redes P2P do tipo BitTorrent Fabrício Murai CTD 2012 Orientadores:Daniel.
Ronaldo Celso Messias Correia –
MANUAIS NA EMPRESA

Disciplina Análise de Algoritmos Bacharelado em CC
Msc. Daniele Carvalho Oliveira
Katia S. Guimarães Busca em Grafos Katia S. Guimarães

Introdução a Algoritmos em Grafos.

Mestrado em Informática
Árvores (introdução) Anjolina Grisi de Oliveira Obs: vários slides foram cedidos por Adolfo Almeida Duran (UFBA)
28 de outubro de Árvores Binárias e Árvores AVL Parte 2 Katia Guimarães.
© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Busca em Grafos IF672 - Algoritmos e Estruturas de Dados CIn - UFPE ©
Grafos Prof. Miguel Gabriel Prazeres de Carvalho.
© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Busca Gulosa em Grafos IF672 - Algoritmos e Estruturas de Dados CIn -
Transcrição da apresentação:

Katia S. Guimarães katia@cin.ufpe.br Busca em Grafos Katia S. Guimarães katia@cin.ufpe.br katia@cin.ufpe.br

Busca em Grafos OBJETIVO: Visitar todos os vértices e arestas do grafo de forma sistemática, para evitar repetições e conseqüente desperdício. Se o grafo é uma árvore enraizada, isto é, uma árvore na qual os vértices obedecem a uma hierarquia, a tarefa é simples. katia@cin.ufpe.br

Busca em Árvores Enraizadas Busca em pré-ordem Raiz visitada antes dos descendentes A B C E F D katia@cin.ufpe.br

Busca em Árvores Enraizadas 2. Busca em pós-ordem Raiz visitada depois dos descendentes B E F C D A katia@cin.ufpe.br

Busca em Árvores Enraizadas 3. Busca em in-ordem Raiz é visitada entre os descendentes Só faz sentido para árvores binárias ou similares (2-3, B, etc.) (Applet) katia@cin.ufpe.br

Algoritmo Pré-ordem Algoritmo Pré-ordem(raiz) Se raiz não nula então Visite (raiz) Pré-ordem (left.raiz) Pré-ordem (right.raiz) katia@cin.ufpe.br

Algoritmo Pós-ordem Algoritmo Pós-ordem(raiz) Se raiz não nula então Pós-ordem (left.raiz) Pós-ordem (right.raiz) Visite (raiz) katia@cin.ufpe.br

Algoritmo In-ordem Algoritmo In-ordem(raiz) Se raiz não nula então In-ordem (left.raiz) Visite (raiz) In-ordem (right.raiz) katia@cin.ufpe.br

Busca em Grafos com Ciclos Se o grafo contém ciclos, é preciso cuidar para evitar que arestas sejam visitadas mais de uma vez. 3 7 2 5 1 4 6 katia@cin.ufpe.br

Busca em Grafos com Ciclos Exemplo: A partir do grafo abaixo obtemos 1 6 4 2 3 7 5 3 7 2 5 1 4 6 katia@cin.ufpe.br

Busca em Grafos com Ciclos Se o grafo não é uma árvore, nós definimos um subgrafo dele que é uma árvore, para servir de “espinha dorsal”. Algoritmo básico: Tome um vértice qualquer s. Marque s. Enquanto houver arestas não visitadas, tome uma aresta (v, w) incidente a algum vértice já marcado. Marque (v, w) (explorada) e v, w (visitados). katia@cin.ufpe.br

Busca em Grafos com Ciclos Há duas técnicas principais para busca: Busca em Profundidade Tomar a aresta não marcada incidente ao vértice visitado mais recentemente. Busca em Largura Tomar a aresta não marcada incidente ao vértice visitado menos recentemente. katia@cin.ufpe.br

Busca em Profundidade JAVA Applet para uma Busca em Profundidade JAVA Applet para Busca em grafo direcionado com pilha katia@cin.ufpe.br

Controle para Busca em Profundidade Main Procedure Inicialize pilha Q como vazia; Desmarque todos os vértices e arestas; Tome um vértice v qualquer; Inclua v em Q; P(v); Remova v de Q. katia@cin.ufpe.br

Algoritmo para Busca em Profundidade Procedimento P(v) Marque v como visitado; Para toda aresta (v, w) incidente a v faça: Se w não marcado então /* aresta de árvore */ { Inclua w em Q; P(w) Remova w de Q } senão se w  pai(v) então /* aresta de retorno */ senão /* aresta de árvore */ katia@cin.ufpe.br

Busca em Profundidade A busca em profundidade biparticiona o conjunto de arestas em: 1 6 4 2 3 7 5 3 7 2 5 1 4 6 - Arestas de Árvore - Arestas de Retorno katia@cin.ufpe.br

Variações de Busca em Profundidade O algoritmo de Busca em Profundidade é usado como controle para muitas aplicações em tempo linear. Ex. Componentes Biconexos (Tolerância a falhas em redes) Ex: No grafo ao lado, os seguintes subgrafos gerados permanecem conexos se cair um link qualquer: G{1, 6} G{3, 7} G{1, 2, 3, 4, 5} 1 6 4 2 3 7 5 katia@cin.ufpe.br

Busca em Largura Cria um centro no vértice inicial e forma “níveis” ou “camadas” a partir deste nó. 1 6 5 1 6 4 5 3 7 4 2 3 2 7 katia@cin.ufpe.br

Busca em Largura Applet para Busca em Largura katia@cin.ufpe.br

Algoritmo para Busca em Largura Tome um vértice qualquer v. Coloque v na fila F. Enquanto F não for vazia faça v  Primeiro elemento da fila F Para toda aresta (v, w) incidente a v faça Se w não marcado então Inclua w em F /* aresta de árvore */ senão se v = pai (w) então /* aresta de árvore */ senão /* aresta de cruzamento */ katia@cin.ufpe.br

Busca em Largura A busca em largura biparticiona as arestas do grafo em arestas de árvore e arestas de cruzamento. 1 6 5 6 4 5 1 3 7 2 3 4 2 7 katia@cin.ufpe.br

Variações de Busca em Largura O algoritmo de Busca em Largura também é largamente usado como controle para aplicações em tempo linear. Ex. Broadcast de mensagens em uma rede katia@cin.ufpe.br