< Return to home

Problem-Solving Agentes


Problem-solving agents, ao contrário de agentes mais simples, precisam considerar ações futuras e suas consequências. Dado um objetivo definido com base no estado final desejado e em medidas de desempenho, encontrar a melhor forma de alcançá-lo pode ser complexo, exigindo estratégias de busca adequadas à situação. Em resumo, essa "forma ótima" refere-se à sequência de ações que o agente deve seguir para atingir o objetivo.

Arad-Bucareste

Uma procura relativamente simples, a olho, levar-nos-ia à conclusão que o caminho com menor custo que liga Arad a Bucareste é o caminho


\[Arad→Sibiu→Rimnicu Vilcea→Pilesti→Bucareste\]
Um agente não pode fazer "pesquisas a olho" e precisa de uma estratégia de procura apropriada para encontrar a sequência de ações correta (estratégias que serão discutidas mais adiante). Após identificar essa sequência, o agente a executa na ordem definida. Como nota, podemos dizer que o ambiente em questão é estático, completamente observável, discreto e determinístico.

Tipos de problemas


Determinista e completamente observávelproblema com estado único: O agente sabe exatamente em que estado se encontra, e a solução é uma sequência fixa de ações.

Não observávelproblema de conformidade: O agente pode não saber exatamente onde está, mas, se existir uma solução, ela será uma sequência de ações.

Não determinista e/ou parcialmente observávelproblema de contingência: O agente recebe nova informação através das perceções sobre o estado atual. A solução é representada como uma árvore de ações ou um plano, normalmente alternando entre busca e execução.

Espaço de estados desconhecidoproblema de exploração (executado "online"): O agente descobre o ambiente à medida que interage com ele.

Procura cega


Um estado é uma (representação de uma) configuração física.

Um é uma estrutura de dados constituinte da árvore de procura incluindo o pai, o estado, e outros detalhes relevantes para o algoritmo

Antes de referir algumas estratégias de procura cega, vamos precisar de definir um par de noções bastante importantes quanto à classificação das mesmas:

Para nos ajudar a calcular as noções de complexidade temporal e espacial vamos utilizar variaveis que nos vão ajudar a descrever as mesmas:

Procura em Largura Primeiro (PLP) / Breadth-First Search (BFS)

A procura em largura primeiro expande o nó de menor profundidade na fronteira - visita os nós de uma dada profundidade e expande-os, gerando os nós da próxima profundidade, que apenas serão visitados assim que todos os da atual tiverem sido visitados.

Implementação: frontier é uma fila FIFO; novos sucessores vão para o fim

Note-se que a BFS deve realizar o teste objetivo assim que o nó é gerado, para evitar processamento desnecessário. Numa BFS, sabemos que no nó do primeiro teste objetivo passado com sucesso vamos ter a solução com menor profundidade, já que todos os nós que existem a uma profundidade menor - com menor custo - já foram exploradas e não passaram no teste.

É, aqui, clara a diferença temporal e espacial entre realizar o teste na geração e na expansão dos nós: com o teste na geração, exploramos completamente apenas 2 níveis da árvore (já que G ao ser gerado passa logo o teste objetivo e acabamos), poupando aí a expansão de todo um nível da árvore.

Procura de Custo Uniforme

A procura de custo uniforme é equivalente ao algoritmo de Dijkstra, que expande sempre o nó da fronteira com o menor custo de caminho. O teste objetivo deve ser realizado durante a expansão do nó, e não na sua geração, pois o primeiro nó a passar o teste pode não ser o de menor custo total. Por exemplo, se gerarmos dois nós, A e B, com custos de 88 e 66, respectivamente, e ambos forem nós-objetivo, B representa o caminho ótimo. Se o teste fosse feito na geração e A fosse considerado primeiro, ele seria erroneamente incluído no caminho ótimo em vez de B.

Implementação: fila ordenada pelo custo do caminho acumulado

Procura em Profundidade Primeiro (PDP) / Depth-First Search (DFS)

A procura em profundidade expande sempre o nó com a maior profundidade na fronteira, explorando um caminho até o fim e recuando quando não há mais opções de progresso.