Inteligência Artificial - Aula2 - Busca em Grafos

49
14/08/14 Inteligência Artificial Problemas e Algoritmos de Busca

description

Algoritmos de busca em grafos: busca em profundidade, busca em largura, busca gulosa e A*.

Transcript of Inteligência Artificial - Aula2 - Busca em Grafos

Page 1: Inteligência Artificial - Aula2 - Busca em Grafos

14/08/14

Inteligência ArtificialProblemas e Algoritmos de Busca

Page 2: Inteligência Artificial - Aula2 - Busca em Grafos

14/08/14

O que é?

● Um problema de busca é uma tarefa que pode ser resolvida através de uma sequência de passos começando em um estado inicial e tendo um objetivo (ou estado final)

Page 3: Inteligência Artificial - Aula2 - Busca em Grafos

14/08/14

O que é?

● Um algoritmo de busca é projetado para encontrar um item com propriedades especificadas em uma coleção de itens

Page 4: Inteligência Artificial - Aula2 - Busca em Grafos

14/08/14

Definição de um Problema de Busca

Um problema pode ser resolvido por um algoritmo de busca se ele tiver as seguintes características:

● Estado Inicial: uma descrição da situação inicial do agente (por exemplo, o vértice inicial em um grafo)

● Ações Possíveis: o conjunto de ações possíveis (por exemplo, movimentos do xadrez) disponíveis para o agente em cada estado

● Modelo de Transição: descrição dos efeitos de cada ação em cada estado (no caso de um grafo, é uma função que retorna os vizinhos de um dado vértice)

● Objetivo: uma forma de verificar se o agente atingiu seu estado objetivo (em um grafo, pode ser uma função que recebe um estado e retorna verdadeiro ou falso)

● Custos: uma função que calcula o custo de um caminho (uma sequência de ações). Por exemplo, o custo de um caminho entre 2 cidades pode ser a soma dos tempos de cada trecho entre elas.

Page 5: Inteligência Artificial - Aula2 - Busca em Grafos

14/08/14

Definição de um Problema de Busca

● Muitos problemas podem ser vistos como “alcançar um estado final (meta) a partir de um ponto inicial”:

● Existe um espaço de estados que define o problema e suas possíveis soluções de uma maneira formal;

● O espaço pode ser percorrido aplicando operadores para mudar de um estado para o próximo.

Page 6: Inteligência Artificial - Aula2 - Busca em Grafos

14/08/14

Definição de um Problema de Busca

● um espaço de estados possíveis, incluindo um estado inicial e um estado final (objetivo):● dirigir de Foz do Iguaçu a Cascavel;● jogo de 8-números.

Page 7: Inteligência Artificial - Aula2 - Busca em Grafos

14/08/14

Definição de um Problema de Busca

● Indo de casa para a aula:● estado inicial: casa;● objetivo: IFRS;● operadores: dar um passo, virar (para quem mora bem perto).

● Carregando um caminhão de mudança:● estado inicial: apartamento cheio de móveis e outros

objetos;● objetivo: apartamento vazio, caixas e mobília dentro do

caminhão;● operadores: selecionar item, levar até o caminhão, carregar

no caminhão.

Page 8: Inteligência Artificial - Aula2 - Busca em Grafos

14/08/14

Mundo dos Blocos

Problema: encontrar um plano para rearranjar os blocos.

Page 9: Inteligência Artificial - Aula2 - Busca em Grafos

14/08/14

Mundo dos Blocos

Condições:● Um bloco pode ser movido apenas se

seu topo está vazio;● Apenas um bloco pode ser movido de

cada vez;● Um bloco pode ser colocado sobre a

mesa ou sobre outro bloco.

Page 10: Inteligência Artificial - Aula2 - Busca em Grafos

14/08/14

Mundo dos Blocos

● Para encontrar um plano, devemos encontrar uma sequência de movimentos que nos levem ao objetivo.

Page 11: Inteligência Artificial - Aula2 - Busca em Grafos

14/08/14

Mundo dos Blocos

Como esse exemplo ilustra, existem dois tipos de conceitos envolvidos nesse problema:

● Situações do problema;● Movimentos ou ações permitidos, os

quais transformam as situações de problema em outras situações.

Page 12: Inteligência Artificial - Aula2 - Busca em Grafos

14/08/14

Mundo dos Blocos

Page 13: Inteligência Artificial - Aula2 - Busca em Grafos

14/08/14

Mundo dos Blocos

Page 14: Inteligência Artificial - Aula2 - Busca em Grafos

14/08/14

Page 15: Inteligência Artificial - Aula2 - Busca em Grafos

14/08/14

Descrição Formal do Problema

● Definir o espaço de estados;● Especificar:

● estado(s) inicial(ais) e● estado(s) final(ais);

● Especificar:● o conjunto de operadores

