![Page 1: Inteligência Artificial - Aula2 - Busca em Grafos](https://reader031.vdocuments.com.br/reader031/viewer/2022020105/5484f8fbb47959dd0c8b4d86/html5/thumbnails/1.jpg)
14/08/14
Inteligência ArtificialProblemas e Algoritmos de Busca
![Page 2: Inteligência Artificial - Aula2 - Busca em Grafos](https://reader031.vdocuments.com.br/reader031/viewer/2022020105/5484f8fbb47959dd0c8b4d86/html5/thumbnails/2.jpg)
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](https://reader031.vdocuments.com.br/reader031/viewer/2022020105/5484f8fbb47959dd0c8b4d86/html5/thumbnails/3.jpg)
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](https://reader031.vdocuments.com.br/reader031/viewer/2022020105/5484f8fbb47959dd0c8b4d86/html5/thumbnails/4.jpg)
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](https://reader031.vdocuments.com.br/reader031/viewer/2022020105/5484f8fbb47959dd0c8b4d86/html5/thumbnails/5.jpg)
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](https://reader031.vdocuments.com.br/reader031/viewer/2022020105/5484f8fbb47959dd0c8b4d86/html5/thumbnails/6.jpg)
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](https://reader031.vdocuments.com.br/reader031/viewer/2022020105/5484f8fbb47959dd0c8b4d86/html5/thumbnails/7.jpg)
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](https://reader031.vdocuments.com.br/reader031/viewer/2022020105/5484f8fbb47959dd0c8b4d86/html5/thumbnails/8.jpg)
14/08/14
Mundo dos Blocos
Problema: encontrar um plano para rearranjar os blocos.
![Page 9: Inteligência Artificial - Aula2 - Busca em Grafos](https://reader031.vdocuments.com.br/reader031/viewer/2022020105/5484f8fbb47959dd0c8b4d86/html5/thumbnails/9.jpg)
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](https://reader031.vdocuments.com.br/reader031/viewer/2022020105/5484f8fbb47959dd0c8b4d86/html5/thumbnails/10.jpg)
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](https://reader031.vdocuments.com.br/reader031/viewer/2022020105/5484f8fbb47959dd0c8b4d86/html5/thumbnails/11.jpg)
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](https://reader031.vdocuments.com.br/reader031/viewer/2022020105/5484f8fbb47959dd0c8b4d86/html5/thumbnails/12.jpg)
14/08/14
Mundo dos Blocos
![Page 13: Inteligência Artificial - Aula2 - Busca em Grafos](https://reader031.vdocuments.com.br/reader031/viewer/2022020105/5484f8fbb47959dd0c8b4d86/html5/thumbnails/13.jpg)
14/08/14
Mundo dos Blocos
![Page 14: Inteligência Artificial - Aula2 - Busca em Grafos](https://reader031.vdocuments.com.br/reader031/viewer/2022020105/5484f8fbb47959dd0c8b4d86/html5/thumbnails/14.jpg)
14/08/14
![Page 15: Inteligência Artificial - Aula2 - Busca em Grafos](https://reader031.vdocuments.com.br/reader031/viewer/2022020105/5484f8fbb47959dd0c8b4d86/html5/thumbnails/15.jpg)
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](https://reader031.vdocuments.com.br/reader031/viewer/2022020105/5484f8fbb47959dd0c8b4d86/html5/thumbnails/16.jpg)
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](https://reader031.vdocuments.com.br/reader031/viewer/2022020105/5484f8fbb47959dd0c8b4d86/html5/thumbnails/17.jpg)
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](https://reader031.vdocuments.com.br/reader031/viewer/2022020105/5484f8fbb47959dd0c8b4d86/html5/thumbnails/18.jpg)
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](https://reader031.vdocuments.com.br/reader031/viewer/2022020105/5484f8fbb47959dd0c8b4d86/html5/thumbnails/19.jpg)
14/08/14
Busca Não Informada
![Page 20: Inteligência Artificial - Aula2 - Busca em Grafos](https://reader031.vdocuments.com.br/reader031/viewer/2022020105/5484f8fbb47959dd0c8b4d86/html5/thumbnails/20.jpg)
14/08/14
Busca em Profundidade
![Page 21: Inteligência Artificial - Aula2 - Busca em Grafos](https://reader031.vdocuments.com.br/reader031/viewer/2022020105/5484f8fbb47959dd0c8b4d86/html5/thumbnails/21.jpg)
14/08/14
Busca em Profundidade
![Page 22: Inteligência Artificial - Aula2 - Busca em Grafos](https://reader031.vdocuments.com.br/reader031/viewer/2022020105/5484f8fbb47959dd0c8b4d86/html5/thumbnails/22.jpg)
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](https://reader031.vdocuments.com.br/reader031/viewer/2022020105/5484f8fbb47959dd0c8b4d86/html5/thumbnails/23.jpg)
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](https://reader031.vdocuments.com.br/reader031/viewer/2022020105/5484f8fbb47959dd0c8b4d86/html5/thumbnails/24.jpg)
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](https://reader031.vdocuments.com.br/reader031/viewer/2022020105/5484f8fbb47959dd0c8b4d86/html5/thumbnails/25.jpg)
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](https://reader031.vdocuments.com.br/reader031/viewer/2022020105/5484f8fbb47959dd0c8b4d86/html5/thumbnails/26.jpg)
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](https://reader031.vdocuments.com.br/reader031/viewer/2022020105/5484f8fbb47959dd0c8b4d86/html5/thumbnails/27.jpg)
14/08/14
Busca em Largura
![Page 28: Inteligência Artificial - Aula2 - Busca em Grafos](https://reader031.vdocuments.com.br/reader031/viewer/2022020105/5484f8fbb47959dd0c8b4d86/html5/thumbnails/28.jpg)
14/08/14
Busca em Largura
![Page 29: Inteligência Artificial - Aula2 - Busca em Grafos](https://reader031.vdocuments.com.br/reader031/viewer/2022020105/5484f8fbb47959dd0c8b4d86/html5/thumbnails/29.jpg)
14/08/14
Busca em Largura
![Page 30: Inteligência Artificial - Aula2 - Busca em Grafos](https://reader031.vdocuments.com.br/reader031/viewer/2022020105/5484f8fbb47959dd0c8b4d86/html5/thumbnails/30.jpg)
14/08/14
Busca em Largura
![Page 31: Inteligência Artificial - Aula2 - Busca em Grafos](https://reader031.vdocuments.com.br/reader031/viewer/2022020105/5484f8fbb47959dd0c8b4d86/html5/thumbnails/31.jpg)
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](https://reader031.vdocuments.com.br/reader031/viewer/2022020105/5484f8fbb47959dd0c8b4d86/html5/thumbnails/32.jpg)
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](https://reader031.vdocuments.com.br/reader031/viewer/2022020105/5484f8fbb47959dd0c8b4d86/html5/thumbnails/33.jpg)
14/08/14
Busca de Custo Uniforme (UCS)
![Page 34: Inteligência Artificial - Aula2 - Busca em Grafos](https://reader031.vdocuments.com.br/reader031/viewer/2022020105/5484f8fbb47959dd0c8b4d86/html5/thumbnails/34.jpg)
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](https://reader031.vdocuments.com.br/reader031/viewer/2022020105/5484f8fbb47959dd0c8b4d86/html5/thumbnails/35.jpg)
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](https://reader031.vdocuments.com.br/reader031/viewer/2022020105/5484f8fbb47959dd0c8b4d86/html5/thumbnails/36.jpg)
14/08/14
Busca Informada
![Page 37: Inteligência Artificial - Aula2 - Busca em Grafos](https://reader031.vdocuments.com.br/reader031/viewer/2022020105/5484f8fbb47959dd0c8b4d86/html5/thumbnails/37.jpg)
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](https://reader031.vdocuments.com.br/reader031/viewer/2022020105/5484f8fbb47959dd0c8b4d86/html5/thumbnails/38.jpg)
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](https://reader031.vdocuments.com.br/reader031/viewer/2022020105/5484f8fbb47959dd0c8b4d86/html5/thumbnails/39.jpg)
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](https://reader031.vdocuments.com.br/reader031/viewer/2022020105/5484f8fbb47959dd0c8b4d86/html5/thumbnails/40.jpg)
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](https://reader031.vdocuments.com.br/reader031/viewer/2022020105/5484f8fbb47959dd0c8b4d86/html5/thumbnails/41.jpg)
14/08/14
Busca Gulosa (Greedy Search)
Custo: 450
![Page 42: Inteligência Artificial - Aula2 - Busca em Grafos](https://reader031.vdocuments.com.br/reader031/viewer/2022020105/5484f8fbb47959dd0c8b4d86/html5/thumbnails/42.jpg)
14/08/14
![Page 43: Inteligência Artificial - Aula2 - Busca em Grafos](https://reader031.vdocuments.com.br/reader031/viewer/2022020105/5484f8fbb47959dd0c8b4d86/html5/thumbnails/43.jpg)
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](https://reader031.vdocuments.com.br/reader031/viewer/2022020105/5484f8fbb47959dd0c8b4d86/html5/thumbnails/44.jpg)
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](https://reader031.vdocuments.com.br/reader031/viewer/2022020105/5484f8fbb47959dd0c8b4d86/html5/thumbnails/45.jpg)
14/08/14
A*
Custo: 418
![Page 46: Inteligência Artificial - Aula2 - Busca em Grafos](https://reader031.vdocuments.com.br/reader031/viewer/2022020105/5484f8fbb47959dd0c8b4d86/html5/thumbnails/46.jpg)
14/08/14
A*
![Page 47: Inteligência Artificial - Aula2 - Busca em Grafos](https://reader031.vdocuments.com.br/reader031/viewer/2022020105/5484f8fbb47959dd0c8b4d86/html5/thumbnails/47.jpg)
14/08/14
A*
![Page 48: Inteligência Artificial - Aula2 - Busca em Grafos](https://reader031.vdocuments.com.br/reader031/viewer/2022020105/5484f8fbb47959dd0c8b4d86/html5/thumbnails/48.jpg)
14/08/14
A*
![Page 49: Inteligência Artificial - Aula2 - Busca em Grafos](https://reader031.vdocuments.com.br/reader031/viewer/2022020105/5484f8fbb47959dd0c8b4d86/html5/thumbnails/49.jpg)
14/08/14
A*