SlideShare uma empresa Scribd logo
1 de 207
Baixar para ler offline
Inteligência Artificial – ACH2016
Aula 03 – Buscas Informadas e Heurı́sticas de
Busca
Norton Trevisan Roman
(norton@usp.br)
26 de fevereiro de 2019
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 1 / 35
Buscas Informadas
Heurı́stica
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 2 / 35
Buscas Informadas
Heurı́stica
Conjunto de regras que aumentam a probabilidade
de atingirmos o objetivo mais rapidamente
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 2 / 35
Buscas Informadas
Heurı́stica
Conjunto de regras que aumentam a probabilidade
de atingirmos o objetivo mais rapidamente
São a forma mais comum de trazer conhecimento adicional
ao problema
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 2 / 35
Buscas Informadas
Heurı́stica
Conjunto de regras que aumentam a probabilidade
de atingirmos o objetivo mais rapidamente
São a forma mais comum de trazer conhecimento adicional
ao problema
Busca com Heurı́stica
Buscas nessa categoria fazem uso de regras práticas
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 2 / 35
Buscas Informadas
Heurı́stica
Conjunto de regras que aumentam a probabilidade
de atingirmos o objetivo mais rapidamente
São a forma mais comum de trazer conhecimento adicional
ao problema
Busca com Heurı́stica
Buscas nessa categoria fazem uso de regras práticas
Algo que pode ser útil em alguns casos, mas não sempre
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 2 / 35
Buscas Informadas
Heurı́stica
Conjunto de regras que aumentam a probabilidade
de atingirmos o objetivo mais rapidamente
São a forma mais comum de trazer conhecimento adicional
ao problema
Busca com Heurı́stica
Buscas nessa categoria fazem uso de regras práticas
Algo que pode ser útil em alguns casos, mas não sempre
Não necessariamente acham a melhor solução, mas
podem encontrar a solução de forma mais eficiente
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 2 / 35
Buscas Informadas
Estratégia Melhor Primeiro
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 3 / 35
Buscas Informadas
Estratégia Melhor Primeiro
A ideia é selecionar um nó para visita com base em
uma função de avaliação f (n)
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 3 / 35
Buscas Informadas
Estratégia Melhor Primeiro
A ideia é selecionar um nó para visita com base em
uma função de avaliação f (n)
Construı́da como uma estimativa de custo
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 3 / 35
Buscas Informadas
Estratégia Melhor Primeiro
A ideia é selecionar um nó para visita com base em
uma função de avaliação f (n)
Construı́da como uma estimativa de custo
Assim, o nó com a menor avaliação é expandido primeiro
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 3 / 35
Buscas Informadas
Estratégia Melhor Primeiro
A ideia é selecionar um nó para visita com base em
uma função de avaliação f (n)
Construı́da como uma estimativa de custo
Assim, o nó com a menor avaliação é expandido primeiro
A escolha de f determina a estratégia de busca
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 3 / 35
Buscas Informadas
Estratégia Melhor Primeiro
A ideia é selecionar um nó para visita com base em
uma função de avaliação f (n)
Construı́da como uma estimativa de custo
Assim, o nó com a menor avaliação é expandido primeiro
A escolha de f determina a estratégia de busca
A maioria dos algoritmos assim incluem uma função
heurı́stica h(n) como componente de f
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 3 / 35
Buscas Informadas
Estratégia Melhor Primeiro
A ideia é selecionar um nó para visita com base em
uma função de avaliação f (n)
Construı́da como uma estimativa de custo
Assim, o nó com a menor avaliação é expandido primeiro
A escolha de f determina a estratégia de busca
A maioria dos algoritmos assim incluem uma função
heurı́stica h(n) como componente de f
Nesse caso, h(n) é uma estimativa do custo do caminho
mais barato do nó n até o objetivo
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 3 / 35
Buscas Informadas
Melhor Primeiro (Gulosa)
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 4 / 35
Buscas Informadas
Melhor Primeiro (Gulosa)
Tenta expandir o nó que parece estar mais próximo
do objetivo
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 4 / 35
Buscas Informadas
Melhor Primeiro (Gulosa)
Tenta expandir o nó que parece estar mais próximo
do objetivo
Avalia o nó usando tão somente a função heurı́stica
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 4 / 35
Buscas Informadas
Melhor Primeiro (Gulosa)
Tenta expandir o nó que parece estar mais próximo
do objetivo
Avalia o nó usando tão somente a função heurı́stica
Ou seja, f (n) = h(n)
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 4 / 35
Buscas Informadas
Melhor Primeiro (Gulosa)
Tenta expandir o nó que parece estar mais próximo
do objetivo
Avalia o nó usando tão somente a função heurı́stica
Ou seja, f (n) = h(n)
Algoritmo idêntico ao da Busca de Custo Uniforme
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 4 / 35
Buscas Informadas
Melhor Primeiro (Gulosa)
Tenta expandir o nó que parece estar mais próximo
do objetivo
Avalia o nó usando tão somente a função heurı́stica
Ou seja, f (n) = h(n)
Algoritmo idêntico ao da Busca de Custo Uniforme
Exceto que, dessa vez, usamos h(n) para escolher o caminho
com menor custo
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 4 / 35
Buscas Informadas
Melhor Primeiro (Gulosa)
Tenta expandir o nó que parece estar mais próximo
do objetivo
Avalia o nó usando tão somente a função heurı́stica
Ou seja, f (n) = h(n)
Algoritmo idêntico ao da Busca de Custo Uniforme
Exceto que, dessa vez, usamos h(n) para escolher o caminho
com menor custo
Ou seja, em vez de expandir (visitar) o nó n com o menor
caminho até então, expande aquele com menor distância
estimada ao objetivo
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 4 / 35
Buscas Informadas
Melhor Primeiro (Gulosa) – Problemas
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 5 / 35
Buscas Informadas
Melhor Primeiro (Gulosa) – Problemas
Dependendo da heurı́stica, nem sempre dá a melhor
solução
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 5 / 35
Buscas Informadas
Melhor Primeiro (Gulosa) – Problemas
Dependendo da heurı́stica, nem sempre dá a melhor
solução
Dependendo da heurı́stica, nem sempre dá uma solução
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 5 / 35
Buscas Informadas
Melhor Primeiro (Gulosa) – Problemas
Dependendo da heurı́stica, nem sempre dá a melhor
solução
Dependendo da heurı́stica, nem sempre dá uma solução
A*
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 5 / 35
Buscas Informadas
Melhor Primeiro (Gulosa) – Problemas
Dependendo da heurı́stica, nem sempre dá a melhor
solução
Dependendo da heurı́stica, nem sempre dá uma solução
A*
Forma mais conhecida de busca to tipo Melhor
Primeiro
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 5 / 35
Buscas Informadas
Melhor Primeiro (Gulosa) – Problemas
Dependendo da heurı́stica, nem sempre dá a melhor
solução
Dependendo da heurı́stica, nem sempre dá uma solução
A*
Forma mais conhecida de busca to tipo Melhor
Primeiro
Avalia o nó combinando o custo do caminho até ele
(g(n)) e o custo estimado dele (h(n)) até o objetivo
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 5 / 35
Buscas Informadas
Melhor Primeiro (Gulosa) – Problemas
Dependendo da heurı́stica, nem sempre dá a melhor
solução
Dependendo da heurı́stica, nem sempre dá uma solução
A*
Forma mais conhecida de busca to tipo Melhor
Primeiro
Avalia o nó combinando o custo do caminho até ele
(g(n)) e o custo estimado dele (h(n)) até o objetivo
Ou seja, f (n) = g(n) + h(n)
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 5 / 35
Buscas Informadas
A*
f (n) é então o custo estimado da melhor solução
passando por n
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 6 / 35
Buscas Informadas
A*
f (n) é então o custo estimado da melhor solução
passando por n
Custo Uniforme
Nó Inicial
Nó a ser
expandido
Objetivo
g(n)
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 6 / 35
Buscas Informadas
A*
f (n) é então o custo estimado da melhor solução
passando por n
Custo Uniforme
Nó Inicial
Nó a ser
expandido
Objetivo
g(n)
Melhor Primeiro
Nó Inicial
Nó a ser
expandido
Objetivo
h(n)
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 6 / 35
Buscas Informadas
A*
f (n) é então o custo estimado da melhor solução
passando por n
Custo Uniforme
Nó Inicial
Nó a ser
expandido
Objetivo
g(n)
Melhor Primeiro
Nó Inicial
Nó a ser
expandido
Objetivo
h(n)
A*
Nó Inicial
Nó a ser
expandido
Objetivo
g(n)
h(n)
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 6 / 35
Buscas Informadas
A*
Se h(n) for uma heurı́stica admissı́vel e consistente,
A* garantidamente encontra o caminho mais curto
ao objetivo
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 7 / 35
Buscas Informadas
A*
Se h(n) for uma heurı́stica admissı́vel e consistente,
A* garantidamente encontra o caminho mais curto
ao objetivo
Heurı́stica admissı́vel:
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 7 / 35
Buscas Informadas
A*
Se h(n) for uma heurı́stica admissı́vel e consistente,
A* garantidamente encontra o caminho mais curto
ao objetivo
Heurı́stica admissı́vel:
Nunca superestima a distância do nó ao objetivo (a distância
real é garantidamente maior ou igual à estimada)
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 7 / 35
Buscas Informadas
A*
Se h(n) for uma heurı́stica admissı́vel e consistente,
A* garantidamente encontra o caminho mais curto
ao objetivo
Heurı́stica admissı́vel:
Nunca superestima a distância do nó ao objetivo (a distância
real é garantidamente maior ou igual à estimada)
Naturalmente otimista: sempre assume o custo para resolver
o problema abaixo do real (ou, no máximo, igual)
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 7 / 35
Buscas Informadas
A*
Se h(n) for uma heurı́stica admissı́vel e consistente,
A* garantidamente encontra o caminho mais curto
ao objetivo
Heurı́stica admissı́vel:
Nunca superestima a distância do nó ao objetivo (a distância
real é garantidamente maior ou igual à estimada)
Naturalmente otimista: sempre assume o custo para resolver
o problema abaixo do real (ou, no máximo, igual)
Ex: Distância euclidiana (linha reta) como forma de
distância entre duas cidades → sempre será ≤ que a real
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 7 / 35
Buscas Informadas
A*
Heurı́stica admissı́vel:
Uma vez que g(n) é o custo real para se chegar a n, se h(n)
nunca superestimar o custo, então f (n) = g(n) + h(n) nunca
superestimará o custo de uma solução que passe por n
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 8 / 35
Buscas Informadas
A*
Heurı́stica admissı́vel:
Uma vez que g(n) é o custo real para se chegar a n, se h(n)
nunca superestimar o custo, então f (n) = g(n) + h(n) nunca
superestimará o custo de uma solução que passe por n
Heurı́stica consistente:
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 8 / 35
Buscas Informadas
A*
Heurı́stica admissı́vel:
Uma vez que g(n) é o custo real para se chegar a n, se h(n)
nunca superestimar o custo, então f (n) = g(n) + h(n) nunca
superestimará o custo de uma solução que passe por n
Heurı́stica consistente:
Se, para cada nó n e sucessor n0
de n, o custo estimado de
atingir o objetivo a partir de n não for maior que o custo de
ir de n a n0
mais o custo estimado de se atingir o objetivo a
partir de n0
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 8 / 35
Buscas Informadas
A*
Heurı́stica admissı́vel:
Uma vez que g(n) é o custo real para se chegar a n, se h(n)
nunca superestimar o custo, então f (n) = g(n) + h(n) nunca
superestimará o custo de uma solução que passe por n
Heurı́stica consistente:
Se, para cada nó n e sucessor n0
de n, o custo estimado de
atingir o objetivo a partir de n não for maior que o custo de
ir de n a n0
mais o custo estimado de se atingir o objetivo a
partir de n0
Ou seja, h(n) ≤ c(n, n0
) + h(n0
)
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 8 / 35
Buscas Informadas
A*
Heurı́stica consistente:
Trata-se de uma forma de desigualdade
triangular: cada lado do triângulo não
pode ser maior que a soma dos outros 2
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 9 / 35
Buscas Informadas
A*
Heurı́stica consistente:
Trata-se de uma forma de desigualdade
triangular: cada lado do triângulo não
pode ser maior que a soma dos outros 2
A*
Nó Inicial
n
n’
Objetivo
g(n)
h(n)
h(n0)
c(n, n0)
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 9 / 35
Buscas Informadas
A*
Heurı́stica consistente:
Trata-se de uma forma de desigualdade
triangular: cada lado do triângulo não
pode ser maior que a soma dos outros 2
Toda heurı́stica consistente é admissı́vel
A*
Nó Inicial
n
n’
Objetivo
g(n)
h(n)
h(n0)
c(n, n0)
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 9 / 35
Buscas Informadas
A*
Heurı́stica consistente:
Trata-se de uma forma de desigualdade
triangular: cada lado do triângulo não
pode ser maior que a soma dos outros 2
Toda heurı́stica consistente é admissı́vel
A* será ótimo quando:
A*
Nó Inicial
n
n’
Objetivo
g(n)
h(n)
h(n0)
c(n, n0)
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 9 / 35
Buscas Informadas
A*
Heurı́stica consistente:
Trata-se de uma forma de desigualdade
triangular: cada lado do triângulo não
pode ser maior que a soma dos outros 2
Toda heurı́stica consistente é admissı́vel
A* será ótimo quando:
Em sua versão para árvores, h(n) for
admissı́vel
A*
Nó Inicial
n
n’
Objetivo
g(n)
h(n)
h(n0)
c(n, n0)
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 9 / 35
Buscas Informadas
A*
Heurı́stica consistente:
Trata-se de uma forma de desigualdade
triangular: cada lado do triângulo não
pode ser maior que a soma dos outros 2
Toda heurı́stica consistente é admissı́vel
A* será ótimo quando:
Em sua versão para árvores, h(n) for
admissı́vel
Em sua versão para grafos, h(n) for
consistente
A*
Nó Inicial
n
n’
Objetivo
g(n)
h(n)
h(n0)
c(n, n0)
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 9 / 35
Buscas Informadas
A* – Exemplo
Considere o seguinte grafo
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 10 / 35
Buscas Informadas
A* – Exemplo
Considere o seguinte grafo
A
B
C
E
D
O
5
5
2
1
3
2
3
2
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 10 / 35
Buscas Informadas
A* – Exemplo
Considere o seguinte grafo
Imagine que ele representa
estradas entre cidades
A
B
C
E
D
O
5
5
2
1
3
2
3
2
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 10 / 35
Buscas Informadas
A* – Exemplo
Considere o seguinte grafo
Imagine que ele representa
estradas entre cidades
h(n) será então a distância,
em linha reta, entre o nó n
e O, conforme a tabela:
A
B
C
E
D
O
5
5
2
1
3
2
3
2
n h(n) n h(n)
A 4 D 0.5
B 2.5 E 0.8
C 2
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 10 / 35
Buscas Informadas
A* – Algoritmo
Q ← Nó inicial;
enquanto Q não estiver vazia faça
C ← Retire de Q o caminho com
menor f (C) = g(C) + h(cabeça(C));
se cabeça(C) = objetivo então
Retorne C
para cada filho f de cabeça(C) faça
Adicione [f,C] a Q
retorna falha
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 11 / 35
Buscas Informadas
A* – Algoritmo
A
B
C
E
D
O
5
5
2
1
3
2
3
2
Q ← Nó inicial;
enquanto Q não estiver vazia faça
C ← Retire de Q o caminho com
menor f (C) = g(C) + h(cabeça(C));
se cabeça(C) = objetivo então
Retorne C
para cada filho f de cabeça(C) faça
Adicione [f,C] a Q
retorna falha
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 11 / 35
Buscas Informadas
A* – Algoritmo
A
B
C
E
D
O
5
5
2
1
3
2
3
2
Q: [A] 0 4 4
Caminho g h f
C:
Q ← Nó inicial;
enquanto Q não estiver vazia faça
C ← Retire de Q o caminho com
menor f (C) = g(C) + h(cabeça(C));
se cabeça(C) = objetivo então
Retorne C
para cada filho f de cabeça(C) faça
Adicione [f,C] a Q
retorna falha
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 11 / 35
Buscas Informadas
A* – Algoritmo
A
B
C
E
D
O
5
5
2
1
3
2
3
2
Q: [A] 0 4 4
Caminho g h f
C:
Q ← Nó inicial;
enquanto Q não estiver vazia faça
C ← Retire de Q o caminho com
menor f (C) = g(C) + h(cabeça(C));
se cabeça(C) = objetivo então
Retorne C
para cada filho f de cabeça(C) faça
Adicione [f,C] a Q
retorna falha
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 11 / 35
Buscas Informadas
A* – Algoritmo
A
B
C
E
D
O
5
5
2
1
3
2
3
2
Q:
Caminho g h f
C: [A] (0,4,4)
Q ← Nó inicial;
enquanto Q não estiver vazia faça
C ← Retire de Q o caminho com
menor f (C) = g(C) + h(cabeça(C));
se cabeça(C) = objetivo então
Retorne C
para cada filho f de cabeça(C) faça
Adicione [f,C] a Q
retorna falha
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 11 / 35
Buscas Informadas
A* – Algoritmo
A
B
C
E
D
O
5
5
2
1
3
2
3
2
Q:
Caminho g h f
C: [A] (0,4,4)
Q ← Nó inicial;
enquanto Q não estiver vazia faça
C ← Retire de Q o caminho com
menor f (C) = g(C) + h(cabeça(C));
se cabeça(C) = objetivo então
Retorne C
para cada filho f de cabeça(C) faça
Adicione [f,C] a Q
retorna falha
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 11 / 35
Buscas Informadas
A* – Algoritmo
A
B
C
E
D
O
5
5
2
1
3
2
3
2
Q:
Caminho g h f
C: [A] (0,4,4)
f
Q ← Nó inicial;
enquanto Q não estiver vazia faça
C ← Retire de Q o caminho com
menor f (C) = g(C) + h(cabeça(C));
se cabeça(C) = objetivo então
Retorne C
para cada filho f de cabeça(C) faça
Adicione [f,C] a Q
retorna falha
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 11 / 35
Buscas Informadas
A* – Algoritmo
A
B
C
E
D
O
5
5
2
1
3
2
3
2
Q: [B,A] 2 2.5 4.5
Caminho g h f
C: [A] (0,4,4)
f
Q ← Nó inicial;
enquanto Q não estiver vazia faça
C ← Retire de Q o caminho com
menor f (C) = g(C) + h(cabeça(C));
se cabeça(C) = objetivo então
Retorne C
para cada filho f de cabeça(C) faça
Adicione [f,C] a Q
retorna falha
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 11 / 35
Buscas Informadas
A* – Algoritmo
A
B
C
E
D
O
5
5
2
1
3
2
3
2
Q: [B,A] 2 2.5 4.5
Caminho g h f
C: [A] (0,4,4)
f
Q ← Nó inicial;
enquanto Q não estiver vazia faça
C ← Retire de Q o caminho com
menor f (C) = g(C) + h(cabeça(C));
se cabeça(C) = objetivo então
Retorne C
para cada filho f de cabeça(C) faça
Adicione [f,C] a Q
retorna falha
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 11 / 35
Buscas Informadas
A* – Algoritmo
A
B
C
E
D
O
5
5
2
1
3
2
3
2
Q: [B,A] 2 2.5 4.5
Caminho g h f
[C,A] 5 2 7
C: [A] (0,4,4)
f
Q ← Nó inicial;
enquanto Q não estiver vazia faça
C ← Retire de Q o caminho com
menor f (C) = g(C) + h(cabeça(C));
se cabeça(C) = objetivo então
Retorne C
para cada filho f de cabeça(C) faça
Adicione [f,C] a Q
retorna falha
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 11 / 35
Buscas Informadas
A* – Algoritmo
A
B
C
E
D
O
5
5
2
1
3
2
3
2
Q: [B,A] 2 2.5 4.5
Caminho g h f
[C,A] 5 2 7
C: [A] (0,4,4)
f
Q ← Nó inicial;
enquanto Q não estiver vazia faça
C ← Retire de Q o caminho com
menor f (C) = g(C) + h(cabeça(C));
se cabeça(C) = objetivo então
Retorne C
para cada filho f de cabeça(C) faça
Adicione [f,C] a Q
retorna falha
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 11 / 35
Buscas Informadas
A* – Algoritmo
A
B
C
E
D
O
5
5
2
1
3
2
3
2
Q: [C,A] 5 2 7
Caminho g h f
C: [B,A] (2,2.5,4.5)
f
Q ← Nó inicial;
enquanto Q não estiver vazia faça
C ← Retire de Q o caminho com
menor f (C) = g(C) + h(cabeça(C));
se cabeça(C) = objetivo então
Retorne C
para cada filho f de cabeça(C) faça
Adicione [f,C] a Q
retorna falha
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 11 / 35
Buscas Informadas
A* – Algoritmo
A
B
C
E
D
O
5
5
2
1
3
2
3
2
Q: [C,A] 5 2 7
Caminho g h f
C: [B,A] (2,2.5,4.5)
f
Q ← Nó inicial;
enquanto Q não estiver vazia faça
C ← Retire de Q o caminho com
menor f (C) = g(C) + h(cabeça(C));
se cabeça(C) = objetivo então
Retorne C
para cada filho f de cabeça(C) faça
Adicione [f,C] a Q
retorna falha
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 11 / 35
Buscas Informadas
A* – Algoritmo
A
B
C
E
D
O
5
5
2
1
3
2
3
2
Q: [C,A] 5 2 7
Caminho g h f
C: [B,A] (2,2.5,4.5)
f
Q ← Nó inicial;
enquanto Q não estiver vazia faça
C ← Retire de Q o caminho com
menor f (C) = g(C) + h(cabeça(C));
se cabeça(C) = objetivo então
Retorne C
para cada filho f de cabeça(C) faça
Adicione [f,C] a Q
retorna falha
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 11 / 35
Buscas Informadas
A* – Algoritmo
A
B
C
E
D
O
5
5
2
1
3
2
3
2
Q: [C,A] 5 2 7
Caminho g h f
[A,B,A] 5 4 9
C: [B,A] (2,2.5,4.5)
f
Q ← Nó inicial;
enquanto Q não estiver vazia faça
C ← Retire de Q o caminho com
menor f (C) = g(C) + h(cabeça(C));
se cabeça(C) = objetivo então
Retorne C
para cada filho f de cabeça(C) faça
Adicione [f,C] a Q
retorna falha
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 11 / 35
Buscas Informadas
A* – Algoritmo
A
B
C
E
D
O
5
5
2
1
3
2
3
2
Q: [C,A] 5 2 7
Caminho g h f
[A,B,A] 5 4 9
C: [B,A] (2,2.5,4.5)
f
Q ← Nó inicial;
enquanto Q não estiver vazia faça
C ← Retire de Q o caminho com
menor f (C) = g(C) + h(cabeça(C));
se cabeça(C) = objetivo então
Retorne C
para cada filho f de cabeça(C) faça
Adicione [f,C] a Q
retorna falha
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 11 / 35
Buscas Informadas
A* – Algoritmo
A
B
C
E
D
O
5
5
2
1
3
2
3
2
Q: [C,A] 5 2 7
Caminho g h f
[A,B,A] 5 4 9
[E,B,A] 4 0.8 4.8
C: [B,A] (2,2.5,4.5)
f
Q ← Nó inicial;
enquanto Q não estiver vazia faça
C ← Retire de Q o caminho com
menor f (C) = g(C) + h(cabeça(C));
se cabeça(C) = objetivo então
Retorne C
para cada filho f de cabeça(C) faça
Adicione [f,C] a Q
retorna falha
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 11 / 35
Buscas Informadas
A* – Algoritmo
A
B
C
E
D
O
5
5
2
1
3
2
3
2
Q: [C,A] 5 2 7
Caminho g h f
[A,B,A] 5 4 9
[E,B,A] 4 0.8 4.8
C: [B,A] (2,2.5,4.5)
f
Q ← Nó inicial;
enquanto Q não estiver vazia faça
C ← Retire de Q o caminho com
menor f (C) = g(C) + h(cabeça(C));
se cabeça(C) = objetivo então
Retorne C
para cada filho f de cabeça(C) faça
Adicione [f,C] a Q
retorna falha
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 11 / 35
Buscas Informadas
A* – Algoritmo
A
B
C
E
D
O
5
5
2
1
3
2
3
2
Q: [C,A] 5 2 7
Caminho g h f
[A,B,A] 5 4 9
C: [E,B,A] (4,0.8,4.8)
f
Q ← Nó inicial;
enquanto Q não estiver vazia faça
C ← Retire de Q o caminho com
menor f (C) = g(C) + h(cabeça(C));
se cabeça(C) = objetivo então
Retorne C
para cada filho f de cabeça(C) faça
Adicione [f,C] a Q
retorna falha
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 11 / 35
Buscas Informadas
A* – Algoritmo
A
B
C
E
D
O
5
5
2
1
3
2
3
2
Q: [C,A] 5 2 7
Caminho g h f
[A,B,A] 5 4 9
C: [E,B,A] (4,0.8,4.8)
f
Q ← Nó inicial;
enquanto Q não estiver vazia faça
C ← Retire de Q o caminho com
menor f (C) = g(C) + h(cabeça(C));
se cabeça(C) = objetivo então
Retorne C
para cada filho f de cabeça(C) faça
Adicione [f,C] a Q
retorna falha
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 11 / 35
Buscas Informadas
A* – Algoritmo
A
B
C
E
D
O
5
5
2
1
3
2
3
2
Q: [C,A] 5 2 7
Caminho g h f
[A,B,A] 5 4 9
C: [E,B,A] (4,0.8,4.8)
f
Q ← Nó inicial;
enquanto Q não estiver vazia faça
C ← Retire de Q o caminho com
menor f (C) = g(C) + h(cabeça(C));
se cabeça(C) = objetivo então
Retorne C
para cada filho f de cabeça(C) faça
Adicione [f,C] a Q
retorna falha
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 11 / 35
Buscas Informadas
A* – Algoritmo
A
B
C
E
D
O
5
5
2
1
3
2
3
2
Q: [C,A] 5 2 7
Caminho g h f
[A,B,A] 5 4 9
[D,E,B,A] 7 0.5 7.5
C: [E,B,A] (4,0.8,4.8)
f
Q ← Nó inicial;
enquanto Q não estiver vazia faça
C ← Retire de Q o caminho com
menor f (C) = g(C) + h(cabeça(C));
se cabeça(C) = objetivo então
Retorne C
para cada filho f de cabeça(C) faça
Adicione [f,C] a Q
retorna falha
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 11 / 35
Buscas Informadas
A* – Algoritmo
A
B
C
E
D
O
5
5
2
1
3
2
3
2
Q: [C,A] 5 2 7
Caminho g h f
[A,B,A] 5 4 9
[D,E,B,A] 7 0.5 7.5
C: [E,B,A] (4,0.8,4.8)
f
Q ← Nó inicial;
enquanto Q não estiver vazia faça
C ← Retire de Q o caminho com
menor f (C) = g(C) + h(cabeça(C));
se cabeça(C) = objetivo então
Retorne C
para cada filho f de cabeça(C) faça
Adicione [f,C] a Q
retorna falha
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 11 / 35
Buscas Informadas
A* – Algoritmo
A
B
C
E
D
O
5
5
2
1
3
2
3
2
Q: [C,A] 5 2 7
Caminho g h f
[A,B,A] 5 4 9
[D,E,B,A] 7 0.5 7.5
[O,E,B,A] 5 0 5
C: [E,B,A] (4,0.8,4.8)
f
Q ← Nó inicial;
enquanto Q não estiver vazia faça
C ← Retire de Q o caminho com
menor f (C) = g(C) + h(cabeça(C));
se cabeça(C) = objetivo então
Retorne C
para cada filho f de cabeça(C) faça
Adicione [f,C] a Q
retorna falha
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 11 / 35
Buscas Informadas
A* – Algoritmo
A
B
C
E
D
O
5
5
2
1
3
2
3
2
Q: [C,A] 5 2 7
Caminho g h f
[A,B,A] 5 4 9
[D,E,B,A] 7 0.5 7.5
[O,E,B,A] 5 0 5
C: [E,B,A] (4,0.8,4.8)
f
Q ← Nó inicial;
enquanto Q não estiver vazia faça
C ← Retire de Q o caminho com
menor f (C) = g(C) + h(cabeça(C));
se cabeça(C) = objetivo então
Retorne C
para cada filho f de cabeça(C) faça
Adicione [f,C] a Q
retorna falha
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 11 / 35
Buscas Informadas
A* – Algoritmo
A
B
C
E
D
O
5
5
2
1
3
2
3
2
Q: [C,A] 5 2 7
Caminho g h f
[A,B,A] 5 4 9
[D,E,B,A] 7 0.5 7.5
C: [O,E,B,A] (5,0,5)
f
Q ← Nó inicial;
enquanto Q não estiver vazia faça
C ← Retire de Q o caminho com
menor f (C) = g(C) + h(cabeça(C));
se cabeça(C) = objetivo então
Retorne C
para cada filho f de cabeça(C) faça
Adicione [f,C] a Q
retorna falha
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 11 / 35
Buscas Informadas
A* – Algoritmo
A
B
C
E
D
O
5
5
2
1
3
2
3
2
Q: [C,A] 5 2 7
Caminho g h f
[A,B,A] 5 4 9
[D,E,B,A] 7 0.5 7.5
C: [O,E,B,A] (5,0,5)
f
Q ← Nó inicial;
enquanto Q não estiver vazia faça
C ← Retire de Q o caminho com
menor f (C) = g(C) + h(cabeça(C));
se cabeça(C) = objetivo então
Retorne C
para cada filho f de cabeça(C) faça
Adicione [f,C] a Q
retorna falha
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 11 / 35
Buscas Informadas
A* – Algoritmo
A
B
C
E
D
O
5
5
2
1
3
2
3
2
Q: [C,A] 5 2 7
Caminho g h f
[A,B,A] 5 4 9
[D,E,B,A] 7 0.5 7.5
C: [O,E,B,A] (5,0,5)
f
Q ← Nó inicial;
enquanto Q não estiver vazia faça
C ← Retire de Q o caminho com
menor f (C) = g(C) + h(cabeça(C));
se cabeça(C) = objetivo então
Retorne C
para cada filho f de cabeça(C) faça
Adicione [f,C] a Q
retorna falha
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 11 / 35
Buscas Informadas
A* – Observações
Nó Inicial
Nó a ser
expandido
Objetivo
g(n)
h(n)
No inı́cio da busca:
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 12 / 35
Buscas Informadas
A* – Observações
Nó Inicial
Nó a ser
expandido
Objetivo
g(n)
h(n)
No inı́cio da busca:
g(n) influi pouco
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 12 / 35
Buscas Informadas
A* – Observações
Nó Inicial
Nó a ser
expandido
Objetivo
g(n)
h(n)
No inı́cio da busca:
g(n) influi pouco
h(n) domina
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 12 / 35
Buscas Informadas
A* – Observações
Nó Inicial
Nó a ser
expandido
Objetivo
g(n)
h(n)
No inı́cio da busca:
g(n) influi pouco
h(n) domina
Escolhe caminho que parece ser o melhor
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 12 / 35
Buscas Informadas
A* – Observações
Nó Inicial
Nó a ser
expandido
Objetivo
g(n)
h(n)
No inı́cio da busca:
g(n) influi pouco
h(n) domina
Escolhe caminho que parece ser o melhor
Ao final da busca:
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 12 / 35
Buscas Informadas
A* – Observações
Nó Inicial
Nó a ser
expandido
Objetivo
g(n)
h(n)
No inı́cio da busca:
g(n) influi pouco
h(n) domina
Escolhe caminho que parece ser o melhor
Ao final da busca:
h(n) influi pouco
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 12 / 35
Buscas Informadas
A* – Observações
Nó Inicial
Nó a ser
expandido
Objetivo
g(n)
h(n)
No inı́cio da busca:
g(n) influi pouco
h(n) domina
Escolhe caminho que parece ser o melhor
Ao final da busca:
h(n) influi pouco
g(n) domina
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 12 / 35
Buscas Informadas
A* – Observações
Nó Inicial
Nó a ser
expandido
Objetivo
g(n)
h(n)
No inı́cio da busca:
g(n) influi pouco
h(n) domina
Escolhe caminho que parece ser o melhor
Ao final da busca:
h(n) influi pouco
g(n) domina
Acaba ficando com o menor caminho
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 12 / 35
Buscas Informadas
A* – Vantagem
A* ignora caminhos que, em linha reta, se afastam
muito do objetivo
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 13 / 35
Buscas Informadas
A* – Vantagem
A* ignora caminhos que, em linha reta, se afastam
muito do objetivo
Busca de custo uniforme pode demorar a perceber que está
no caminho errado
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 13 / 35
Buscas Informadas
A* – Vantagem
A* ignora caminhos que, em linha reta, se afastam
muito do objetivo
Busca de custo uniforme pode demorar a perceber que está
no caminho errado
A* decide (bem) antes.
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 13 / 35
Buscas Informadas
A* – Vantagem
A* ignora caminhos que, em linha reta, se afastam
muito do objetivo
Busca de custo uniforme pode demorar a perceber que está
no caminho errado
A* decide (bem) antes. Ex:
inı́cio
(90) (45)
(0)
objetivo
(100)
(108)
(118)
(129)
(138)
50
50
10
10
10
10
10
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 13 / 35
Buscas Informadas
A* – Vantagem
A* ignora caminhos que, em linha reta, se afastam
muito do objetivo
Busca de custo uniforme pode demorar a perceber que está
no caminho errado
A* decide (bem) antes. Ex:
inı́cio
(90) (45)
(0)
objetivo
(100)
(108)
(118)
(129)
(138)
50
50
10
10
10
10
10
BCU chega até aqui
para então cogitar
tomar o caminho certo
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 13 / 35
Buscas Informadas
A* – Vantagem
A* ignora caminhos que, em linha reta, se afastam
muito do objetivo
Busca de custo uniforme pode demorar a perceber que está
no caminho errado
A* decide (bem) antes. Ex:
inı́cio
(90) (45)
(0)
objetivo
(100)
(108)
(118)
(129)
(138)
50
50
10
10
10
10
10
BCU chega até aqui
para então cogitar
tomar o caminho certo
A* simplesmente não
toma o caminho errado
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 13 / 35
Busca Local
Até agora vimos problemas que eram:
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 14 / 35
Busca Local
Até agora vimos problemas que eram:
Observáveis: sabemos em que estado estamos
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 14 / 35
Busca Local
Até agora vimos problemas que eram:
Observáveis: sabemos em que estado estamos
Se conhecermos todos os estados então o ambiente é
totalmente observável
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 14 / 35
Busca Local
Até agora vimos problemas que eram:
Observáveis: sabemos em que estado estamos
Se conhecermos todos os estados então o ambiente é
totalmente observável
Determinı́sticos: sabemos em que estado estaremos
se executarmos determinada ação
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 14 / 35
Busca Local
Até agora vimos problemas que eram:
Observáveis: sabemos em que estado estamos
Se conhecermos todos os estados então o ambiente é
totalmente observável
Determinı́sticos: sabemos em que estado estaremos
se executarmos determinada ação
De ambientes conhecidos: conhecemos todas as
regras de ação do ambiente
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 14 / 35
Busca Local
Até agora vimos problemas que eram:
Observáveis: sabemos em que estado estamos
Se conhecermos todos os estados então o ambiente é
totalmente observável
Determinı́sticos: sabemos em que estado estaremos
se executarmos determinada ação
De ambientes conhecidos: conhecemos todas as
regras de ação do ambiente
Sabemos a saı́da (ou probabilidade de cada saı́da) para
todas as ações dadas. Se o ambiente for desconhecido,
teremos antes que aprender como ele funciona
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 14 / 35
Busca Local
Problema
E se não for esse o caso?
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 15 / 35
Busca Local
Problema
E se não for esse o caso?
E se não tivermos acesso a toda a informação necessária?
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 15 / 35
Busca Local
Problema
E se não for esse o caso?
E se não tivermos acesso a toda a informação necessária?
E se tivermos restrições de memória, nos proibindo de
carregar o grafo todo?
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 15 / 35
Busca Local
Problema
E se não for esse o caso?
E se não tivermos acesso a toda a informação necessária?
E se tivermos restrições de memória, nos proibindo de
carregar o grafo todo?
Solução
Busca local
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 15 / 35
Busca Local
Problema
E se não for esse o caso?
E se não tivermos acesso a toda a informação necessária?
E se tivermos restrições de memória, nos proibindo de
carregar o grafo todo?
Solução
Busca local
Avalia e modifica apenas o estado atual, em vez de explorar
caminhos a partir de um estado inicial
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 15 / 35
Busca Local
Problema
E se não for esse o caso?
E se não tivermos acesso a toda a informação necessária?
E se tivermos restrições de memória, nos proibindo de
carregar o grafo todo?
Solução
Busca local
Avalia e modifica apenas o estado atual, em vez de explorar
caminhos a partir de um estado inicial
Naturalmente, não se aplica a casos em que queremos o
caminho. Queremos apenas o estado final (objetivo)
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 15 / 35
Busca Local
Caracterı́sticas
Algoritmos de busca local operam usando um único
estado (em vez de um grafo de estados)
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 16 / 35
Busca Local
Caracterı́sticas
Algoritmos de busca local operam usando um único
estado (em vez de um grafo de estados)
Em geral movem-se apenas para vizinhos desse estado
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 16 / 35
Busca Local
Caracterı́sticas
Algoritmos de busca local operam usando um único
estado (em vez de um grafo de estados)
Em geral movem-se apenas para vizinhos desse estado
Tipicamente, os caminhos são ignorados
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 16 / 35
Busca Local
Caracterı́sticas
Algoritmos de busca local operam usando um único
estado (em vez de um grafo de estados)
Em geral movem-se apenas para vizinhos desse estado
Tipicamente, os caminhos são ignorados
Vantagens
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 16 / 35
Busca Local
Caracterı́sticas
Algoritmos de busca local operam usando um único
estado (em vez de um grafo de estados)
Em geral movem-se apenas para vizinhos desse estado
Tipicamente, os caminhos são ignorados
Vantagens
Usam pouca memória
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 16 / 35
Busca Local
Caracterı́sticas
Algoritmos de busca local operam usando um único
estado (em vez de um grafo de estados)
Em geral movem-se apenas para vizinhos desse estado
Tipicamente, os caminhos são ignorados
Vantagens
Usam pouca memória
Frequentemente encontram soluções razoáveis em
grandes (ou mesmo infinitos) espaços de busca
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 16 / 35
Busca Local
Espaços de busca
Podemos definir o espaço de busca em termos de
seus estados (eixo x) e sua função de avaliação (y):
Fonte: AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 17 / 35
Busca Local
Espaços de busca
Se essa função corresponder ao custo, queremos
encontrar o vale mais profundo – mı́nimo global
Fonte: AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 17 / 35
Busca Local
Espaços de busca
Se corresponder ao objetivo, queremos encontrar o
pico mais alto – máximo global
Fonte: AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 17 / 35
Busca Local
Definições
Um algoritmo de busca
local será completo se
sempre encontrar um
objetivo, caso exista
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 18 / 35
Busca Local
Definições
Um algoritmo de busca
local será completo se
sempre encontrar um
objetivo, caso exista
Um algoritmo de busca
local será ótimo se sempre encontrar um máximo
(ou mı́nimo) global
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 18 / 35
Busca Local
Hill Climbing
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 19 / 35
Busca Local
Hill Climbing (Subida da Encosta)
Escolhe, a cada passo,
o nó que parece levar
mais próximo do
objetivo
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 20 / 35
Busca Local
Hill Climbing (Subida da Encosta)
Escolhe, a cada passo,
o nó que parece levar
mais próximo do
objetivo
Move-se continuamente
na direção de valores crescentes – encosta acima
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 20 / 35
Busca Local
Hill Climbing (Subida da Encosta)
Escolhe, a cada passo,
o nó que parece levar
mais próximo do
objetivo
Move-se continuamente
na direção de valores crescentes – encosta acima
Exige uma função de avaliação, para indicar quão
próximo da solução está o nó atual
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 20 / 35
Busca Local
Hill Climbing (Subida da Encosta)
Pára quando atinge um
pico
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 21 / 35
Busca Local
Hill Climbing (Subida da Encosta)
Pára quando atinge um
pico
Nenhum vizinho tem valor
maior que o estado atual
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 21 / 35
Busca Local
Hill Climbing (Subida da Encosta)
Pára quando atinge um
pico
Nenhum vizinho tem valor
maior que o estado atual
Não olha além dos
vizinhos imediatos do estado em que está
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 21 / 35
Busca Local
Hill Climbing (Subida da Encosta)
Pára quando atinge um
pico
Nenhum vizinho tem valor
maior que o estado atual
Não olha além dos
vizinhos imediatos do estado em que está
Considera todos os movimentos a partir do estado
atual, selecionando o melhor deles como próximo
estado
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 21 / 35
Busca Local
Hill Climbing – Algoritmo
atual ← Nó inicial;
enquanto atual 6= objetivo E possui vizinhos faça
vizinho ← vizinho de atual com maior valor de avaliação;
se avaliação(vizinho) ≤ avaliação(atual) então
retorna atual;
atual ← vizinho;
retorna atual;
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 22 / 35
Busca Local
Hill Climbing – Algoritmo
A cada passo, o nó
atual é substituı́do pelo
seu melhor vizinho
atual ← Nó inicial;
enquanto atual 6= objetivo E possui vizinhos faça
vizinho ← vizinho de atual com maior valor de avaliação;
se avaliação(vizinho) ≤ avaliação(atual) então
retorna atual;
atual ← vizinho;
retorna atual;
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 22 / 35
Busca Local
Hill Climbing – Algoritmo
Nessa versão, o melhor
vizinho era aquele com
maior valor de avaliação.
atual ← Nó inicial;
enquanto atual 6= objetivo E possui vizinhos faça
vizinho ← vizinho de atual com maior valor de avaliação;
se avaliação(vizinho) ≤ avaliação(atual) então
retorna atual;
atual ← vizinho;
retorna atual;
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 22 / 35
Busca Local
Hill Climbing – Algoritmo
Se usássemos uma heurı́stica
de custo, teria que ser o
vizinho com o menor custo
atual ← Nó inicial;
enquanto atual 6= objetivo E possui vizinhos faça
vizinho ← vizinho de atual com maior valor de avaliação;
se avaliação(vizinho) ≤ avaliação(atual) então
retorna atual;
atual ← vizinho;
retorna atual;
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 22 / 35
Busca Local
Hill Climbing – Algoritmo
Hill Climbing modifica
então o estado atual
tentando melhorá-lo
atual ← Nó inicial;
enquanto atual 6= objetivo E possui vizinhos faça
vizinho ← vizinho de atual com maior valor de avaliação;
se avaliação(vizinho) ≤ avaliação(atual) então
retorna atual;
atual ← vizinho;
retorna atual;
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 22 / 35
Busca Local
Hill Climbing – Algoritmo
E se houver um empate
entre vizinhos de um nó?
atual ← Nó inicial;
enquanto atual 6= objetivo E possui vizinhos faça
vizinho ← vizinho de atual com maior valor de avaliação;
se avaliação(vizinho) ≤ avaliação(atual) então
retorna atual;
atual ← vizinho;
retorna atual;
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 22 / 35
Busca Local
Hill Climbing – Algoritmo
O algoritmo tipicamente
escolhe um aleatoriamente
atual ← Nó inicial;
enquanto atual 6= objetivo E possui vizinhos faça
vizinho ← vizinho de atual com maior valor de avaliação;
se avaliação(vizinho) ≤ avaliação(atual) então
retorna atual;
atual ← vizinho;
retorna atual;
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 22 / 35
Busca Local
Hill Climbing – Exemplo
Voar de uma cidade a outra, minimizando o número
de conexões
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 23 / 35
Busca Local
Hill Climbing – Exemplo
Voar de uma cidade a outra, minimizando o número
de conexões
Heurı́stica:
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 23 / 35
Busca Local
Hill Climbing – Exemplo
Voar de uma cidade a outra, minimizando o número
de conexões
Heurı́stica:
Quanto maior a distância de cada voo, a partir do estado
corrente, maior a probabilidade de estar mais perto do
destino
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 23 / 35
Busca Local
Hill Climbing – Exemplo
Voar de uma cidade a outra, minimizando o número
de conexões
Heurı́stica:
Quanto maior a distância de cada voo, a partir do estado
corrente, maior a probabilidade de estar mais perto do
destino
Função de Avaliação:
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 23 / 35
Busca Local
Hill Climbing – Exemplo
Voar de uma cidade a outra, minimizando o número
de conexões
Heurı́stica:
Quanto maior a distância de cada voo, a partir do estado
corrente, maior a probabilidade de estar mais perto do
destino
Função de Avaliação:
Maior aresta saindo do nó corrente ⇒ maior valor do nó ao
final dessa aresta
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 23 / 35
Busca Local
Hill Climbing – Exemplo
NY
Chicago
1000
Toronto
800
500
Denver
1900
1000
Houston
900
LA
1000
1500
1800
Urbana
500
Calgary 1500
Fonte: Adaptado de AIUC. Shildt.
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 24 / 35
Busca Local
Hill Climbing – Exemplo
NY
Chicago
1000
Toronto
800
500
Denver
1900
1000
Houston
900
LA
1000
1500
1800
Urbana
500
Calgary 1500
Fonte: Adaptado de AIUC. Shildt.
NY para LA:
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 24 / 35
Busca Local
Hill Climbing – Exemplo
NY
Chicago
1000
Toronto
800
500
Denver
1900
1000
Houston
900
LA
1000
1500
1800
Urbana
500
Calgary 1500
Fonte: Adaptado de AIUC. Shildt.
NY para LA:
atual ← Nó inicial;
enquanto atual 6= objetivo E possui vizinhos faça
vizinho ← vizinho de atual com maior
valor de avaliação;
se avaliação(vizinho) ≤ avaliação(atual)
então
retorna atual;
atual ← vizinho;
retorna atual;
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 24 / 35
Busca Local
Hill Climbing – Exemplo
NY
Chicago
1000
Toronto
800
500
Denver
1900
1000
Houston
900
LA
1000
1500
1800
Urbana
500
Calgary 1500
Fonte: Adaptado de AIUC. Shildt.
at
NY para LA:
atual ← Nó inicial;
enquanto atual 6= objetivo E possui vizinhos faça
vizinho ← vizinho de atual com maior
valor de avaliação;
se avaliação(vizinho) ≤ avaliação(atual)
então
retorna atual;
atual ← vizinho;
retorna atual;
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 24 / 35
Busca Local
Hill Climbing – Exemplo
NY
Chicago
1000
Toronto
800
500
Denver
1900
1000
Houston
900
LA
1000
1500
1800
Urbana
500
Calgary 1500
Fonte: Adaptado de AIUC. Shildt.
at
NY para LA:
atual ← Nó inicial;
enquanto atual 6= objetivo E possui vizinhos faça
vizinho ← vizinho de atual com maior
valor de avaliação;
se avaliação(vizinho) ≤ avaliação(atual)
então
retorna atual;
atual ← vizinho;
retorna atual;
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 24 / 35
Busca Local
Hill Climbing – Exemplo
NY
Chicago
1000
Toronto
800
500
Denver
1900
1000
Houston
900
LA
1000
1500
1800
Urbana
500
Calgary 1500
Fonte: Adaptado de AIUC. Shildt.
at
viz
Quanto mais longe do
nó atual melhor será o
valor de um nó vizinho
NY para LA:
atual ← Nó inicial;
enquanto atual 6= objetivo E possui vizinhos faça
vizinho ← vizinho de atual com maior
valor de avaliação;
se avaliação(vizinho) ≤ avaliação(atual)
então
retorna atual;
atual ← vizinho;
retorna atual;
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 24 / 35
Busca Local
Hill Climbing – Exemplo
NY
Chicago
1000
Toronto
800
500
Denver
1900
1000
Houston
900
LA
1000
1500
1800
Urbana
500
Calgary 1500
Fonte: Adaptado de AIUC. Shildt.
at
viz
Por essa heurı́stica, o
valor do nó atual será
sempre menor que o do
vizinho, se houver vizinho
NY para LA:
atual ← Nó inicial;
enquanto atual 6= objetivo E possui vizinhos faça
vizinho ← vizinho de atual com maior
valor de avaliação;
se avaliação(vizinho) ≤ avaliação(atual)
então
retorna atual;
atual ← vizinho;
retorna atual;
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 24 / 35
Busca Local
Hill Climbing – Exemplo
NY
Chicago
1000
Toronto
800
500
Denver
1900
1000
Houston
900
LA
1000
1500
1800
Urbana
500
Calgary 1500
Fonte: Adaptado de AIUC. Shildt.
at
viz
NY para LA:
atual ← Nó inicial;
enquanto atual 6= objetivo E possui vizinhos faça
vizinho ← vizinho de atual com maior
valor de avaliação;
se avaliação(vizinho) ≤ avaliação(atual)
então
retorna atual;
atual ← vizinho;
retorna atual;
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 24 / 35
Busca Local
Hill Climbing – Exemplo
NY
Chicago
1000
Toronto
800
500
Denver
1900
1000
Houston
900
LA
1000
1500
1800
Urbana
500
Calgary 1500
Fonte: Adaptado de AIUC. Shildt.
at
viz
NY para LA:
atual ← Nó inicial;
enquanto atual 6= objetivo E possui vizinhos faça
vizinho ← vizinho de atual com maior
valor de avaliação;
se avaliação(vizinho) ≤ avaliação(atual)
então
retorna atual;
atual ← vizinho;
retorna atual;
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 24 / 35
Busca Local
Hill Climbing – Exemplo
NY
Chicago
1000
Toronto
800
500
Denver
1900
1000
Houston
900
LA
1000
1500
1800
Urbana
500
Calgary 1500
Fonte: Adaptado de AIUC. Shildt.
at
viz
NY para LA:
atual ← Nó inicial;
enquanto atual 6= objetivo E possui vizinhos faça
vizinho ← vizinho de atual com maior
valor de avaliação;
se avaliação(vizinho) ≤ avaliação(atual)
então
retorna atual;
atual ← vizinho;
retorna atual;
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 24 / 35
Busca Local
Hill Climbing – Exemplo
NY
Chicago
1000
Toronto
800
500
Denver
1900
1000
Houston
900
LA
1000
1500
1800
Urbana
500
Calgary 1500
Fonte: Adaptado de AIUC. Shildt.
at
viz
NY para LA:
atual ← Nó inicial;
enquanto atual 6= objetivo E possui vizinhos faça
vizinho ← vizinho de atual com maior
valor de avaliação;
se avaliação(vizinho) ≤ avaliação(atual)
então
retorna atual;
atual ← vizinho;
retorna atual;
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 24 / 35
Busca Local
Hill Climbing – Exemplo
NY
Chicago
1000
Toronto
800
500
Denver
1900
1000
Houston
900
LA
1000
1500
1800
Urbana
500
Calgary 1500
Fonte: Adaptado de AIUC. Shildt.
at
viz
NY para LA:
atual ← Nó inicial;
enquanto atual 6= objetivo E possui vizinhos faça
vizinho ← vizinho de atual com maior
valor de avaliação;
se avaliação(vizinho) ≤ avaliação(atual)
então
retorna atual;
atual ← vizinho;
retorna atual;
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 24 / 35
Busca Local
Hill Climbing – Exemplo
NY
Chicago
1000
Toronto
800
500
Denver
1900
1000
Houston
900
LA
1000
1500
1800
Urbana
500
Calgary 1500
Fonte: Adaptado de AIUC. Shildt.
at
viz
NY para LA:
atual ← Nó inicial;
enquanto atual 6= objetivo E possui vizinhos faça
vizinho ← vizinho de atual com maior
valor de avaliação;
se avaliação(vizinho) ≤ avaliação(atual)
então
retorna atual;
atual ← vizinho;
retorna atual;
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 24 / 35
Busca Local
Hill Climbing – Exemplo
NY
Chicago
1000
Toronto
800
500
Denver
1900
1000
Houston
900
LA
1000
1500
1800
Urbana
500
Calgary 1500
Fonte: Adaptado de AIUC. Shildt.
at
NY para LA:
atual ← Nó inicial;
enquanto atual 6= objetivo E possui vizinhos faça
vizinho ← vizinho de atual com maior
valor de avaliação;
se avaliação(vizinho) ≤ avaliação(atual)
então
retorna atual;
atual ← vizinho;
retorna atual;
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 24 / 35
Busca Local
Hill Climbing – Problemas
Pode não encontrar uma solução (mesmo havendo
uma)
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 25 / 35
Busca Local
Hill Climbing – Problemas
Pode não encontrar uma solução (mesmo havendo
uma)
Não consegue ir adiante nas seguintes situações:
Fonte: AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 25 / 35
Busca Local
Hill Climbing – Problemas
Pode não encontrar uma solução (mesmo havendo
uma)
Não consegue ir adiante nas seguintes situações:
Máximos locais: quando
não há vizinho melhor,
mas o estado atual não é
a melhor solução (ou nem
mesmo é solução)
Fonte: AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 25 / 35
Busca Local
Hill Climbing – Problemas
Não consegue ir adiante nas seguintes situações:
Cordilheiras: sequência de
máximos locais
Fonte: AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 26 / 35
Busca Local
Hill Climbing – Problemas
Não consegue ir adiante nas seguintes situações:
Cordilheiras: sequência de
máximos locais
Platôs: quando os
vizinhos são iguais ao
estado atual, e este não é
solução
Fonte: AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 26 / 35
Busca Local
Hill Climbing – Problemas
Não consegue ir adiante nas seguintes situações:
Cordilheiras: sequência de
máximos locais
Platôs: quando os
vizinhos são iguais ao
estado atual, e este não é
solução
Podem ser máximos locais
planos
Fonte: AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 26 / 35
Busca Local
Hill Climbing – Problemas
Não consegue ir adiante nas seguintes situações:
Cordilheiras: sequência de
máximos locais
Platôs: quando os
vizinhos são iguais ao
estado atual, e este não é
solução
Podem ser máximos locais
planos ou “ombros”
Fonte: AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 26 / 35
Busca Local
Hill Climbing – Problemas
Não consegue ir adiante nas seguintes situações:
Cordilheiras: sequência de
máximos locais
Platôs: quando os
vizinhos são iguais ao
estado atual, e este não é
solução
Podem ser máximos locais
planos ou “ombros”
Fonte: AIMA. Russell & Norvig.
Solução: Subida da Encosta de Recomeço Aleatório
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 26 / 35
Busca Local
Hill Climbing – Problemas
Não consegue ir adiante nas seguintes situações:
Cordilheiras: sequência de
máximos locais
Platôs: quando os
vizinhos são iguais ao
estado atual, e este não é
solução
Podem ser máximos locais
planos ou “ombros”
Fonte: AIMA. Russell & Norvig.
Solução: Subida da Encosta de Recomeço Aleatório
Random-Restart Hill Climbing
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 26 / 35
Busca Local
Random-Restart Hill Climbing – Funcionamento
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 27 / 35
Busca Local
Random-Restart Hill Climbing – Funcionamento
Se não conseguir da primeira
vez, tente de novo
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 27 / 35
Busca Local
Random-Restart Hill Climbing – Funcionamento
Se não conseguir da primeira
vez, tente de novo
Se ficou preso em um estado
não muito bom:
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 27 / 35
Busca Local
Random-Restart Hill Climbing – Funcionamento
Se não conseguir da primeira
vez, tente de novo
Se ficou preso em um estado
não muito bom:
Gere aleatoriamente um novo
estado inicial
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 27 / 35
Busca Local
Random-Restart Hill Climbing – Funcionamento
Se não conseguir da primeira
vez, tente de novo
Se ficou preso em um estado
não muito bom:
Gere aleatoriamente um novo
estado inicial
Comece a busca novamente
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 27 / 35
Busca Local
Random-Restart Hill Climbing – Funcionamento
Se não conseguir da primeira
vez, tente de novo
Se ficou preso em um estado
não muito bom:
Gere aleatoriamente um novo
estado inicial
Comece a busca novamente Fonte: https://somosamp.wordpress.com/
2017/02/02/toca-raul-tente-outra-vez/
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 27 / 35
Busca Local
Random-Restart Hill Climbing
O algoritmo executa, então, uma série de hill
climbings a partir de estados iniciais aleatórios, até
que o objetivo seja atingido
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 28 / 35
Busca Local
Random-Restart Hill Climbing
O algoritmo executa, então, uma série de hill
climbings a partir de estados iniciais aleatórios, até
que o objetivo seja atingido
Embora não pareça, é muito eficiente
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 28 / 35
Busca Local
Random-Restart Hill Climbing
O algoritmo executa, então, uma série de hill
climbings a partir de estados iniciais aleatórios, até
que o objetivo seja atingido
Embora não pareça, é muito eficiente
Também é completo, com probabilidade ≈ 1
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 28 / 35
Busca Local
Random-Restart Hill Climbing
O algoritmo executa, então, uma série de hill
climbings a partir de estados iniciais aleatórios, até
que o objetivo seja atingido
Embora não pareça, é muito eficiente
Também é completo, com probabilidade ≈ 1
Se cada busca tiver probabilidade p de sucesso, o número de
reinı́cios esperado é 1
p
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 28 / 35
Busca Local
Random-Restart Hill Climbing
O algoritmo executa, então, uma série de hill
climbings a partir de estados iniciais aleatórios, até
que o objetivo seja atingido
Embora não pareça, é muito eficiente
Também é completo, com probabilidade ≈ 1
Se cada busca tiver probabilidade p de sucesso, o número de
reinı́cios esperado é 1
p
Ex: p = 0.01 ⇒ 1
p
= 100
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 28 / 35
Busca Local
Simulated Annealing
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 29 / 35
Busca Local
Simulated Annealing
Por nunca “descer a encosta”, movendo-se para
estados com menor valor (ou maior custo), hill
climbing é garantidamente incompleto
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 30 / 35
Busca Local
Simulated Annealing
Por nunca “descer a encosta”, movendo-se para
estados com menor valor (ou maior custo), hill
climbing é garantidamente incompleto
Sempre pode ficar preso em máximos locais, platôs etc.
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 30 / 35
Busca Local
Simulated Annealing
Por nunca “descer a encosta”, movendo-se para
estados com menor valor (ou maior custo), hill
climbing é garantidamente incompleto
Sempre pode ficar preso em máximos locais, platôs etc.
Por outro lado, até uma caminhada aleatória seria
completa, embora ineficiente
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 30 / 35
Busca Local
Simulated Annealing
Por nunca “descer a encosta”, movendo-se para
estados com menor valor (ou maior custo), hill
climbing é garantidamente incompleto
Sempre pode ficar preso em máximos locais, platôs etc.
Por outro lado, até uma caminhada aleatória seria
completa, embora ineficiente
Quando escolhemos aleatoriamente o vizinho de um nó, a
partir de uma distribuição uniforme
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 30 / 35
Busca Local
Simulated Annealing
Por nunca “descer a encosta”, movendo-se para
estados com menor valor (ou maior custo), hill
climbing é garantidamente incompleto
Sempre pode ficar preso em máximos locais, platôs etc.
Por outro lado, até uma caminhada aleatória seria
completa, embora ineficiente
Quando escolhemos aleatoriamente o vizinho de um nó, a
partir de uma distribuição uniforme
E se combinássemos os 2?
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 30 / 35
Busca Local
Simulated Annealing
Por nunca “descer a encosta”, movendo-se para
estados com menor valor (ou maior custo), hill
climbing é garantidamente incompleto
Sempre pode ficar preso em máximos locais, platôs etc.
Por outro lado, até uma caminhada aleatória seria
completa, embora ineficiente
Quando escolhemos aleatoriamente o vizinho de um nó, a
partir de uma distribuição uniforme
E se combinássemos os 2? Têmpera Simulada
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 30 / 35
Busca Local
Simulated Annealing
Por nunca “descer a encosta”, movendo-se para
estados com menor valor (ou maior custo), hill
climbing é garantidamente incompleto
Sempre pode ficar preso em máximos locais, platôs etc.
Por outro lado, até uma caminhada aleatória seria
completa, embora ineficiente
Quando escolhemos aleatoriamente o vizinho de um nó, a
partir de uma distribuição uniforme
E se combinássemos os 2? Têmpera Simulada
Simulated Annealing
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 30 / 35
Busca Local
Simulated Annealing
Em metalurgia, têmpera é o processo usado para
deixar metais e vidros mais resistentes
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 31 / 35
Busca Local
Simulated Annealing
Em metalurgia, têmpera é o processo usado para
deixar metais e vidros mais resistentes
Estes são aquecidos até uma alta temperatura e então
gradualmente esfriados
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 31 / 35
Busca Local
Simulated Annealing
Em metalurgia, têmpera é o processo usado para
deixar metais e vidros mais resistentes
Estes são aquecidos até uma alta temperatura e então
gradualmente esfriados
E o que isso tem a ver com nosso problema?
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 31 / 35
Busca Local
Simulated Annealing
Em metalurgia, têmpera é o processo usado para
deixar metais e vidros mais resistentes
Estes são aquecidos até uma alta temperatura e então
gradualmente esfriados
E o que isso tem a ver com nosso problema?
Com Simulated Annealing, começamos adicionando um ruı́do
aleatório alto (alta temperatura), e então gradualmente
reduzimos esse ruı́do (baixamos a temperatura)
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 31 / 35
Busca Local
Simulated Annealing
Em metalurgia, têmpera é o processo usado para
deixar metais e vidros mais resistentes
Estes são aquecidos até uma alta temperatura e então
gradualmente esfriados
E o que isso tem a ver com nosso problema?
Com Simulated Annealing, começamos adicionando um ruı́do
aleatório alto (alta temperatura), e então gradualmente
reduzimos esse ruı́do (baixamos a temperatura)
Assim, se estivermos presos em um mı́nimo local (ou
máximo), conseguimos nos livrar dele com um “salto”
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 31 / 35
Busca Local
Simulated Annealing
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 32 / 35
Busca Local
Simulated Annealing
Estamos nos dirigindo
a um máximo local
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 32 / 35
Busca Local
Simulated Annealing
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 32 / 35
Busca Local
Simulated Annealing
Não mais...
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 32 / 35
Busca Local
Simulated Annealing
Nos movemos a um
estado vizinho que nos
guiará em outra direção
na função objetivo
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 32 / 35
Busca Local
Simulated Annealing – Algoritmo
atual ← Nó inicial;
T ← T0;
repita
próximo ← seleciona aleatoriamente vizinho de atual;
∆E ← avaliação(próximo) - avaliação(atual);
se ∆E > 0 então
atual ← próximo
senão
faça atual ← próximo com probabilidade p = e∆E/T
T ← próximaTemperatura(T);
até T < Tfinal ;
retorna atual;
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 33 / 35
Busca Local
Simulated Annealing – Algoritmo
Escolhe o próximo mo-
vimento aleatoriamente
atual ← Nó inicial;
T ← T0;
repita
próximo ← seleciona aleatoriamente vizinho de atual;
∆E ← avaliação(próximo) - avaliação(atual);
se ∆E > 0 então
atual ← próximo
senão
faça atual ← próximo com probabilidade p = e∆E/T
T ← próximaTemperatura(T);
até T < Tfinal ;
retorna atual;
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 33 / 35
Busca Local
Simulated Annealing – Algoritmo
Se o movimento melhora a
situação, é sempre aceito
atual ← Nó inicial;
T ← T0;
repita
próximo ← seleciona aleatoriamente vizinho de atual;
∆E ← avaliação(próximo) - avaliação(atual);
se ∆E > 0 então
atual ← próximo
senão
faça atual ← próximo com probabilidade p = e∆E/T
T ← próximaTemperatura(T);
até T < Tfinal ;
retorna atual;
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 33 / 35
Busca Local
Simulated Annealing – Algoritmo
Do contrário, ele tem proba-
bilidade e∆E/T
de ser aceito
atual ← Nó inicial;
T ← T0;
repita
próximo ← seleciona aleatoriamente vizinho de atual;
∆E ← avaliação(próximo) - avaliação(atual);
se ∆E > 0 então
atual ← próximo
senão
faça atual ← próximo com probabilidade p = e∆E/T
T ← próximaTemperatura(T);
até T < Tfinal ;
retorna atual;
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 33 / 35
Busca Local
Simulated Annealing – Algoritmo
Mapeamento que deter-
mina o valor da tempe-
ratura a cada iteração
atual ← Nó inicial;
T ← T0;
repita
próximo ← seleciona aleatoriamente vizinho de atual;
∆E ← avaliação(próximo) - avaliação(atual);
se ∆E > 0 então
atual ← próximo
senão
faça atual ← próximo com probabilidade p = e∆E/T
T ← próximaTemperatura(T);
até T < Tfinal ;
retorna atual;
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 33 / 35
Busca Local
Simulated Annealing – Algoritmo
Pode ser algo tão simples
quanto T ← αT, α < 1
atual ← Nó inicial;
T ← T0;
repita
próximo ← seleciona aleatoriamente vizinho de atual;
∆E ← avaliação(próximo) - avaliação(atual);
se ∆E > 0 então
atual ← próximo
senão
faça atual ← próximo com probabilidade p = e∆E/T
T ← próximaTemperatura(T);
até T < Tfinal ;
retorna atual;
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 33 / 35
Busca Local
Simulated Annealing – Algoritmo
A probabilidade decresce
exponencialmente com a piora
de próximo (se ∆(E) ≤ 0)
atual ← Nó inicial;
T ← T0;
repita
próximo ← seleciona aleatoriamente vizinho de atual;
∆E ← avaliação(próximo) - avaliação(atual);
se ∆E > 0 então
atual ← próximo
senão
faça atual ← próximo com probabilidade p = e∆E/T
T ← próximaTemperatura(T);
até T < Tfinal ;
retorna atual;
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 33 / 35
Busca Local
Simulated Annealing – Algoritmo
Se ∆(E) ≈ 0, então
p ≈ 1, e a atribuição tem
mais chance de ser aceita
atual ← Nó inicial;
T ← T0;
repita
próximo ← seleciona aleatoriamente vizinho de atual;
∆E ← avaliação(próximo) - avaliação(atual);
se ∆E > 0 então
atual ← próximo
senão
faça atual ← próximo com probabilidade p = e∆E/T
T ← próximaTemperatura(T);
até T < Tfinal ;
retorna atual;
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 33 / 35
Busca Local
Simulated Annealing – Algoritmo
Também decresce exponenci-
almente com a temperatura T
atual ← Nó inicial;
T ← T0;
repita
próximo ← seleciona aleatoriamente vizinho de atual;
∆E ← avaliação(próximo) - avaliação(atual);
se ∆E > 0 então
atual ← próximo
senão
faça atual ← próximo com probabilidade p = e∆E/T
T ← próximaTemperatura(T);
até T < Tfinal ;
retorna atual;
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 33 / 35
Busca Local
Simulated Annealing – Algoritmo
Se T → ∞, então
∆(E)
T → 0 e p → 1
atual ← Nó inicial;
T ← T0;
repita
próximo ← seleciona aleatoriamente vizinho de atual;
∆E ← avaliação(próximo) - avaliação(atual);
se ∆E > 0 então
atual ← próximo
senão
faça atual ← próximo com probabilidade p = e∆E/T
T ← próximaTemperatura(T);
até T < Tfinal ;
retorna atual;
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 33 / 35
Busca Local
Simulated Annealing – Algoritmo
Se T → 0, então ∆(E)
T → −∞
(lembre que ∆(E) ≤ 0) e p → 0
atual ← Nó inicial;
T ← T0;
repita
próximo ← seleciona aleatoriamente vizinho de atual;
∆E ← avaliação(próximo) - avaliação(atual);
se ∆E > 0 então
atual ← próximo
senão
faça atual ← próximo com probabilidade p = e∆E/T
T ← próximaTemperatura(T);
até T < Tfinal ;
retorna atual;
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 33 / 35
Busca Local
Simulated Annealing – Algoritmo
Assim, movimentos ruins têm
mais chance de serem aceitos
no inı́cio, quando T é alta
atual ← Nó inicial;
T ← T0;
repita
próximo ← seleciona aleatoriamente vizinho de atual;
∆E ← avaliação(próximo) - avaliação(atual);
se ∆E > 0 então
atual ← próximo
senão
faça atual ← próximo com probabilidade p = e∆E/T
T ← próximaTemperatura(T);
até T < Tfinal ;
retorna atual;
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 33 / 35
Busca Local
Simulated Annealing – Algoritmo
Na medida em que T reduz,
eles se tornam menos prováveis
atual ← Nó inicial;
T ← T0;
repita
próximo ← seleciona aleatoriamente vizinho de atual;
∆E ← avaliação(próximo) - avaliação(atual);
se ∆E > 0 então
atual ← próximo
senão
faça atual ← próximo com probabilidade p = e∆E/T
T ← próximaTemperatura(T);
até T < Tfinal ;
retorna atual;
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 33 / 35
Busca Local
Simulated Annealing – Algoritmo
Movimentos “colina abaixo” são
então mais aceitos no inı́cio, fi-
cando cada vez menos frequentes
atual ← Nó inicial;
T ← T0;
repita
próximo ← seleciona aleatoriamente vizinho de atual;
∆E ← avaliação(próximo) - avaliação(atual);
se ∆E > 0 então
atual ← próximo
senão
faça atual ← próximo com probabilidade p = e∆E/T
T ← próximaTemperatura(T);
até T < Tfinal ;
retorna atual;
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 33 / 35
Busca Local
Simulated Annealing – Algoritmo
Se próximaTemperatura baixar T de
modo suficientemente lento, o algoritmo
encontrará um ótimo global com p ≈ 1
atual ← Nó inicial;
T ← T0;
repita
próximo ← seleciona aleatoriamente vizinho de atual;
∆E ← avaliação(próximo) - avaliação(atual);
se ∆E > 0 então
atual ← próximo
senão
faça atual ← próximo com probabilidade p = e∆E/T
T ← próximaTemperatura(T);
até T < Tfinal ;
retorna atual;
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 33 / 35
Busca Local
Simulated Annealing – Algoritmo
Aqui medimos o valor de cada nó
atual ← Nó inicial;
T ← T0;
repita
próximo ← seleciona aleatoriamente vizinho de atual;
∆E ← avaliação(próximo) - avaliação(atual);
se ∆E > 0 então
atual ← próximo
senão
faça atual ← próximo com probabilidade p = e∆E/T
T ← próximaTemperatura(T);
até T < Tfinal ;
retorna atual;
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 34 / 35
Busca Local
Simulated Annealing – Algoritmo
Se medı́ssemos custo,
terı́amos que mudar...
atual ← Nó inicial;
T ← T0;
repita
próximo ← seleciona aleatoriamente vizinho de atual;
∆E ← avaliação(próximo) - avaliação(atual);
se ∆E > 0 então
atual ← próximo
senão
faça atual ← próximo com probabilidade p = e∆E/T
T ← próximaTemperatura(T);
até T < Tfinal ;
retorna atual;
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 34 / 35
Busca Local
Simulated Annealing – Algoritmo
Se medı́ssemos custo,
terı́amos que mudar...
atual ← Nó inicial;
T ← T0;
repita
próximo ← seleciona aleatoriamente vizinho de atual;
∆E ← custo(próximo) - custo(atual);
se ∆E ≤ 0 então
atual ← próximo
senão
faça atual ← próximo com probabilidade p = e−∆E/T
T ← próximaTemperatura(T);
até T < Tfinal ;
retorna atual;
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 34 / 35
Referências
Russell, S.; Norvig P. (2010): Artificial Intelligence: A Modern Approach.
Prentice Hall. 3a ed.
Schildt, H. (1987): Artificial Intelligence Using C. Mcgraw-Hill.
https://www.baeldung.com/java-hill-climbing-algorithm
http:
//conteudo.icmc.usp.br/pessoas/sandra/G9_t2/annealing.htm
https://ocw.mit.edu/courses/aeronautics-and-astronautics/
16-410-principles-of-autonomy-and-decision-making-fall-2010/
lecture-notes/MIT16_410F10_lec14.pdf
http://ocw.mit.edu/OcwWeb/
Electrical-Engineering-and-Computer-Science/
6-034Spring-2005/LectureNotes/index.htm
Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 35 / 35

