Sunteți pe pagina 1din 23

UNIVERSIDADE KATYAVALA BWILA INSTITUTO SUPERIOR POLITECNICO DO LOBITO LICENCIATURA EM INFORMTICA

TEMA:

BENGUELA/2012

UNIVERSIDADE KATYAVALA BWILA INSTITUTO SUPERIOR POLITECNICO DO LOBITO LICENCIATURA EM INFORMTICA

TEMA:

ELABORADO POR: DAVID CANDELE CHIYELU CHITUNDA ERNESTO PEDRO TCHIWALE JOO ABEL MARTINS DA SILVA JOAQUIM TCHIPILICA JOS DANILSON ALBERTO ORNLO SAMUEL PAULO KAMBONGA VENNCIO JOS COSTANTINO

O PROFESSOR: WALDEMAR RAIMUNDO WAFUNGA

BENGUELA/2012

DEDICATRIA
Dedicamos este trabalhos com muita vnia e considerao a todos os colegas da UKB especialmente do ISP, e no s aos nossos familiares e a todos leitores que lhes sirva de guia de aprendizagem nesta cadeira de Inteligncia Artificial de formas a progredirem termos de conhecimento cientifico.

AGRADECIMENTO
Em primordial instncia queremos agradecer a DEUS TODO-PODEROSO pelo flego de vida, aos nossos familiares pelo sustento, e a todos aqueles que directas ou indirectamente contriburam na elaborao deste trabalho.

PENSAMENTO
A reconciliao o princpio de pacificao de duas cidades em guerra. David

NDICE

INTRODUO PROCURA CEGA - EM LARGURA PRIMEIRO - EM PROFUNDUDADE PRIMEIRO - PROFUNDUDADE LIMITADA PROCURA HEURSTICA - PROCURA SFREGA - TREPA COLINAS - PROCURA TABU CONCLUSO BIBLIOGRAFIA

INTRODUO
Historicamente, a procura de mtodos genricos de resoluo de problemas foi uma das primeiras reas de teste para os investigadores em inteligncia artificial. Os ambientes em que ocorrem os problemas so tipicamente acessveis, geralmente deterministas e estticos. As diferentes estratgias sero agrupadas em funo do grau de conhecimento que o agente tem sobre o domnio do problema. Ser feito ainda um estudo da complexidade das diferentes propostas e sero apresentados princpios heursticos para escolha da estratgia mais adequada. Agentes de procura assim denominado devido as analise das diferentes estratgias possveis agrupados em funo do grau de conhecimento que o agente tem para resoluo de problemas.

PROCURA CEGA
Quando no existe nenhuma informao sobre o problema que nos permita ajudar no processo de gerao e teste dos ns, teremos de nos socorrer de uma estratgia dita cega. O que essas estratgias fazem basicamente definir um modo Sistemtico de navegao na rvore de procura. Existem fundamentalmente duas possibilidades, cada uma com variantes: Uma consiste em analisar repetidamente um sucessor do ltimo n analisado; outra baseia-se na anlise de todos os sucessores de dado n, antes de passar para a anlise de todos os sucessores dos sucessores. Vejamos os algoritmos de forma mais detalhada.

EM LARGURA PRIMEIRO
Numa rvore de procura cada n tem um nvel. Assim a raiz tem nvel 0, os seus sucessores tm nvel 1, os sucessores dos sucessores tm nvel 2, etc. A estratgia de procurar em largura primeiro caracteriza-se pelo facto de os ns do nvel n serem todos analisados antes dos ns do nvel n+1. Vamos aos exemplos de umas das estradas de Portugal e admitimos de novo que pretendemos ir de Coimbra para Faro. A rvore de procura ir passando sucessivamente pelas etapas seguinte. Inicialmente a rvore de procura ter apenas um n correspondente a Coimbra o estado inicial. Como Coimbra no corresponde ao objectivo (Faro), o n correspondente ira ser expandido, aparecendo ento os ns do nvel seguinte e que so os vizinhos de Coimbra.

