18/08/15
Inteligência Artificial
Problemas e Algoritmos de Busca
18/08/15
O que é?
● Um problema de busca é uma tarefa que pode
ser resolvida através de uma sequência de
passos começando ...
18/08/15
O que é?
● Um algoritmo de busca é projetado para
encontrar um item com propriedades
especificadas em uma coleção...
18/08/15
Definição de um Problema de Busca
Um problema pode ser resolvido por um algoritmo de busca se ele tiver as seguin...
18/08/15
Definição de um Problema de Busca
● Muitos problemas podem ser vistos como “alcançar um
estado final (meta) a par...
18/08/15
Definição de um Problema de Busca
● um espaço de estados possíveis, incluindo um
estado inicial e um estado final...
18/08/15
Definição de um Problema de Busca
● Indo de casa para a aula:
● estado inicial: casa;
● objetivo: IFRS;
● operado...
18/08/15
Mundo dos Blocos
Problema: encontrar um plano para rearranjar
os blocos.
18/08/15
Mundo dos Blocos
Condições:
● Um bloco pode ser movido apenas se seu topo
está vazio;
● Apenas um bloco pode ser ...
18/08/15
Mundo dos Blocos
● Para encontrar um plano, devemos encontrar
uma sequência de movimentos que nos levem
ao objeti...
18/08/15
Mundo dos Blocos
Como esse exemplo ilustra, existem dois tipos
de conceitos envolvidos nesse problema:
● Situaçõe...
18/08/15
Mundo dos Blocos
18/08/15
Mundo dos Blocos
18/08/15
18/08/15
Descrição Formal do Problema
● Definir o espaço de estados;
● Especificar:
● estado(s) inicial(ais) e
● estado(s)...
18/08/15
Descrição Formal do Problema
● Espaço de estados: conjunto de todos os estados
alcançáveis a partir do estado ini...
18/08/15
Descrição Formal do Problema
Um grafo pode ser usado para representar um espaço de estados onde:
● Os nós corresp...
18/08/15
Solucionando o Problema
● Formulação do problema e do objetivo: quais são os
estados e as ações a considerar? qua...
18/08/15
Busca Não Informada
18/08/15
Busca em Profundidade
18/08/15
Busca em Profundidade
18/08/15
Busca em Profundidade
DFS(G,v,f):
se v = f, retorne [f] //uma lista contendo apenas f
marque v //coloque um 'true...
18/08/15
Busca em Profundidade
● Problema: pode ficar presa em grafos infinitos
e jamais achar o objetivo (algoritmo
incom...
18/08/15
Busca em Profundidade Limitada (LDFS)
LDFS(G,v,f,l):
se l = 0, retorne []
se v = f, retorne f
marque v
Para cada ...
18/08/15
Busca em Profundidade Limitada (LDFS)
● Problema: a busca pode encerrar antes de
chegar no objetivo (algoritmo in...
18/08/15
Busca com Aprofundamento Iterativo (IDDFS)
IDDFS(G,v,f)
caminho = [] //Lista vazia
l = 1
enquanto caminho não con...
18/08/15
Busca em Largura
18/08/15
Busca em Largura
18/08/15
Busca em Largura
18/08/15
Busca em Largura
18/08/15
Busca em Largura (BFS)
BuscaEmLargura(G,s,f)
marque s
insira s em F (F é uma fila)
origem = [] //Lista vazia
enqu...
18/08/15
Busca em Largura (BFS)
● Nunca fica presa, sempre acha uma solução
(algoritmo completo)
● Sempre acha o caminho c...
18/08/15
Grafos com Pesos
● Os algoritmos DFS e BFS são apropriados apenas
para grafos sem pesos nas arestas
● Grafos pode...
18/08/15
Busca de Custo Uniforme (UCS)
18/08/15
Busca de Custo Uniforme (UCS)
BuscaUniforme(G,s,f)
marque s com custo 0
insira s em F (F é uma fila de prioridade...
18/08/15
Busca de Custo Uniforme
● Nunca fica presa (algoritmo completo)
● Sempre acha a melhor solução (algoritmo
ótimo)
...
18/08/15
Busca Informada
18/08/15
Busca Informada
● Os algoritmos vistos até o momento são considerados de
busca não-informada
● Isto significa que...
18/08/15
Busca Informada
● Agora veremos algoritmos de busca informada
● Estes algoritmos são usados quando podemos
fornec...
18/08/15
Busca Informada
● Ou seja, por mais que o UCS seja ótimo, no sentido
de que ele sempre encontra o melhor caminho,...
18/08/15
Heurísticas
● Uma heurística é uma estimativa
● No contexto de algoritmos de busca informada, usaremos heurística...
18/08/15
Busca Informada
● Observe as diferentes formas de calcular o
custo até um vértice:
● UCS → Custo Percorrido
● Bus...
18/08/15
Busca Gulosa (Greedy Search)
● A única diferença da Busca Gulosa para a UCS é
que a ordem da fila não é dada pelo...
18/08/15
Busca Gulosa (Greedy Search)
● A Busca Gulosa é completa desde que não se
visite vértices repetidos
● A Busca Gul...
18/08/15
Busca Gulosa (Greedy Search)
Custo: 450
18/08/15
A* (A-Estrela / A-Star)
● O algoritmo A* também é idêntico à UCS e à
Busca Gulosa
● Porém a ordenação da fila de ...
18/08/15
A*
● O algoritmo A* é completo e ótimo
● Desde que a heurística usada seja admissível
● Uma heurística é dita adm...
18/08/15
A*
Custo: 418
18/08/15
18/08/15
A*
18/08/15
Outras Heurísticas
● Os algoritmos de busca informada não são
limitados a grafos de mapas
● Assim como qualquer a...
18/08/15
A*
18/08/15
A*
Próximos SlideShares
Carregando em…5
×

Inteligência Artificial - Aula2 - Busca em Grafos

3.088 visualizações

Publicada em

Algoritmos de busca em grafos: busca em profundidade, busca em largura, busca gulosa e A*.
O Slideshare não mantém os gifs animados. Para visualizá-los, veja a apresentação original: https://www.dropbox.com/s/ew3ghs41n6fvkb4/aula2-busca-nao-informada.odp?dl=0

Publicada em: Ciências
0 comentários
2 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
3.088
No SlideShare
0
A partir de incorporações
0
Número de incorporações
6
Ações
Compartilhamentos
0
Downloads
98
Comentários
0
Gostaram
2
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Inteligência Artificial - Aula2 - Busca em Grafos

  1. 1. 18/08/15 Inteligência Artificial Problemas e Algoritmos de Busca
  2. 2. 18/08/15 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)
  3. 3. 18/08/15 O que é? ● Um algoritmo de busca é projetado para encontrar um item com propriedades especificadas em uma coleção de itens
  4. 4. 18/08/15 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.
  5. 5. 18/08/15 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.
  6. 6. 18/08/15 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.
  7. 7. 18/08/15 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.
  8. 8. 18/08/15 Mundo dos Blocos Problema: encontrar um plano para rearranjar os blocos.
  9. 9. 18/08/15 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.
  10. 10. 18/08/15 Mundo dos Blocos ● Para encontrar um plano, devemos encontrar uma sequência de movimentos que nos levem ao objetivo.
  11. 11. 18/08/15 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.
  12. 12. 18/08/15 Mundo dos Blocos
  13. 13. 18/08/15 Mundo dos Blocos
  14. 14. 18/08/15
  15. 15. 18/08/15 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
  16. 16. 18/08/15 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)
  17. 17. 18/08/15 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.
  18. 18. 18/08/15 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.
  19. 19. 18/08/15 Busca Não Informada
  20. 20. 18/08/15 Busca em Profundidade
  21. 21. 18/08/15 Busca em Profundidade
  22. 22. 18/08/15 Busca em Profundidade DFS(G,v,f): se v = f, retorne [f] //uma lista contendo apenas f marque v //coloque um 'true' em uma lista global de visitados Para cada vizinho de v faça se vizinho não marcado então p = DFS(G,vizinho,f) //p é um caminho / lista se p contém f, retorne [v p] //v adicionado ao array p retorne [] //caminho vazio
  23. 23. 18/08/15 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
  24. 24. 18/08/15 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)
  25. 25. 18/08/15 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)
  26. 26. 18/08/15 Busca com Aprofundamento Iterativo (IDDFS) IDDFS(G,v,f) caminho = [] //Lista vazia l = 1 enquanto caminho não contém f caminho = ldfs(G,v,f,l) l = l + 1
  27. 27. 18/08/15 Busca em Largura
  28. 28. 18/08/15 Busca em Largura
  29. 29. 18/08/15 Busca em Largura
  30. 30. 18/08/15 Busca em Largura
  31. 31. 18/08/15 Busca em Largura (BFS) BuscaEmLargura(G,s,f) marque s insira s em F (F é uma fila) origem = [] //Lista vazia 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] //Lista contendo f v = f enquanto v != s v = origem[v] caminho = [v caminho] //Adiciona v fim enquanto fim se
  32. 32. 18/08/15 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) ● Se o grafo não tiver custos diferentes nas arestas, o BFS encontra a melhor solução
  33. 33. 18/08/15 Grafos com Pesos ● Os algoritmos DFS e BFS são apropriados apenas para grafos sem pesos nas arestas ● Grafos podem conter pesos que indicam o custo de percorrer uma aresta, como uma distância ou dificuldade ● Para trabalhar com este tipo de grafo, precisaremos de outros algoritmos (mas que são muito similares ao BFS)
  34. 34. 18/08/15 Busca de Custo Uniforme (UCS)
  35. 35. 18/08/15 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 no início da fila 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
  36. 36. 18/08/15 Busca de Custo Uniforme ● Nunca fica presa (algoritmo completo) ● Sempre acha a melhor solução (algoritmo ótimo) ● Fila de prioridades pronta em Java: http://docs.oracle.com/javase/7/docs/api/java /util/PriorityQueue.html
  37. 37. 18/08/15 Busca Informada
  38. 38. 18/08/15 Busca Informada ● Os algoritmos vistos até o momento são considerados de busca não-informada ● Isto significa que eles só sabem onde está o objetivo (estado final) quando chegam nele ● Enquanto isso não acontece, o melhor que pode ser feito é vasculhar tudo em todas as direções ● É como estar em um labirinto sem ideia de onde fica a saída
  39. 39. 18/08/15 Busca Informada ● Agora veremos algoritmos de busca informada ● Estes algoritmos são usados quando podemos fornecer informação de proximidade ao objetivo ● Se sabemos onde está o estado final, podemos direcionar a busca nesta direção ● É como estar em um labirinto onde podemos ver uma torre no local da saída
  40. 40. 18/08/15 Busca Informada ● Ou seja, por mais que o UCS seja ótimo, no sentido de que ele sempre encontra o melhor caminho, ele não é o mais eficiente possível ● Algoritmos de busca informada são muito mais rápidos e eficientes, explorando menos nós no grafo ● Mas para podermos usar um destes algoritmos, precisamos de uma forma de informar a proximidade até o alvo em cada nó do grafo
  41. 41. 18/08/15 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á
  42. 42. 18/08/15 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
  43. 43. 18/08/15 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
  44. 44. 18/08/15 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)
  45. 45. 18/08/15 Busca Gulosa (Greedy Search) Custo: 450
  46. 46. 18/08/15 A* (A-Estrela / A-Star) ● O algoritmo A* também é idêntico à UCS e à Busca Gulosa ● Porém a ordenação da fila de prioridades é pela soma do custo percorrido com a estimativa da distância restante custo total = percorrido + estimado
  47. 47. 18/08/15 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 ● Ou seja, podemos errar as estimativas para baixo, mas nunca para cima – Se a estimativa for sempre 0, caímos no UCS ● 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
  48. 48. 18/08/15 A* Custo: 418
  49. 49. 18/08/15
  50. 50. 18/08/15 A*
  51. 51. 18/08/15 Outras Heurísticas ● Os algoritmos de busca informada não são limitados a grafos de mapas ● Assim como qualquer algoritmo de busca em grafos, eles também são genéricos ● Mas precisamos definir heurísticas adequadas para cada tipo de problema
  52. 52. 18/08/15 A*
  53. 53. 18/08/15 A*

×