Escolar Documentos
Profissional Documentos
Cultura Documentos
Abstract—Este trabalho tem como objetivo apresentar, explicar a) Busca em largura: A pesquisa em largura consiste na
e comparar a programação dinâmica (PD) e também os principais construção de uma árvore de estados partindo do estado inicial
métodos de busca existentes, além de apresentar implementações - onde se aplica, a todo momento, todas as regras possı́veis
de dois destes - implementação esta que servirá para comparar os
métodos aplicados de acordo com as propriedades Completude, aos estados de maior profundidade. Sempre encontra a solução
Otimalidade, Complexidade de Tempo e Complexidade de Espaço. (quando esta existe), mas com um alto custo considerando
que demora muito tempo e ocupa muito espaço. Porém, sua
Palavras-chave—Métodos de Busca, Implementações, Pro- principal vantagem é que sempre encontra o MENOR caminho
priedades, Programação Dinâmica. entre o nodo inicial e o final mais próximo.
b) Busca em profundidade: Já a pesquisa em profun-
I. I NTRODUÇ ÃO didade consiste na exploração completa de cada ramo da
Os métodos de busca não foram ”inventados” para solu- árvore antes mesmo de conhecer o ramo vizinho. Ela tem um
cionar os problemas mais complexos da humanidade - muito custo bom considerando que usa pouca memória, é boa para
pelo contrário, tiveram suas primeiras aplicações em desafios problemas com várias soluções. Porém, não pode ser usada em
lógicos simples e bem conhecidos. Historicamente, as primeiras árvores com profundidade infinita, correndo o risco de ficar
situações a serem estudadas foram os quebra-cabeças, os jogos presa em ramos errados. A busca em profundidade não encontra
e a prova automática de teoremas. Ou seja, os métodos de busca necessariamente a solução mais rápida, mas acaba sendo mais
são pensados para resolver problemas solucionáveis por seres eficiente se tratando de situações com várias soluções ou vários
humanos - soluções essas que estão associadas à inteligência. caminhos para a solução.
Esses são problemas de conhecimento total, ou seja, tudo o que 2) Busca Heurı́stica: A busca heurı́stica leva em conta o ob-
precisa para solucioná-los é conhecido. Como por exemplo, se jetivo para decidir qual caminho escolher - ou seja, ela utiliza de
um método de busca fosse construir um carro, seria necessário conhecimento extra sobre o problema para guiar o seu processo
que todas as peças, sem exceção, estivessem dispostas assim de busca. Um bom exemplo de comparação é a procura de um
como suas funções individuais e em conjunto. Dessa forma, é barco perdido no oceano. A busca às cegas procura o barco no
possı́vel traçar um caminho até a resolução do problema. oceano inteiro. A busca heurı́stica utiliza informações relativas
Um problema de busca é definido por alguns elementos, e o a esse problema (vento, correntes marı́timas, clima etc.). Em
primeiro a ser citado é o espaço de estados, onde cada módulo muitos casos, a utilização dos métodos de busca às cegas pode
dele descreve uma possı́vel situação do problema. Outro é um se tornar inviável devido o alto número de nós explorados
estado inicial, que descreve a situação inicial do problema. para chegar até a solução. No método heurı́stico, na maioria
Há também os estados finais, que representam as situações das vezes é possı́vel estabelecer regras que ajudem a reduzir
finais/desejáveis. Por fim, há um conjunto de procedimentos a busca - essas técnicas dependem de informações especı́ficas
que, de acordo com o estado dado, determinam todos os outros sobre o problema abordado. Esse tipo de informação é chamado
estados que podem ser alcançados a partir dele. de informação heurı́stica, enquanto os procedimentos de busca
são chamados de métodos de busca heuristica. As principais
II. M ATERIAIS E M ÉTODOS estratégias de busca heurı́stica são a ”subida da encosta”, ”o
melhor primeiro”, e a ”têmpera simulada”.
A. Métodos de Busca
a) Busca ”Subida da Encosta”: O método ”subida da
Existem múltiplas estratégias de busca para a resolução de encosta” é o mais popular e também o mais simples. Ele é
problemas - cada uma com suas particularidades e resultados. baseado na busca em profundidade, que tem a meta de alcançar
Essas estratégias de busca são divididas em dois grandes o objetivo com o menor número de passos possı́vel. A sua
cenários: a busca às cegas e a busca heurı́stica. intuição heurı́stica é de que o número de passos para atingir
1) Busca às Cegas: A busca às cegas tem esse nome pois um objetivo é inversamente proporcional ao tamanho desses
ela não leva em consideração informações especı́ficas sobre o passos. Ele SEMPRE encontra uma solução, com custo baixo
problema que está resolvendo. Ela tem dois tipos principais, e tentando percorrer o menor número de nodos possı́vel. Ele
que são a pesquisa em largura e a pesquisa em profundidade. é dividido em duas variações: a subida de encosta simples e
a subida de encosta pela trilha mais ı́ngreme. A primeira vai a) Implementação da Busca em Largura: Para a resolução
examinando os sucessores do atual estado e prossegue para o do problema foram utilizadas 3 bibliotecas: a stl list, para
primeiro estado maior que o atual. A subida de encosta pela implementação das funções de listas - que será a estrutura
trilha mais ı́ngreme examina todos os sucessores do atual estado principal do programa. Outra é uma lista de adjacência que
e escolhe para onde prosseguir com base em qual é o mais representará o grafo, além da queue que será utilizada para
próximo da solução. implementar a fila que dará a ordem de leitura, e por fim a
b) Busca ”O melhor primeiro” (BestFirst): O método ”o iostream, que é a biblioteca com funções padrões do C++.
melhor primeiro” combina os melhores pontos da busca em
largura com os melhores pontos da busca em profundidade. Ele
procura otimizar a solução considerando todas as informações
disponı́veis naquele instante, não somente da última expansão.
Todos os estados abertos até esse instante são candidatos a
serem expandidos. Apesar de sempre encontrar uma solução,
pode não ser o método mais rápido de utilização. Seu custo é
relativamente baixo, porém seu número de nodos explorados é
imprevisı́vel - podendo ser muito alto ou muito baixo.
c) Busca ”Têmpera Simulada”: A estratégia ”têmpera
simulada*” é adequada em problemas em que a subida de
encosta encontra demasiados paltôs e locais máximos. Por não
utilizar backtracking, não garante que a solução encontrada
seja a mais assertiva possı́vel. Tem esse nome pois se inspira
no processo de têmpera do aço - no qual as temperaturas são
gradativamente abaixadas até que a estrutura molecular se torne
uniforme o suficiente. O que esse método faz é atribuir uma
”energia” inicial ao processo de busca, o que permite que além Fig. 2. Grafo criado para a Busca em Largura.
de subir encostas, ele também seja capaz de descer encostas e
percorrer platôs se houver energia suficiente. Essa energia decai
ao longo do tempo, fazendo com que o processo se estabilize
em algum máximo que tem maior chance de ser solução do
problema.