Aveiro Viseu Coimbra Leiria C. Branco O algoritmo em largura primeiro ir analisar sucessivamente estes ns. Uma vez mais nenhum deles a soluo, passar para os ns do nvel 2, como se indica na figura abaixo, processo de expanso e anlise continuaria at se alcanar o objectivo Faro.

Do pondo de vista algortmico, se estivermos a resolver um problema em que apenas interessa a soluo, ento no ser necessrio manter guardada toda a rvore de procura, mas sim a sua fronteira. Caso nos interesse o caminho como no exemplo presente teremos de manter todos os caminhos que ligam a raiz da rvore aos na fronteira. Para assegurar que a estratgia tem o comportamento indicado, a fronteira dever ser guardada numa fila, os elementos cabea da fila sero os primeiros a ser analisados e os sucessores de um n gerados pela estratgia sero introduzidos no fim da fila associado a uma fila, existe um conjunto de funes. As funes FazFila, VaziaFila, RetiraFila e InseriFila so as usuais para o tipo de dados abstracto fila, permitindo respectivamente a construo de uma fila, o teste de filas vazias retirar um elemento da frente da fila ou acrescentar elementos no fim da fila. Esta ltima a responsvel pelo efeito de procura em largura, aparecendo aqui passada como argumento. Podemos descrever o algoritmo:

EM PROFUNDIDADE PRIMEIRO
Procura em Profundidade primeiro segue a filosofia completamente distinta dos dois algoritmos anteriormente apresentados. Na realidade partindo da raiz, o algoritmo vai expandir um n, escolher um dos seus sucessores, expandi-lo por sua vez. Continuando o processo at que eu encontre a soluo ou n no possa ser mais expandido. Neste ultimo caso, continua o processo com um irmo do ltimo n analisado, caso exista, ou regressa ao nvel anterior para continuar o processo. Tentemos ento ir de Coimbra a Faro. Comecemos por Coimbra, que no sendo a soluo vai originar a expanso do n.

Coimbra

Aveiro

Viseu

Leiria

C. Branco

Fig. rvore de procura aps expandir Coimbra. Admitamos que o algoritmo opta por Escolher C. Branco para analisar. O facto de no ser a Soluo, vai originar a sua expanso (fig 3.21).

Coimbra Aveiro Viseu Leiria Guarda C. Branco vora Coimbra

Portalegre

Fig. rvore de procura aps ter expandido Castelo Branco

Suponhamos que a anlise se faz com o Portalegre, que no sendo a soluo, origina a sua expanso crescendo a arvore mais um nvel. Coimbra Aveiro Viseu Leiria Guarda C. Branco Portalegre vora vora Coimbra

C. Branco

Fig. rvore de procura depois da escolha e expanso de Portalegre

Para garantir que o nosso algoritmo se comporte conforme indicado, basta que a fronteira da rvore seja guardada numa pilha. Os objectos pilhas so manipuladas pelas funes usuais: Fazpilha, Vaziapilha, RetiraPilha e InserePilha, que criam uma pilha, testam se uma pilha no tem elementos, retiram o elemento cabea da pilha e inserem elementos cabea da pilha, respectivamente. A funo mais importante a funo InserePilha, que determina o efeito de procura em profundidade. Assim o algoritmo mantm o aspecto genrico j anteriormente apresentado.

Algoritmo Algoritmo de procura em profundidade Primeiro

