Buscas em Grafos Prof. André Renato 1º Semestre/2012

Slides:



Advertisements
Apresentações semelhantes
Grafos eulerianos 1.
Advertisements

Caminhamento em Grafos
Árvores CC/EC/Mestrado Teoria dos Grafos ‏ 1.
Algoritmos em Grafos (Parte 2)
Antonio Dirceu Rabelo de Vasconcelos Filho
Inteligência Artificial
Fluxo em Redes Prof. Ricardo R. Santos.
Análise de Decisão Aplicada a Gerência Empresarial – UVA Grafos - V
Exercícios PAA- Grafos
Exercícios PAA- Grafos
Pontes Seja (G) o número de componentes conexas de G. Uma ponte é uma aresta a tal que (G - a) > (G)
UFES CC/EC/Mestrado Teoria dos Grafos Árvores. UFES CC/EC/Mestrado Teoria dos Grafos Árvores Grafo Acíclico: não possui ciclos.
Métodos para representação de estruturas hierárquicas
Pesquisa em profundidade
Problemas de fluxo numa rede
Grafos Grafo G = (V, E) V — conjunto de vértices
Estrutura de Dados e Algoritmos e Programação e Computadores II
Ciclos, Vectores e Gráficos Simulação da Queda de Corpos II
Prof. M.Sc. Fábio Francisco da Costa Fontes Abril
Meta - heurísticas Prof. Aurora
Árvores.
Estatística Básica Utilizando o Excel
Medida do Tempo de Execução de um Programa
Busca Cega (Exaustiva)
Ronaldo Celso Messias Correia –
Engenharia de Requisitos Requisito – sistema Caso de uso - usuário
Árvore Geradora Mínima
Grafos Msc. Cintia Carvalho Oliveira Doutoranda em Computação – UFU
Grafos Msc. Cintia Carvalho Oliveira Doutoranda em Computação – UFU
Meta - heurísticas Prof. Aurora
Baseado em: The Algorithm Design Manual Steven S. Skiena
Caminhos e caminhamentos em Grafos
Algoritmos em Grafos.
Formas de representação e manipulação básica
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.
Grafos Árvores Geradoras.
COMO FUNCIONA A SIMULAÇÃO
Teoria dos Grafos Caminhos e Noção de Grafos com pesos
Algoritmos em Grafos Árvores Geradoras Prof. André Renato
Exercícios PAA- Grafos
Linguagem de Programação II Parte IX
Celso C. Ribeiro Caroline T. Rocha
Algorítmos e estrutura de dados III
Operações com grafos União Exemplo
Histórico, exemplos e problemas
O problema do emparelhamento máximo
Busca com informação e exploração
Construção Tabela-verdade
Introdução e Busca Cega
Introdução aos Agentes Inteligentes Busca Cega (Exaustiva)
Katia S. Guimarães Busca em Grafos Katia S. Guimarães
Problema do menor Caminho
Conceitos básicos em grafos
Fundamentos de Programação
Tópicos em Sistemas Inteligentes
Árvore Binária de Busca
UML - Unified Modeling Language
Busca Combinatorial e Métodos de Heurística

Disciplina Análise de Algoritmos Bacharelado em CC
© 2011 Pearson Prentice Hall. Todos os direitos reservados.slide 1 © 2011 Pearson Prentice Hall. Todos os direitos reservados.slide 1 © 2011 Pearson Prentice.
Katia S. Guimarães Busca em Grafos Katia S. Guimarães


Expansão dos Casos de Uso
Análise e Síntese de Algoritmos
Estática Estática Histórico
Questionário (Básico) Autor: Skyup Informática. Atividade - Questionário O módulo permite criar uma série de questões, que deverão ser respondida pelos.
INE5408 Estruturas de Dados Introdução a Árvores - Conceitos - Árvores Binárias - Métodos e algoritmos de percurso - Métodos e algoritmos de balanceamento.
Transcrição da apresentação:

