Contextualizando Inteligência Artificial Buscas Onde podemos usar a IA Problemas que não possuem soluções algortimicas Problemas que possuem soluções algoritimicas, mas são impraticáveis (Complexidade, Tempo e Custo); Problemas cujas as soluções estão baseados na inteligência humana Problemas cujo o nível de complexidade pode variar; A problematica e a lógica da resolução é conhecida e tratável numa sequência lógica; Problemas que a solução podem passar de uma posição para a outra, num determinado método de buscas Page 2 O que são Métodos de Buscas? Agente Orientado a Metas Métodos de busca são uma das mais poderosas abordagens para resolução de problemas em IA; Trata-se de mecanismos de resolução de problemas universais que sistematicamente exploram alternativas e encontram uma seqüência para solução do problema proposto; Encontrada a seqüência (eficácia), há de se considerar que se trata de solução eficiente (custo do caminho - qualidade da solução) Outra questão relevante refere-se aos recursos necessários à solução, ou seja, tempo e memória necessários para chegar-se ao resultado Tudo isso está diretamente relacionado à complexidade do algoritmo utilizado na busca O projetista não determina um mapeamento entre as percepções e ações, mas determina que objetivo o agente deve alcançar É necessário que o próprio agente construa um plano de ações que atinjam seu objetivo; (como se o próprio agente construísse seu programa); Ou seja; Desenvolver programas, não com os passos da solução de um problema, mas que produzam estes passos Page 3 Page 4 1
Exemplo: Xadrez Um Problema Exemplo Um problema de busca pode ser idealizado por meio da abordagem dos seguintes elementos: 1 Um ou mais estados iniciais Exemplo: o lance atual no jogo de xadrez; 2 Um ou mais estados finais (objetivo) Exemplo: o xeque-mate; 3 Um espaço de estados Ou seja, todas as possíveis posições intermediárias entre o estado inicial e o estado final Num jogo de xadrez, o estado inicial é o lance atual; o estado final é o objetivo (xeque-mate); estados intermediários são todos os lances possíveis entre o estado inicial e o xeque-mate, por qualquer seqüência de ações; 4 Um conjunto de ações que permitem passar de um estado para outro Exemplo: as regras do jogo Page 6 Outro exemplo Temos dois jarros, um com capacidade para 4 litros de água e outro com capacidade para 3 litros Utilizando somente operações de encher, esvaziar e derramar a água de um jarro no outro, o agente deve encontrar uma sequência de operações que deixa o jarro com capacidade para 3 litros com 2 litros de água Quais os estados e as transições? Page 7 Page 8 2
Conceituando Conceituando Uma árvore de busca é definida como um conjunto de nós (ou nodos), freqüentemente representados na forma de diagramas A árvore deve possuir um nó inicial (onde a busca inicia-se) e um nó objetivo (onde a busca termina), freqüentemente intercalados por nós intermediários Geralmente existem seqüências de nós paralelas à seqüência principal, cujo caminho precisa ser pesquisado ou descartado através de técnicas algorítmicas avançadas O objetivo da busca é encontrar um caminho que ligue o nó inicial ao nó objetivo Como entrada tem-se a descrição do nó inicial, do objetivo e de um procedimento que conduza aos nós sucessores; como saída, uma seqüência de nós iniciada no nó inicial e acabada no nó objetivo Page 9 Resumindo: O mundo do agente tem um conjunto de estados possíveis (muitas vezes este conjunto é infinito) Existem transições entre os estados do mundo, formando um grafo São utilizados algoritmos para encontrar um caminho neste grafo partindo do estado inicial (atual) até o estado objetivo utilizando para isso as regras de produção para o cenário Page 10 Árvores de Busca Outro Exemplo Coloca-se o estado inicial como nodo raiz Cada operação sobre o estado raiz gera um novo nodo (chamado de sucessor) Repete-se este processo para os novos nodos até gerar o nodo que representa o estado meta Estratégia de busca: que nodo escolher para expandir Exemplo do aspirador de pó Um robô aspirador de pó deve limpar uma casa com duas posições As operações que ele sabe executar são: Sugar/Aspirar Ir para a posição da esquerda Ir para a posição da direita Como o aspirador pode montar um plano para limpar a casa se inicialmente ele está na posição direita e as duas posições têm sujeira? Quais os estados possíveis do mundo do aspirador e as transições? Page 11 Page 12 3
Outro Exemplo Por que estados? As informações do mundo real são absurdamente complexas, é praticamente impossível modelá-las todas; No exemplo do aspirador, o mundo dele tem várias outras informações: a cor do tapete, se é dia, de que material o aspirador é feito, quanto ele tem de energia, como é o nome do/a proprietário/a, A noção de estado é utilizada para abstrair esses detalhes e considerar somente o que é relevante para a solução do problema O mesmo se dá com as operações modeladas: são abstrações das operações reais (ir para a posição da direita implica em várias outras operações) Page 13 Page 14 Árvore de Estados do Exemplo do Aspirador Busca é mais uma forma de modelar um problema: Definir os estados Definir as transições Escolher um algoritmo de busca Page 15 Page 16 4
Nodos da Árvore Explicando o Problema dos Jarros de Água Cada nodo tem: o estado que representa o nodo pai o operador que o gerou sua profundidade na árvore de busca o custo de ter sido gerado (dentado por g) opcionalmente, os nodos sucessores 3 lt 4 lt Sem limite de Água Objetivo: 2 litros no jarro 4 lt Page 17 Page 18 Espaço de Estados do Problema dos Jarros de Água Início dos Jarros de Água e Estados Meta O espaço de estados pode ser representado por dois inteiros x e y: x = litros no jarro de 4 litros y = litros no jarro de 3 litros Espaço de Estados = (x,y) tal que x {0,1,2,3,4}, y {0,1,2,3} O Estado Inicial ocorre quando ambos os jarros estão vazios: (0,0) O Estado Meta é qualquer estado que possua 2 litros de água no jarro de 4 litros: (2,n) para qualquer n Page 19 Page 20 5
Estados do Jarros de Água Operações com Jarros de Água (0,0) (1,0) (2,0) (3,0) (0,1) (1,1) (2,1) (3,1) (0,2) (1,2) (2,2) (3,2) (4,0) (4,1) (4,2) Colocar 3 lt no jarro 3 Colocar 4 lt no jarro 4 Esvaziar jarro 3 Esvaziar jarro 4 Coloca o conteúdo do jarro 3 no jarro 4 Outros??? (x,y) -> (x,3) (x,y) -> (4,y) (x,y) -> (x,0) (x,y) -> (0,y) (0,y) -> (y,0) (0,3) (1,3) (2,3) (3,3) (4,3) Page 21 Page 22 Restrições Regras de Produção Não é possível colocar água em um jarro cheio Restrições são associadas para que uma operação possa ser aplicada sobre um estado (x,y), x < 4 -> (x,0) (x,y), y < 3 -> (0,y) Uma operação e as condições que devem ser satisfeitas (restrições) antes da operação poder ser aplicada é chamada de regra Tipicamente é necessário mesclar regras gerais e regras específicas Informação prévia sobre a solução tende a produzir regras específicas e aumentar a velocidade da busca (x,y), x + y <= 4 -> (y,0) Page 23 Page 24 6
Domínio de Regras Específicas Grafo dos Jarros de Água Para o problema dos Jarros de Água : (0,2) -> (2,0) (x,2) -> (0,2) (0,0) Utilizando estas regras soluções podem ser encontradas rapidamente! Page 25 Page 26 (4,0) (4,3) (0,0) (1,3) (0,3) (4,3) (0,0) (3,0) Uma solução possível: (4, 0) (1, 3) (1, 0) (0, 1) (4, 1) (2, 3) Resolução de Problema como um Espaço de Estados Uma possível estratégia para solução de problemas é listar todos os estados possíveis A solução do problema consiste em percorrer o espaço de estados a partir do estado inicial até o estado meta É necessário desenvolver um conjunto de operadores que modifique um estado para um outro estado Page 27 Page 28 7
Definição do Problema como um Espaço de Estados (Cont) Conjunto de Estados possíveis Conjunto de operações possíveis que modifiquem um estado Especificação de um estado inicial(s) Especificação de um estado meta(s) Exercícios Page 29 Problema do Caixeiro Viajante Um caixeiro viajante deve visitar 4 cidades Qual é a rota mais curta? Goiânia Uberlândia Uberaba Belo Horizonte Goiânia 0 594 524 619 Uberlândia 594 0 184 78 Uberaba 524 184 0 233 Belo Horizonte Page 31 619 78 233 0 Problema do Caixeiro Viajante Número de caminhos = (n-1)! n=4 p=6 n=5 p=24 n=10 p=362,880 n = 20 p=2,44*10 18 Page 32 594 A B C D 184 78 184 233 524 619 C D B D C B 233 78 233 233 78 184 D C D B B C 1011 905 786 835 1036 881 A = Goiânia B = Uberlândia C = Uberaba D = Belo Horizonte 78 184 Cresce rápido demais, o que impede o uso de técnicas de força bruta 8
Exercício Para entregar Um corintiano, um palmeirense, um flamenguista e um vascaíno estão em uma margem de um rio que querem atravessar O barco que existe só pode levar duas pessoas de cada vez e não pode voltar sozinho para a outra margem O corintiano não pode ficar sozinho com o palmeirense em uma margem, assim como o flamenguista e o vascaíno, senão eles brigam Crie uma representação computacional do problema, e construa uma árvore relativa ao processo de busca, tanto em profundidade quanto em largura Estratégias de Busca Page 33 Estratégias de busca Percorrer o espaço de estados a partir de uma árvore de busca; Expandir o estado atual aplicando a função sucessor, gerando novos estados; Busca: seguir um caminho, deixando os outros para depois; A estratégia de busca determina qual caminho seguir Há duas estratégias de busca Buscas Cegas: 1 Busca em profundidade: vai até o final do ramo atual na busca da solução, antes de tentar um caminho alternativo, ou seja, dá-se prioridade aos sucessores do último nó adicionado à árvore; 2 Busca em largura: resolve todos os pontos de decisão no nível atual, antes de aprofundar-se no próximo nível da árvore, o que fará somente se não encontrar a solução no nível atual As estratégias acima possuem variações que procuram minimizar-lhes o custo Page 35 Page 36 9
Busca em Profundidade Características da Busca em Profundidade Não necessita armazenar o caminho Algoritmo Estabeleça alguma ordenação às regras; Enquanto existem regras aplicáveis Aplique a próxima regra e gere um novo estado; Faça uma busca em profundidade (BP) no novo estado fim_enquanto de uma grande lista de estados Pode encontrar uma solução muito rapidamente Poda é possível Exemplo: utilização de heurísticas Pode facilmente encontrar problemas com ciclos (loops) d b e a f c g h i j k Page 37 Page 38 Estratégias de poda da árvore de busca - Exemplos Busca em Largura Um nodo não gera um sucessor igual a seu pai Um nodo não gera um sucessor igual a um de seus ascendentes Um nodo não gera um sucessor que já exista na árvore de busca A estratégia de árvore para o problema dos jarros de água é um exemplo de busca em largura Algoritmo geral para BL: crie lista_nós e a inicialize com o estado inicial; enquanto um estado meta não é encontrado ou lista_nós!= {}; remova o primeiro elemento de lista_nós, primeiro_nó; aplique todas as regras possíveis em primeiro_nó e adicione os estados resultantes em lista_nós; fim_enquanto Page 39 Page 40 10
Características da Busca em Largura Critérios para Avaliação de Estratégias de Busca Completo: o algoritmo encontra a solução se ela existir Se há uma solução, BL a encontrará Encontrará a solução mínima (o caminho mais curto até a solução) Não terá problemas com ciclos Requer espaço disponível para armazenar lista_nós, que pode ser muito grande!!! d b e a f c g Ótimo: o algoritmo encontra a solução de menor custo Tempo: quanto tempo o algoritmo leva para encontrar a solução no pior caso Espaço: quanto de memória o algoritmo ocupa h i j k Page 41 Page 42 Qualidade de uma solução Todos os métodos de busca devem ser comparados em termos das seguintes características: Completeza: Se existe uma solução, ela será encontrada? Otimalidade: A melhor solução será necessariamente encontrada? Complexidade de tempo: Quanto tempo demora para encontrar a solução? Complexidade de espaço: Quanta memória será usada? Avaliação de Algoritmo Page 43 4 11
Miniprob:quebra-cabeças 8 peças Algumas definições Estados: posição das 8 peças e do vazio Estado inicial: qqr estado Função sucessor: esq, dir, acima, abaixo Teste: verifica se o estado corrente é o objetivo Custo:cada passo=1; caminho=num d passos Page 45 Page 46 Outro Exemplo Olha um exemplo: Problemas dos Blocos Começando com um esquema específico, tentar chegar a uma configuração final Só vale mover um bloco para uma posição desocupada Exemplo de função heurística a usar: soma das distâncias dos blocos até seu lugar correto (distância Manhattan) Page 47 4 Page 48 4 12
Tentem vocês Configurações inicial e final: Tentem também usar os métodos em profundidade e largura Page 49 4 13