Inteligência Artificial Procura Cega Agenda PARTE 1 Resolução de Problemas Representação de Problemas / Modelação Agente Solucionador de Problemas PARTE 2 Procura em Espaço o de Estados: Geração e Teste Implementação Modelos de Procura Cega Em Largura Primeiro (Breath - First) Custo Uniforme (Uniform - Cost) Em Profundidade Primeiro (Depth First) Profundidade Limitada (Depth( Limited) Aprofundamento Progressivo (Progressive( Depth) Bidireccional 1
Resolução de Problemas Veremos como um agente inteligente pode resolver problemas considerando as diferentes sequências de acções que pode realizar. Quando um agente exibe este comportamento, orientado a atingir metas particulares diz-se que é um Agente solucionador de problemas. Resolução de Problemas Este tipo de agente deve ter: Uma Representação adequada do seu entorno. Deve conhecer as Acções que pode efectuar. Deve poder Raciocinar sobre o efeito das suas acções no ambiente. O raciocínio neste caso fica reduzido a escolha das acções e ao seu efeito sobre o ambiente. 2
O Problema da Representação Num sentido geral, concerne à relação existente entre as distintas formas de formular um problema e a eficiência para achar uma solução ao mesmo. Embora um problema possa ser expressado de diversas formas, nem sempre é possível estabelecer uma equivalência formal entre elas. O Problema da Representação A representação de um problema tem uma grande influência no esforço o que é requerido para resolve-lo. lo. Um problema raramente resolve-se se nos mesmos termos em que foi expressado ao início. Normalmente utilizam-se um conjunto de convenções para representar a informação. Isto chama-se modelar. 3
O Problema da Representação Quando representamos um problema estamos a criar um modelo do mesmo. Mas, o que é um modelo? O Problema da Representação Um modelo consiste na interpretação de um dado domínio do problema segundo uma determinada estrutura de conceitos. Um esquema é a especificação de um modelo usando uma determinada linguagem, a qual pode ser formal ou informal. Um modelo é uma representação em pequena escala, numa perspectiva particular, de um problema. 4
Os modelos... Ajudam a visualizar um problema, quer seja a sua situação no passado, presente ou no futuro; Permitem especificar a estrutura ou o comportamento de um problema; Permitem controlar e guiar o processo de resolução de um problema. Abstracção Abstracção: s. f., acção de abstrair; separação mental de uma das partes de um todo; Abstracto: adj., que designa uma qualidade separada do objecto a que pertence; 5
Um bom exemplo de modelação Quando o primeiro mapa do Underground de Londres foi publicado em 1908, seguia fielmente a geografia das linhas: todas as curvas e voltas das trilhas e a distância relativa entre as estações foram fielmente respeitadas. Entretanto o propósito do mapa era mostrar aos passageiros a ordem das estações em cada linha, e as conexões entre linhas. A fidelidade do mapa dificultava obter essa informação. d e 1 9 0 8 6
Mapa de 1933 Em 1933, o mapa foi substituído por uma representação bem mais abstracta, que mostrava somente a conectividade entre as estações. Foram abstraídos Detalhes da superfície Distância entre as estações Orientação das linhas M a p a d e 1 9 3 3 7
Mapa de 1933 O Diagrama deu ás s pessoas um bom modelo conceptual; isto é,, como podemos ver o sistema do Underground de Londres. É uma especificação que permite as pessoas entenderem uma implementação complexa. Além m disso, embora sofreu mudanças as e é revisto desde 1931, basicamente continua a ser o mesmo diagrama proposto pelo engenheiro desenhador Harry Beck. O êxito do diagrama é por causa de: Uma apropriada escolha da abstracção Uma elegante apresentação. M a p a A c t u a l 8
M a p a A c t u a l M a p a A c t u a l 9
Características de uma boa Representação Clareza: : Deve ser evidente a relação entre o modelo e o problema real. Exactidão: O modelo deve ser fiel á realidade nos aspectos relevantes para a resolução do problema. Completude: O modelo deve representar todos os aspectos relevantes para a resolução do problema. Características de uma boa Representação Eficiência: A representação deve poder ser utilizada em forma eficiente. Conciso: As características irrelevantes devem ser omitidas e os detalhes suprimidos. Utilidade: É importante avaliar se o modelo sugere um bom método m para resolver o problema. 10
Hipótese de Representação de Conhecimento (Brian( Smith (1982)) Um sistema inteligente utiliza estruturas que: Podem ser interpretadas como proposições que representam o conhecimento do sistema Determinam o comportamento do sistema Resolução de Problemas (Acções) O agente deve escolher uma sequência de acções que conduzam-lhe a atingir uma meta desejada. A determinação de escolher entre várias v metas possíveis normalmente inclui a ideia de custo. O processo de seleccionar a sequência de acções denomina-se Procura. 11
Agente solucionador de problemas O agente reactivo Escolhe suas acções com base apenas nas percepções actuais Não tem estado interno Portanto, não pode pensar no futuro Não sabe para onde vai. 4 5 8 1 6 7 2 3? 1 2 3 4 5 6 7 8 O Agente solucionador de problemas Procura uma sequência de acções que leve a estados desejáveis (objectivos). Resolução de Problemas: definições Um problema em IA é definido em termos de... 1) um espaço o de estados possíveis, incluindo: um estado inicial um (ou mais) estado final = objectivo Exemplo 1: dirigir do Funchal ao Porto Moniz espaço o de estados: todas as cidades da Ilha Exemplo 2: jogo de 8-números 8 início: 4 5 8 1 6 7 2 3 fim: 1 2 3 4 5 6 7 8 2) um conjunto de acções (ou operadores) ) que permitem passar de um estado a outro Ex1.: dirigir de uma cidade a outra Ex2.: mover uma peça a do jogo de 8-números 8 12
Resolução de Problemas: definições Definição do objectivo: Propriedade abstracta Ex.: condição de xeque-mate no Xadrez Conjunto de estados finais do mundo Ex.: estar no Porto Moniz Solução: Caminho (sequência de acções ou operadores) ) que leva do estado inicial a um estado final (objectivo). Espaço o de Estados: Conjunto de todos os estados alcançá çáveis a partir do estado inicial por qualquer sequência de acções. Solucionando o problema: Representação, Procura e Execução Representação do problema e do objectivo: Quais são os estados e as acções a considerar? Qual é (e como representar) o objectivo? Procura (solução do problema): Processo que gera/analisa sequências de acções para atingir um objectivo. Solução = caminho entre estado inicial e estado final. Custo do caminho = qualidade da solução. Execução ão: Executar a solução completa encontrada, (procura cega, procura informada, estratégias com adversários). rios). ou Intercalar execução com procura (planeamento). 13
Regras de Produção Representam conhecimento com pares de condição acção Se a condição (ou premissa ou antecedente) ocorre Então a acção (resultado, conclusão ou consequente) deverá ocorrer. Se o agente percebe luz do freio do carro da frente acesa, então deve travar o carro (regra de acção). Se o veículo tem 4 rodas e tem um motor então o veículo é um automóvel (novo conhecimento). São chamadas de regras de produção porque, quando utilizadas com raciocínio progressivo, produzem novos factos a partir dos factos e regras da BC. Esses novos factos passam a fazer parte da BC. Exemplo: Problema das Jarras Temos duas jarras vazias com capacidade de 4 e 3 litros cada uma. Como podemos obter exactamente 2 litros na primeira jarra? As jarras podem ser enchidas, esvaziadas ou pode-se passar o conteúdo de uma jarra para a outra. 14
Exemplo: Problema das Jarras O estado inicial é [0,0] A condição de solução é [2,Z], jáj que não importa o conteúdo da segunda jarra. Exemplo: Problema das Jarras As regras de produção são: R1.. Encher jarra 1: [X,Y] [4,Y] R2.. Encher jarra 2: [X,Y] [X,3] R3.. Esvaziar jarra 1: [X,Y] [0,Y] R4.. Esvaziar jarra 2: [X,Y] [X,0] R5.. Passar o conteúdo de 1 a 2 até encher 2 [X,Y] / X+Y>=3 [W,3] / W = X+Y-3 R6.. Passar todo o conteúdo de 1 a 2 [X,Y] / X+Y<=3 [0,X+Y] R7.. Passar o conteúdo de 2 a 1 até encher 1 [X,Y] / X+Y>=4 [4,Z] / Z = X+Y-4 R8.. Passar todo o conteúdo de 2 a 1 [X,Y] / X+Y<=4 [X+Y,0] 15
Exemplo: Problema das Jarras R3.. Esvaziar jarra 1: [X,Y] [0,Y] Podemos colocar a pré condição X>0 para evitar de usar a regra desnecessariamente. R3.. Esvaziar jarra 1: [X,Y] / X > 0 [0,Y] Exercício: cio: Achar a solução do Problema das jarras nos próximos 10 minutos. Sistemas de Produção São sistemas baseados em regras de produção. Consistem em 3 módulos m principais: A Base de Regras (BR): permanente Regras de produção. A Memória de Trabalho: temporária ria Base de factos derivados durante a vida do agente. Percepções do agente e factos gerados a partir da BR pelo mecanismo de inferência. O Mecanismo (máquina) de Inferência Determina o método m de raciocínio utilizado (progressivo ou regressivo). Utiliza estratégias de procura com compromisso (unificação). Resolve conflitos e executa acções. 16
Arquitectura dos Sistemas de Produção Base de Regras Conhecimento Permanente factos regras de produção Meta-conhecimento estratégias para resolução de conflito Mecanismo de Inferência Memória de Trabalho Conhecimento volátil descrição da instância do problema actual hipóteses actuais objectivos actuais resultados intermediários Conjunto de conflito conjunto de possíveis regras a serem disparadas Vantagens e Limitações dos Sistemas de Produção Vantagens As regras são de fácil f compreensão. Inferência e explicações são facilmente derivadas. Manutenção é relativamente simples, devido a modularidade. São mais eficientes que os sistemas de programação em lógica, l embora menos expressivos. Desvantagens Conhecimento complexo requer muitas (milhares de) regras. Esse excesso de regras cria problemas para utilização e manutenção do sistema. Não são robustos (tratamento de incerteza). Não aprendem. 17
Exemplos de formulação de problema Jogo de 8 números: n estados = cada possível configuração do tabuleiro. estado inicial = qualquer um dos estados possíveis. Objectivo = ordenado, com branco na posição [3,3]. custo do caminho = número n de passos da solução. Exercício: cio: Pensar as regras de produção (5 minutos). Importância da Formulação Solução 1: R1. mover 1 para cima R2. mover 1 para a direita etc., 32 regras Solução 2 (o que se move é o espaço o vazio) R1. mover vazio para cima R2. mover vazio para a direita etc., somente 4 regras 18
Árvore de procura para o jogo dos 8 númerosn meros down 5 8 4 1 6 7 2 3 up right 4 5 8 1 6 7 2 3 right 4 5 8 1 6 7 2 3 down 4 5 8 7 1 2 6 3 1 2 3 4 5 6 7 8 Importância da formulação Jogo das 8 Rainhas dispor 8 rainhas no tabuleiro de forma que não se possam atacar. Não pode haver mais de uma rainha em uma mesma linha, coluna ou diagonal. Existem diferentes estados e operadores possíveis. Essa escolha pode ter consequências boas ou nefastas na complexidade da procura ou no tamanho do espaço o de estados. 19
Formulações para 8 Rainhas Formulação A estados: qualquer disposição com n (n 8) rainhas. operadores: adicionar uma rainha a qualquer quadrado. 64^8 possibilidades: vai até o fim para testar se dád certo. Formulação B estados: disposição com n (n 8) rainhas sem ataque mútuo (teste gradual). operadores: adicionar uma rainha na coluna vazia mais à esquerda em que não possa ser atacada. melhor (2057 possibilidades), mas pode não haver acção possível. Formulação C estados: disposição com 8 rainhas, uma em cada coluna. operadores: mover uma rainha atacada para outra casa na mesma coluna. Medida de Desempenho na Procura Desempenho de um algoritmo de procura: 1. O algoritmo encontrou alguma solução? 2. É uma boa solução? custo de caminho (qualidade da solução). 3. É uma solução computacionalmente barata? custo da procura (tempo e memória). Custo total custo do caminho + custo de procura Espaço o de estados grande: compromisso (conflito) entre a melhor solução e a solução mais barata. 20
Custo diferente => Solução diferente Função de custo de caminho (1) número n de cidades visitadas, (2) distância entre as cidades, (3) tempo de viagem, etc. Solução mais barata: (1) Funchal, (via Paul da Serra), Porto Moniz (2) Funchal, São Vicente, Porto Moniz (3) Funchal, São Vicente (viaduto), Porto Moniz Problemas clássicos Torre de Hanoi Missionários e Canibais Jarro d ád água Jogo dos 8 númerosn Mundo dos blocos Caixeiro viajante Labirinto Lobo, ovelha e verdura Travessia da ponte... 21
Problemas clássicos Xadrez Bridge Gamão Go Mancala Damas... SEND SEND + MORE MORE ------- ------- MONEY MONEY Aplicações: Problemas Reais Cálculo de rotas rotas em redes de computadores. sistemas de planeamento de viagens. planeamento de rotas de aviões. Caixeiro viajante. Alocação (Scheduling) Salas de aula. Máquinas industriais (job( shop). 22
Aplicações: Problemas Reais Navegação de robots: generalização do problema da navegação. Os robots movem-se em espaços contínuos, nuos, com um conjunto (infinito) de possíveis acções e estados controlar os movimentos do robot no chão, dos seus braços e pernas requer espaço multi-dimensional dimensional. Montagem de objectos complexos por robots: ordenar a montagem das diversas partes do objecto etc... FIM PARTE 1 23
Agenda PARTE 1 Resolução de Problemas Representação de Problemas / Modelação Agente Solucionador de Problemas PARTE 2 Procura em Espaço o de Estados: Geração e Teste Implementação Modelos de Procura Cega Em Largura Primeiro (Breath( - First) Custo Uniforme (Uniform( - Cost) Em Profundidade Primeiro (Depth( Depth First) Profundidade Limitada (Depth( Limited) Aprofundamento Progressivo (Progressive( Depth) Bidireccional Procura em Espaço o de Estados Uma vez que o problema é bem formulado... o estado final deve ser procurado. Em outras palavras, deve-se usar um método de procura para saber a ordem correcta de aplicação dos operadores que levará do estado inicial ao final. Uma vez a procura terminada com sucesso, é só executar a solução (= conjunto ordenado de operadores a aplicar). 24
Procura em Espaço o de Estados: Geração e Teste Fronteira do espaço o de estados nós s (estados) a serem expandidos no momento. Algoritmo: Obs.: o algoritmo começa a com a fronteira contendo o estado inicial do problema. 1. Seleccionar o primeiro nó n (estado) da fronteira do espaço o de estados; - se a fronteira está vazia, o algoritmo termina com falha. 2. Testar se o nón é um estado final (solução): - se sim, então retornar nón - a procura termina com sucesso. 3. Gerar um novo conjunto de estados pela aplicação dos operadores ao estado seleccionado; 4. Inserir os nós n s gerados na fronteira,, de acordo com a estratégia de procura usada, e voltar para o passo (1). Procura em Espaço o de Estados: Implementação Espaços de Estados podem ser representados como uma árvore onde os estados são nós n s e as operações são arcos. Os nós n s da árvore podem guardar mais informação do que apenas o estado: são uma estrutura de dados com 5 componentes: 1. o estado correspondente 2. o seu nón pai 3. o operador aplicado para gerar o nó n (a partir do pai) 4. a profundidade do nón 5. o custo do nó n (desde a raiz) 25
Procura em Espaço o de Estados: implementação Algoritmo: Função ão-insere: : controla a ordem de inserção de nós n s na fronteira do espaço o de estados. função Procura-Gen Genérica (problema, Função ão-insere) retorna uma solução ou falha fronteira Faz-Fila Fila (Faz-Nó (Estado-Inicial [problema[ problema] ] ) ) loop do se fronteira está vazia então retorna falha nó Remove-Primeiro (fronteira( fronteira) se Teste-Término [problema[ problema] ] aplicado a Estado [nó][ ] tiver sucesso então retorna nó fronteira Função ão-insere (fronteira( fronteira,, Operadores [proble[ problema]) Métodos de Procura Procura exaustiva - cega Não sabe qual o melhor nó da fronteira a ser expandido = menor custo de caminho desse nón até um nó final (objectivo). Estratégias de Procura (ordem de expansão dos nós): n Direcção de Procura: Do estado inicial para o objectivo Do objectivo para o estado inicial Procura Bidireccional Procura heurística informada Estima qual o melhor nón da fronteira a ser expandido com base em funções heurísticas => conhecimento. Estratégia de procura: (melhor escolha baseada na função heurística). Direcção de Procura: idem à procura cega. 26
Critérios rios de Avaliação das Estratégias de Procura Completude: A estratégia encontra sempre uma solução? Custo do tempo: Quanto tempo gasta para encontrar uma solução? Custo de memória ria: Quanta memória é necessária para realizar a procura? Optimização/qualidade (optimality( optimality): A estratégia encontra a melhor solução quando existem diferentes soluções? Procura Cega Em Largura Primeiro (Breath - First) Custo Uniforme (Uniform - Cost) Em Profundidade Primeiro (Depth First) Profundidade Limitada (Depth Limited) Aprofundamento Progressivo (Progressive Depth) Bidireccional 27
Procura Cega Notação b = factor de ramificação; d = profundidade da solução; m = profundidade máxima da árvore de procura; l = limite de profundidade. Procura em Largura(1) Procura em largura: : o nón de menor profundidade, mais á esquerda é escolhido para gerar sucessores. O nón raiz é expandido primeiro todos os nós n s gerados são explorados; todos os sucessores dos antecessores são explorados; e assim sucessivamente. Os nós n s de profundidade d são explorados antes dos nós s de profundidade d+1 function BREADTH-FIRST FIRST-SEARCH SEARCH (problem) return solution return GENERAL-SEARCH(problem, ENQUEUE-AT AT- END) 28
Procura em Largura(2) Se existe solução será encontrada. A solução encontrada primeiro será a de menor profundidade. Completa e óptima. Factor de ramificação (b) deve-se considerar tempo e memória; solução com profundidade d. 1 + b2+ b3+... + bd Procura em Largura(3) 29
Procura em Largura(4) Procura em Largura(5) 30
Procura em Largura(6) Procura em Largura(7) 31
Procura em Largura(8) Algoritmo Procura em Largura Primeiro Função ProcuraLarguraPrimeiro (problema, insere_fila): solução ou falha 1. i_nós faz_fila(estado_inicial(problema)) 2. repete 2.1 se vazia_fila (i_nós)) então 2.1.1 devolve falha fim_de_se 2.2 nón retira_fila (i_nós) 2.3 se teste_objectivo(nó) ) então 2.3.1 devolve nón senão 2.3.2 insere_fila (i_nós,espansão(nó,operadores(problema))) fim_de_se fim_de_repete fim_de_função 32
Procura Cega Em Largura Primeiro (Breath( - First) Custo Uniforme (Uniform( - Cost) Em Profundidade Primeiro (Depth( Depth First) Profundidade Limitada (Depth( Limited) Aprofundamento Progressivo (Progressive( Depth) Bidireccional Custo Uniforme(1) A estratégia de procura uniforme é uma pequena modificação da estratégia de procura em largura. Na procura em largura, primeiro expande-se o nón raiz, depois todos os nós n s gerados por esse, e assim sucessivamente até que se chegue ao estado meta, ou seja, todos os nós n s que estão numa profundidade d da árvore serão expandidos e visitados antes que os nós n s que estão numa profundidade d+1. 33
Custo Uniforme(2) A estratégia de procura uniforme é basicamente a mesma coisa. Invés s de começar no primeiro nón expandido, que está na lista aguardando processamento, o nón que possui o menor custo (g(n( g(n)) será escolhido para ser expandido. Se certas condições forem cumpridas, garante-se que a primeira solução encontrada será a mais barata. Uma das condições é a seguinte: o custo do caminho nunca deve ir diminuindo conforme avançamos, amos, noutras palavras, é importante que: g (Sucessor( Sucessor)>= g (N)( em todos os nós n N, g (N) é o custo conhecido de ir da raiz até o nódulo N. Custo Uniforme(3) Abaixo apresentamos o pseudo código c do mesmo. Algoritmo Procura Uniforme 1. Definir um conjunto L de nós n s iniciais 2. Ordenar L em ordem crescente de custo 3. Se L é vazio Então a Procura não foi bem sucedida Senão seja n o primeiro nón de L; 4. Se n é um nón objectivo Então Retornar caminho do nón inicial até N; Parar Senão Remover n de L; Adicionar em L todos os nós n s filhos de n,, rotulando cada nón com o seu caminho até o nón inicial; Ordenar L em ordem crescente de custo; Voltar ao passo 3. 34
Custo Uniforme(4) Análise da Complexidade O custo de espaço o e tempo, referente a estratégia de procura uniforme, pode ser visualizado no quadro abaixo: Profundidade Nós Tempo Memória 0 1 1 milisegundo 100 bytes 2 111 0.1 segundos 11 kilobytes 4 11,111 11 segundos 1 megabytes 6 10 6 18 minutos 111 megabytes 8 10 8 31 horas 11 gigabytes 10 10 10 128 dias 1 terabyte 12 10 12 35 anos 111 terabytes 14 10 14 3500 anos 11,111 terabytes Quadro 1: Tempo, memória e nós gerados para se chegar ao estado meta Custo Uniforme(5) Resumo Princípio pio: : expandir sempre o nón da fronteira com menor custo (dado pela função g (n)). Este método m é equivalente à procura em largura primeiro quando g (n)) = profundidade (n).( Características sticas: É completo É óptimo function UNIFORM-COST COST-SEARCH SEARCH (problem) returns solution return GENERAL-SEARCH (problem, COST-FN,ENQUEUE FN,ENQUEUE-AT-END) 35
Custo Uniforme(6) Algoritmo Procura Custo Uniforme Função ProcuraCustoUniforme (problema, insere_ordem_fila): solução ou falha 1. i_nós faz_fila(estado_inicial(problema)) 2. repete 2.1 se vazia_fila (i_nós) então 2.1.1 devolve falha fim_de_se 2.2 nón retira_fila (i_nós) 2.3 se teste_objectivo(nó) então 2.3.1 devolve nón senão 2.3.2 insere_ordem_fila (i_nós,espansão(nó,operadores(problema))) fim_de_se fim_de_repete fim_de_função 36
Procura Cega Em Largura Primeiro (Breath( - First) Custo Uniforme (Uniform( - Cost) Em Profundidade Primeiro (Depth( Depth First) Profundidade Limitada (Depth( Limited) Aprofundamento Progressivo (Progressive( Depth) Bidireccional Profundidade Primeiro(1) Ordem de expansão dos nós: n sempre expande o nón no nível mais profundo da árvore: 1. nón raiz 2. primeiro nón de profundidade 1 3. primeiro nón de profundidade 2, etc. Quando um nón final não é solução, o algoritmo volta para expandir os nós n s que ainda estão na fronteira do espaço o de estados. Algoritmo: função Procura-em em-profundidade (problema) retorna uma solução ou falha Busca-Gen Genérica (problema, Insere-no no-começo) 37
Profundidade Primeiro(2) O nó de maior profundidade mais a esquerda é escolhido para gerar sucessores. Quando é expandido um nó de maior profundidade, a procura chega a um nó sem sucessor, logo o algoritmo expande o próximo nó com menor profundidade. Profundidade Primeiro(2) 38
Profundidade Primeiro(3) Profundidade Primeiro(4) 39
Profundidade Primeiro(5) Profundidade Primeiro(6) 40
Profundidade Primeiro(7) Profundidade Primeiro(8) 41
Profundidade Primeiro(9) Profundidade Primeiro(10) 42
Profundidade Primeiro(11) Esta estratégia não é completa nem é óptima. Custo de memória: mantém m na memória o caminho que está sendo expandido no momento, e os nós n s irmãos dos nós n s no caminho (para possibilitar o backtracking) necessita armazenar apenas b.m nós s para um espaço o de estados com factor de expansão b e profundidade m,, onde m pode ser maior que d (profundidade da 1a. solução). Custo de tempo: O (b m ), no pior caso. Para problemas com várias v soluções, esta estratégia pode ser bem mais rápida r do que procura em largura. Esta estratégia deve ser evitada quando as árvores geradas são muito profundas ou geram caminhos infinitos. Profundidade Primeiro(12) Vantagem: Requer pouca memória - O nó objectivo pode vir a ser encontrado sem examinar a árvore por completo. Desvantagem: É importante que cada sequência possível possa terminar. - Se não o algoritmo desce indefinidamente. 43
Algoritmo Procura em Profundidade Primeiro Função ProcuraProfundidadePrimeiro (problema, insere_pilha): solução ou falha 1. i_nós faz_pilha(estado_inicial(problema)) 2. repete 2.1 se vazia_pilha (i_nós) então 2.1.1 devolve falha fim_de_se 2.2 nón retira_pilha (i_nós) 2.3 se teste_objectivo(nó) então 2.3.1 devolve nón senão 2.3.2 insere_pilha (i_nós,espansão(nó,operadores(problema))) fim_de_se fim_de_repete fim_de_função Procura Cega Em Largura Primeiro (Breath( - First) Custo Uniforme (Uniform( - Cost) Em Profundidade Primeiro (Depth( Depth First) Profundidade Limitada (Depth( Limited) Aprofundamento Progressivo (Progressive( Depth) Bidireccional 44
Profundidade Limitada (1) Acabamos de ver que um dos grandes problemas da Procura em Profundidade Primeiro prende-se com a incapacidade desta lidar com caminhos infinitos. O algoritmo de Procura em Profundidade Limitada procura evitar este problema fixando o nível máximo de procura. Profundidade Limitada (2) Neste processo de procura gera-se um sucessor do nó em cada passo. Por exemplo, no primeiro passo gera-se o sucessor do nó inicial. Assim decidimos que cada vez que temos um nó sucessor, aplicamos a este um operador, de modo a obter um novo sucessor, e assim sucessivamente. 45
Profundidade Limitada (3) Em cada nó temos que deixar uma marca, que indica que os operadores adicionais podem utilizar e especificar a ordem em que devem ser aplicados. Uma vez alcançada a profundidade limite, a procura pára o processo de sucessores. - Este limite permite-nos desprezar as partes do grafo, em que se supõe que não encontramos um nó objectivo, o suficientemente perto do nó inicial. Algoritmo Procura em Profundidade Limitada Função ProcuraProfundidadeLimitada (problema, insere_pilha,nivel_máx): solução ou falha 1. i_nós faz_pilha(estado_inicial(problema)) 2. repete 2.1 se vazia_pilha (i_nós) então 2.1.1 devolve falha fim_de_se 2.2 nón retira_pilha (i_nós) 2.3 se teste_objectivo(nó) então 2.3.1 devolve nón senão 2.3.2 insere_pilha (i_nós,espansão(nó,operadores_nmx(problema))) fim_de_se fim_de_repete fim_de_função 46
Procura Cega Em Largura Primeiro (Breath( - First) Custo Uniforme (Uniform( - Cost) Em Profundidade Primeiro (Depth( Depth First) Profundidade Limitada (Depth( Limited) Aprofundamento Progressivo (Progressive( Depth) Bidireccional Aprofundamento Progressivo (1) Como já vimos, se não conhecermos o valor limite máximo, estaremos condenados a uma estratégia de procura em profundidade primeiro e temos que lidar com o problema dos caminhos infinitos. A resposta a este problema passa pela alteração do principio da procura limitada fazendo variar esse limite entre zero e infinito. 47
Aprofundamento Progressivo (2) Assim, o algoritmo consiste na chamada repetida do algoritmo de procura limitada para valores crescentes do limite máximo. Este algoritmo combina aspectos positivos da procura em largura e da procura em profundidade. Assim o problema dos caminhos infinitos desaparece. Aprofundamento Progressivo (3) 48
Aprofundamento Progressivo (4) Aprofundamento Progressivo (5) 49
Aprofundamento Progressivo (6) Aprofundamento Progressivo (7) O algoritmo de procura por aprofundamento progressivo é uma excelente opção para problemas em que somos obrigados a recorrer a um método cego. O espaço de procura é grande, mas não sabemos qual é o nível máximo em que pode estar uma solução. 50
Algoritmo Procura em Aprofundamento Progressivo Função ProcuraAprofundamentoProgressivo (problema, insere_pilha): solução ou falha 1. para nivél 0 até infinito faz 1.1 se procura ProcuraProfundidadeLimitada (problema, insere_pilha,nivél) então 1.1.1 devolve solução fim_de_se fim_de_para fim_de_função Procura Cega Em Largura Primeiro (Breath( - First) Custo Uniforme (Uniform( - Cost) Em Profundidade Primeiro (Depth( Depth First) Profundidade Limitada (Depth( Limited) Aprofundamento Progressivo (Progressive( Depth) Bidireccional 51
Busca Bidirecional (1) Busca em duas direcções: para frente, a partir do nón inicial, e para trás, a partir do nón final (objectivo). A procura pára p quando os dois processos geram um mesmo estado intermediário. rio. É possível utilizar estratégias diferentes em cada direcção da procura. Busca Bidirecional (2) Custo de tempo: Se o factor de expansão b nas duas direções, e a profundidade do último nón gerado é d: O(2b d/2 ) = O (b( d/2 Custo de memória: O (b( d/2 ) Procura para trás s gera antecessores do nón final se os operadores são reversíveis veis: conjunto de antecessores do nó n = conjunto de sucessores do nón porém, esses operadores podem gerar árvores infinitas! caso contrário rio,, a geração de antecessores fica muito difícil descrição desse conjunto é uma propriedade abstracta Ex.: como determinar exatamente todos os estados que precedem um estado de xeque-mate? Problemas também m quando existem muitos estados finais (objectivos) no problema. /2 ) 52
Comparação das Diversas Estratégias de Busca Critério Largura Custo Uniforme Profundidade Aprofundamento Iterativo Tempo b d b d b m b d Espaço b d b d bm bd Otima? Sim Sim* Não Sim Completa? Sim Sim Não Sim b = factor de ramificação; d = profundidade da solução; m = profundidade máxima da árvore de procura; l = limite de profundidade. Conclusão Os Algoritmos de procura bidireccional são de especial interesse, porque têm o potencial para procurar pequenos espaços e reduzem significativamente o tempo de funcionamento por implementação paralela. Enquanto o último é geralmente verdade, o primeiro pode ser falso quando existem múltiplos m caminhos de solução comparáveis. Aplicado de forma incorrecta o método m de procura bidireccional,, pode originar os piores casos de procura, transformando-se se em casos de procura unidireccionais onde os espaços de procura são distantes entre si. 53
Fontes Consultadas Russel, Norvig, Artificial Intelligence: : A Modern Approach, Cap.. 3. Costa, Simões, Inteligência Artificial. Fundamentos e Aplicações ões. Cap 3.2. Kvitca,, Adolfo Resolución n de problemas con inteligencia artificial. Editorial Kapeluz. Acetatos Prof. Guillermo Simari. Universidad Nacional del Sur,, Argentina Acetatos Alunos IIA semestre 2005/2006 Acetatos Prof. Geber Ramalho. CIN. Universidade Federal de Pernambuco, Brasil. Leituras LIVROS Russel, Norvig, Artificial Intelligence: : A Modern Approach, Cap.. 3. Costa, Simões, Inteligência Artificial. Fundamentos e Aplicações ões. Cap 3.2. 54
FIM 55