Você está na página 1de 34

Busca Local

Prof. Luan Garcia


luan.garcia@pucrs.br
[slides adaptados do curso de IA da Berkeley - ai.Berkeley.edu]
Aula de Hoje
▪ Busca Local
▪ Hill Climbing
▪ Têmpera Simulada
▪ Busca em Feixe Local
▪ Algoritmo Genético
Lembrando
▪ A* expande a borda com o menor valor de f onde
▪ f(n) = g(n) + h(n)
▪ g(n) é o custo para chegar em n
▪ h(n) é uma estimativa admissível do menor custo de n até um nodo
objetivo: 0  h(n)  h*(n)
▪ A performance depende da heurística h utilizada
Criando Heurísticas Admissíveis

▪ Frequentemente heurísticas admissíveis são soluções em problemas


relaxados, onde novas ações são possíveis

15
366

▪ Problema P2 é uma versão relaxada de P1 se A2(s)  A1(s) para todo s


▪ Teorema: h2*(s)  h1*(s) para todo s, então h2*(s) é admissível para P1
Combinando Heurísticas

▪ Dominância: h1 ≥ h2 se
n h1(n)  h2(n)
▪ Em geral, valores maiores são melhores desde que ambas sejam admissíveis
▪ A heurística de custo zero é bem ruim (o que o algoritmo A* faz com h=0?)
▪ A heurística “exata” é muito boa, mas é muito cara de encontar!
▪ O que acontece se tivermos duas heurística e nenhuma domina a outra?
▪ Criamos uma nova heurística, pegando o máximo de cada uma:
h(n) = max( h1(n), h2(n))
▪ Max de heurísticas admissíveis também é admissível e domina ambas!
Consistência das Heurísticas
▪ Ideia central: custos estimados da heurística ≤ custos reais

A ▪ Admissibilidade: custo da heurística ≤ custo real até o objetivo

1 h(n) ≤ custo real de n até G


h=4 C h=1
▪ Consistência: para cada nodo n e todo sucessor n’ de n, temos
h=2
que:
3 h(n) ≤ custo(n,n’) + h(n’)

▪ Consequências da consistência:
G ▪ O valor da função f ao longo de um caminho nunca diminui

▪ Busca A* no grafo é ótima


Otimalidade
▪ Busca em árvore:
▪ A* é ótima se a heurística é admissível
▪ UCS é um caso especial (h = 0)

▪ Busca em grafo:
▪ A* é ótima se heurística é consistente
▪ UCS ótima (h = 0 é consistente)

▪ Consistência implica admissibilidade


▪ O inverso nem sempre é verdade!

▪ Em geral, a maioria das heurísticas admissíveis


naturais tendem a ser consistentes,
especialmente se derivadas do relaxamento de
problemas
A*: Resumo
▪ A* ordena nodos na fila por f(n) = g(n) + h(n)
▪ A* é ótimo para árvores/grafos com heurísticas admissíveis/consistentes

▪ Projeto da heurística é chave: geralmente utilizamos uma solução para o


problema “relaxado”

g
h
Algoritmos de Busca Local
• Nos problemas de busca anteriores, queríamos explorar os caminhos pelo espaço de busca, como um caminho de
Arad para Bucareste.

• Algumas vezes só nos importamos com o estado final, e o caminho até o objetivo é irrelevante.

