Você está na página 1de 9

UNIP - UNIVERSIDADE PAULISTA

Inteligência Artificial
Roteiro

estrutura de dados: os nós


conjunto fronteira
conjunto de itens explorados
Resolvendo problemas de busca
Busca simples
Busca em profundidade
Busca em largura
UNIP - UNIVERSIDADE PAULISTA
Inteligência Artificial
Resolvendo problemas de busca

Estrutura básica de dados para a busca

Em um processo de busca, os dados são frequentemente


armazenados em um nó, uma estrutura de dados que contém as
seguintes informações:
Um estado
Seu nó pai, através do qual o nó atual foi gerado
A ação que foi aplicada ao estado do pai para chegar ao nó
atual
O custo do caminho do estado inicial para este nó
UNIP - UNIVERSIDADE PAULISTA
Inteligência Artificial
Resolvendo problemas de busca

A estrutura dos dados - nós

Os nós contém informações que os tornam muito úteis para fins de


algoritmos de pesquisa.
Eles contêm um estado, que pode ser verificado usando o teste de
meta para ver se é o estado final.
Se um nó é um estado final o custo do caminho do nó pode ser
comparado aos custos do caminho de outros nós, o que permite
escolher a solução ideal (ótima).
Uma vez que o nó é escolhido, em virtude de armazenar o nó pai e
a ação que levou do pai ao nó atual, é possı́vel rastrear cada passo
do caminho do estado inicial a este nó, e esta sequência de ações é
a solução.
UNIP - UNIVERSIDADE PAULISTA
Inteligência Artificial
Resolvendo problemas de busca

A fronteira

Os nós são simplesmente uma estrutura de dados - eles não


buscam, apenas contém informações.
Para realizar de fato a busca usamos dois conjuntos:
a fronteira, um conjunto que armazena os nós que devem ser
explorados
um conjuto de nós que já foram explorados
UNIP - UNIVERSIDADE PAULISTA
Inteligência Artificial
Resolvendo problemas de busca

Busca simples

O algoritmo começa com:


a fronteira começa contendo um estado inicial
um conjunto vazio de itens explorados
em seguida repete as seguintes ações até que uma solução seja
alcançada:
Repita:
1 Se a fronteira estiver vazia:
Pare: não há solução para o problema.
2 Remova um nó da fronteira: este é o nó atual
3 Se o nó contém o estado objetivo: devolva a solução e pare
Senão: expanda o nó (encontre todos os novos nós que podem
ser alcançados a partir do atual e adicione o nó atual ao
conjunto de nós já explorados
UNIP - UNIVERSIDADE PAULISTA
Inteligência Artificial
Resolvendo problemas de busca

Na descrição anterior da fronteira, uma coisa não foi mencionada:


no estágio 1 do pseudocódigo acima, qual nó deve ser removido?
Esta escolha tem implicações na qualidade da solução e com que
rapidez ela é alcançada.
Existem várias maneiras de abordar a questão de quais nós devem
ser considerados primeiro, dois dos quais podem ser representados
pelas estruturas de dados:
de pilha (busca em profundidade)
fila (busca em largura)
UNIP - UNIVERSIDADE PAULISTA
Inteligência Artificial
Resolvendo problemas de busca

Busca em profundidade

Um algoritmo de busca em profundidade (depth-first search


DFS) esgota cada uma das direções antes de tentar outra direção.
Para isso, a fronteira é gerenciada como uma estrutura de dados
em pilha (LIFO).
Depois que os nós são adicionados à fronteira, o primeiro nó a ser
removido e considerado é o último a ser adicionado. Isso resulta
em um algoritmo de pesquisa que funciona como o mais profundo
possı́vel na primeira direção, deixando todas as outras direções
para mais tarde.
UNIP - UNIVERSIDADE PAULISTA
Inteligência Artificial
Resolvendo problemas de busca

Busca em largura

O oposto da busca em profundidade seria a busca em largura


(breadth-first search - BFS)
O algoritmo de busca em largura seguirá várias direções ao mesmo
tempo, tomando um um passo em cada direção possı́vel antes de
dar o segundo passo em cada direção.
Para isso, a fronteira é gerenciada como uma estrutura de dados
em fila (FIFO).
Os novos nós são inseridos na fronteira em fila, e os próximo nó
considerado será o que foi adicionado primeiro.
Isso resulta em um algoritmo de busca que dá um passo em cada
direção possı́vel antes de dar um segundo passo em qualquer
direção.
UNIP - UNIVERSIDADE PAULISTA
Inteligência Artificial
Resolvendo problemas de busca

Busca em profundiade (DFS)


Pró: Na melhor das hipóteses, é o mais rápido
Contra: É possı́vel que a solução encontrada não seja ótima
Busca em largura (BFS)
Pró: Encontra solução ótima
Contra: Na pior das hipóteses, esse algoritmo leva o tempo
mais longo possı́vel para ser executado

Você também pode gostar