Escolar Documentos
Profissional Documentos
Cultura Documentos
.
Com base na classificação dos sistemas que atuam racionalmente ou fazem
tarefas corretamente, encontram-se os “agentes”. Um agente é uma entidade que
percebe, raciocina e atua. Sendo assim, o projetista não determina um mapea-
mento entre percepções e ações de um agente, mas determina quais objetivos o
agente deve alcançar. É necessário que o próprio agente construa um plano de
ações que atinjam os objetivos (como se o próprio agente construisse o próprio
programa). Como exemplo de aplicação tem-se: o agente aspirador de pó, um
agente motorista de táxi, uma sonda espacial.
1 A atuação de um agente
Um agente atua no ambiente, por meio de raciocínio. Esse raciocínio nada mais é
do que buscar solução em um conjunto de estados possíveis (finitos ou infinitos).
A relação desses estados, pode ser representada por um grafo. Para identificar a
solução, a sequência de estados que atinjam o objetivo, são utilizados algoritmos,
que encontrarão a partir do estado inicial (ou atual) o estado objetivo (ou final).
Como exemplo, tem-se o “Aspirador de pó.”
Um robô aspirador de pó deve limpar uma casa com dois cômodos.
As operações que o robô sabe executar são: aspirar, ir à esquerda,
ir à direita. O problema consiste em montar um plano de tal forma
que estando o robô, inicialmente, no cômodo à direita, limpe os dois
comodos que possuem sujeira. Quais os estados possíveis no mundo
do aspirador e as transições necessárias?
1
IA - Busca no Espaço de Estados
1.1 Estados
Estados são representados por estruturas, em que cada componente denota um atributo
do estado representado. Por exemplo, no Mundo do Aspirador, cada estado pode ser
representado por uma estrutura da forma [X; Y;Z], em que:
• X: representa um dos 2 cômodos, se o aspirador está no cômodo 1 ou no cômodo
2.
• Y: representa se o primeiro cômodo está sujo= 1 ou não=0
• Z: representa se o segundo cômodo está sujo=1 ou não=0
Supondo o estado inicial, em que o aspirador se encontra no cômodo 1 e somente o
primeiro cômodo esteja sujo.
[1; 1; 0]
2 Busca
No desenvolvimento de um software para resolver um problema, o projetista pode
optar por vários paradigmas de modelagem do problema:
• O sistema é modelado por procedimentos que alteram os dados de entrada.
• O sistema é modelado por funções.
• O sistema é modelado por predicados.
• O sistema é modelado por objetos.
Uma outra forma de modelagem é a busca, sendo necessário:
• Definir o espaço de estados (S e A).
• Estado inicial (s0 ∈ S)
• o estado meta (G ⊂ S)
• Definir as transições.
• Escolher um algoritmo de busca.
Os processos de busca utilizam diversos algoritmos, denominados de algoritmos
de busca e são classificados em 3 tipos: não informada, informada e heurística.
O rastreamento da execução de um algoritmo de busca produz uma estrutura
denominada de árvore de busca, uma forma simplificada de grafo.
O processo consiste em:
1. Coloca-se o estado inicial como nodo raiz.
2. Cada operação sobre o estado raiz gera um novo nodo (denominado de sucessor).
3. Repete-se este processo para os novos nodos até gerar o nodo que representa o
estado meta.
4. Aplicar estratégia de busca: que nodo escolher para expandir.
Detalhes de implementação :
Verificar se um estado já está na árvore, pode levar muito tempo. Como exemplo,
tem-se uma árvore com milhares de estados do jogo de xadrez, cada novo estado deve
ser comparado com outros milhares de estados. Ter uma tabela hash (que tem tempo
ótimo de consulta) para saber se determinado nodo existe na árvore.
Características :
O algoritmo de busca em largura é:
• Completo
• Ótimo
• Tempo: explorar O(rp ) nodos, em que:
– r = fator de ramificação
– p = profundidade do estado meta
– O(rp ) = 1 + r + r2 + r3 + .... + rp
• Espaço: guardar O(rp ) nodos.
Exemplo de complexidade
Prof. Nodos Tempo Memória
0 1 1 ms 100 bytes
2 111 0,1 seg 11 Kbytes
4 11.111 11 seg 1 Mbyte
6 106 18 min 111 Mbytes
8 108 31 horas 11 Gbytes
12 101 2 35 anos 111 Tbytes
14 101 4 3500 anos 11.111 Tbytes
Características :
O algoritmo de busca em profundidade é:
• Não completo: caso a meta esteja em profundidade maior que m. Se m = 1,
é completo se o espaço de estados é finito e existe poda para não haver loops
entre as operações.
• não é ótimo
• Tempo: explorar O(rp ) nodos, é ruim se p é muito maior que r
• Espaço: guardar O(rp ) nodos. exemplo em profundidade 12, ocupa 12 Kbytes
via(origem,destino,distância).
oper(vai(A;B); A;B;C) ← via(A;B;C).
Custo de caminho (g(s)) : Em uma árvore de busca, todo estado s está asso-
ciado a um caminho que leva do estado inicial s0 até s. Logo, pode ser definido como
custo de um estado, em uma árvores de busca, como sendo o custo do caminho que
leva até o estado.
2.2.3 Heurística
Heurística é uma função que estima o custo mínimo de um caminho (desconhecido)
que leva de um determinado estado a um outro estado. Seja h* uma função que calcula
o custo mínimo exato de um caminho que leva de um determinado estado a um estado
meta. Formalmente, uma função heurística pode ser qualquer função h que apresente
as seguintes propriedades:
• h(s) = 0, se e somente se, s ∈ G e
• para todo s ∈ S, h(s) ≤ h ∗ (s).
Essas propriedades garantem que a estimativa dada pela função heurística seja
admissível, ou seja, que nunca superestime o custo real de uma solução. Note que as
funções heurísticas dependem do domínio de aplicação, bem como da criatividade e
experiência de quem a projeta.
busca pela melhor estimativa se baseia no custo estimado h(s) do caminho que ainda
precisa ser percorrido, a partir de s, até um estado meta.
No algoritmo 2.6, pode ser visualizado a Busca por Melhor Estimativa A função
sucessoresH devolve uma lista de estados sucessores e os respectivos custos estimados
(necessários para estabelecer a ordem dos estados na fila de prioridades ascendente),
que são dados pela função h(s).
Características :
O algoritmo de busca A* é:
• Completo
• Ótimo
• Tempo: explorar O(rp ) nodos, no pior caso, (r = fator de ramificação).
• Espaço: guardar O(rp) nodos, no pior caso, (p = profundidade do estado meta).
Obs: Como guarda todas as soluções, não deve ser utilizadopara problemas em pro-
blemas de larga escala.
Referências
[1] AMBLE, T. Logic Programming and Knowledge Engineering. Addison-
Wesley, 1987.
IA - Busca no Espaço de Estados