Mais conteúdo relacionado

Mais procurados

Mais procurados (8)

(ACH2044) Inteligência Artificial - Aula 15
(ACH2044) Inteligência Artificial - Aula 15(ACH2044) Inteligência Artificial - Aula 15
(ACH2044) Inteligência Artificial - Aula 15
 
(ACH2044) Inteligência Artificial - Aula 20
(ACH2044) Inteligência Artificial - Aula 20(ACH2044) Inteligência Artificial - Aula 20
(ACH2044) Inteligência Artificial - Aula 20
 
(ACH2044) Inteligência Artificial - Aula 23
(ACH2044) Inteligência Artificial - Aula 23(ACH2044) Inteligência Artificial - Aula 23
(ACH2044) Inteligência Artificial - Aula 23
 
(ACH2044) Inteligência Artificial - Aula 06
(ACH2044) Inteligência Artificial - Aula 06(ACH2044) Inteligência Artificial - Aula 06
(ACH2044) Inteligência Artificial - Aula 06
 
(ACH2044) Inteligência Artificial - Aula 05
(ACH2044) Inteligência Artificial - Aula 05(ACH2044) Inteligência Artificial - Aula 05
(ACH2044) Inteligência Artificial - Aula 05
 
(ACH2044) Inteligência Artificial - Aula 04
(ACH2044) Inteligência Artificial - Aula 04(ACH2044) Inteligência Artificial - Aula 04
(ACH2044) Inteligência Artificial - Aula 04
 