O algoritmo tem um comportamento anlogo ao da procura em largura primeiro, comeando por formar uma pilha contendo apenas o estado inicial (1). Entra depois o ciclo (2) e, caso a pilha no esteja vazia, sinal de que analisou todos os ns, (2.1), retira o elemento a cabea da pilha (2.2) e analisao, relativamente ao teste objectivo (2.3); se, por acaso no existirem mais elementos na pilha termina falhando (2.1.1). Se o elemento retirado for soluo, devolve-o (2.3.1), seno determina os seus sucessores de acordo com os operadores que lhes so aplicveis os quais so inseridos a cabea da pilha (2.3.2). Vejamos como evolui o contedo da varivel l_ns, ao longo das primeiras iteraes do algoritmo. ITERAO 0 1 2 3 l_ns [Coimbra] [C. Branco, Aveiro, Viseu, Leiria,] [Portalegre, vora, Guarda, Coimbra, Aveiro, Viseu, Leiria] [vora, C. Branco, vora, Guarda, Coimbra, Aveiro, Viseu, Leiria]

Tab. O contedo da pilha ao longo das primeiras iteraes do algoritmo

Olhando para Tab. 3.5, verificamos que os ns dos nveis mais pequenos que so escolhidos vo ficando para trs da pilha, sendo por isso analisado posteriormente queles que se encontram mais afundo na arvore de procura. Verificamos tambm a possibilidade de existncia de ciclos. Finalmente, o nmero de ns na pilha aparenta no crescer to rapidamente como no caso das estratgias em largura primeiro. Podemos avaliar de forma mais precisa estes aspectos e as suas consequncias? A primeira concluso da estratgia de que no completa, mesmo que o espao de procura seja finito. Na realidade, basta que exista um ciclo no caminho de aprofundamento escolhido pelo algoritmo para ele no mais terminar. Por exemplo, se o sucessor de C. Branco escolhido fosse Coimbra, entraramos num ciclo infinito que gerava o caminho Coimbra C. Branco Coimbra C. Branco etc. Tambm no discriminadora. Com efeito podem existir duas solues, uma num nvel alto e outra num nvel baixo, que o algoritmo pode seguir pelo caminho que leva primeira. Caso os custos associados aos caminhos sejam no negativos, lgico que a soluo de menor custo no ser encontrada. Por exemplo, pode acontecer que para ir de Coimbra a C. Branco a opo seja pelo caminho Coimbra Viseu Guarda C. Branco, percorrendo um total de 287 quilmetros em vez de 159 se optasse pelo caminho directo.

Que vantagens poder apresentar est estratgia? Voltemo-nos para o problema da economia. Qual ser a complexidade temporal do algoritmo? Admitamos de novo um factor de ramificao constante e igual a r. Quantos ns so analisados quando estamos no nvel n? A anlise em um pouco mais complicado do que no caso da procura em largura primeiro. No entanto existem pelo menos duas coisas que so certas: no melhor dos casos se a soluo estiver no ramo mais a esquerda no nvel n, n+1 ns; se a soluo estiver no ramo mais direita e no ltimo nvel, teremos o caso menos favorvel, semelhante procura em largura primeiro pelo que o resultado idntico ao apresentado na equao 3.1. O valor concreto ser um valor entre esses dois extremos. Podemos considerar o valor mdio? Podemos, embora a explicao esteja fora do objectivo deste livro. rn+1 1 + (n+1) r-1 = rn+1 1- +r-2 2 2(r-1) Equao Complexidade temporal: valor mdio

EM PROFUNDIDADE LIMITADA
Acabamos de ver na seco anterior que um dos grandes problemas da procura em profundidade primeiro se prende com a sua incapacidade em lder com caminhos infinitos. O algoritmo de procura em profundidade limitada procura evitar este problema. claro que no muito difcil alterar o algoritmo para que o problema dos ciclos seja evitado. Deixamos esta questo como exerccio para o leitor. Fixando o nvel mximo da procura. O algoritmo exige apenas uma pequena modificao ao algoritmo geral j apresentado.