Page 16: Inteligência Artificial - Aula2 - Busca em Grafos

14/08/14

Descrição Formal do Problema

● Espaço de estados: conjunto de todos os estados alcançáveis a partir do estado inicial por qualquer sequência de ações;

● Definição do objetivo:● Propriedade abstrata: condição de xeque-mate no

Xadrez;● Conjunto de estados finais do mundo: estar na

cidade-destino.

● Solução: caminho (sequência de ações ou operadores) que leva do estado inicial a um estado final (objetivo)

Page 17: Inteligência Artificial - Aula2 - Busca em Grafos

14/08/14

Descrição Formal do Problema

Um grafo pode ser usado para representar um espaço de estados onde:

● Os nós correspondem a situações de um problema;● As arestas correspondem a movimentos permitidos ou ações

ou passos da solução;● Um dado problema é solucionado encontrando-se um caminho

no grafo.● Um problema é definido por um espaço de estados (um grafo):● Um estado (nó) inicial;● Uma condição de término ou critério de parada; estados (nós)

terminais são aqueles que satisfazem a condição de término.

Page 18: Inteligência Artificial - Aula2 - Busca em Grafos

14/08/14

Solucionando o Problema

● Formulação do problema e do objetivo: quais são os estados e as ações a considerar? qual é (e como representar) o objetivo?

● Busca (solução do problema): processo que gera/analisa sequências de ações para alcançar um objetivo solução = caminho entre estado inicial e estado final;

● Execução: Executar (passo a passo) a solução completa encontrada.

Page 19: Inteligência Artificial - Aula2 - Busca em Grafos

14/08/14

Busca Não Informada

Page 20: Inteligência Artificial - Aula2 - Busca em Grafos

14/08/14

Busca em Profundidade

Page 21: Inteligência Artificial - Aula2 - Busca em Grafos

14/08/14

Busca em Profundidade

Page 22: Inteligência Artificial - Aula2 - Busca em Grafos

14/08/14

Busca em Profundidade

DFS(G,v,f):se v = f, retorne f

marque v

Para cada vizinho de v faça

se vizinho não marcado então

p = DFS(G,vizinho,f)se p contém t, retorne [v p]

retorne [] (caminho vazio)

Page 23: Inteligência Artificial - Aula2 - Busca em Grafos

14/08/14

Busca em Profundidade

● Problema: pode ficar presa em grafos infinitos e jamais achar o objetivo (algoritmo incompleto)

● Solução: Busca em Profundidade Limitada (LDFS)● Defina uma profundidade máxima● Faça a chamada recursiva apenas se não

chegou no limite

Page 24: Inteligência Artificial - Aula2 - Busca em Grafos

14/08/14

Busca em Profundidade Limitada (LDFS)

LDFS(G,v,f,l):se l = 0, retorne []

se v = f, retorne f

marque v

Para cada vizinho de v faça

se vizinho não marcado então

p = LDFS(G,vizinho,f,l-1)

se p contém f, retorne [v p]retorne [] (caminho vazio)

Page 25: Inteligência Artificial - Aula2 - Busca em Grafos

14/08/14

Busca em Profundidade Limitada (LDFS)

● Problema: a busca pode encerrar antes de chegar no objetivo (algoritmo incompleto)

● Solução: Busca com Aprofundamento Iterativo (IDDFS)● Chame a busca em profundidade limitada várias

vezes com limites cada vez maiores● Não fica preso e sempre acha a solução (algoritmo

completo)

Page 26: Inteligência Artificial - Aula2 - Busca em Grafos

14/08/14

Busca com Aprofundamento Iterativo (IDDFS)

IDDFS(G,v,f)caminho = []

l = 1

enquanto caminho não contém f

caminho = ldfs(G,v,f,l)

l = l + 1

Page 27: Inteligência Artificial - Aula2 - Busca em Grafos

14/08/14

Busca em Largura

Page 28: Inteligência Artificial - Aula2 - Busca em Grafos

14/08/14

Busca em Largura

Page 29: Inteligência Artificial - Aula2 - Busca em Grafos

14/08/14

Busca em Largura

Page 30: Inteligência Artificial - Aula2 - Busca em Grafos

14/08/14

Busca em Largura

Page 31: Inteligência Artificial - Aula2 - Busca em Grafos

14/08/14

Busca em Largura (BFS)

BuscaEmLargura(G,s,f)

marque s

insira s em F (F é uma fila)

origem = []

enquanto F não está vazia faça e não contém f

seja v o primeiro vértice de F

para cada vizinho de v faça

se vizinho não está marcado então

marque vizinho

insira vizinho em F

origem[vizinho] = v

fim se

fim para

retira v de F

fim enquanto

caminho = []

se fila contém f

caminho = [f]

v = f

enquanto v != s

v = origem[v]

