O documento descreve buscas informadas e heurísticas de busca. Ele discute estratégias como melhor primeiro, gulosa e A*, que usam heurísticas para guiar a busca em direção a soluções mais promissoras. O documento também discute problemas que podem ocorrer dependendo da heurística escolhida.
O documento discute aprendizado supervisionado bayesiano. Ele introduz o aprendizado bayesiano como um método probabilístico e descreve que o aprendizado supervisionado tem como objetivo classificação ou regressão para mapear entradas em saídas com base em exemplos.
O documento descreve as bases de dados em lógica de primeira ordem, como interagir com elas fazendo buscas (queries) por meio de sentenças lógicas em LPO, e como qualquer query que possa ser inferida logicamente pela base de dados será respondida afirmativamente. As bases de dados contêm axiomas com informações básicas e teoremas derivados dos axiomas, e o documento discute técnicas como forward chaining, backward chaining e resolução para realizar inferência nas bases de dados.
O documento discute busca como uma abordagem para solução de problemas em inteligência artificial. Explica que os problemas podem ser reduzidos a uma busca em um grafo, onde cada nó representa um estado do mundo e as arestas representam ações que levam de um estado a outro. A solução é um caminho no grafo que leva de um estado inicial a um estado final desejado. Exemplos de tipos de problemas incluem determinísticos e não determinísticos.
O documento discute inferência em lógica proposicional, incluindo tipos de provas como verificação de modelos e aplicação de regras de inferência. Ele explica como aplicar regras de inferência como modus ponens e modus tollens para derivar novas sentenças a partir de premissas, formando uma prova.
O documento descreve um algoritmo de busca retroativa para resolver problemas de satisfação de restrições, utilizando forward checking e heurísticas como valores restantes mínimos, grau e valor menos restritivo. O algoritmo é demonstrado passo a passo em um exemplo de coloração de grafos, definindo variáveis, valores e propagando escolhas.
O documento descreve uma aula sobre lógica de primeira ordem. Apresenta os elementos básicos da lógica de primeira ordem, incluindo termos, predicados e a gramática formal para construir sentenças. Também explica como modelos e interpretações funcionam na lógica de primeira ordem, diferentemente da lógica proposicional.
O documento discute representação do conhecimento através de ontologias, incluindo taxonomias e herança. Ontologias organizam o conhecimento em categorias hierárquicas e permitem raciocinar sobre objetos classificados. Categorias podem ser representadas como predicados ou objetos. A herança permite que propriedades sejam herdadas por subcategorias.
O documento discute aprendizado supervisionado bayesiano. Ele introduz o aprendizado bayesiano como um método probabilístico e descreve que o aprendizado supervisionado tem como objetivo classificação ou regressão para mapear entradas em saídas com base em exemplos.
O documento descreve as bases de dados em lógica de primeira ordem, como interagir com elas fazendo buscas (queries) por meio de sentenças lógicas em LPO, e como qualquer query que possa ser inferida logicamente pela base de dados será respondida afirmativamente. As bases de dados contêm axiomas com informações básicas e teoremas derivados dos axiomas, e o documento discute técnicas como forward chaining, backward chaining e resolução para realizar inferência nas bases de dados.
O documento discute busca como uma abordagem para solução de problemas em inteligência artificial. Explica que os problemas podem ser reduzidos a uma busca em um grafo, onde cada nó representa um estado do mundo e as arestas representam ações que levam de um estado a outro. A solução é um caminho no grafo que leva de um estado inicial a um estado final desejado. Exemplos de tipos de problemas incluem determinísticos e não determinísticos.
O documento discute inferência em lógica proposicional, incluindo tipos de provas como verificação de modelos e aplicação de regras de inferência. Ele explica como aplicar regras de inferência como modus ponens e modus tollens para derivar novas sentenças a partir de premissas, formando uma prova.
O documento descreve um algoritmo de busca retroativa para resolver problemas de satisfação de restrições, utilizando forward checking e heurísticas como valores restantes mínimos, grau e valor menos restritivo. O algoritmo é demonstrado passo a passo em um exemplo de coloração de grafos, definindo variáveis, valores e propagando escolhas.
O documento descreve uma aula sobre lógica de primeira ordem. Apresenta os elementos básicos da lógica de primeira ordem, incluindo termos, predicados e a gramática formal para construir sentenças. Também explica como modelos e interpretações funcionam na lógica de primeira ordem, diferentemente da lógica proposicional.
O documento discute representação do conhecimento através de ontologias, incluindo taxonomias e herança. Ontologias organizam o conhecimento em categorias hierárquicas e permitem raciocinar sobre objetos classificados. Categorias podem ser representadas como predicados ou objetos. A herança permite que propriedades sejam herdadas por subcategorias.
O documento discute o tratamento de incerteza em inteligência artificial. Aborda como a probabilidade e a teoria da decisão podem ser usadas para tomar decisões racionais quando os resultados são incertos, levando em conta a probabilidade de cada resultado e sua utilidade segundo as preferências de quem decide.
O documento discute a avaliação de desempenho de classificadores treinados. Explica que é necessário testar o modelo em um conjunto de dados independente para medir seu desempenho em dados novos. Também apresenta métricas como taxa de erro e curva de aprendizagem para avaliar quantitativamente o modelo.
O documento descreve problemas de satisfação de restrições (CSPs), definidos por um conjunto de variáveis, domínios de valores para cada variável, e restrições sobre combinações de valores de variáveis. Apresenta exemplos de agendamento de aulas e coloração de mapas como CSPs, definindo suas variáveis, domínios e restrições.
O documento discute algoritmos genéticos e representação de cromossomos. Ele explica que os cromossomos podem ser representados de várias formas, incluindo binária, valores inteiros e reais. A representação binária é a mais simples, onde o cromossomo consiste de uma sequência de bits. A mutação e o cruzamento ocorrem durante o algoritmo genético para gerar novas soluções.
O documento descreve os princípios da computação evolutiva e algoritmos genéticos. Ele define computação evolutiva como técnicas que simulam a evolução natural, usando seleção, mutação e reprodução. O documento então explica o processo de seleção, mutação e reprodução em algoritmos genéticos e fornece detalhes sobre sua terminologia e funcionamento.
O documento descreve o algoritmo de máquina de vetor de suporte (SVM), explicando como ele busca encontrar o hiperplano separador de margem máxima entre os dados de treinamento de duas classes. O SVM define fronteiras lineares ótimas para dados linearmente separáveis, maximizando a distância entre o hiperplano separador e os exemplos de treinamento mais próximos, chamados de vetores de suporte. O problema é formulado como um problema de otimização para encontrar os parâmetros ω e b que maximizam essa distância de separação.
O documento discute estimativas de erro em modelos de aprendizagem de máquina. Explica que o erro esperado no conjunto de teste tende a ser maior que no conjunto de treino, devido ao ajuste do modelo aos dados de treino. Também aborda medidas como viés e variância para avaliar estimadores, e como o erro quadrático médio equilibra ambos para medir o desvio total esperado entre a estimativa e o valor real.
O documento descreve as redes neurais e o perceptron. Ele explica que as redes neurais se inspiram nos neurônios biológicos e como o perceptron funciona como a unidade básica de uma rede neural, recebendo sinais de entrada e aplicando uma função de ativação. Também discute possíveis funções de ativação como a função degrau e sigmóide e como os pesos das conexões, incluindo o viés, determinam se um perceptron é ativado ou não.
O documento discute árvores de decisão e florestas aleatórias. Ele explica que árvores de decisão são uma das formas mais simples de aprendizado de máquina, representando uma sequência de regras "se...então" para classificar ou prever saídas com base em atributos de entrada. O documento também descreve características como nós internos representando testes de atributos e folhas especificando saídas, e discute expressividade e variações de árvores de decisão.
O documento descreve a regra de Bayes e redes Bayesianas. Ele fornece um exemplo detalhado sobre como calcular a probabilidade de uma mulher ter câncer de mama dado um resultado positivo em um mamograma usando a regra de Bayes. Ele também define brevemente o que são redes Bayesianas, que representam dependências probabilísticas entre variáveis aleatórias através de um grafo direcionado acíclico.
O documento descreve o funcionamento do algoritmo de backward chaining em programação lógica, começando com uma explicação geral do processo de raciocínio de trás para frente a partir de um objetivo. Em seguida, apresenta formalmente o algoritmo de backward chaining, explicando cada parte do processo de forma recursiva para encontrar substituições que satisfaçam a query dada uma base de conhecimento. Por fim, exemplifica o algoritmo em uma base de conhecimento sobre venda de armas.
O documento descreve os passos para executar resolução e encadeamento para frente em lógica de primeira ordem. Primeiro, as expressões lógicas devem ser convertidas para forma clausal sem quantificadores. Em seguida, as variáveis devem ser substituídas durante a resolução usando o processo de unificação. Por fim, a resolução é executada para derivar novas conclusões.
O documento discute arquivos e exceções em Java. Primeiramente, explica que dados de configuração precisam ser salvos em arquivos para serem preservados entre execuções do programa. Em seguida, descreve como objetos da classe File representam caminhos para arquivos e diretórios, e que escrever dados em arquivos requer objetos FileWriter. Por fim, discute que métodos que manipulam arquivos podem lançar exceções IOException, as quais precisam ser capturadas ou declaradas no método.
Este documento discute métodos abstratos e classes abstratas em Java. Explica que métodos abstratos não têm implementação definida na classe abstrata, mas sim nas subclasses, que são obrigadas a implementá-los. Também explica que a existência de pelo menos um método abstrato torna a classe abstrata, impedindo sua instanciação direta. A classe Casa é usada como exemplo de classe abstrata, já que no sistema modelo existem apenas casas quadradas e retangulares.
As três frases são:
1) O documento discute listas ligadas como uma alternativa a arranjos para alocar dinamicamente espaço na memória para novos itens.
2) Listas ligadas permitem adicionar itens de forma simples, sem necessidade de alocar um novo arranjo maior e copiar o conteúdo do anterior.
3) Cada nó de uma lista ligada contém um valor e um ponteiro para o próximo nó, permitindo navegar pela lista de forma flexível.
O documento discute especificadores de acesso em Java e como eles afetam a herança entre classes. Apresenta exemplos de como atributos privados na classe pai não podem ser acessados na classe filha, mesmo que estejam na memória do objeto, e como os construtores this() e super() devem ser a primeira instrução no construtor da classe filha.
O documento discute herança em classes. Foi quebrada a classe AreaCasa em subclasses Casa, CasaQuad e CasaRet. A classe Residência foi modificada para receber uma instância de Casa (superclasse) em vez de AreaCasa, permitindo o uso de CasaQuad e CasaRet. Isso é demonstrado em um exemplo de código.
O documento descreve o algoritmo de ordenação por inserção (insertion sort). Ele ordena um array percorrendo-o de esquerda para direita e inserindo cada novo elemento na posição correta na subparte já ordenada, deslocando os demais elementos para a direita quando necessário. O exemplo demonstra graficamente cada etapa do processo de ordenação de um array.
O documento discute a busca binária em arranjos ordenados. Ele explica que a busca binária divide o arranjo ao meio em cada etapa e descarta metade dos elementos, levando a buscas potencialmente muito mais rápidas do que a busca sequencial. A busca binária para no elemento buscado, no fim do arranjo, ou quando encontrar um elemento maior que o buscado.
Strings em Java são imutáveis. Ao modificar um caractere em um String, na verdade se está criando um novo objeto String. Comparar Strings com == verifica se os objetos são os mesmos na memória, não se o conteúdo é igual.
O documento discute o tratamento de incerteza em inteligência artificial. Aborda como a probabilidade e a teoria da decisão podem ser usadas para tomar decisões racionais quando os resultados são incertos, levando em conta a probabilidade de cada resultado e sua utilidade segundo as preferências de quem decide.
O documento discute a avaliação de desempenho de classificadores treinados. Explica que é necessário testar o modelo em um conjunto de dados independente para medir seu desempenho em dados novos. Também apresenta métricas como taxa de erro e curva de aprendizagem para avaliar quantitativamente o modelo.
O documento descreve problemas de satisfação de restrições (CSPs), definidos por um conjunto de variáveis, domínios de valores para cada variável, e restrições sobre combinações de valores de variáveis. Apresenta exemplos de agendamento de aulas e coloração de mapas como CSPs, definindo suas variáveis, domínios e restrições.
O documento discute algoritmos genéticos e representação de cromossomos. Ele explica que os cromossomos podem ser representados de várias formas, incluindo binária, valores inteiros e reais. A representação binária é a mais simples, onde o cromossomo consiste de uma sequência de bits. A mutação e o cruzamento ocorrem durante o algoritmo genético para gerar novas soluções.
O documento descreve os princípios da computação evolutiva e algoritmos genéticos. Ele define computação evolutiva como técnicas que simulam a evolução natural, usando seleção, mutação e reprodução. O documento então explica o processo de seleção, mutação e reprodução em algoritmos genéticos e fornece detalhes sobre sua terminologia e funcionamento.
O documento descreve o algoritmo de máquina de vetor de suporte (SVM), explicando como ele busca encontrar o hiperplano separador de margem máxima entre os dados de treinamento de duas classes. O SVM define fronteiras lineares ótimas para dados linearmente separáveis, maximizando a distância entre o hiperplano separador e os exemplos de treinamento mais próximos, chamados de vetores de suporte. O problema é formulado como um problema de otimização para encontrar os parâmetros ω e b que maximizam essa distância de separação.
O documento discute estimativas de erro em modelos de aprendizagem de máquina. Explica que o erro esperado no conjunto de teste tende a ser maior que no conjunto de treino, devido ao ajuste do modelo aos dados de treino. Também aborda medidas como viés e variância para avaliar estimadores, e como o erro quadrático médio equilibra ambos para medir o desvio total esperado entre a estimativa e o valor real.
O documento descreve as redes neurais e o perceptron. Ele explica que as redes neurais se inspiram nos neurônios biológicos e como o perceptron funciona como a unidade básica de uma rede neural, recebendo sinais de entrada e aplicando uma função de ativação. Também discute possíveis funções de ativação como a função degrau e sigmóide e como os pesos das conexões, incluindo o viés, determinam se um perceptron é ativado ou não.
O documento discute árvores de decisão e florestas aleatórias. Ele explica que árvores de decisão são uma das formas mais simples de aprendizado de máquina, representando uma sequência de regras "se...então" para classificar ou prever saídas com base em atributos de entrada. O documento também descreve características como nós internos representando testes de atributos e folhas especificando saídas, e discute expressividade e variações de árvores de decisão.
O documento descreve a regra de Bayes e redes Bayesianas. Ele fornece um exemplo detalhado sobre como calcular a probabilidade de uma mulher ter câncer de mama dado um resultado positivo em um mamograma usando a regra de Bayes. Ele também define brevemente o que são redes Bayesianas, que representam dependências probabilísticas entre variáveis aleatórias através de um grafo direcionado acíclico.
O documento descreve o funcionamento do algoritmo de backward chaining em programação lógica, começando com uma explicação geral do processo de raciocínio de trás para frente a partir de um objetivo. Em seguida, apresenta formalmente o algoritmo de backward chaining, explicando cada parte do processo de forma recursiva para encontrar substituições que satisfaçam a query dada uma base de conhecimento. Por fim, exemplifica o algoritmo em uma base de conhecimento sobre venda de armas.
O documento descreve os passos para executar resolução e encadeamento para frente em lógica de primeira ordem. Primeiro, as expressões lógicas devem ser convertidas para forma clausal sem quantificadores. Em seguida, as variáveis devem ser substituídas durante a resolução usando o processo de unificação. Por fim, a resolução é executada para derivar novas conclusões.
O documento discute arquivos e exceções em Java. Primeiramente, explica que dados de configuração precisam ser salvos em arquivos para serem preservados entre execuções do programa. Em seguida, descreve como objetos da classe File representam caminhos para arquivos e diretórios, e que escrever dados em arquivos requer objetos FileWriter. Por fim, discute que métodos que manipulam arquivos podem lançar exceções IOException, as quais precisam ser capturadas ou declaradas no método.
Este documento discute métodos abstratos e classes abstratas em Java. Explica que métodos abstratos não têm implementação definida na classe abstrata, mas sim nas subclasses, que são obrigadas a implementá-los. Também explica que a existência de pelo menos um método abstrato torna a classe abstrata, impedindo sua instanciação direta. A classe Casa é usada como exemplo de classe abstrata, já que no sistema modelo existem apenas casas quadradas e retangulares.
As três frases são:
1) O documento discute listas ligadas como uma alternativa a arranjos para alocar dinamicamente espaço na memória para novos itens.
2) Listas ligadas permitem adicionar itens de forma simples, sem necessidade de alocar um novo arranjo maior e copiar o conteúdo do anterior.
3) Cada nó de uma lista ligada contém um valor e um ponteiro para o próximo nó, permitindo navegar pela lista de forma flexível.
O documento discute especificadores de acesso em Java e como eles afetam a herança entre classes. Apresenta exemplos de como atributos privados na classe pai não podem ser acessados na classe filha, mesmo que estejam na memória do objeto, e como os construtores this() e super() devem ser a primeira instrução no construtor da classe filha.
O documento discute herança em classes. Foi quebrada a classe AreaCasa em subclasses Casa, CasaQuad e CasaRet. A classe Residência foi modificada para receber uma instância de Casa (superclasse) em vez de AreaCasa, permitindo o uso de CasaQuad e CasaRet. Isso é demonstrado em um exemplo de código.
O documento descreve o algoritmo de ordenação por inserção (insertion sort). Ele ordena um array percorrendo-o de esquerda para direita e inserindo cada novo elemento na posição correta na subparte já ordenada, deslocando os demais elementos para a direita quando necessário. O exemplo demonstra graficamente cada etapa do processo de ordenação de um array.
O documento discute a busca binária em arranjos ordenados. Ele explica que a busca binária divide o arranjo ao meio em cada etapa e descarta metade dos elementos, levando a buscas potencialmente muito mais rápidas do que a busca sequencial. A busca binária para no elemento buscado, no fim do arranjo, ou quando encontrar um elemento maior que o buscado.
Strings em Java são imutáveis. Ao modificar um caractere em um String, na verdade se está criando um novo objeto String. Comparar Strings com == verifica se os objetos são os mesmos na memória, não se o conteúdo é igual.
REGULAMENTO DO CONCURSO DESENHOS AFRO/2024 - 14ª edição - CEIRI /UREI (ficha...Eró Cunha
XIV Concurso de Desenhos Afro/24
TEMA: Racismo Ambiental e Direitos Humanos
PARTICIPANTES/PÚBLICO: Estudantes regularmente matriculados em escolas públicas estaduais, municipais, IEMA e IFMA (Ensino Fundamental, Médio e EJA).
CATEGORIAS: O Concurso de Desenhos Afro acontecerá em 4 categorias:
- CATEGORIA I: Ensino Fundamental I (4º e 5º ano)
- CATEGORIA II: Ensino Fundamental II (do 6º ao 9º ano)
- CATEGORIA III: Ensino Médio (1º, 2º e 3º séries)
- CATEGORIA IV: Estudantes com Deficiência (do Ensino Fundamental e Médio)
Realização: Unidade Regional de Educação de Imperatriz/MA (UREI), através da Coordenação da Educação da Igualdade Racial de Imperatriz (CEIRI) e parceiros
OBJETIVO:
- Realizar a 14ª edição do Concurso e Exposição de Desenhos Afro/24, produzidos por estudantes de escolas públicas de Imperatriz e região tocantina. Os trabalhos deverão ser produzidos a partir de estudo, pesquisas e produção, sob orientação da equipe docente das escolas. As obras devem retratar de forma crítica, criativa e positivada a população negra e os povos originários.
- Intensificar o trabalho com as Leis 10.639/2003 e 11.645/2008, buscando, através das artes visuais, a concretização das práticas pedagógicas antirracistas.
- Instigar o reconhecimento da história, ciência, tecnologia, personalidades e cultura, ressaltando a presença e contribuição da população negra e indígena na reafirmação dos Direitos Humanos, conservação e preservação do Meio Ambiente.
Imperatriz/MA, 15 de fevereiro de 2024.
Produtora Executiva e Coordenadora Geral: Eronilde dos Santos Cunha (Eró Cunha)
Slides Lição 11, Central Gospel, Os Mortos Em CRISTO, 2Tr24.pptxLuizHenriquedeAlmeid6
Slideshare Lição 11, Central Gospel, Os Mortos Em Cristo, 1Tr24, Pr Henrique, EBD NA TV, Revista ano 11, nº 1, Revista Estudo Bíblico Jovens E Adultos, Central Gospel, 2º Trimestre de 2024, Professor, Tema, Os Grandes Temas Do Fim, Comentarista, Pr. Joá Caitano, estudantes, professores, Ervália, MG, Imperatriz, MA, Cajamar, SP, estudos bíblicos, gospel, DEUS, ESPÍRITO SANTO, JESUS CRISTO, Com. Extra Pr. Luiz Henrique, 99-99152-0454, Canal YouTube, Henriquelhas, @PrHenrique
Aula história , caracteristicas e esteriótipos em relação a DANÇA DE SALAO.pptx
(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
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
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
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
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
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
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
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