Esta alterao consiste essencialmente em supor que faz parte da descrio do estado o nvel a que se encontra, podendo apenas ser aplicados os operadores caso o nvel do n seja inferior ao mximo escolhido (ponto 2.3.2 do algoritmo). O problema que se coloca o de saber qual o valor mximo para o nvel que deve ser usado. Infelizmente, nem sempre possvel determinar esse valor e, quando tal possvel, isso depende do problema. A referir que no exemplo que temos vindo a usar, sabemos que existem 18 cidades, pelo que o comprimento mximo de uma soluo (um caminho entre duas cidades) ser 17. Do mesmo modo, na charada cripto-aritmtica ilustrada, existem dez letras distintas devendo cada uma receber algarismo entre 0 e 9. Se os operadores efectuaram a atribuio de um algarismo a uma letra, a profundidade mxima de qualquer soluo estar ao nvel 10. Admitindo que possvel definir um limite mximo, ento o algoritmo de procura em profundidade limitada ser completo. Continua pelas razes j anteriormente explicadas a no ser discriminador. A complexidade temporal assimpttica ser de ordem O(r1) e a espacial O(1*r), sendo 1 o valor do limite mximo. Ser assim econmico do ponto de vista do espao, mas no o ser do ponto de vista temporal.

PROCURA HEURSTICA
At agora admitimos a inexistncia de conhecimento que nos pudesse auxiliar relativamente travessia do espao de procura. O melhor que conseguimos foi usar a funo g (n) que nos dava o custo do caminho desde o estado inicial at ao estado n. Nos algoritmos que se seguem, vamos admitir que possumos informao adicional que nos torna capaz de estimar o custo do caminho do n corrente at ao n soluo. Essa informao dada por uma funo h (n). No exemplo que temos vindo a utilizar, a funo h (n) ser simplesmente a distncia quilomtrica em linha recta entre as diferentes cidades e Faro.

Faro Aveiro Braga Bragana Beja C. Branco Coimbra vora Faro Guarda Leiria Lisboa Portalegre Porto Santarm Setbal Viana V. Real Viseu 366 454 487 99 280 319 157 0 352 278 195 228 418 231 168 473 429 363

Tab. Distncias quilomtricas em linha recta

Os algoritmos que iremos apresentar podem ser distinguidos por vrios aspectos. Por exemplo, o modo como o prximo operador escolhido: Num caso, escolhe-se o melhor luz de uma heurstica global, noutros casos a heurstica puramente local. Podemos tambm catalogar os algoritmos de acordo com o modo como a memria , ou no, limitada. Finalmente, podemos ainda considerar o modo como as componentes de custo, g (n) e h (n), so utilizadas.

PROCURA SFREGA
Na procura sfrega o princpio consiste em escolher o n na fronteira da rvore de procura que aparenta ser o mais promissor de acordo com o valor estimado por h (n). Assim o nosso algoritmo limita-se a manter a fronteira da rvore de procura ordenada pelos valores de h (n), sendo sempre escolhido o n de valor mais baixo, isto , aquele que est a hipoteticamente mais prximo da soluo. Vejamos um exemplo concreto com as estradas de Portugal. Admitamos de novo que o nosso problema se resume a ir de Coimbra a Faro. Comeando em Coimbra podemos ir para Aveiro, Leiria, Viseu e Castelo Branco. Na Fig. 3.28, essas possibilidades foram ordenadas pela distncia, estimada em linha recta, das cidades vizinhas de Coimbra a Faro. Os arcos que ligam a Faro as quatro cidades esto anotados com o valor estimado das distncias. Coimbra Leiria (278) C. Branco (280) Faro
Fig. -Primeira expanso da rvore de procura

Viseu (363)

Aveiro (366)

Em funo destes valores, a prxima cidade a ser visitada ser Leiria. Como no o ponto de chegada, temos de calcular os seus descendentes e respectivas distncias estimadas a Faro. A nova fronteira ter de ser ordenada. Coimbra Leiria (280) Santarm (231) Faro
Fig.- Expanso do n Leiria

C.Branco (319)

Viseu (363)

Aveiro (366)

Lisboa (195)

