Principais Tópicos • Introdução • Métodos de busca • Busca cega • Busca em profundidade • Busca em amplitude (largura) • Busca heurística • Hill Climbing • Busca em feixe • Busca melhor-primeiro Problema: • Suponha que você quer descobrir o caminho de uma cidade (S) para uma outra (G) usando um mapa Para encontrar o melhor caminho, dois custos diferentes devem ser considerados: • Custo computacional gasto para encontrar um caminho • Custo de “viagem” decorrente da utilização deste caminho Possíveis situações: • Viagem frequente: Vale a pena gastar algum tempo para encontrar um bom caminho • Viagem rara e difícil de achar um caminho: basta encontrar um caminho • Problema pode ser representado por uma rede (grafo) • Ao percorrer uma rede, deve-se evitar visitar o mesmo nó • mais de uma vez • Representa um ciclo, o que significa que loops infinitos podem • ocorrer • Solução: remover loops • Remoção de loops • Solução: traçar todos os caminhos possíveis até não poder estender nenhum deles sem criar um loop • Vide próxima imagem • Um sistema de IA pode resolver problemas da mesma forma: • Ele sabe onde ele está (conjunto de informações iniciais) • Ele sabe onde deseja ir (estado objetivo) • Resolver problema em IA envolve busca do estado objetivo (paradigma de resolução de problemas) • Forma simplificada de raciocínio Simples sistemas de IA reduzem raciocínio à busca • Problemas de busca são frequentemente descritos utilizando diagramas de árvores de busca • Árvores semânticas onde cada nó denota um passo no caminho do nó inicial para o nó objetivo • Nó inicial (I) = onde a busca começa • Nó objetivo (O) = onde ela termina • Objetivo: Encontrar um caminho que ligue o nó inicial a um nó objetivo • Problema de busca • Entrada: • Descrição dos nós inicial e objetivo • Procedimento que produz os sucessores de um dado nó • Saída: • Sequência válida de nós, iniciando com o nó inicial e terminando com o nó objetivo • Exemplo: palavras cruzadas • Definições importantes: • Profundidade: número de ligações entre um dado nó e o nó inicial • Amplitude: número de sucessores (filhos) de um nó • Nó raíz: Nó que não tem pai (ascendente) • Nó folha: nó que não tem filhos (descendentes) • Nó objetivo: nó que satisfaz o problema • Definições importantes: • Caminho parcial: caminho onde o nó final (folha) não é um objetivo • Caminho final ou completo: caminho onde o nó final é um nó objetivo • Expandir um nó: gerar as crianças de um nó • Em busca, você aprende como encontrar um caminho entre o nó inicial e o nó objetivo • Problemas da operação de busca • Com o aumento do tamanho da árvore de busca e do número de possíveis caminhos, o tempo de busca aumenta • Existem várias formas de reduzir o tempo de busca, alguns dos quais serão discutidos mais adiante • Possíveis situações • Mais de um nó objetivo • Mais de um nó inicial • Nestas situações • Encontrar qualquer caminho de um nó inicial para um nó objetivo • Encontrar melhor caminho Algoritmo básico de busca 1 Definir um conjunto L de nós iniciais; 2 Se L é vazio Então Busca não foi bem sucedida Senão Escolher um nó n de L; 3 Se n é um nó objetivo Então Retornar caminho do nó inicial até n; Parar Senão Remover n de L; Adicionar a L todos os filhos de n, rotulando cada um com o seu caminho até o nó inicial; Voltar ao passo 2 Algoritmos de busca • Existem vários algoritmos de busca diferentes • O que os distingue é a maneira como o nó n é escolhido no passo 2 • Métodos de busca Busca cega: escolha depende da posição do nó na lista (escolhe o primeiro elemento) • Busca heurística: escolha utiliza informações específicas do domínio para ajudar na decisão • Maneira mais direta de encontrar uma solução: • Visitar todos os caminhos possíveis, sem repetir um mesmo nó • Busca cega não utiliza informações sobre o problema para guiar a busca • Estratégia de busca exaustivamente aplicada até uma solução ser encontrada (ou falhar) • Ex.: suponha que você deseja encontrar o melhor caminho de Recife a São Paulo • Utilizando um mapa de estradas sem as distâncias • Seu caminho começa em Recife (ponto de partida) e termina em São Paulo (objetivo) Busca cega • Existe um grande número de técnicas • Busca em Profundidade (BP) • A árvore é examinada de cima para baixo • Aconselhável nos casos onde os caminhos improdutivos não são muito longos • Busca em Amplitude (BA) • A árvore é examinada da esquerda para a direita • Aconselhável quando o número de ramos (filhos) dos nós não é muito grande (não vale a pena quando os nós objetivos estão em um mesmo nível) • Algoritmo BP 1 Definir um conjunto L de nós iniciais 2 Se L é vazio Então Busca não foi bem sucedida Senão Seja n o primeiro nó de L; 3 Se n é um nó objetivo Então Retornar caminho do nó inicial até n; Parar Senão Remover n de L; Adicionar ao início de L todos os filhos de n, rotulando cada um com o seu caminho até o nó inicial; Voltar ao passo 2; Algoritmo BA 1 Definir um conjunto L de nós iniciais 2 Se L é vazio Então Busca não foi bem sucedida Senão Seja n o primeiro nó de L; 3 Se n é um nó objetivo Então Retornar caminho do nó inicial até n; Parar Senão Remover n de L; Adicionar ao final de L todos os filhos de n, rotulando cada um com o seu caminho até o nó inicial; Voltar ao passo 2; BA versus BP • BP e BA não precisam ser realizadas em uma ordem específica • Memória utilizada pelas duas técnicas • BP: precisa armazenar todos os filhos não visitados entre nó atual e nó inicial • BA: antes de examinar nó a uma profundidade d, é necessário examinar e armazenar todos os nós a uma profundidade d - 1 • BP geralmente utiliza menos memória BA versus BP • Quanto ao tempo • BP é geralmente mais rápida • Melhor busca depende da árvore • Quando não se conhece a árvore, pode-se buscar um compromisso entre BA e BP • Busca não determinística (BN) • Combina BA com BP Busca não determinística • Escolhe aleatoriamente o nó da árvore a ser expandido • Tiro no escuro • Provavelmente vantajosa apenas para árvores muito pequenas, com uns poucos ramos infinitos • Alternativa válida se BP e BA são impraticáveis Algoritmo BN 1 Definir um conjunto L de nós iniciais 2 Se L é vazio Então Busca não foi bem sucedida Senão Seja n o primeiro nó de L; 3 Se n é um nó objetivo Então Retornar caminho do nó inicial até n; Parar Senão Remover n de L; Adicionar em posições aleatórias de L todos os filhos de n, rotulando cada um com o seu caminho até o nó inicial; Voltar ao passo 2; Busca • Busca cega não é eficiente • É necessário limitar de alguma forma o espaço de busca para torná-la mais rápida e eficiente • Busca seria mais eficiente se as escolhas pudessem ser ordenadas • Escolhas mais promissores seriam exploradas antes • Em várias situações é possível determinar um ordenamento razoável • Alternativas podem ser ordenadas através de heurísticas Busca • Exemplo • Imagine que você está em uma cidade, e quer pegar um trem para casa, mas não sabe qual deve pegar • Se você morasse na zona Norte, naturalmente ignoraria todos os trens que fossem para o sul • Se você morasse na zona Sul, naturalmente ignoraria todos os trens que fossem para o Norte • Estas heurísticas ajudam a limitar a busca Busca • Heurísticas • Humanos utilizariam “macetes”ou dicas • Em IA,estas “dicas” são chamadas de heurísticas • Busca heurística • Métodos de busca heurística • Busca hill climbing • Busca em feixe • Busca melhor-primeiro Busca heurística • Observação • Tempo gasto avaliando uma função heurística deve ser recuperado por uma redução correspondente no espaço de pesquisa • Atividade nível base: esforço gasto tentando resolver o problema • Atividade nível meta: trabalho gasto decidindo como resolver o problema • Por que escolher e usar regras heurísticas quando é mais rápido executar uma busca cega? Busca heurística • Observação (cont.) • Existe um trade-off atividade no nível base versus atividade no nível meta • Busca eficiente: tempo gasto no nível meta é recuperado com reduções no tempo necessário para o nível base • As vezes pode ser melhor definir um novo espaço de busca Funcionamento – Hill Climbing • Procurar entre os nós próximos, aquele mais perto do objetivo • Seleciona o filho do nó mais próximo do objetivo, segundo uma medida heurística • “Raio de visão” limitado à proximidade do nó atual • Semelhante à otimização de função • Procurar a combinação de valores dos parâmetros que fazem com que a função assuma o maior valor Hill Climbing Exemplo de funcionamento • Imagine que você queira escalar uma montanha e: • Está fazendo uma neblina forte • Você possui apenas um altímetro e uma bússola • Procurar o ponto mais alto em um terreno durante uma caminhada • Alternativa: dá um passo em cada possível direção e escolher aquela em que você sobe mais Hill Climbing Características • Funciona como BP, mas escolhe o filho de acordo com sua “distância” ao objetivo • Quanto melhor a medida heurística, mais eficiente é a busca • Quantidade maior de conhecimento leva a uma redução no tempo de busca • Ex.: Suponha que a medida utilizada seja a distância física ao nó objetivo Algoritmo Hill Climbing 1 Definir um conjunto L de nós iniciais classificados de acordo com suas distâncias ao nó objetivo (em ordem crescente) 2 Se L é vazio Então Busca não foi bem sucedida Senão seja n o primeiro nó de L; 3 Se n é um nó objetivo Então Retornar caminho do nó inicial até n; Parar Senão Remover n de L; Ordenar os filhos de n em ordem crescente, de acordo com suas distâncias ao nó objetivo Adicionar ao início de L todos os filhos de n, rotulando cada um com o seu caminho até o nó inicial; Voltar ao passo 2; Hill Climbing Problemas • Menor caminho da primeira para a segunda cidade pode levar a uma outra mais distante • Opção 1: voltar atrás e tomar o segundo menor caminho, etc • Este processo de “olhar para a frente e voltar atrás” certamente leva tempo • Opção 2: incluir não determinismo • Número de passos, tamanho dos passos, direção aleatórios • Opção 3: utilizar outros métodos heurísticos Hill Climbing Problemas • Máximo local • Existe um pico mais elevado, que não é necessariamente o objetivo • Planície • Todos os pontos vizinhos levam ao mesmo valor • Aresta (ponte) • Existe pelo menos uma direção que aumenta o valor, mas nenhuma das transições possíveis segue esta direção Busca em feixe (BF) Funcionamento • Assim como BA, progride nível a nível • Move para baixo apenas através dos M melhores nós de cada nível • Outros nós do mesmo nível são ignorados • M é constante para todos os níveis • Vantagens: • Reduz número de nós visitados • Escapa do problema de ramificação infinita Algoritmo BF 1 Definir um conjunto L de nós iniciais 2 Se L é vazio Então Busca não foi bem sucedida Senão seja n o primeiro nó de L; 3 Se n é um nó objetivo Então Retornar caminho do nó inicial até n; Parar Senão Remover n de L; Adicionar ao final de L os M melhores filhos de n, rotulando cada um com o seu caminho até o nó inicial; Voltar ao passo 2; Busca Melhor-Primeiro Funcionamento • Busca segue pelo melhor nó aberto (que ainda tem filho para ser visitado) • Hill Climbing sem a restrição da busca em profundidade • Escolhe o melhor nó n da lista L • Geralmente encontra caminhos mais curtos que o Hill Climbing • Sempre move em direção ao nó mais próximo do objetivo, não importa onde ele esteja na árvore Algoritmo Melhor-Primeiro 1 Definir um conjunto L de nós iniciais 2 Seja n o nó de L mais próximo do objetivo; Se L é vazio Então Busca não foi bem sucedida 3 Se n é um nó objetivo Então Retornar caminho do nó inicial até n; Parar Senão Remover n de L; Adicionar a L todos os filhos de n, rotulando cada um com o seu caminho até o nó inicial; Voltar ao passo 2; Observações • Perguntas a serem feitas antes de utilizar métodos de busca: • Busca é a melhor maneira para resolver o problema? • Quais métodos de busca resolvem o problema? • Qual deles é o mais eficiente para este problema? Conclusão • Definições básicas • Busca cega • Busca em profundidade • Busca em largura • Busca não determinística • Busca heurística • Hill Climbing • Busca em Feixe • Busca Best first