(ACH2044) Inteligência Artificial - Aula 21
(ACH2044) Inteligência Artificial - Aula 21(ACH2044) Inteligência Artificial - Aula 21
(ACH2044) Inteligência Artificial - Aula 21
 
(ACH2044) Inteligência Artificial - Aula 22
(ACH2044) Inteligência Artificial - Aula 22(ACH2044) Inteligência Artificial - Aula 22
(ACH2044) Inteligência Artificial - Aula 22
 

Mais de Norton Trevisan Roman

Mais de Norton Trevisan Roman (14)

(ACH2044) Inteligência Artificial - Aula 24
(ACH2044) Inteligência Artificial - Aula 24(ACH2044) Inteligência Artificial - Aula 24
(ACH2044) Inteligência Artificial - Aula 24
 
(ACH2044) Inteligência Artificial - Aula 19
(ACH2044) Inteligência Artificial - Aula 19(ACH2044) Inteligência Artificial - Aula 19
(ACH2044) Inteligência Artificial - Aula 19
 
(ACH2044) Inteligência Artificial - Aula 18
(ACH2044) Inteligência Artificial - Aula 18(ACH2044) Inteligência Artificial - Aula 18
(ACH2044) Inteligência Artificial - Aula 18
 
(ACH2044) Inteligência Artificial - Aula 16
(ACH2044) Inteligência Artificial - Aula 16(ACH2044) Inteligência Artificial - Aula 16
(ACH2044) Inteligência Artificial - Aula 16
 