Buscas em Grafos Prof. André Renato 1º Semestre/2012 Algoritmos em Grafos Buscas em Grafos Prof. André Renato 1º Semestre/2012

Buscas em Grafos Uma das operações mais comuns em estruturas de dados consiste em listar os elementos armazenados de acordo com a estruturação utilizada. Em listas, é possível imprimir os elementos um após o outro, na mesma ordem em que se encontram na lista.

Buscas em Grafos Em árvores binárias, existe três formas de se imprimir todos os elementos: em ordem, em pré-ordem e em pós-ordem. 20 15 40 19 32 45 8

Buscas em Grafos Os algoritmos são simples e utilizam eficientemente a estrutura recursiva da árvore. Além disso, existe um nó que é diferente dos demais e através do qual é possível o percorrimento atingindo todos os demais nós: nó raiz.

Buscas em Grafos Em grafos, qual o nó raiz? Como é feita a estruturação recursiva do grafo? A segunda pergunta é de difícil resposta, pois nem sempre o grafo apresenta uma estruturação bem-definida (na verdade, quase nunca). A primeira pergunta é mais simples: não existe uma raiz natural em um grafo.

Buscas em Grafos Como fazer então o percorrimento? O primeiro passo consiste em escolher um nó aleatoriamente para ser o ponto inicial do algoritmo. Deve-se então adotar uma política para o processamento do nó inicial e, sucessivamente, dos seus adjacentes. Existem duas políticas mais usuais, que dão origem às duas formas de buscas mais utilizadas.

Buscas em Grafos Busca em largura A idéia consiste em, partindo de um nó inicial v, armazenar todos os nós u adjacentes a ele. Escolher um nó u e armazenar todos os adjacentes; Passar para o segundo nó u e repetir o processo até que todos os nós imediatamente adjacentes a v sejam tratados. O procedimento se repete para os nós adjacentes aos nós u armazenados.

Buscas em Grafos Além do próprio grafo, é necessário armazenar os nós que estão sendo processados em outra estrutura de dados. Qual???

Buscas em Grafos Ainda existe um problema: normalmente é possível partir de um nó v e atingir um nó u de duas ou mais formas diferentes. Como evitar que este tipo de processamento repetido seja evitado sem excluir previamente nenhuma possibilidade de acesso aos nós?

Buscas em Grafos Uma idéia é colocar nos nós um tipo de marcação que servirá para identificar se o nó já foi processado ou ainda não. Um atributo booleano (ou inteiro) é suficiente para cada nó. Inicialmente, todos os nós são marcados como “não-visitado”. O nó inicial é colocado na fila e marcado como visitado. O algoritmo prossegue como descrito anteriormente.

Buscas em Grafos 2 3 5 1 7 6 8 9 4 10

Buscas em Grafos Busca em profundidade: A idéia agora é partir de um nó inicial v e encontrar um primeiro nó adjacente u. Ao invés de enfileirar o nó u e buscar outro adjacente a v, mudamos imediatamente para o primeiro nó u encontrado e repetimos as operações.

Buscas em Grafos Busca em profundidade: Quando um nó u for totalmente explorado, voltamos o fluxo do algoritmo para o nó que alcançou u primeiramente. Prosseguimos, então, com outro nó adjacente ainda não explorado até que todos os nós adjacente ao nó inicial tenham sido explorados. Neste ponto, o fluxo do algoritmo volta para o inicial encerrando sua execução.

Buscas em Grafos A estrutura de fila utilizada na busca em largura não faz mais sentido, pois os nós vão sendo processados à medida em que são encontrados. No entanto, por precisar mudar constantemente o nó corrente e depois voltar por todos os nós processados até o nó inicial, outra estrutura é necessária.

Buscas em Grafos Qual???? Se vamos utilizar uma pilha, é possível pensar no algoritmo através de uma abordagem recursiva?

Buscas em Grafos 2 3 5 1 7 6 8 9 4 10

Buscas em Grafos Os algoritmos de busca podem revelar informações importantes sobre os vértices, as arestas e o próprio grafo como todo. Para conseguir isto, precisamos alterar levemente os algoritmos, fazendo-os armazenar informações extras durante suas execuções.