• 8-rainhas: o que importa é a configuração final das oito rainhas (Este problema possui 64 posições no tabuleiro
onde podemos combinar 8 rainhas ou seja, podemos arrumar o tabuleiro de

64 64!
= = 4.42 𝑏𝑖𝑙ℎõ𝑒𝑠 𝑑𝑒 𝑒𝑠𝑡𝑎𝑑𝑜𝑠‼‼!
8 8! 64 − 8 !

• Essa propriedade geral se mantém para muitas aplicações importantes, como:


• Projeto de circuitos integrados,
• Arranjo físico em instalações industriais,
• Escalonamento de jornadas de trabalho
Algoritmos de Busca Local
• Operam a partir de um estado inicial até os estados vizinhos, sem
acompanhar os caminhos nem o conjunto de estados que foram
alcançados.

• Eles não são sistemáticos – poderiam nunca explorar uma parte do


espaço de busca em que uma solução realmente reside.
Algoritmos de Busca Local
• Possuem duas vantagens importantes:
1. usam pouquíssima memória;
2. frequentemente, podem encontrar soluções razoáveis em grandes ou
infinitos espaços de estados para os quais os algoritmos sistemáticos são
inadequados.

• Também são úteis para resolver problemas de otimização, nos


quais o intuito é encontrar o melhor estado de acordo com uma
função objetivo.
Máximo/mínimo global e local
Cada estado tem um valor
definido pela função objetivo ou
função de custo

Função objetivo
▪ Encontrar máximo global

Função de custo
▪ Encontrar um mínimo global
Hill Climbing
▪ Ideia geral simples:
▪ Inicia em qualquer lugar
▪ Repete: move para o melhor estado vizinho
▪ Se não existem vizinhos melhores, termina
Algoritmo Hill-climbing
função HILL-CLIMBING(problema) retorna um estado
atual ← problema.estado-inicial
loop faça
vizinho ← um successor de atual com valor mais alto
se vizinho.valor ≤ atual.valor então
retorna atual.estado
atual ← vizinho
Função de custo heurística para n-rainhas
▪ Objetivo: n rainhas no tabuleiro sem conflitos, ou seja, nenhuma rainha
atacando outra
▪ Estados: n rainhas no tabuleiro, uma por coluna
▪ Ações: mover uma rainha na sua coluna
▪ Valor da função heurística: número de conflitos
Hill Climbing
• Também chamada de busca gulosa local porque captura um bom estado vizinho sem
decidir com antecedência para onde irá em seguida.
• Pode progredir com grande rapidez em direção a uma solução porque normalmente é
bem fácil melhorar um estado ruim.
• Ex: bastam dois passos no exemplo das rainhas para alcançar o estado que tem ℎ = 0 e
é uma solução.
Problemas de Hill Climbing
▪ Máximos locais: pico mais alto que
cada um de seus estados vizinhos,
embora seja mais baixo que o
máximo global.

▪ Platôs: não existe nenhuma saída


acima a partir da qual é possível
prosseguir.
Problemas de Hill Climbing
▪ Cordilheira: sequência de máximos locais que dificultam a
navegação do algoritmo.
Variações de Hill Climbing
▪ Estocástico:
▪ Escolha de forma aleatória algum movimento que melhore o estado.
▪ Hill Climbing Estocástico pela Primeira escolha:
▪ Gera sucessores aleatoriamente até ser gerado um sucessor melhor que
o estado atual.
▪ Reinício aleatório:
▪ Executa várias vezes o algoritmo com estados iniciais aleatórios
diferentes, até encontrar objetivo.
Têmpera Simulada(Simulated annealing)
▪ Algoritmo de hill climbing que nunca faz movimentos “declive
abaixo” é incompleto, pois pode ficar preso em máximo local.

▪ Algoritmo completamente aleatório é completo, mas totalmente


ineficiente.

▪ E se combinarmos a ideia “gulosa” do hill climbing com um


percurso aleatório?
Têmpera Simulada(Simulated annealing)
▪ Analogia:
▪ Queremos chegar no mínimo global (minimização)
▪ Colocamos uma bola de ping-pong em uma superfície acidentada
▪ Ela rola para um buraco que pode ser um mínimo local
▪ Agitamos a superfície o suficiente para bola sair desse mínimo local
▪ Mas não muito, para não sair até mesmo do mínimo global!
Têmpera Simulada(Simulated annealing)
▪ Inspirado no processo de temperar (endurecer) metais ou vidros,
aquecendo a altas temperaturas e depois resfriando
gradualmente para alcançar um estado ordenado (baixa-energia)
▪ Ideia básica:
▪ Permite movimentos “ruins” ocasionalmente, dependendo da
“temperatura”
▪ Começa agitando com força (com alta temperatura)
▪ Reduz gradualmente a intensidade da agitação (diminui a temperatura)
Algoritmo Têmpera Simulada
function TEMPERA-SIMULADA(problema,escalonamento) return um estado
atual ← problema.estado-inicial
for t = 1 to ∞ do
T ← escalonamento(t)
if T = 0 then return atual
proximo ← um sucessor aleatório de atual
∆E ← proximo.valor – atual.valor
if ∆E > 0 then atual ← proximo
else atual ← proximo apenas com probabilidade e∆E/T

Escalonamento define o valor da “temperatura” T ao longo do tempo


Busca em Feixe Local
▪ Ideia básica:
▪ Manter o controle de vários estados “atuais”, ao invés de apenas um
▪ Iniciar com K estados gerados aleatoriamente
▪ Para cada iteração
▪ Gerar TODOS sucessores de K estados atuais
▪ Se algum for objetivo, termina
▪ Do contrário, escolher os K melhores desses sucessores desses para serem os
novos estados atuais
Exemplo de Busca em Feixe Local (K=4)

8
X7 9
X7 10
9 X8
9 9
8 9 10
9 10

8 10
7 9 9
X6 X5

6
X7 8
X3 9
X7 9
Problema da Busca em Feixe Local
▪ Estados podem ficar rapidamente concentrados em uma
pequena região do espaço de estados, sem nunca sair de um
mínimo local (parecido com hill climbing)
▪ Busca em feixe estocástica:
▪ Escolher k sucessores de forma aleatória, com a
probabilidade de escolher um determinado sucessor
que seja função crescente do seu valor.
▪ Qual outra teoria conhecida isso lembra vocês?
▪ Evolução!
Algoritmos Genéticos
▪ Variante da busca em feixe estocástica
▪ Motivados pela metáfora da seleção natural na biologia:
▪ Existe uma população de indivíduos (estados)
▪ Indivíduos mais aptos (valores melhores) produzem filhos (estados
sucessores) em um processo de cruzamento
▪ Filhos povoam próxima geração
▪ Mutações podem ocorrer nos genes (valores dos estados)
▪ Estados sucessores são gerados pela combinação de estados pais,
ao invés de gerados a partir da modificação de um único estado
Representando 8-Rainhas
▪ Cada estado armazena a posição da rainha em uma coluna
▪ Estado = vetor
▪ Cada posição do vetor = uma coluna
▪ Valor = linha da rainha

1 6 2 5 7 4 8 3
Algoritmos Genéticos

População Função Seleção Cruzamento Mutação


Inicial de
Adaptação

▪ Função de adaptação: retorna valores mais altos para estados melhores (mais próximos
da solução)
▪ Cruzamento: entre p pais (geralmente p = 2) com maior probabilidade para indivíduos
de maior valor na função de adaptação.
▪ Ponto de corte aleatório para cruzamento dos valores.
▪ Mutação: flip de dígito para filho aleatoriamente para alguma pequena probabilidade
independente.
Algoritmos Genéticos
Descendentes

População Função Seleção Cruzamento Mutação


Inicial de
Adaptação

Modifica uma
rainha ao acaso
Algoritmos Genéticos - Possibilidades
▪ Seleção:
▪ selecionar entre todos os indivíduos com probabilidade proporcional à
sua pontuação de aptidão;
▪ Outra possibilidade é selecionar aleatoriamente n indivíduos (n > ρ) e
depois selecionar os ρ mais aptos como pais.
▪ Próxima geração:
▪ Apenas a descendência recém-formada.
▪ Elitismo: incluir alguns pais da geração anterior com melhor pontuação.
Garante que a aptidão geral nunca diminuirá com o tempo.
▪ Abate: todos os indivíduos abaixo de determinado limiar são
descartados, pode levar a uma aceleração do algoritmo.
Algoritmos Genéticos
• Quase sempre, a população é variada no início do processo
• O cruzamento costuma dar grandes passos no espaço de estado no início
do processo de pesquisa (como na têmpera simulada).

• Depois de muitas gerações de seleção em direção a uma melhor


adaptação
• A população torna-se menos diversificada e costuma haver passos
menores.
Algoritmos Genéticos
Resumo
▪ Muitos problemas de configuração e otimização podem
ser formulados como busca local
▪ Famílias gerais de algoritmos:
▪ Hill-climbing, otimização contínua
▪ Têmpera simulada
▪ Busca em feixe local: múltiplas buscas com interação
▪ Algoritmos genéticos: quebra e recombina estados

Vários algoritmos de aprendizado de máquina são buscas


locais

Você também pode gostar