(ACH2044) Inteligência Artificial - Aula 13
(ACH2044) Inteligência Artificial - Aula 13(ACH2044) Inteligência Artificial - Aula 13
(ACH2044) Inteligência Artificial - Aula 13
 
(ACH2044) Inteligência Artificial - Aula 12
(ACH2044) Inteligência Artificial - Aula 12(ACH2044) Inteligência Artificial - Aula 12
(ACH2044) Inteligência Artificial - Aula 12
 
(ACH2001) Introdução à Programação - Aula 23
(ACH2001) Introdução à Programação - Aula 23(ACH2001) Introdução à Programação - Aula 23
(ACH2001) Introdução à Programação - Aula 23
 
(ACH2001) Introdução à Programação - Aula 22
(ACH2001) Introdução à Programação - Aula 22(ACH2001) Introdução à Programação - Aula 22
(ACH2001) Introdução à Programação - Aula 22
 
(ACH2001) Introdução à Programação - Aula 21
(ACH2001) Introdução à Programação - Aula 21(ACH2001) Introdução à Programação - Aula 21
(ACH2001) Introdução à Programação - Aula 21
 
(ACH2001) Introdução à Programação - Aula 20
(ACH2001) Introdução à Programação - Aula 20(ACH2001) Introdução à Programação - Aula 20
(ACH2001) Introdução à Programação - Aula 20
 
