Métodos de busca em inteligência artificial
1.1
Etapas na resolução de problemas
A resolução de um problema complexo exige o uso de estrátegias baseadas em decomposição que por sua vez gera uma árvore de tarefas.
Etapas:
a) Decomposição
Consiste na divisão do problema em subtarfeas, sendo as tarefas inferiores as mais simples de resolver. Esta etapa origina uma árvore de tarefas. (top-down).
b) Resolução
Consiste no processamento daquelas tarefas que não geram subtarefas. Pela complexidade da tarefa original, normalmente tem-se diversas tarefas e consequentemente um grande número de procedimentos, alguns de natureza simbólica e outros de natureza numérica.
Um outro problema nesta etapa é o planejamento na resolução das tarefas porque os resultados do processamento de uma tarefa influencia no processamento de outra. O planejamento da sequência de resolução pode requerir heurísticas para direcionar o sequenciamento ou inclusive processar as tarefas de forma cooperativa.
c) Integração
Processa a combinação dos resultados gerados no processamento de tarefas de um nível dado a fim de resolver as tarefas do nível superior imediato. (bottom-up).
Exemplo:
Decomposição para o projeto de um motor elétrico
Figura 2.1 Diagrama esquemático da decomposição de tarefas para o projeto de um motor elétrico.
1.2
Resolução de problemas por busca heurística
• Representação do problema em seu espaço de estados.
Exemplo: Em um sistema dinâmico pode considerarse como espaço de estados: posições, velocidades, etc.; não devem ser redundantes.
o Caso de agentes: formulação da meta formulação do problema busca solução, execução • Formulando problemas
o Conhecimento e tipos de problemas
Problemas de um único estado. Exemplo: sensor completo. Problemas de vários estados. Exemplo: sensor incompleto.
Problemas de contingências. Exemplo: sensando durante execução. Busca y execução.
Problemas de exploração.
• Problemas bem definidos e soluções Problema:
é um conjunto de informação que o agente usará para decidir o que fazer. Os elementos básicos na definição de um problema são os estados e as ações. Para capturá-los formalmente precisa-se o seguinte:
Estado inicial.
Conjunto de ações possíveis disponíveis ao agente. O térmo "operador" denota a descrição de uma ação em termos de que estado será alcançado ao realizar a ação em um estado particular.
Uma formulação alternativa usa uma função sucessor S. Dado um estado x, S(s) devolve o conjunto de estados alcançaveis desde x por qualquer única ação.
O estado inicial mais os operadores definem o espaço de estados do problema, o qual se define como o conjunto de todos os estados alcançaveis desde o estado inicial por qualquer sequência de ações. Uma trajetória (path) ou caminho no espaço de estados é simplesmente qualquer sequência de ações que levan de um estado a outro. O próximo elemento de um problema é:
O teste da meta que o agente pode aplicar a uma descrição de um único estado para determinar si é um estado meta. Ás vezes há um conjunto explícito de possíveis estados meta e o teste da meta somente verifica se foi alcançado um deles. Em outros casos a meta é especificada por uma propriedade abstrata
em lugar de um conjunto de estados explicitamente enumerados. Exemplo: o xadrez, em que se pretende alcançar o estado de xeque-mate.
Pode acontecer que uma soluçãoseja preferível a outra, embora ambos consigam a meta.
Uma função custo da trajetória a qual asigna um custo a uma trajetória. O custo de uma trajetória é a soma dos custos das ações individuais ao longo da trajetória.
Definição de um problema -->
Estado inicial Conjunto de operadores
Teste da meta Função custo da trajetória
Exemplo:
Dirigir um carro de uma cidade a outra cidade "z" em um mapa estado inicial = uma das cidades do mapa
teste da meta = é esta a cidade z ?
operadores = dirigir ao longo das vías entre as cidades
O processo de retirar ou sacar algum detalhe de uma representação denomina-se abstração.
1.2.1
Problemas exemplos (Resolução de problemas por busca heurística)
• Problemas simples (toy problems).o 8 puzzle (ordenamento de um quadrado mágico). Estados: localização em cada um dos 9 quadradinhos. Operadores: movimentar a direita, esquerda, acima, abaixo. Teste da meta: estado que alcança ordenamento desejado. Custo da trajetória: cada passo custa 1.
4
1
7
5
6
3
2
8
O problema dos blocos deslizantes (sliding block puzzles) é um problema de classe NP-complete.
Primeira alternativa:
Teste da meta: estão as 8 damas colocadas no tabuleiro e nenhuma é atacada por outra ?
Custo da trajetória: zero.
Estados: qualquer arranjo (array) de 0 a 8 damas no tabuleiro. Operadores: acrescentar uma dama a qualquer quadrado.
Segundo essa formulação tem-se 648 sequências possíveis para pesquisar.
Segunda alternativa: considera somente 2057 sequências possíveis, se:
Teste da meta: estão as 8 damas colocadas no tabuleiro e nenhuma é atacada por outra ?
Custo da trajetória: zero.
Estados: qualquer arranjo (array) de 0 a 8 damas no tabuleiro sem nenhuma atacada.
Operadores: colocar uma dama na coluna vazía à esquerda de modo que não seja atacada por nenhuma outra.
o Problema dos canibais e exploradores
03 exploradores e 03 canibais desejam atravessar um rio utilizando um pequeno barco a motor o cual somente pode ser dirigido por um dos exploradores ou pelo chefe dos canibais. Si no barco somente cabem duas pessoas e além disso sabe-se que quando o número de canibais é superior ao de exploradores, estes são devorados por aqueles, qual será a sequência de viagens que permita que os 06 passen no outro lado do rio ?.
Estados: o estado inicial ==> (3, 3, 1) sendo: (3 exploradores, 3 canibais, 1 barco na beira inicial do rio)
Operadores: a partir de cada estado, os operadores pegam um explorador, etc. Teste da meta: (0, 0, 0)
• Problemas do mundo real
o Encontrar rotas (route finding):
Redes de computadores, planejamento de linhas aéreas, planejamento de redes elétricas, etc.
o Turismo e o problema do caixeiro viajante (travelling salesperson).
Problema de visitar um certo número de cidades, cada uma somente uma vez, porém gastando o mínimo possível e finalizar quando a pessoa retorna ao início.
o VLSI layout:
Cell layout e Channel layout, que são as tarefas mais difíceis no projeto de chips de silício.
o Navegação (locomoção) de robôs:
É um problema similar ao de encontrar rotas mas não é discreto, é um problema em um espaço contínuo.
o Sequenciamento de tarefas em assembling:
Exemplos: fabricação de carros, aviões, motores elétricos, etc.
1.2.2
Busca de soluções
Anteriormente foi mencionado:
• Como definir um problema
A parte restante consiste em:
• Encontrar uma solução: é feita mediante uma busca no espaço de estados. A idéia básica é manter e estender um conjunto de sequências de soluções parciais. Como gerar estas sequências e como manter as pegadas (caminho) delas ? -> usando estruturas de datos factíveis.
Gerando sequências de ações
Exemplo:
O problema de encontrar a rota de Bogotá ao Rio de Janeiro.
Mapa simplificado de algumas cidades em América do Sul.
• Primeiro passo: verificar se o estado atual(inicial) é um estado meta.
• Segundo passo: se não é uma meta gera-se um novo conjunto de estados, isso denomina-se expansão do estado atual.
O processo de busca é a construção de uma árvore de busca que se superpõe ao espaço de estados. A raiz da árvore de busca é um nó de busca correspondente ao estado inicial. Os nós folhas são os estados que não tem sucessores na árvore, seja porque ainda não tem sido expandidos ou porque foram expandidos e geraram um conjunto vazio. Em cada passo o algoritmo de busca escolhe um nó folha para expandir.
Geralmente: espaço de estados <> árvore de busca.
Uma descrição do algoritmo de busca geral: datatype problema
components: estado_inicial, operador, teste_meta, custo_trajetoria
function Busca_general (problema, estrategia) Inicializa a árvore de busca usando o estado inicial de problema
loop do
if não há candidato para expansão then return falha
escolher um nó folha para expansão segundo à estrategia
if nó contem um estado meta then return solucao
else expandir o nó e acrescentar os nós restantes à árvore de busca
end
1.2.3
Estruturas de dados para árvores de busca
Há várias formas para representar os nós, por exemplo um nó é uma estrutura de dados com cinco componentes:
• estado = o estado no espaço de estados ao qual corresponde o nó
• node_pai = o nó que gerou o nó atual (nó filho, nó folha)
• operador = o operador que foi aplicado para gerar o nó
• profundidade = o número de nós (seguindo a trajetória atual) desde o nó raíz até o nó atual.
datatype node
components: estado, node_pai, operador,profundidade,
custo,_trajetoria
nós <> estados
nós = são estruturas de dados e possuem profundidades e pais;
estado = é uma configuração o conjunto de configurações do mundo;
expandir = função para calcular cada um dos componentes do nó que o gera; fronteira = coleção (conjunto) de nós que estão esperando ser expandidos; fila = representação usada para os nós, é melhor que um conjunto.
Operações sobre uma fila:
criar_fila (elementos) = cria uma fila com os elementos dados
vazio? (fila) = devolve verdadeiro somente se não há mais elementos na fila retirar_frente (fila) = retira o elemento na frente da fila e o devolve
fazendo_fila_fn (elementos, fila) = inserir um conjunto de elementos na fila. Diferentes variedades desta função produzem diferentes variedades do algoritmo de busca.
Assim, um algoritmo de busca geral:
function Busca_geral (problema, fazendo_fila_fn)
nodes <- criar_fila (criar_node (estado_inicial[ problema]
)
loop do
if nodes está vazío then return falha
node <- retirar_frente(nodes)
if teste_meta[problema] aplicado a estado(node) é bem sucedido then return node
nodes <- fazendo_fila_fn(nodes, expandir(node, operadores [problema]))
end
1.3
Estratégias de busca
Criterios para avaliar uma estratégia de busca:
• tempo de solução = quanto tempo leva encontrar uma solução ?
• memória utilizada = quanta memória é necessária para realizar a busca ?
• otimalidade = a estratégia encontra a solução de mais alta qualidade quando tem várias soluções diferentes ?
Tipos de estratégias de busca:
• Métodos de busca não informados
a) Busca em largura (Breadth-first search) b) Busca de custo uniforme
c) Busca em profundidade (Depth-first search) d) Busca limitada em profundidade
e) Busca iterativa em profundidade f) Busca bidirecional
g) Busca considerando satisfação de restrições
• Métodos de busca informados a) Busca do melhor-primeiro
busca ávida
busca A*
b) Métodos limitados por memória
busca A* iterativa em profundidade
busca A* simplificada limitada por memória c) Algoritmos de melhora iterativa
método de subida à montanha (hill climbing)
recozido simulado (simulated annealing)
busca tabu
busca paralela
Referências
PAUCAR, Prof.Dr.Leonardo; SAAVEDRA, Prof.Dr.Osvaldo. Métodos de busca em inteligência
artificial. Disponível em <http://www.dee.ufma.br/~lpaucar/teaching/ia2000-1/>. Acessado em: 08 de fev. de 2010. UFMA-DEE, São Luís-MA, Brasil.