caminho = [v caminho]

fim enquanto

fim se

Page 32: Inteligência Artificial - Aula2 - Busca em Grafos

14/08/14

Busca em Largura (BFS)

● Nunca fica presa, sempre acha uma solução (algoritmo completo)

● Sempre acha o caminho com a menor quantidade de ações (não necessariamente o melhor) (algoritmo não-ótimo)

Page 33: Inteligência Artificial - Aula2 - Busca em Grafos

14/08/14

Busca de Custo Uniforme (UCS)

Page 34: Inteligência Artificial - Aula2 - Busca em Grafos

14/08/14

Busca de Custo Uniforme (UCS)

BuscaUniforme(G,s,f)

marque s com custo 0

insira s em F (F é uma fila de prioridade)

origem = []

enquanto F não está vazia e não contém f faça

seja v o primeiro vértice de F

para cada vizinho de v faça

se custo até vizinho vindo por v < custo marcado no vizinho então

marque vizinho com custo vindo por v

insira vizinho em F

origem[vizinho] = v

fim se

fim para

retira v de F

fim enquanto

caminho = []

se fila contém f

caminho = [f]

v = f

enquanto v != s

v = origem[v]

caminho = [v caminho]

fim enquanto

fim se

Page 35: Inteligência Artificial - Aula2 - Busca em Grafos

14/08/14

Busca de Custo Uniforme

● Nunca fica presa (algoritmo completo)● Sempre acha a melhor solução

(algoritmo ótimo)

Page 36: Inteligência Artificial - Aula2 - Busca em Grafos

14/08/14

Busca Informada

Page 37: Inteligência Artificial - Aula2 - Busca em Grafos

14/08/14

Heurísticas

● Uma heurística é uma estimativa● No contexto de algoritmos de busca informada,

usaremos heurísticas para estimar a distância que falta de um vértice até o objetivo● Na busca não informada usávamos apenas o custo percorrido● Se usarmos apenas a heurística, teremos a Busca Gulosa (ela sempre

explora o vértice aparentemente mais próximo do objetivo)● Se somarmos o custo percorrido a uma estimativa de quanto falta até o

objetivo, temos o algoritmo A*

● Dizemos que esses algoritmos são de busca informada pois eles conhecem a localização do objetivo e podem usar esta informação para estimar quanto falta para chegar lá

Page 38: Inteligência Artificial - Aula2 - Busca em Grafos

14/08/14

Busca Informada

● Observe as diferentes formas de calcular o custo até um vértice:

● UCS → Custo Percorrido● Busca Gulosa → Custo Restante

Estimado● A* → Custo Percorrido + Custo

Restante Estimado

Page 39: Inteligência Artificial - Aula2 - Busca em Grafos

14/08/14

Busca Gulosa (Greedy Search)

● A única diferença da Busca Gulosa para a UCS é que a ordem da fila não é dada pelo custo percorrido até cada vértice, mas sim pela estimativa da distância restante até o objetivo

Page 40: Inteligência Artificial - Aula2 - Busca em Grafos

14/08/14

Busca Gulosa (Greedy Search)

● A Busca Gulosa é completa desde que não se visite vértices repetidos

● A Busca Gulosa não é ótima● Em geral é mais rápida que a UCS

(expande menos vértices)

Page 41: Inteligência Artificial - Aula2 - Busca em Grafos

14/08/14

Busca Gulosa (Greedy Search)

Custo: 450

Page 42: Inteligência Artificial - Aula2 - Busca em Grafos

14/08/14

Page 43: Inteligência Artificial - Aula2 - Busca em Grafos

14/08/14

A* (A-Estrela / A-Star)

● O algoritmo A* também é idêntico à UCS e à Busca Gulosa

● Porem a ordenação da fila de prioridades é pela soma do custo percorrido com a estimativa da distância restante

f(x) = g(x) + h(x)

Page 44: Inteligência Artificial - Aula2 - Busca em Grafos

14/08/14

A*

● O algoritmo A* é completo e ótimo● Desde que a heurística usada seja admissível● Uma heurística é dita admissível se ela não

superestima o custo real● Por isso, em problemas de mapas em geral, a

distância em linha reta é uma boa heurística: é impossível fazer um trajeto menor que a linha reta, portanto a estimativa nunca fica acima do valor real

Page 45: Inteligência Artificial - Aula2 - Busca em Grafos

14/08/14

A*

Custo: 418

Page 46: Inteligência Artificial - Aula2 - Busca em Grafos

14/08/14

A*

Page 47: Inteligência Artificial - Aula2 - Busca em Grafos

14/08/14

A*

Page 48: Inteligência Artificial - Aula2 - Busca em Grafos

14/08/14

A*

Page 49: Inteligência Artificial - Aula2 - Busca em Grafos

14/08/14

A*