Com estes resultados a prxima cidade a ser escolhida seria Lisboa. O processo continuava at ser encontrado um caminho. O algoritmo pode ser descrito de forma simples como nos casos anteriores.

Algoritmo de procura Sfrega

A estrutura de dados usada neste caso uma lista ordenada. O nome das funes auto-explicativo. A varivel I_ns ir manter a lista ordenada pela heurstica dos ns ainda por visitar. A heurstica aparece aqui passada como argumento da funo, o que torna o algoritmo mais genrico. Podemos simular algumas interaces.

Podemos verificar o reaparecimento de ns j visitados, como o caso de Coimbra. Quais sero as caractersticas desta estratgia? evidente que no , em geral, completa. Basta notar que podem aparecer, como no exemplo anterior, ns repetidos que podem originar caminhos infinitos. Tambm no

discriminadora. Consideremos o exemplo da figura abaixo. Admitimos que queremos ir de Aveiro para Vila Real e usamos as distncias em linha recta, assinaladas na figura, como heurstica. evidente que o nosso algoritmo comear por expandir Aveiro em Viseu e Porto, optando por Viseu por ter a distancia mais curta a V. Real. Ao expandirmos Viseu encontraremos a soluo. Na realidade, o caminho Aveiro Viseu - V.Real significa percorrer 205 quilmetros, enquanto o caminho no escolhido Aveiro-Porto-V.real obrigaria a percorrer apenas 184 quilmetros.

E como se comporta a estratgia do ponto de vista da complexidade? Se reparamos bem para a filosofia desta estratgia, os ns vo sendo expandidos num modo hbrido entre uma procura em profundidade e uma procura em largura. Assim, pode acontecer que, no pior caso, todos os ns tenham de ser expandidos e visitados o que significa uma complexidade temporal da ordem de O (r) com r o factor de ramificao e n o nvel da soluo. Como a fronteira ter de ser mantida toda em memria. E atendendo ao modo como ela evolui, teremos tambm no limite uma complexidade espacial da ordem de O (rn).

TREPA COLINAS
Vimos no incio, que existem problemas relativamente aos quais o mais importante encontrar o caminho que conduz dom estado inicial ao estado final, enquanto para outros problemas a soluo propriamente dita que interessa e no tanto o modo como foi obtida. Pertence a este ltimo tipo de questes o problema das n-rainhas. Para os resolver, possvel a partir de uma soluo candidata e ir tentando melhor-la passo a passo. No caso das nrainhas, por exemplo podemos partir de um tabuleiro com as n-rainhas colocadas em posies aleatrias e procurar movimentar uma delas de cada vez, de tal modo que o nmero de ataques diminua. Este tipo de abordagem tem uma natureza tipicamente local e envolve ir melhorando progressivamente a soluo candidata. O algoritmo trepa colinas baseia-se nesta filosofia. Para alm disso, o algoritmo deita fora todos os vizinhos menos o melhor. Vejamos como funcionaria no caso da nossa hipottica viagem de Coimbra at Faro.

A distncia real desta soluo de 576. Do que foi dito resulta que o algoritmo extremamente simples.

Tentemos agora analisar as caractersticas desta estratgia. vidente que no completa. No difcil imaginar situaes nas quais uma transio inicialmente promissora nos conduz para um estado que no qua no a soluo e cujos descendentes no melhoram o resultado dado pela funo de avaliao.

Na figura, o n C encontra-se mais perto da soluo D do que o n B. Deste modo ser o seleccionado e B ser descartado. No havendo ligao directa de C a D, o algoritmo termina sem encontrar a soluo.

Igualmente no ptima. No exemplo anterior a soluo CoimbraLeiria-Lisboa-vora-Beja-Faro tem uma distncia real de apenas 495 quilmetros. Estas duas situaes podem ser descritas visualmente por aquilo que se costuma designar pelo problema dos mximos locais (ver figura abaixo).

