O documento descreve os conceitos fundamentais de busca em inteligência artificial, incluindo a estrutura de dados de nós, fronteira e conjuntos explorados. Detalha três algoritmos de busca: busca simples, busca em profundidade que usa pilha e busca em largura que usa fila.
O documento descreve os conceitos fundamentais de busca em inteligência artificial, incluindo a estrutura de dados de nós, fronteira e conjuntos explorados. Detalha três algoritmos de busca: busca simples, busca em profundidade que usa pilha e busca em largura que usa fila.
O documento descreve os conceitos fundamentais de busca em inteligência artificial, incluindo a estrutura de dados de nós, fronteira e conjuntos explorados. Detalha três algoritmos de busca: busca simples, busca em profundidade que usa pilha e busca em largura que usa fila.
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