(ACH2001) Introdução à Programação - Aula 19
(ACH2001) Introdução à Programação - Aula 19(ACH2001) Introdução à Programação - Aula 19
(ACH2001) Introdução à Programação - Aula 19
 
(ACH2001) Introdução à Programação - Aula 18
(ACH2001) Introdução à Programação - Aula 18(ACH2001) Introdução à Programação - Aula 18
(ACH2001) Introdução à Programação - Aula 18
 
(ACH2001) Introdução à Programação - Aula 17
(ACH2001) Introdução à Programação - Aula 17(ACH2001) Introdução à Programação - Aula 17
(ACH2001) Introdução à Programação - Aula 17
 
(ACH2001) Introdução à Programação - Aula 16
(ACH2001) Introdução à Programação - Aula 16(ACH2001) Introdução à Programação - Aula 16
(ACH2001) Introdução à Programação - Aula 16
 

Último

2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
LeloIurk1
 
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
LeloIurk1
 
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
HELENO FAVACHO
 
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
LeloIurk1
 
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdf
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdfReta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdf
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdf
WagnerCamposCEA
 
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdfGEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
RavenaSales1
 
19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf
marlene54545
 
Slide - EBD ADEB 2024 Licao 02 2Trim.pptx
Slide - EBD ADEB 2024 Licao 02 2Trim.pptxSlide - EBD ADEB 2024 Licao 02 2Trim.pptx
Slide - EBD ADEB 2024 Licao 02 2Trim.pptx
edelon1
 

Último (20)

About Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de HotéisAbout Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de Hotéis
 
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
 
Antero de Quental, sua vida e sua escrita
Antero de Quental, sua vida e sua escritaAntero de Quental, sua vida e sua escrita
Antero de Quental, sua vida e sua escrita
 
Atividade - Letra da música Esperando na Janela.
Atividade -  Letra da música Esperando na Janela.Atividade -  Letra da música Esperando na Janela.
Atividade - Letra da música Esperando na Janela.
 
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
 
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxSlides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
 
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
 
Jogo de Rimas - Para impressão em pdf a ser usado para crianças
Jogo de Rimas - Para impressão em pdf a ser usado para criançasJogo de Rimas - Para impressão em pdf a ser usado para crianças
Jogo de Rimas - Para impressão em pdf a ser usado para crianças
 
praticas experimentais 1 ano ensino médio
praticas experimentais 1 ano ensino médiopraticas experimentais 1 ano ensino médio
praticas experimentais 1 ano ensino médio
 
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
 
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfCurrículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
 
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdf
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdfReta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdf
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdf
 
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdfGEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
 
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdfApresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
 
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfProjeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
 
19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf
 
Slide - EBD ADEB 2024 Licao 02 2Trim.pptx
Slide - EBD ADEB 2024 Licao 02 2Trim.pptxSlide - EBD ADEB 2024 Licao 02 2Trim.pptx
Slide - EBD ADEB 2024 Licao 02 2Trim.pptx
 
Camadas da terra -Litosfera conteúdo 6º ano
Camadas da terra -Litosfera  conteúdo 6º anoCamadas da terra -Litosfera  conteúdo 6º ano
Camadas da terra -Litosfera conteúdo 6º ano
 
P P P 2024 - *CIEJA Santana / Tucuruvi*
P P P 2024  - *CIEJA Santana / Tucuruvi*P P P 2024  - *CIEJA Santana / Tucuruvi*
P P P 2024 - *CIEJA Santana / Tucuruvi*
 
Estudar, para quê? Ciência, para quê? Parte 1 e Parte 2
Estudar, para quê?  Ciência, para quê? Parte 1 e Parte 2Estudar, para quê?  Ciência, para quê? Parte 1 e Parte 2
Estudar, para quê? Ciência, para quê? Parte 1 e Parte 2
 

