14/08/14
Inteligência ArtificialProblemas e Algoritmos de Busca
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)
14/08/14
O que é?
● Um algoritmo de busca é projetado para encontrar um item com propriedades especificadas em uma coleção de itens
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.
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.
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.
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.
14/08/14
Mundo dos Blocos
Problema: encontrar um plano para rearranjar os blocos.
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.
14/08/14
Mundo dos Blocos
● Para encontrar um plano, devemos encontrar uma sequência de movimentos que nos levem ao objetivo.
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.
14/08/14
Mundo dos Blocos
14/08/14
Mundo dos Blocos
14/08/14
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
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)
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.
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.
14/08/14
Busca Não Informada
14/08/14
Busca em Profundidade
14/08/14
Busca em Profundidade
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)
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
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)
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)
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
14/08/14
Busca em Largura
14/08/14
Busca em Largura
14/08/14
Busca em Largura
14/08/14
Busca em Largura
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
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)
14/08/14
Busca de Custo Uniforme (UCS)
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
14/08/14
Busca de Custo Uniforme
● Nunca fica presa (algoritmo completo)● Sempre acha a melhor solução
(algoritmo ótimo)
14/08/14
Busca Informada
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á
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
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
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)
14/08/14
Busca Gulosa (Greedy Search)
Custo: 450
14/08/14
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)
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
14/08/14
A*
Custo: 418
14/08/14
A*
14/08/14
A*
14/08/14
A*
14/08/14
A*
Top Related