Buscas em Grafos Busca em largura: Distância entre os vértices: pode ser entendida como a quantidade mínima de arestas adjacentes entre dois vértices; Para calcular a distância e quais arestas estão envolvidas, adicionaremos duas informações aos vértices: a distância corrente d e o vértice que o precede na busca pred. Vale lembrar que a distância não leva em conta o peso das arestas.

Buscas em Grafos As arestas indicadas pelo valor de pred formam uma estrutura de dados conhecida. Qual? Por que isso acontece?

Buscas em Grafos Busca em profundidade: Quando um nó é visitado, não temos a menor idéia de quando o fluxo do algoritmo voltará para ele. Isto depende da quantidade de nós que serão alcançados através dele. Se imaginarmos que o algoritmo é executado de acordo com horizonte de tempo fictício onde cada visita a um nó demora uma unidade de tempo, podemos anotar quando o nó é começa a ser visitado e quando termina.

Buscas em Grafos Busca em profundidade: Se imaginarmos que o algoritmo é executado de acordo com horizonte de tempo fictício onde cada visita a um nó demora uma unidade de tempo, podemos anotar quando o nó é começa a ser visitado e quando termina. Teremos então duas informações além de pred: o tempo de descoberta do nó desc e o tempo de finalização do nó fim.

Buscas em Grafos Os tempos de descoberta e finalização apresentam uma estrutura de parênteses. Se representarmos a descoberta do nó u pelo símbolo “(u” e a finalização pelo símbolo “u), a sequência de descobertas e finalizações gera uma expressão bem formada, onde os parênteses estão corretamente aninhados.

Buscas em Grafos Exemplo de estrutura de parênteses y z s t x w v u s 1 (s 2 (z 3 (y 4 (x 5 x) 6 y) 7 (w 8 w) 9 z) 10 s) 11 (t 12 (v 13 v) 14 (u 15 u) 16 t)

Buscas em Grafos Classificação de arestas: Pode trazer informações importantes sobre o grafo, como a existência de ciclos (que será visto posteriormente). Arestas de árvore: são as arestas obtidas pela relação de precedência direta entre vértices do u e v do grafo, ao final da busca. A aresta (u,v) é de árvore, se v for descoberto por esta mesma aresta.

Buscas em Grafos Classificação de arestas: Arestas de retorno: são as arestas (u,v) que conectam um vértice u a um vértice v já visitado anteriormente. Arestas de avanço: são as arestas (u,v) que conectam um vértice u a um vértice v descendente não-imediato. Arestas de cruzamento: são as demais arestas do grafo.

Buscas em Grafos y z s t x w v u s t z v u y w x

Buscas em Grafos Ordem topológica: pode ser vista como o posicionamento dos vértices numa linha horizontal, onde todas as arestas estão da esquerda para a direita. A ordem topológica é aplicada a grafos direcionados que não possuam ciclos.

Buscas em Grafos

Buscas em Grafos Algoritmo para ordem topológica: Executar a busca em profundidade; Conforme os vértices são finalizados, colocá- los na frente de uma lista encadeada*; Retornar o início da lista; *Pode ser utilizada uma pilha.

Buscas em Grafos Componentes fortemente conexos: são subconjuntos maximais de vértices, onde para cada par de vértices (u,v), existe uma forma de chegar de u até v e vice- versa. Não faz sentido em grafos não- direcionados. Por quê?????

Buscas em Grafos 1 2 3 4 5 6 7 8 9

Buscas em Grafos Algoritmo para gerar os componentes: Executar a busca em profundidade, anotando os tempos de finalização de cada vértice; Calcular o grafo transposto; Aplicar a busca em profundidade no grafo transposto: Considerar os vértices em ordem decrescente de seus tempos de finalização; Mostrar os vértices de cada árvore como um componente fortemente conexo;

Buscas em Grafos Colocar grafos de exemplo e pseudo- codigo no final