(ACH2044) Inteligência Artificial - Aula 03

  • 1. Inteligência Artificial – ACH2016 Aula 03 – Buscas Informadas e Heurı́sticas de Busca Norton Trevisan Roman (norton@usp.br) 26 de fevereiro de 2019 Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 1 / 35
  • 2. Buscas Informadas Heurı́stica Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 2 / 35
  • 3. Buscas Informadas Heurı́stica Conjunto de regras que aumentam a probabilidade de atingirmos o objetivo mais rapidamente Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 2 / 35
  • 4. Buscas Informadas Heurı́stica Conjunto de regras que aumentam a probabilidade de atingirmos o objetivo mais rapidamente São a forma mais comum de trazer conhecimento adicional ao problema Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 2 / 35
  • 5. Buscas Informadas Heurı́stica Conjunto de regras que aumentam a probabilidade de atingirmos o objetivo mais rapidamente São a forma mais comum de trazer conhecimento adicional ao problema Busca com Heurı́stica Buscas nessa categoria fazem uso de regras práticas Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 2 / 35
  • 6. Buscas Informadas Heurı́stica Conjunto de regras que aumentam a probabilidade de atingirmos o objetivo mais rapidamente São a forma mais comum de trazer conhecimento adicional ao problema Busca com Heurı́stica Buscas nessa categoria fazem uso de regras práticas Algo que pode ser útil em alguns casos, mas não sempre Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 2 / 35
  • 7. Buscas Informadas Heurı́stica Conjunto de regras que aumentam a probabilidade de atingirmos o objetivo mais rapidamente São a forma mais comum de trazer conhecimento adicional ao problema Busca com Heurı́stica Buscas nessa categoria fazem uso de regras práticas Algo que pode ser útil em alguns casos, mas não sempre Não necessariamente acham a melhor solução, mas podem encontrar a solução de forma mais eficiente Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 2 / 35
  • 8. Buscas Informadas Estratégia Melhor Primeiro Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 3 / 35
  • 9. Buscas Informadas Estratégia Melhor Primeiro A ideia é selecionar um nó para visita com base em uma função de avaliação f (n) Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 3 / 35
  • 10. Buscas Informadas Estratégia Melhor Primeiro A ideia é selecionar um nó para visita com base em uma função de avaliação f (n) Construı́da como uma estimativa de custo Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 3 / 35
  • 11. Buscas Informadas Estratégia Melhor Primeiro A ideia é selecionar um nó para visita com base em uma função de avaliação f (n) Construı́da como uma estimativa de custo Assim, o nó com a menor avaliação é expandido primeiro Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 3 / 35
  • 12. Buscas Informadas Estratégia Melhor Primeiro A ideia é selecionar um nó para visita com base em uma função de avaliação f (n) Construı́da como uma estimativa de custo Assim, o nó com a menor avaliação é expandido primeiro A escolha de f determina a estratégia de busca Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 3 / 35
  • 13. Buscas Informadas Estratégia Melhor Primeiro A ideia é selecionar um nó para visita com base em uma função de avaliação f (n) Construı́da como uma estimativa de custo Assim, o nó com a menor avaliação é expandido primeiro A escolha de f determina a estratégia de busca A maioria dos algoritmos assim incluem uma função heurı́stica h(n) como componente de f Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 3 / 35
  • 14. Buscas Informadas Estratégia Melhor Primeiro A ideia é selecionar um nó para visita com base em uma função de avaliação f (n) Construı́da como uma estimativa de custo Assim, o nó com a menor avaliação é expandido primeiro A escolha de f determina a estratégia de busca A maioria dos algoritmos assim incluem uma função heurı́stica h(n) como componente de f Nesse caso, h(n) é uma estimativa do custo do caminho mais barato do nó n até o objetivo Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 3 / 35
  • 15. Buscas Informadas Melhor Primeiro (Gulosa) Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 4 / 35
  • 16. Buscas Informadas Melhor Primeiro (Gulosa) Tenta expandir o nó que parece estar mais próximo do objetivo Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 4 / 35
  • 17. Buscas Informadas Melhor Primeiro (Gulosa) Tenta expandir o nó que parece estar mais próximo do objetivo Avalia o nó usando tão somente a função heurı́stica Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 4 / 35
  • 18. Buscas Informadas Melhor Primeiro (Gulosa) Tenta expandir o nó que parece estar mais próximo do objetivo Avalia o nó usando tão somente a função heurı́stica Ou seja, f (n) = h(n) Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 4 / 35
  • 19. Buscas Informadas Melhor Primeiro (Gulosa) Tenta expandir o nó que parece estar mais próximo do objetivo Avalia o nó usando tão somente a função heurı́stica Ou seja, f (n) = h(n) Algoritmo idêntico ao da Busca de Custo Uniforme Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 4 / 35
  • 20. Buscas Informadas Melhor Primeiro (Gulosa) Tenta expandir o nó que parece estar mais próximo do objetivo Avalia o nó usando tão somente a função heurı́stica Ou seja, f (n) = h(n) Algoritmo idêntico ao da Busca de Custo Uniforme Exceto que, dessa vez, usamos h(n) para escolher o caminho com menor custo Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 4 / 35
  • 21. Buscas Informadas Melhor Primeiro (Gulosa) Tenta expandir o nó que parece estar mais próximo do objetivo Avalia o nó usando tão somente a função heurı́stica Ou seja, f (n) = h(n) Algoritmo idêntico ao da Busca de Custo Uniforme Exceto que, dessa vez, usamos h(n) para escolher o caminho com menor custo Ou seja, em vez de expandir (visitar) o nó n com o menor caminho até então, expande aquele com menor distância estimada ao objetivo Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 4 / 35
  • 22. Buscas Informadas Melhor Primeiro (Gulosa) – Problemas Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 5 / 35
  • 23. Buscas Informadas Melhor Primeiro (Gulosa) – Problemas Dependendo da heurı́stica, nem sempre dá a melhor solução Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 5 / 35
  • 24. Buscas Informadas Melhor Primeiro (Gulosa) – Problemas Dependendo da heurı́stica, nem sempre dá a melhor solução Dependendo da heurı́stica, nem sempre dá uma solução Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 5 / 35
  • 25. Buscas Informadas Melhor Primeiro (Gulosa) – Problemas Dependendo da heurı́stica, nem sempre dá a melhor solução Dependendo da heurı́stica, nem sempre dá uma solução A* Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 5 / 35
  • 26. Buscas Informadas Melhor Primeiro (Gulosa) – Problemas Dependendo da heurı́stica, nem sempre dá a melhor solução Dependendo da heurı́stica, nem sempre dá uma solução A* Forma mais conhecida de busca to tipo Melhor Primeiro Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 5 / 35
  • 27. Buscas Informadas Melhor Primeiro (Gulosa) – Problemas Dependendo da heurı́stica, nem sempre dá a melhor solução Dependendo da heurı́stica, nem sempre dá uma solução A* Forma mais conhecida de busca to tipo Melhor Primeiro Avalia o nó combinando o custo do caminho até ele (g(n)) e o custo estimado dele (h(n)) até o objetivo Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 5 / 35
  • 28. Buscas Informadas Melhor Primeiro (Gulosa) – Problemas Dependendo da heurı́stica, nem sempre dá a melhor solução Dependendo da heurı́stica, nem sempre dá uma solução A* Forma mais conhecida de busca to tipo Melhor Primeiro Avalia o nó combinando o custo do caminho até ele (g(n)) e o custo estimado dele (h(n)) até o objetivo Ou seja, f (n) = g(n) + h(n) Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 5 / 35
  • 29. Buscas Informadas A* f (n) é então o custo estimado da melhor solução passando por n Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 6 / 35
  • 30. Buscas Informadas A* f (n) é então o custo estimado da melhor solução passando por n Custo Uniforme Nó Inicial Nó a ser expandido Objetivo g(n) Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 6 / 35
  • 31. Buscas Informadas A* f (n) é então o custo estimado da melhor solução passando por n Custo Uniforme Nó Inicial Nó a ser expandido Objetivo g(n) Melhor Primeiro Nó Inicial Nó a ser expandido Objetivo h(n) Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 6 / 35
  • 32. Buscas Informadas A* f (n) é então o custo estimado da melhor solução passando por n Custo Uniforme Nó Inicial Nó a ser expandido Objetivo g(n) Melhor Primeiro Nó Inicial Nó a ser expandido Objetivo h(n) A* Nó Inicial Nó a ser expandido Objetivo g(n) h(n) Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 6 / 35
  • 33. Buscas Informadas A* Se h(n) for uma heurı́stica admissı́vel e consistente, A* garantidamente encontra o caminho mais curto ao objetivo Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 7 / 35
  • 34. Buscas Informadas A* Se h(n) for uma heurı́stica admissı́vel e consistente, A* garantidamente encontra o caminho mais curto ao objetivo Heurı́stica admissı́vel: Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 7 / 35
  • 35. Buscas Informadas A* Se h(n) for uma heurı́stica admissı́vel e consistente, A* garantidamente encontra o caminho mais curto ao objetivo Heurı́stica admissı́vel: Nunca superestima a distância do nó ao objetivo (a distância real é garantidamente maior ou igual à estimada) Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 7 / 35
  • 36. Buscas Informadas A* Se h(n) for uma heurı́stica admissı́vel e consistente, A* garantidamente encontra o caminho mais curto ao objetivo Heurı́stica admissı́vel: Nunca superestima a distância do nó ao objetivo (a distância real é garantidamente maior ou igual à estimada) Naturalmente otimista: sempre assume o custo para resolver o problema abaixo do real (ou, no máximo, igual) Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 7 / 35
  • 37. Buscas Informadas A* Se h(n) for uma heurı́stica admissı́vel e consistente, A* garantidamente encontra o caminho mais curto ao objetivo Heurı́stica admissı́vel: Nunca superestima a distância do nó ao objetivo (a distância real é garantidamente maior ou igual à estimada) Naturalmente otimista: sempre assume o custo para resolver o problema abaixo do real (ou, no máximo, igual) Ex: Distância euclidiana (linha reta) como forma de distância entre duas cidades → sempre será ≤ que a real Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 7 / 35
  • 38. Buscas Informadas A* Heurı́stica admissı́vel: Uma vez que g(n) é o custo real para se chegar a n, se h(n) nunca superestimar o custo, então f (n) = g(n) + h(n) nunca superestimará o custo de uma solução que passe por n Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 8 / 35
  • 39. Buscas Informadas A* Heurı́stica admissı́vel: Uma vez que g(n) é o custo real para se chegar a n, se h(n) nunca superestimar o custo, então f (n) = g(n) + h(n) nunca superestimará o custo de uma solução que passe por n Heurı́stica consistente: Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 8 / 35
  • 40. Buscas Informadas A* Heurı́stica admissı́vel: Uma vez que g(n) é o custo real para se chegar a n, se h(n) nunca superestimar o custo, então f (n) = g(n) + h(n) nunca superestimará o custo de uma solução que passe por n Heurı́stica consistente: Se, para cada nó n e sucessor n0 de n, o custo estimado de atingir o objetivo a partir de n não for maior que o custo de ir de n a n0 mais o custo estimado de se atingir o objetivo a partir de n0 Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 8 / 35
  • 41. Buscas Informadas A* Heurı́stica admissı́vel: Uma vez que g(n) é o custo real para se chegar a n, se h(n) nunca superestimar o custo, então f (n) = g(n) + h(n) nunca superestimará o custo de uma solução que passe por n Heurı́stica consistente: Se, para cada nó n e sucessor n0 de n, o custo estimado de atingir o objetivo a partir de n não for maior que o custo de ir de n a n0 mais o custo estimado de se atingir o objetivo a partir de n0 Ou seja, h(n) ≤ c(n, n0 ) + h(n0 ) Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 8 / 35
  • 42. Buscas Informadas A* Heurı́stica consistente: Trata-se de uma forma de desigualdade triangular: cada lado do triângulo não pode ser maior que a soma dos outros 2 Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 9 / 35
  • 43. Buscas Informadas A* Heurı́stica consistente: Trata-se de uma forma de desigualdade triangular: cada lado do triângulo não pode ser maior que a soma dos outros 2 A* Nó Inicial n n’ Objetivo g(n) h(n) h(n0) c(n, n0) Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 9 / 35
  • 44. Buscas Informadas A* Heurı́stica consistente: Trata-se de uma forma de desigualdade triangular: cada lado do triângulo não pode ser maior que a soma dos outros 2 Toda heurı́stica consistente é admissı́vel A* Nó Inicial n n’ Objetivo g(n) h(n) h(n0) c(n, n0) Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 9 / 35
  • 45. Buscas Informadas A* Heurı́stica consistente: Trata-se de uma forma de desigualdade triangular: cada lado do triângulo não pode ser maior que a soma dos outros 2 Toda heurı́stica consistente é admissı́vel A* será ótimo quando: A* Nó Inicial n n’ Objetivo g(n) h(n) h(n0) c(n, n0) Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 9 / 35
  • 46. Buscas Informadas A* Heurı́stica consistente: Trata-se de uma forma de desigualdade triangular: cada lado do triângulo não pode ser maior que a soma dos outros 2 Toda heurı́stica consistente é admissı́vel A* será ótimo quando: Em sua versão para árvores, h(n) for admissı́vel A* Nó Inicial n n’ Objetivo g(n) h(n) h(n0) c(n, n0) Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 9 / 35
  • 47. Buscas Informadas A* Heurı́stica consistente: Trata-se de uma forma de desigualdade triangular: cada lado do triângulo não pode ser maior que a soma dos outros 2 Toda heurı́stica consistente é admissı́vel A* será ótimo quando: Em sua versão para árvores, h(n) for admissı́vel Em sua versão para grafos, h(n) for consistente A* Nó Inicial n n’ Objetivo g(n) h(n) h(n0) c(n, n0) Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 9 / 35
  • 48. Buscas Informadas A* – Exemplo Considere o seguinte grafo Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 10 / 35
  • 49. Buscas Informadas A* – Exemplo Considere o seguinte grafo A B C E D O 5 5 2 1 3 2 3 2 Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 10 / 35
  • 50. Buscas Informadas A* – Exemplo Considere o seguinte grafo Imagine que ele representa estradas entre cidades A B C E D O 5 5 2 1 3 2 3 2 Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 10 / 35
  • 51. Buscas Informadas A* – Exemplo Considere o seguinte grafo Imagine que ele representa estradas entre cidades h(n) será então a distância, em linha reta, entre o nó n e O, conforme a tabela: A B C E D O 5 5 2 1 3 2 3 2 n h(n) n h(n) A 4 D 0.5 B 2.5 E 0.8 C 2 Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 10 / 35
  • 52. Buscas Informadas A* – Algoritmo Q ← Nó inicial; enquanto Q não estiver vazia faça C ← Retire de Q o caminho com menor f (C) = g(C) + h(cabeça(C)); se cabeça(C) = objetivo então Retorne C para cada filho f de cabeça(C) faça Adicione [f,C] a Q retorna falha Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 11 / 35
  • 53. Buscas Informadas A* – Algoritmo A B C E D O 5 5 2 1 3 2 3 2 Q ← Nó inicial; enquanto Q não estiver vazia faça C ← Retire de Q o caminho com menor f (C) = g(C) + h(cabeça(C)); se cabeça(C) = objetivo então Retorne C para cada filho f de cabeça(C) faça Adicione [f,C] a Q retorna falha Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 11 / 35
  • 54. Buscas Informadas A* – Algoritmo A B C E D O 5 5 2 1 3 2 3 2 Q: [A] 0 4 4 Caminho g h f C: Q ← Nó inicial; enquanto Q não estiver vazia faça C ← Retire de Q o caminho com menor f (C) = g(C) + h(cabeça(C)); se cabeça(C) = objetivo então Retorne C para cada filho f de cabeça(C) faça Adicione [f,C] a Q retorna falha Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 11 / 35
  • 55. Buscas Informadas A* – Algoritmo A B C E D O 5 5 2 1 3 2 3 2 Q: [A] 0 4 4 Caminho g h f C: Q ← Nó inicial; enquanto Q não estiver vazia faça C ← Retire de Q o caminho com menor f (C) = g(C) + h(cabeça(C)); se cabeça(C) = objetivo então Retorne C para cada filho f de cabeça(C) faça Adicione [f,C] a Q retorna falha Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 11 / 35
  • 56. Buscas Informadas A* – Algoritmo A B C E D O 5 5 2 1 3 2 3 2 Q: Caminho g h f C: [A] (0,4,4) Q ← Nó inicial; enquanto Q não estiver vazia faça C ← Retire de Q o caminho com menor f (C) = g(C) + h(cabeça(C)); se cabeça(C) = objetivo então Retorne C para cada filho f de cabeça(C) faça Adicione [f,C] a Q retorna falha Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 11 / 35
  • 57. Buscas Informadas A* – Algoritmo A B C E D O 5 5 2 1 3 2 3 2 Q: Caminho g h f C: [A] (0,4,4) Q ← Nó inicial; enquanto Q não estiver vazia faça C ← Retire de Q o caminho com menor f (C) = g(C) + h(cabeça(C)); se cabeça(C) = objetivo então Retorne C para cada filho f de cabeça(C) faça Adicione [f,C] a Q retorna falha Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 11 / 35
  • 58. Buscas Informadas A* – Algoritmo A B C E D O 5 5 2 1 3 2 3 2 Q: Caminho g h f C: [A] (0,4,4) f Q ← Nó inicial; enquanto Q não estiver vazia faça C ← Retire de Q o caminho com menor f (C) = g(C) + h(cabeça(C)); se cabeça(C) = objetivo então Retorne C para cada filho f de cabeça(C) faça Adicione [f,C] a Q retorna falha Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 11 / 35
  • 59. Buscas Informadas A* – Algoritmo A B C E D O 5 5 2 1 3 2 3 2 Q: [B,A] 2 2.5 4.5 Caminho g h f C: [A] (0,4,4) f Q ← Nó inicial; enquanto Q não estiver vazia faça C ← Retire de Q o caminho com menor f (C) = g(C) + h(cabeça(C)); se cabeça(C) = objetivo então Retorne C para cada filho f de cabeça(C) faça Adicione [f,C] a Q retorna falha Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 11 / 35
  • 60. Buscas Informadas A* – Algoritmo A B C E D O 5 5 2 1 3 2 3 2 Q: [B,A] 2 2.5 4.5 Caminho g h f C: [A] (0,4,4) f Q ← Nó inicial; enquanto Q não estiver vazia faça C ← Retire de Q o caminho com menor f (C) = g(C) + h(cabeça(C)); se cabeça(C) = objetivo então Retorne C para cada filho f de cabeça(C) faça Adicione [f,C] a Q retorna falha Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 11 / 35
  • 61. Buscas Informadas A* – Algoritmo A B C E D O 5 5 2 1 3 2 3 2 Q: [B,A] 2 2.5 4.5 Caminho g h f [C,A] 5 2 7 C: [A] (0,4,4) f Q ← Nó inicial; enquanto Q não estiver vazia faça C ← Retire de Q o caminho com menor f (C) = g(C) + h(cabeça(C)); se cabeça(C) = objetivo então Retorne C para cada filho f de cabeça(C) faça Adicione [f,C] a Q retorna falha Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 11 / 35
  • 62. Buscas Informadas A* – Algoritmo A B C E D O 5 5 2 1 3 2 3 2 Q: [B,A] 2 2.5 4.5 Caminho g h f [C,A] 5 2 7 C: [A] (0,4,4) f Q ← Nó inicial; enquanto Q não estiver vazia faça C ← Retire de Q o caminho com menor f (C) = g(C) + h(cabeça(C)); se cabeça(C) = objetivo então Retorne C para cada filho f de cabeça(C) faça Adicione [f,C] a Q retorna falha Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 11 / 35
  • 63. Buscas Informadas A* – Algoritmo A B C E D O 5 5 2 1 3 2 3 2 Q: [C,A] 5 2 7 Caminho g h f C: [B,A] (2,2.5,4.5) f Q ← Nó inicial; enquanto Q não estiver vazia faça C ← Retire de Q o caminho com menor f (C) = g(C) + h(cabeça(C)); se cabeça(C) = objetivo então Retorne C para cada filho f de cabeça(C) faça Adicione [f,C] a Q retorna falha Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 11 / 35
  • 64. Buscas Informadas A* – Algoritmo A B C E D O 5 5 2 1 3 2 3 2 Q: [C,A] 5 2 7 Caminho g h f C: [B,A] (2,2.5,4.5) f Q ← Nó inicial; enquanto Q não estiver vazia faça C ← Retire de Q o caminho com menor f (C) = g(C) + h(cabeça(C)); se cabeça(C) = objetivo então Retorne C para cada filho f de cabeça(C) faça Adicione [f,C] a Q retorna falha Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 11 / 35
  • 65. Buscas Informadas A* – Algoritmo A B C E D O 5 5 2 1 3 2 3 2 Q: [C,A] 5 2 7 Caminho g h f C: [B,A] (2,2.5,4.5) f Q ← Nó inicial; enquanto Q não estiver vazia faça C ← Retire de Q o caminho com menor f (C) = g(C) + h(cabeça(C)); se cabeça(C) = objetivo então Retorne C para cada filho f de cabeça(C) faça Adicione [f,C] a Q retorna falha Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 11 / 35
  • 66. Buscas Informadas A* – Algoritmo A B C E D O 5 5 2 1 3 2 3 2 Q: [C,A] 5 2 7 Caminho g h f [A,B,A] 5 4 9 C: [B,A] (2,2.5,4.5) f Q ← Nó inicial; enquanto Q não estiver vazia faça C ← Retire de Q o caminho com menor f (C) = g(C) + h(cabeça(C)); se cabeça(C) = objetivo então Retorne C para cada filho f de cabeça(C) faça Adicione [f,C] a Q retorna falha Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 11 / 35
  • 67. Buscas Informadas A* – Algoritmo A B C E D O 5 5 2 1 3 2 3 2 Q: [C,A] 5 2 7 Caminho g h f [A,B,A] 5 4 9 C: [B,A] (2,2.5,4.5) f Q ← Nó inicial; enquanto Q não estiver vazia faça C ← Retire de Q o caminho com menor f (C) = g(C) + h(cabeça(C)); se cabeça(C) = objetivo então Retorne C para cada filho f de cabeça(C) faça Adicione [f,C] a Q retorna falha Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 11 / 35
  • 68. Buscas Informadas A* – Algoritmo A B C E D O 5 5 2 1 3 2 3 2 Q: [C,A] 5 2 7 Caminho g h f [A,B,A] 5 4 9 [E,B,A] 4 0.8 4.8 C: [B,A] (2,2.5,4.5) f Q ← Nó inicial; enquanto Q não estiver vazia faça C ← Retire de Q o caminho com menor f (C) = g(C) + h(cabeça(C)); se cabeça(C) = objetivo então Retorne C para cada filho f de cabeça(C) faça Adicione [f,C] a Q retorna falha Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 11 / 35
  • 69. Buscas Informadas A* – Algoritmo A B C E D O 5 5 2 1 3 2 3 2 Q: [C,A] 5 2 7 Caminho g h f [A,B,A] 5 4 9 [E,B,A] 4 0.8 4.8 C: [B,A] (2,2.5,4.5) f Q ← Nó inicial; enquanto Q não estiver vazia faça C ← Retire de Q o caminho com menor f (C) = g(C) + h(cabeça(C)); se cabeça(C) = objetivo então Retorne C para cada filho f de cabeça(C) faça Adicione [f,C] a Q retorna falha Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 11 / 35
  • 70. Buscas Informadas A* – Algoritmo A B C E D O 5 5 2 1 3 2 3 2 Q: [C,A] 5 2 7 Caminho g h f [A,B,A] 5 4 9 C: [E,B,A] (4,0.8,4.8) f Q ← Nó inicial; enquanto Q não estiver vazia faça C ← Retire de Q o caminho com menor f (C) = g(C) + h(cabeça(C)); se cabeça(C) = objetivo então Retorne C para cada filho f de cabeça(C) faça Adicione [f,C] a Q retorna falha Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 11 / 35
  • 71. Buscas Informadas A* – Algoritmo A B C E D O 5 5 2 1 3 2 3 2 Q: [C,A] 5 2 7 Caminho g h f [A,B,A] 5 4 9 C: [E,B,A] (4,0.8,4.8) f Q ← Nó inicial; enquanto Q não estiver vazia faça C ← Retire de Q o caminho com menor f (C) = g(C) + h(cabeça(C)); se cabeça(C) = objetivo então Retorne C para cada filho f de cabeça(C) faça Adicione [f,C] a Q retorna falha Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 11 / 35
  • 72. Buscas Informadas A* – Algoritmo A B C E D O 5 5 2 1 3 2 3 2 Q: [C,A] 5 2 7 Caminho g h f [A,B,A] 5 4 9 C: [E,B,A] (4,0.8,4.8) f Q ← Nó inicial; enquanto Q não estiver vazia faça C ← Retire de Q o caminho com menor f (C) = g(C) + h(cabeça(C)); se cabeça(C) = objetivo então Retorne C para cada filho f de cabeça(C) faça Adicione [f,C] a Q retorna falha Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 11 / 35
  • 73. Buscas Informadas A* – Algoritmo A B C E D O 5 5 2 1 3 2 3 2 Q: [C,A] 5 2 7 Caminho g h f [A,B,A] 5 4 9 [D,E,B,A] 7 0.5 7.5 C: [E,B,A] (4,0.8,4.8) f Q ← Nó inicial; enquanto Q não estiver vazia faça C ← Retire de Q o caminho com menor f (C) = g(C) + h(cabeça(C)); se cabeça(C) = objetivo então Retorne C para cada filho f de cabeça(C) faça Adicione [f,C] a Q retorna falha Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 11 / 35
  • 74. Buscas Informadas A* – Algoritmo A B C E D O 5 5 2 1 3 2 3 2 Q: [C,A] 5 2 7 Caminho g h f [A,B,A] 5 4 9 [D,E,B,A] 7 0.5 7.5 C: [E,B,A] (4,0.8,4.8) f Q ← Nó inicial; enquanto Q não estiver vazia faça C ← Retire de Q o caminho com menor f (C) = g(C) + h(cabeça(C)); se cabeça(C) = objetivo então Retorne C para cada filho f de cabeça(C) faça Adicione [f,C] a Q retorna falha Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 11 / 35
  • 75. Buscas Informadas A* – Algoritmo A B C E D O 5 5 2 1 3 2 3 2 Q: [C,A] 5 2 7 Caminho g h f [A,B,A] 5 4 9 [D,E,B,A] 7 0.5 7.5 [O,E,B,A] 5 0 5 C: [E,B,A] (4,0.8,4.8) f Q ← Nó inicial; enquanto Q não estiver vazia faça C ← Retire de Q o caminho com menor f (C) = g(C) + h(cabeça(C)); se cabeça(C) = objetivo então Retorne C para cada filho f de cabeça(C) faça Adicione [f,C] a Q retorna falha Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 11 / 35
  • 76. Buscas Informadas A* – Algoritmo A B C E D O 5 5 2 1 3 2 3 2 Q: [C,A] 5 2 7 Caminho g h f [A,B,A] 5 4 9 [D,E,B,A] 7 0.5 7.5 [O,E,B,A] 5 0 5 C: [E,B,A] (4,0.8,4.8) f Q ← Nó inicial; enquanto Q não estiver vazia faça C ← Retire de Q o caminho com menor f (C) = g(C) + h(cabeça(C)); se cabeça(C) = objetivo então Retorne C para cada filho f de cabeça(C) faça Adicione [f,C] a Q retorna falha Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 11 / 35
  • 77. Buscas Informadas A* – Algoritmo A B C E D O 5 5 2 1 3 2 3 2 Q: [C,A] 5 2 7 Caminho g h f [A,B,A] 5 4 9 [D,E,B,A] 7 0.5 7.5 C: [O,E,B,A] (5,0,5) f Q ← Nó inicial; enquanto Q não estiver vazia faça C ← Retire de Q o caminho com menor f (C) = g(C) + h(cabeça(C)); se cabeça(C) = objetivo então Retorne C para cada filho f de cabeça(C) faça Adicione [f,C] a Q retorna falha Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 11 / 35
  • 78. Buscas Informadas A* – Algoritmo A B C E D O 5 5 2 1 3 2 3 2 Q: [C,A] 5 2 7 Caminho g h f [A,B,A] 5 4 9 [D,E,B,A] 7 0.5 7.5 C: [O,E,B,A] (5,0,5) f Q ← Nó inicial; enquanto Q não estiver vazia faça C ← Retire de Q o caminho com menor f (C) = g(C) + h(cabeça(C)); se cabeça(C) = objetivo então Retorne C para cada filho f de cabeça(C) faça Adicione [f,C] a Q retorna falha Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 11 / 35
  • 79. Buscas Informadas A* – Algoritmo A B C E D O 5 5 2 1 3 2 3 2 Q: [C,A] 5 2 7 Caminho g h f [A,B,A] 5 4 9 [D,E,B,A] 7 0.5 7.5 C: [O,E,B,A] (5,0,5) f Q ← Nó inicial; enquanto Q não estiver vazia faça C ← Retire de Q o caminho com menor f (C) = g(C) + h(cabeça(C)); se cabeça(C) = objetivo então Retorne C para cada filho f de cabeça(C) faça Adicione [f,C] a Q retorna falha Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 11 / 35
  • 80. Buscas Informadas A* – Observações Nó Inicial Nó a ser expandido Objetivo g(n) h(n) No inı́cio da busca: Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 12 / 35
  • 81. Buscas Informadas A* – Observações Nó Inicial Nó a ser expandido Objetivo g(n) h(n) No inı́cio da busca: g(n) influi pouco Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 12 / 35
  • 82. Buscas Informadas A* – Observações Nó Inicial Nó a ser expandido Objetivo g(n) h(n) No inı́cio da busca: g(n) influi pouco h(n) domina Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 12 / 35
  • 83. Buscas Informadas A* – Observações Nó Inicial Nó a ser expandido Objetivo g(n) h(n) No inı́cio da busca: g(n) influi pouco h(n) domina Escolhe caminho que parece ser o melhor Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 12 / 35
  • 84. Buscas Informadas A* – Observações Nó Inicial Nó a ser expandido Objetivo g(n) h(n) No inı́cio da busca: g(n) influi pouco h(n) domina Escolhe caminho que parece ser o melhor Ao final da busca: Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 12 / 35
  • 85. Buscas Informadas A* – Observações Nó Inicial Nó a ser expandido Objetivo g(n) h(n) No inı́cio da busca: g(n) influi pouco h(n) domina Escolhe caminho que parece ser o melhor Ao final da busca: h(n) influi pouco Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 12 / 35
  • 86. Buscas Informadas A* – Observações Nó Inicial Nó a ser expandido Objetivo g(n) h(n) No inı́cio da busca: g(n) influi pouco h(n) domina Escolhe caminho que parece ser o melhor Ao final da busca: h(n) influi pouco g(n) domina Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 12 / 35
  • 87. Buscas Informadas A* – Observações Nó Inicial Nó a ser expandido Objetivo g(n) h(n) No inı́cio da busca: g(n) influi pouco h(n) domina Escolhe caminho que parece ser o melhor Ao final da busca: h(n) influi pouco g(n) domina Acaba ficando com o menor caminho Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 12 / 35
  • 88. Buscas Informadas A* – Vantagem A* ignora caminhos que, em linha reta, se afastam muito do objetivo Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 13 / 35
  • 89. Buscas Informadas A* – Vantagem A* ignora caminhos que, em linha reta, se afastam muito do objetivo Busca de custo uniforme pode demorar a perceber que está no caminho errado Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 13 / 35
  • 90. Buscas Informadas A* – Vantagem A* ignora caminhos que, em linha reta, se afastam muito do objetivo Busca de custo uniforme pode demorar a perceber que está no caminho errado A* decide (bem) antes. Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 13 / 35
  • 91. Buscas Informadas A* – Vantagem A* ignora caminhos que, em linha reta, se afastam muito do objetivo Busca de custo uniforme pode demorar a perceber que está no caminho errado A* decide (bem) antes. Ex: inı́cio (90) (45) (0) objetivo (100) (108) (118) (129) (138) 50 50 10 10 10 10 10 Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 13 / 35
  • 92. Buscas Informadas A* – Vantagem A* ignora caminhos que, em linha reta, se afastam muito do objetivo Busca de custo uniforme pode demorar a perceber que está no caminho errado A* decide (bem) antes. Ex: inı́cio (90) (45) (0) objetivo (100) (108) (118) (129) (138) 50 50 10 10 10 10 10 BCU chega até aqui para então cogitar tomar o caminho certo Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 13 / 35
  • 93. Buscas Informadas A* – Vantagem A* ignora caminhos que, em linha reta, se afastam muito do objetivo Busca de custo uniforme pode demorar a perceber que está no caminho errado A* decide (bem) antes. Ex: inı́cio (90) (45) (0) objetivo (100) (108) (118) (129) (138) 50 50 10 10 10 10 10 BCU chega até aqui para então cogitar tomar o caminho certo A* simplesmente não toma o caminho errado Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 13 / 35
  • 94. Busca Local Até agora vimos problemas que eram: Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 14 / 35
  • 95. Busca Local Até agora vimos problemas que eram: Observáveis: sabemos em que estado estamos Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 14 / 35
  • 96. Busca Local Até agora vimos problemas que eram: Observáveis: sabemos em que estado estamos Se conhecermos todos os estados então o ambiente é totalmente observável Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 14 / 35
  • 97. Busca Local Até agora vimos problemas que eram: Observáveis: sabemos em que estado estamos Se conhecermos todos os estados então o ambiente é totalmente observável Determinı́sticos: sabemos em que estado estaremos se executarmos determinada ação Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 14 / 35
  • 98. Busca Local Até agora vimos problemas que eram: Observáveis: sabemos em que estado estamos Se conhecermos todos os estados então o ambiente é totalmente observável Determinı́sticos: sabemos em que estado estaremos se executarmos determinada ação De ambientes conhecidos: conhecemos todas as regras de ação do ambiente Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 14 / 35
  • 99. Busca Local Até agora vimos problemas que eram: Observáveis: sabemos em que estado estamos Se conhecermos todos os estados então o ambiente é totalmente observável Determinı́sticos: sabemos em que estado estaremos se executarmos determinada ação De ambientes conhecidos: conhecemos todas as regras de ação do ambiente Sabemos a saı́da (ou probabilidade de cada saı́da) para todas as ações dadas. Se o ambiente for desconhecido, teremos antes que aprender como ele funciona Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 14 / 35
  • 100. Busca Local Problema E se não for esse o caso? Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 15 / 35
  • 101. Busca Local Problema E se não for esse o caso? E se não tivermos acesso a toda a informação necessária? Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 15 / 35
  • 102. Busca Local Problema E se não for esse o caso? E se não tivermos acesso a toda a informação necessária? E se tivermos restrições de memória, nos proibindo de carregar o grafo todo? Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 15 / 35
  • 103. Busca Local Problema E se não for esse o caso? E se não tivermos acesso a toda a informação necessária? E se tivermos restrições de memória, nos proibindo de carregar o grafo todo? Solução Busca local Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 15 / 35
  • 104. Busca Local Problema E se não for esse o caso? E se não tivermos acesso a toda a informação necessária? E se tivermos restrições de memória, nos proibindo de carregar o grafo todo? Solução Busca local Avalia e modifica apenas o estado atual, em vez de explorar caminhos a partir de um estado inicial Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 15 / 35
  • 105. Busca Local Problema E se não for esse o caso? E se não tivermos acesso a toda a informação necessária? E se tivermos restrições de memória, nos proibindo de carregar o grafo todo? Solução Busca local Avalia e modifica apenas o estado atual, em vez de explorar caminhos a partir de um estado inicial Naturalmente, não se aplica a casos em que queremos o caminho. Queremos apenas o estado final (objetivo) Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 15 / 35
  • 106. Busca Local Caracterı́sticas Algoritmos de busca local operam usando um único estado (em vez de um grafo de estados) Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 16 / 35
  • 107. Busca Local Caracterı́sticas Algoritmos de busca local operam usando um único estado (em vez de um grafo de estados) Em geral movem-se apenas para vizinhos desse estado Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 16 / 35
  • 108. Busca Local Caracterı́sticas Algoritmos de busca local operam usando um único estado (em vez de um grafo de estados) Em geral movem-se apenas para vizinhos desse estado Tipicamente, os caminhos são ignorados Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 16 / 35
  • 109. Busca Local Caracterı́sticas Algoritmos de busca local operam usando um único estado (em vez de um grafo de estados) Em geral movem-se apenas para vizinhos desse estado Tipicamente, os caminhos são ignorados Vantagens Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 16 / 35
  • 110. Busca Local Caracterı́sticas Algoritmos de busca local operam usando um único estado (em vez de um grafo de estados) Em geral movem-se apenas para vizinhos desse estado Tipicamente, os caminhos são ignorados Vantagens Usam pouca memória Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 16 / 35
  • 111. Busca Local Caracterı́sticas Algoritmos de busca local operam usando um único estado (em vez de um grafo de estados) Em geral movem-se apenas para vizinhos desse estado Tipicamente, os caminhos são ignorados Vantagens Usam pouca memória Frequentemente encontram soluções razoáveis em grandes (ou mesmo infinitos) espaços de busca Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 16 / 35
  • 112. Busca Local Espaços de busca Podemos definir o espaço de busca em termos de seus estados (eixo x) e sua função de avaliação (y): Fonte: AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 17 / 35
  • 113. Busca Local Espaços de busca Se essa função corresponder ao custo, queremos encontrar o vale mais profundo – mı́nimo global Fonte: AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 17 / 35
  • 114. Busca Local Espaços de busca Se corresponder ao objetivo, queremos encontrar o pico mais alto – máximo global Fonte: AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 17 / 35
  • 115. Busca Local Definições Um algoritmo de busca local será completo se sempre encontrar um objetivo, caso exista Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 18 / 35
  • 116. Busca Local Definições Um algoritmo de busca local será completo se sempre encontrar um objetivo, caso exista Um algoritmo de busca local será ótimo se sempre encontrar um máximo (ou mı́nimo) global Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 18 / 35
  • 117. Busca Local Hill Climbing Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 19 / 35
  • 118. Busca Local Hill Climbing (Subida da Encosta) Escolhe, a cada passo, o nó que parece levar mais próximo do objetivo Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 20 / 35
  • 119. Busca Local Hill Climbing (Subida da Encosta) Escolhe, a cada passo, o nó que parece levar mais próximo do objetivo Move-se continuamente na direção de valores crescentes – encosta acima Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 20 / 35
  • 120. Busca Local Hill Climbing (Subida da Encosta) Escolhe, a cada passo, o nó que parece levar mais próximo do objetivo Move-se continuamente na direção de valores crescentes – encosta acima Exige uma função de avaliação, para indicar quão próximo da solução está o nó atual Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 20 / 35
  • 121. Busca Local Hill Climbing (Subida da Encosta) Pára quando atinge um pico Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 21 / 35
  • 122. Busca Local Hill Climbing (Subida da Encosta) Pára quando atinge um pico Nenhum vizinho tem valor maior que o estado atual Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 21 / 35
  • 123. Busca Local Hill Climbing (Subida da Encosta) Pára quando atinge um pico Nenhum vizinho tem valor maior que o estado atual Não olha além dos vizinhos imediatos do estado em que está Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 21 / 35
  • 124. Busca Local Hill Climbing (Subida da Encosta) Pára quando atinge um pico Nenhum vizinho tem valor maior que o estado atual Não olha além dos vizinhos imediatos do estado em que está Considera todos os movimentos a partir do estado atual, selecionando o melhor deles como próximo estado Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 21 / 35
  • 125. Busca Local Hill Climbing – Algoritmo atual ← Nó inicial; enquanto atual 6= objetivo E possui vizinhos faça vizinho ← vizinho de atual com maior valor de avaliação; se avaliação(vizinho) ≤ avaliação(atual) então retorna atual; atual ← vizinho; retorna atual; Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 22 / 35
  • 126. Busca Local Hill Climbing – Algoritmo A cada passo, o nó atual é substituı́do pelo seu melhor vizinho atual ← Nó inicial; enquanto atual 6= objetivo E possui vizinhos faça vizinho ← vizinho de atual com maior valor de avaliação; se avaliação(vizinho) ≤ avaliação(atual) então retorna atual; atual ← vizinho; retorna atual; Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 22 / 35
  • 127. Busca Local Hill Climbing – Algoritmo Nessa versão, o melhor vizinho era aquele com maior valor de avaliação. atual ← Nó inicial; enquanto atual 6= objetivo E possui vizinhos faça vizinho ← vizinho de atual com maior valor de avaliação; se avaliação(vizinho) ≤ avaliação(atual) então retorna atual; atual ← vizinho; retorna atual; Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 22 / 35
  • 128. Busca Local Hill Climbing – Algoritmo Se usássemos uma heurı́stica de custo, teria que ser o vizinho com o menor custo atual ← Nó inicial; enquanto atual 6= objetivo E possui vizinhos faça vizinho ← vizinho de atual com maior valor de avaliação; se avaliação(vizinho) ≤ avaliação(atual) então retorna atual; atual ← vizinho; retorna atual; Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 22 / 35
  • 129. Busca Local Hill Climbing – Algoritmo Hill Climbing modifica então o estado atual tentando melhorá-lo atual ← Nó inicial; enquanto atual 6= objetivo E possui vizinhos faça vizinho ← vizinho de atual com maior valor de avaliação; se avaliação(vizinho) ≤ avaliação(atual) então retorna atual; atual ← vizinho; retorna atual; Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 22 / 35
  • 130. Busca Local Hill Climbing – Algoritmo E se houver um empate entre vizinhos de um nó? atual ← Nó inicial; enquanto atual 6= objetivo E possui vizinhos faça vizinho ← vizinho de atual com maior valor de avaliação; se avaliação(vizinho) ≤ avaliação(atual) então retorna atual; atual ← vizinho; retorna atual; Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 22 / 35
  • 131. Busca Local Hill Climbing – Algoritmo O algoritmo tipicamente escolhe um aleatoriamente atual ← Nó inicial; enquanto atual 6= objetivo E possui vizinhos faça vizinho ← vizinho de atual com maior valor de avaliação; se avaliação(vizinho) ≤ avaliação(atual) então retorna atual; atual ← vizinho; retorna atual; Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 22 / 35
  • 132. Busca Local Hill Climbing – Exemplo Voar de uma cidade a outra, minimizando o número de conexões Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 23 / 35
  • 133. Busca Local Hill Climbing – Exemplo Voar de uma cidade a outra, minimizando o número de conexões Heurı́stica: Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 23 / 35
  • 134. Busca Local Hill Climbing – Exemplo Voar de uma cidade a outra, minimizando o número de conexões Heurı́stica: Quanto maior a distância de cada voo, a partir do estado corrente, maior a probabilidade de estar mais perto do destino Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 23 / 35
  • 135. Busca Local Hill Climbing – Exemplo Voar de uma cidade a outra, minimizando o número de conexões Heurı́stica: Quanto maior a distância de cada voo, a partir do estado corrente, maior a probabilidade de estar mais perto do destino Função de Avaliação: Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 23 / 35
  • 136. Busca Local Hill Climbing – Exemplo Voar de uma cidade a outra, minimizando o número de conexões Heurı́stica: Quanto maior a distância de cada voo, a partir do estado corrente, maior a probabilidade de estar mais perto do destino Função de Avaliação: Maior aresta saindo do nó corrente ⇒ maior valor do nó ao final dessa aresta Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 23 / 35
  • 137. Busca Local Hill Climbing – Exemplo NY Chicago 1000 Toronto 800 500 Denver 1900 1000 Houston 900 LA 1000 1500 1800 Urbana 500 Calgary 1500 Fonte: Adaptado de AIUC. Shildt. Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 24 / 35
  • 138. Busca Local Hill Climbing – Exemplo NY Chicago 1000 Toronto 800 500 Denver 1900 1000 Houston 900 LA 1000 1500 1800 Urbana 500 Calgary 1500 Fonte: Adaptado de AIUC. Shildt. NY para LA: Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 24 / 35
  • 139. Busca Local Hill Climbing – Exemplo NY Chicago 1000 Toronto 800 500 Denver 1900 1000 Houston 900 LA 1000 1500 1800 Urbana 500 Calgary 1500 Fonte: Adaptado de AIUC. Shildt. NY para LA: atual ← Nó inicial; enquanto atual 6= objetivo E possui vizinhos faça vizinho ← vizinho de atual com maior valor de avaliação; se avaliação(vizinho) ≤ avaliação(atual) então retorna atual; atual ← vizinho; retorna atual; Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 24 / 35
  • 140. Busca Local Hill Climbing – Exemplo NY Chicago 1000 Toronto 800 500 Denver 1900 1000 Houston 900 LA 1000 1500 1800 Urbana 500 Calgary 1500 Fonte: Adaptado de AIUC. Shildt. at NY para LA: atual ← Nó inicial; enquanto atual 6= objetivo E possui vizinhos faça vizinho ← vizinho de atual com maior valor de avaliação; se avaliação(vizinho) ≤ avaliação(atual) então retorna atual; atual ← vizinho; retorna atual; Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 24 / 35
  • 141. Busca Local Hill Climbing – Exemplo NY Chicago 1000 Toronto 800 500 Denver 1900 1000 Houston 900 LA 1000 1500 1800 Urbana 500 Calgary 1500 Fonte: Adaptado de AIUC. Shildt. at NY para LA: atual ← Nó inicial; enquanto atual 6= objetivo E possui vizinhos faça vizinho ← vizinho de atual com maior valor de avaliação; se avaliação(vizinho) ≤ avaliação(atual) então retorna atual; atual ← vizinho; retorna atual; Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 24 / 35
  • 142. Busca Local Hill Climbing – Exemplo NY Chicago 1000 Toronto 800 500 Denver 1900 1000 Houston 900 LA 1000 1500 1800 Urbana 500 Calgary 1500 Fonte: Adaptado de AIUC. Shildt. at viz Quanto mais longe do nó atual melhor será o valor de um nó vizinho NY para LA: atual ← Nó inicial; enquanto atual 6= objetivo E possui vizinhos faça vizinho ← vizinho de atual com maior valor de avaliação; se avaliação(vizinho) ≤ avaliação(atual) então retorna atual; atual ← vizinho; retorna atual; Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 24 / 35
  • 143. Busca Local Hill Climbing – Exemplo NY Chicago 1000 Toronto 800 500 Denver 1900 1000 Houston 900 LA 1000 1500 1800 Urbana 500 Calgary 1500 Fonte: Adaptado de AIUC. Shildt. at viz Por essa heurı́stica, o valor do nó atual será sempre menor que o do vizinho, se houver vizinho NY para LA: atual ← Nó inicial; enquanto atual 6= objetivo E possui vizinhos faça vizinho ← vizinho de atual com maior valor de avaliação; se avaliação(vizinho) ≤ avaliação(atual) então retorna atual; atual ← vizinho; retorna atual; Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 24 / 35
  • 144. Busca Local Hill Climbing – Exemplo NY Chicago 1000 Toronto 800 500 Denver 1900 1000 Houston 900 LA 1000 1500 1800 Urbana 500 Calgary 1500 Fonte: Adaptado de AIUC. Shildt. at viz NY para LA: atual ← Nó inicial; enquanto atual 6= objetivo E possui vizinhos faça vizinho ← vizinho de atual com maior valor de avaliação; se avaliação(vizinho) ≤ avaliação(atual) então retorna atual; atual ← vizinho; retorna atual; Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 24 / 35
  • 145. Busca Local Hill Climbing – Exemplo NY Chicago 1000 Toronto 800 500 Denver 1900 1000 Houston 900 LA 1000 1500 1800 Urbana 500 Calgary 1500 Fonte: Adaptado de AIUC. Shildt. at viz NY para LA: atual ← Nó inicial; enquanto atual 6= objetivo E possui vizinhos faça vizinho ← vizinho de atual com maior valor de avaliação; se avaliação(vizinho) ≤ avaliação(atual) então retorna atual; atual ← vizinho; retorna atual; Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 24 / 35
  • 146. Busca Local Hill Climbing – Exemplo NY Chicago 1000 Toronto 800 500 Denver 1900 1000 Houston 900 LA 1000 1500 1800 Urbana 500 Calgary 1500 Fonte: Adaptado de AIUC. Shildt. at viz NY para LA: atual ← Nó inicial; enquanto atual 6= objetivo E possui vizinhos faça vizinho ← vizinho de atual com maior valor de avaliação; se avaliação(vizinho) ≤ avaliação(atual) então retorna atual; atual ← vizinho; retorna atual; Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 24 / 35
  • 147. Busca Local Hill Climbing – Exemplo NY Chicago 1000 Toronto 800 500 Denver 1900 1000 Houston 900 LA 1000 1500 1800 Urbana 500 Calgary 1500 Fonte: Adaptado de AIUC. Shildt. at viz NY para LA: atual ← Nó inicial; enquanto atual 6= objetivo E possui vizinhos faça vizinho ← vizinho de atual com maior valor de avaliação; se avaliação(vizinho) ≤ avaliação(atual) então retorna atual; atual ← vizinho; retorna atual; Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 24 / 35
  • 148. Busca Local Hill Climbing – Exemplo NY Chicago 1000 Toronto 800 500 Denver 1900 1000 Houston 900 LA 1000 1500 1800 Urbana 500 Calgary 1500 Fonte: Adaptado de AIUC. Shildt. at viz NY para LA: atual ← Nó inicial; enquanto atual 6= objetivo E possui vizinhos faça vizinho ← vizinho de atual com maior valor de avaliação; se avaliação(vizinho) ≤ avaliação(atual) então retorna atual; atual ← vizinho; retorna atual; Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 24 / 35
  • 149. Busca Local Hill Climbing – Exemplo NY Chicago 1000 Toronto 800 500 Denver 1900 1000 Houston 900 LA 1000 1500 1800 Urbana 500 Calgary 1500 Fonte: Adaptado de AIUC. Shildt. at viz NY para LA: atual ← Nó inicial; enquanto atual 6= objetivo E possui vizinhos faça vizinho ← vizinho de atual com maior valor de avaliação; se avaliação(vizinho) ≤ avaliação(atual) então retorna atual; atual ← vizinho; retorna atual; Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 24 / 35
  • 150. Busca Local Hill Climbing – Exemplo NY Chicago 1000 Toronto 800 500 Denver 1900 1000 Houston 900 LA 1000 1500 1800 Urbana 500 Calgary 1500 Fonte: Adaptado de AIUC. Shildt. at NY para LA: atual ← Nó inicial; enquanto atual 6= objetivo E possui vizinhos faça vizinho ← vizinho de atual com maior valor de avaliação; se avaliação(vizinho) ≤ avaliação(atual) então retorna atual; atual ← vizinho; retorna atual; Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 24 / 35
  • 151. Busca Local Hill Climbing – Problemas Pode não encontrar uma solução (mesmo havendo uma) Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 25 / 35
  • 152. Busca Local Hill Climbing – Problemas Pode não encontrar uma solução (mesmo havendo uma) Não consegue ir adiante nas seguintes situações: Fonte: AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 25 / 35
  • 153. Busca Local Hill Climbing – Problemas Pode não encontrar uma solução (mesmo havendo uma) Não consegue ir adiante nas seguintes situações: Máximos locais: quando não há vizinho melhor, mas o estado atual não é a melhor solução (ou nem mesmo é solução) Fonte: AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 25 / 35
  • 154. Busca Local Hill Climbing – Problemas Não consegue ir adiante nas seguintes situações: Cordilheiras: sequência de máximos locais Fonte: AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 26 / 35
  • 155. Busca Local Hill Climbing – Problemas Não consegue ir adiante nas seguintes situações: Cordilheiras: sequência de máximos locais Platôs: quando os vizinhos são iguais ao estado atual, e este não é solução Fonte: AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 26 / 35
  • 156. Busca Local Hill Climbing – Problemas Não consegue ir adiante nas seguintes situações: Cordilheiras: sequência de máximos locais Platôs: quando os vizinhos são iguais ao estado atual, e este não é solução Podem ser máximos locais planos Fonte: AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 26 / 35
  • 157. Busca Local Hill Climbing – Problemas Não consegue ir adiante nas seguintes situações: Cordilheiras: sequência de máximos locais Platôs: quando os vizinhos são iguais ao estado atual, e este não é solução Podem ser máximos locais planos ou “ombros” Fonte: AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 26 / 35
  • 158. Busca Local Hill Climbing – Problemas Não consegue ir adiante nas seguintes situações: Cordilheiras: sequência de máximos locais Platôs: quando os vizinhos são iguais ao estado atual, e este não é solução Podem ser máximos locais planos ou “ombros” Fonte: AIMA. Russell & Norvig. Solução: Subida da Encosta de Recomeço Aleatório Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 26 / 35
  • 159. Busca Local Hill Climbing – Problemas Não consegue ir adiante nas seguintes situações: Cordilheiras: sequência de máximos locais Platôs: quando os vizinhos são iguais ao estado atual, e este não é solução Podem ser máximos locais planos ou “ombros” Fonte: AIMA. Russell & Norvig. Solução: Subida da Encosta de Recomeço Aleatório Random-Restart Hill Climbing Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 26 / 35
  • 160. Busca Local Random-Restart Hill Climbing – Funcionamento Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 27 / 35
  • 161. Busca Local Random-Restart Hill Climbing – Funcionamento Se não conseguir da primeira vez, tente de novo Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 27 / 35
  • 162. Busca Local Random-Restart Hill Climbing – Funcionamento Se não conseguir da primeira vez, tente de novo Se ficou preso em um estado não muito bom: Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 27 / 35
  • 163. Busca Local Random-Restart Hill Climbing – Funcionamento Se não conseguir da primeira vez, tente de novo Se ficou preso em um estado não muito bom: Gere aleatoriamente um novo estado inicial Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 27 / 35
  • 164. Busca Local Random-Restart Hill Climbing – Funcionamento Se não conseguir da primeira vez, tente de novo Se ficou preso em um estado não muito bom: Gere aleatoriamente um novo estado inicial Comece a busca novamente Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 27 / 35
  • 165. Busca Local Random-Restart Hill Climbing – Funcionamento Se não conseguir da primeira vez, tente de novo Se ficou preso em um estado não muito bom: Gere aleatoriamente um novo estado inicial Comece a busca novamente Fonte: https://somosamp.wordpress.com/ 2017/02/02/toca-raul-tente-outra-vez/ Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 27 / 35
  • 166. Busca Local Random-Restart Hill Climbing O algoritmo executa, então, uma série de hill climbings a partir de estados iniciais aleatórios, até que o objetivo seja atingido Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 28 / 35
  • 167. Busca Local Random-Restart Hill Climbing O algoritmo executa, então, uma série de hill climbings a partir de estados iniciais aleatórios, até que o objetivo seja atingido Embora não pareça, é muito eficiente Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 28 / 35
  • 168. Busca Local Random-Restart Hill Climbing O algoritmo executa, então, uma série de hill climbings a partir de estados iniciais aleatórios, até que o objetivo seja atingido Embora não pareça, é muito eficiente Também é completo, com probabilidade ≈ 1 Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 28 / 35
  • 169. Busca Local Random-Restart Hill Climbing O algoritmo executa, então, uma série de hill climbings a partir de estados iniciais aleatórios, até que o objetivo seja atingido Embora não pareça, é muito eficiente Também é completo, com probabilidade ≈ 1 Se cada busca tiver probabilidade p de sucesso, o número de reinı́cios esperado é 1 p Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 28 / 35
  • 170. Busca Local Random-Restart Hill Climbing O algoritmo executa, então, uma série de hill climbings a partir de estados iniciais aleatórios, até que o objetivo seja atingido Embora não pareça, é muito eficiente Também é completo, com probabilidade ≈ 1 Se cada busca tiver probabilidade p de sucesso, o número de reinı́cios esperado é 1 p Ex: p = 0.01 ⇒ 1 p = 100 Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 28 / 35
  • 171. Busca Local Simulated Annealing Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 29 / 35
  • 172. Busca Local Simulated Annealing Por nunca “descer a encosta”, movendo-se para estados com menor valor (ou maior custo), hill climbing é garantidamente incompleto Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 30 / 35
  • 173. Busca Local Simulated Annealing Por nunca “descer a encosta”, movendo-se para estados com menor valor (ou maior custo), hill climbing é garantidamente incompleto Sempre pode ficar preso em máximos locais, platôs etc. Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 30 / 35
  • 174. Busca Local Simulated Annealing Por nunca “descer a encosta”, movendo-se para estados com menor valor (ou maior custo), hill climbing é garantidamente incompleto Sempre pode ficar preso em máximos locais, platôs etc. Por outro lado, até uma caminhada aleatória seria completa, embora ineficiente Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 30 / 35
  • 175. Busca Local Simulated Annealing Por nunca “descer a encosta”, movendo-se para estados com menor valor (ou maior custo), hill climbing é garantidamente incompleto Sempre pode ficar preso em máximos locais, platôs etc. Por outro lado, até uma caminhada aleatória seria completa, embora ineficiente Quando escolhemos aleatoriamente o vizinho de um nó, a partir de uma distribuição uniforme Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 30 / 35
  • 176. Busca Local Simulated Annealing Por nunca “descer a encosta”, movendo-se para estados com menor valor (ou maior custo), hill climbing é garantidamente incompleto Sempre pode ficar preso em máximos locais, platôs etc. Por outro lado, até uma caminhada aleatória seria completa, embora ineficiente Quando escolhemos aleatoriamente o vizinho de um nó, a partir de uma distribuição uniforme E se combinássemos os 2? Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 30 / 35
  • 177. Busca Local Simulated Annealing Por nunca “descer a encosta”, movendo-se para estados com menor valor (ou maior custo), hill climbing é garantidamente incompleto Sempre pode ficar preso em máximos locais, platôs etc. Por outro lado, até uma caminhada aleatória seria completa, embora ineficiente Quando escolhemos aleatoriamente o vizinho de um nó, a partir de uma distribuição uniforme E se combinássemos os 2? Têmpera Simulada Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 30 / 35
  • 178. Busca Local Simulated Annealing Por nunca “descer a encosta”, movendo-se para estados com menor valor (ou maior custo), hill climbing é garantidamente incompleto Sempre pode ficar preso em máximos locais, platôs etc. Por outro lado, até uma caminhada aleatória seria completa, embora ineficiente Quando escolhemos aleatoriamente o vizinho de um nó, a partir de uma distribuição uniforme E se combinássemos os 2? Têmpera Simulada Simulated Annealing Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 30 / 35
  • 179. Busca Local Simulated Annealing Em metalurgia, têmpera é o processo usado para deixar metais e vidros mais resistentes Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 31 / 35
  • 180. Busca Local Simulated Annealing Em metalurgia, têmpera é o processo usado para deixar metais e vidros mais resistentes Estes são aquecidos até uma alta temperatura e então gradualmente esfriados Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 31 / 35
  • 181. Busca Local Simulated Annealing Em metalurgia, têmpera é o processo usado para deixar metais e vidros mais resistentes Estes são aquecidos até uma alta temperatura e então gradualmente esfriados E o que isso tem a ver com nosso problema? Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 31 / 35
  • 182. Busca Local Simulated Annealing Em metalurgia, têmpera é o processo usado para deixar metais e vidros mais resistentes Estes são aquecidos até uma alta temperatura e então gradualmente esfriados E o que isso tem a ver com nosso problema? Com Simulated Annealing, começamos adicionando um ruı́do aleatório alto (alta temperatura), e então gradualmente reduzimos esse ruı́do (baixamos a temperatura) Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 31 / 35
  • 183. Busca Local Simulated Annealing Em metalurgia, têmpera é o processo usado para deixar metais e vidros mais resistentes Estes são aquecidos até uma alta temperatura e então gradualmente esfriados E o que isso tem a ver com nosso problema? Com Simulated Annealing, começamos adicionando um ruı́do aleatório alto (alta temperatura), e então gradualmente reduzimos esse ruı́do (baixamos a temperatura) Assim, se estivermos presos em um mı́nimo local (ou máximo), conseguimos nos livrar dele com um “salto” Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 31 / 35
  • 184. Busca Local Simulated Annealing Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 32 / 35
  • 185. Busca Local Simulated Annealing Estamos nos dirigindo a um máximo local Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 32 / 35
  • 186. Busca Local Simulated Annealing Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 32 / 35
  • 187. Busca Local Simulated Annealing Não mais... Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 32 / 35
  • 188. Busca Local Simulated Annealing Nos movemos a um estado vizinho que nos guiará em outra direção na função objetivo Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 32 / 35
  • 189. Busca Local Simulated Annealing – Algoritmo atual ← Nó inicial; T ← T0; repita próximo ← seleciona aleatoriamente vizinho de atual; ∆E ← avaliação(próximo) - avaliação(atual); se ∆E > 0 então atual ← próximo senão faça atual ← próximo com probabilidade p = e∆E/T T ← próximaTemperatura(T); até T < Tfinal ; retorna atual; Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 33 / 35
  • 190. Busca Local Simulated Annealing – Algoritmo Escolhe o próximo mo- vimento aleatoriamente atual ← Nó inicial; T ← T0; repita próximo ← seleciona aleatoriamente vizinho de atual; ∆E ← avaliação(próximo) - avaliação(atual); se ∆E > 0 então atual ← próximo senão faça atual ← próximo com probabilidade p = e∆E/T T ← próximaTemperatura(T); até T < Tfinal ; retorna atual; Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 33 / 35
  • 191. Busca Local Simulated Annealing – Algoritmo Se o movimento melhora a situação, é sempre aceito atual ← Nó inicial; T ← T0; repita próximo ← seleciona aleatoriamente vizinho de atual; ∆E ← avaliação(próximo) - avaliação(atual); se ∆E > 0 então atual ← próximo senão faça atual ← próximo com probabilidade p = e∆E/T T ← próximaTemperatura(T); até T < Tfinal ; retorna atual; Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 33 / 35
  • 192. Busca Local Simulated Annealing – Algoritmo Do contrário, ele tem proba- bilidade e∆E/T de ser aceito atual ← Nó inicial; T ← T0; repita próximo ← seleciona aleatoriamente vizinho de atual; ∆E ← avaliação(próximo) - avaliação(atual); se ∆E > 0 então atual ← próximo senão faça atual ← próximo com probabilidade p = e∆E/T T ← próximaTemperatura(T); até T < Tfinal ; retorna atual; Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 33 / 35
  • 193. Busca Local Simulated Annealing – Algoritmo Mapeamento que deter- mina o valor da tempe- ratura a cada iteração atual ← Nó inicial; T ← T0; repita próximo ← seleciona aleatoriamente vizinho de atual; ∆E ← avaliação(próximo) - avaliação(atual); se ∆E > 0 então atual ← próximo senão faça atual ← próximo com probabilidade p = e∆E/T T ← próximaTemperatura(T); até T < Tfinal ; retorna atual; Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 33 / 35
  • 194. Busca Local Simulated Annealing – Algoritmo Pode ser algo tão simples quanto T ← αT, α < 1 atual ← Nó inicial; T ← T0; repita próximo ← seleciona aleatoriamente vizinho de atual; ∆E ← avaliação(próximo) - avaliação(atual); se ∆E > 0 então atual ← próximo senão faça atual ← próximo com probabilidade p = e∆E/T T ← próximaTemperatura(T); até T < Tfinal ; retorna atual; Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 33 / 35
  • 195. Busca Local Simulated Annealing – Algoritmo A probabilidade decresce exponencialmente com a piora de próximo (se ∆(E) ≤ 0) atual ← Nó inicial; T ← T0; repita próximo ← seleciona aleatoriamente vizinho de atual; ∆E ← avaliação(próximo) - avaliação(atual); se ∆E > 0 então atual ← próximo senão faça atual ← próximo com probabilidade p = e∆E/T T ← próximaTemperatura(T); até T < Tfinal ; retorna atual; Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 33 / 35
  • 196. Busca Local Simulated Annealing – Algoritmo Se ∆(E) ≈ 0, então p ≈ 1, e a atribuição tem mais chance de ser aceita atual ← Nó inicial; T ← T0; repita próximo ← seleciona aleatoriamente vizinho de atual; ∆E ← avaliação(próximo) - avaliação(atual); se ∆E > 0 então atual ← próximo senão faça atual ← próximo com probabilidade p = e∆E/T T ← próximaTemperatura(T); até T < Tfinal ; retorna atual; Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 33 / 35
  • 197. Busca Local Simulated Annealing – Algoritmo Também decresce exponenci- almente com a temperatura T atual ← Nó inicial; T ← T0; repita próximo ← seleciona aleatoriamente vizinho de atual; ∆E ← avaliação(próximo) - avaliação(atual); se ∆E > 0 então atual ← próximo senão faça atual ← próximo com probabilidade p = e∆E/T T ← próximaTemperatura(T); até T < Tfinal ; retorna atual; Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 33 / 35
  • 198. Busca Local Simulated Annealing – Algoritmo Se T → ∞, então ∆(E) T → 0 e p → 1 atual ← Nó inicial; T ← T0; repita próximo ← seleciona aleatoriamente vizinho de atual; ∆E ← avaliação(próximo) - avaliação(atual); se ∆E > 0 então atual ← próximo senão faça atual ← próximo com probabilidade p = e∆E/T T ← próximaTemperatura(T); até T < Tfinal ; retorna atual; Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 33 / 35
  • 199. Busca Local Simulated Annealing – Algoritmo Se T → 0, então ∆(E) T → −∞ (lembre que ∆(E) ≤ 0) e p → 0 atual ← Nó inicial; T ← T0; repita próximo ← seleciona aleatoriamente vizinho de atual; ∆E ← avaliação(próximo) - avaliação(atual); se ∆E > 0 então atual ← próximo senão faça atual ← próximo com probabilidade p = e∆E/T T ← próximaTemperatura(T); até T < Tfinal ; retorna atual; Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 33 / 35
  • 200. Busca Local Simulated Annealing – Algoritmo Assim, movimentos ruins têm mais chance de serem aceitos no inı́cio, quando T é alta atual ← Nó inicial; T ← T0; repita próximo ← seleciona aleatoriamente vizinho de atual; ∆E ← avaliação(próximo) - avaliação(atual); se ∆E > 0 então atual ← próximo senão faça atual ← próximo com probabilidade p = e∆E/T T ← próximaTemperatura(T); até T < Tfinal ; retorna atual; Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 33 / 35
  • 201. Busca Local Simulated Annealing – Algoritmo Na medida em que T reduz, eles se tornam menos prováveis atual ← Nó inicial; T ← T0; repita próximo ← seleciona aleatoriamente vizinho de atual; ∆E ← avaliação(próximo) - avaliação(atual); se ∆E > 0 então atual ← próximo senão faça atual ← próximo com probabilidade p = e∆E/T T ← próximaTemperatura(T); até T < Tfinal ; retorna atual; Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 33 / 35
  • 202. Busca Local Simulated Annealing – Algoritmo Movimentos “colina abaixo” são então mais aceitos no inı́cio, fi- cando cada vez menos frequentes atual ← Nó inicial; T ← T0; repita próximo ← seleciona aleatoriamente vizinho de atual; ∆E ← avaliação(próximo) - avaliação(atual); se ∆E > 0 então atual ← próximo senão faça atual ← próximo com probabilidade p = e∆E/T T ← próximaTemperatura(T); até T < Tfinal ; retorna atual; Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 33 / 35
  • 203. Busca Local Simulated Annealing – Algoritmo Se próximaTemperatura baixar T de modo suficientemente lento, o algoritmo encontrará um ótimo global com p ≈ 1 atual ← Nó inicial; T ← T0; repita próximo ← seleciona aleatoriamente vizinho de atual; ∆E ← avaliação(próximo) - avaliação(atual); se ∆E > 0 então atual ← próximo senão faça atual ← próximo com probabilidade p = e∆E/T T ← próximaTemperatura(T); até T < Tfinal ; retorna atual; Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 33 / 35
  • 204. Busca Local Simulated Annealing – Algoritmo Aqui medimos o valor de cada nó atual ← Nó inicial; T ← T0; repita próximo ← seleciona aleatoriamente vizinho de atual; ∆E ← avaliação(próximo) - avaliação(atual); se ∆E > 0 então atual ← próximo senão faça atual ← próximo com probabilidade p = e∆E/T T ← próximaTemperatura(T); até T < Tfinal ; retorna atual; Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 34 / 35
  • 205. Busca Local Simulated Annealing – Algoritmo Se medı́ssemos custo, terı́amos que mudar... atual ← Nó inicial; T ← T0; repita próximo ← seleciona aleatoriamente vizinho de atual; ∆E ← avaliação(próximo) - avaliação(atual); se ∆E > 0 então atual ← próximo senão faça atual ← próximo com probabilidade p = e∆E/T T ← próximaTemperatura(T); até T < Tfinal ; retorna atual; Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 34 / 35
  • 206. Busca Local Simulated Annealing – Algoritmo Se medı́ssemos custo, terı́amos que mudar... atual ← Nó inicial; T ← T0; repita próximo ← seleciona aleatoriamente vizinho de atual; ∆E ← custo(próximo) - custo(atual); se ∆E ≤ 0 então atual ← próximo senão faça atual ← próximo com probabilidade p = e−∆E/T T ← próximaTemperatura(T); até T < Tfinal ; retorna atual; Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 34 / 35
  • 207. Referências Russell, S.; Norvig P. (2010): Artificial Intelligence: A Modern Approach. Prentice Hall. 3a ed. Schildt, H. (1987): Artificial Intelligence Using C. Mcgraw-Hill. https://www.baeldung.com/java-hill-climbing-algorithm http: //conteudo.icmc.usp.br/pessoas/sandra/G9_t2/annealing.htm https://ocw.mit.edu/courses/aeronautics-and-astronautics/ 16-410-principles-of-autonomy-and-decision-making-fall-2010/ lecture-notes/MIT16_410F10_lec14.pdf http://ocw.mit.edu/OcwWeb/ Electrical-Engineering-and-Computer-Science/ 6-034Spring-2005/LectureNotes/index.htm Norton Trevisan Roman(norton@usp.br) 26 de fevereiro de 2019 35 / 35