Admitamos que o nosso problema se resume a alcanar o ponto mais alto numa montanha. Partindo do Ponto A, aleatoriamente escolhido, o algoritmo consegue ir melhorando progressivamente a soluo at alcanar o ponto B. Nessa altura impossvel melhorar a soluo e chegar ao ponto D. Claro que se tivssemos partido inicialmente de C, a soluo seria encontrada. Passamos agora a avaliar a natureza econmica desta abordagem. Comecemos pelo espao. Este algoritmo apenas guarda um estado pelo que a sua complexidade espacial constante, ou seja, da ordem O(k) em que k uma constante. Do ponto de vista temporal a sua complexidade semelhante de uma procura em profundidade primeira. Assim, se tivermos um factor de ramificao r e a soluo se encontrar no nvel n, ento a complexidade temporal ser da ordem de O(r*n). A utilizao deste algoritmo depende bastante da natureza do terreno. Para alm do problema dos mximos locais j referido, tambm a existncia de planaltos pode dificultar o funcionamento do algoritmo, pois, tendo este apenas uma viso local do terreno, se a funo de avaliao devolver valores idnticos para todos os vizinhos, a escolha ser ento aleatria (ver figura abaixo).

Existem solues para estes problemas. Uma das possibilidades de tratar dos mximos locais seria retomar o algoritmo a partir de uma nova posio. Do ponto de vista da complexidade, o algoritmo deixaria de ser to apelativo. No caso dos planaltos, uma soluo possvel seria deixar o algoritmo ter uma vizinhana maior, isto , poder analisar o que se passa depois de usar mais do que um operador em cadeia. Deixamos neste caso de ter um algoritmo to simples e ao mesmo tempo no sabemos qual deve ser a dimenso do olhar para frente

PROCURA TABU
A procura tabu (Glover, 1989), (Glover, e Laguna 1997) um algoritmo heurstico, que procura melhorar progressivamente uma soluo atravs de uma pesquisa local. O facto que distingue este algoritmo dos restantes, nomeadamente do trepa colinas, a existncia de uma memria, designada normalmente por lista tabu, e que se destina a evitar ciclos, explorar zonas promissoras ou a forar a visita a novas zonas do espao de procura. Esse efeito conseguido, pois a lista tabu contm ou solues que foram testadas ou os operadores que foram utilizados. O contedo da lista usado fundamentalmente para inibir o teste de solues ou evitar operadores. A memria pode ter vrias dimenses, de que salientamos as que medem o momento da ocorrncia de um dado evento (uso de um operador, por exemplo) ou, ainda, a frequncia com que determinado evento ocorreu. Na primeira dimenso, porque so guardadas as ocorrncias mais recentes, podemos dizer que estamos perante uma memria de curto termo, enquanto na segunda dimenso, ao guardarmos situaes mais antigas, podemos falar de memria de longo termo. Na procura tabu a memria pode ser utilizada segundo diferentes estratgias: para intensificar a busca na vizinhana de solues de boa qualidade ou para diversificar a busca para regies do espao de procura ainda visitados. O algoritmo que a seguir se descreve em pseudocdigo formado por dois ciclos principais. No ciclo externo, controla-se o nmero de vezes que se tenta melhorar uma soluo. No ciclo interno, estabelece-se o modo de produzir a nova soluo candidata a partir da soluo corrente, recorrendo aos vizinhos desta e informao contida na memria tabu.

CONCLUSO
Em suma o agente de procura esta destinado a criar estratgias, para soluo de um determinado problema passando por diversos caminho, que lhe leve a solucionar parcialmente ou completamente o problema proposto, superando obstculos, de profundidades, longitude, limites, aplicando os diversos mtodos de procura e princpios heursticos.

BIBLIOGRAFIA

Obtida a partir do manual de Inteligncia Artificial. Autores: Ernesto da Costa e Anabela Simes. 2 Edio Pginas 71 - 111