Você está na página 1de 27

.

5
MAKRON Books

Cap. 3 Tcnicas de busca heurstica

77

Captulo 3

Subida de encosta Busca pela melhor escolha Reduo de problemas Satisfao de restries

TCNICAS DE BUSCA HEURSTICA

Anlise meios-fins

3.1 GERAR-E-TESTAR
A estratgia gerar-e-testar a mais simples de todas as abordagens que discutiremos. Ela consiste nas seguintes etapas: No ltimo captulo, vimos que muitos dos problemas que se enquadram no escopo da inteligncia artificial so complexos demais para serem solucionados por tcnicas diretas; eles precisam ser atacados por mtodos de busca apropriados, armados com quaisquer que sejam as tcnicas diretas disponveis para guiar a busca. Neste captulo, forneceremos um arcabouo para descrever mtodos de busca e discutiremos tcnicas de busca de propsito geral. Esses mtodos so todos variedades da busca heurstica. Eles podem ser descritos independentemente de qualquer tarefa ou domnio de problemas em particular. Mas, quando aplicados a problemas em particular, sua eficcia torna-se altamente dependente do modo como eles exploram o conhecimento especfico de cada domnio de aplicao, j que sozinhos no so capazes de superar a exploso combinatria qual os processos de busca so to vulnerveis. Por este motivo, estas tcnicas normalmente so chamadas de mtodos fracos. Um resultado importante que emergiu nas ltimas trs dcadas de busca em IA foi a percepo de que esses mtodos fracos tm eficcia limitada para resolver sozinhos problemas difceis; entretanto, essas tcnicas continuam a fornecer a estrutura na qual pode ser colocado o conhecimento especfico a cada domnio, manualmente ou como resultado do aprendizado automtico. Assim, elas continuam a formar o ncleo da maioria dos sistemas de IA. J discutimos duas estratgias bastante bsicas de busca: Algoritmo: Gerar-e-Testar 1. Gerar uma soluo possvel. Para alguns problemas, isto significa gerar um ponto em particular no espao do problema. Para outros, significa gerar um caminho, a partir de um estado inicial. 2. Testar para ver se a soluo gerada realmente uma soluo, comparando o ponto escolhido ou o ponto final do caminho escolhido com o conjunto de estados-meta aceitveis. 3. Se uma soluo tiver sido encontrada, saia. Caso contrrio, volte etapa 1. Se a gerao da soluo possvel for feita sistematicamente, ento esse procedimento eventualmente encontrar uma soluo, se existir uma. Infelizmente, se o espao do problema for muito grande, este "eventualmente" poder demorar muito tempo. O algoritmo gerar-e-testar um procedimento de busca em profundidade, j que solues completas precisam ser geradas antes de serem testadas. Em sua forma mais sistemtica, ele simplesmente uma busca exaustiva do espao do problema. Gerar-e-testar, claro, tambm opera gerando solues aleatoriamente, mas, neste caso, j no h garantias de que uma soluo seja encontrada. Nesta forma, ele tambm conhecido como algoritmo do Museu Britnico, uma referncia a um mtodo que diz ser possvel encontrar qualquer objeto do Museu Britnico se voc vagar por l aleatriamente. Entre estes dois extremos h um ponto intermedirio prtico, no qual o processo de busca tem continuidade sistemtica, mas alguns caminhos no so considerados

Busca em profundidade Busca em amplitude

Neste captulo, apresentaremos algumas outras: Gerar-e-testar

76

1 Ou, de acordo com uma outra histria, se um nmero suficiente de marcos fosse colocado em frente a um conjunto suficientemente grande de mquinas de escrever e ficassem l sozinhos bastante tempo, eles eventualmente produziriam todas as obras de Shakespeare.

9 9 ------- Intel gncia Artificial Cap. 3

Cap. 3 Tcnicas de busca heurstica


produz solues um tanto imprecisas, j que no h realimentao por parte do mundo. Mas se ele for usado apenas para produzir solues que sero ento exploradas no processo gerar-e-testar, a falta de preciso acurada torna-se irrelevante. E, ao mesmo tempo, os problemas combinatrios que surgem em procedimentos gerar-e-testar simples so evitados, atravs de referncia criteriosa aos planos.

, porque no parece provvel que levem a uma soluo. Essa avaliao feita por uma funo heurstica., conforme descrito na Seo 2.2.2. A maneira mais direta de implementar o mtodo gerar-e-testar sistemtico na forma de rvore de busca em profundidade com retrocesso. Se for provvel que algum estado intermedirio aparea freqentemente na rvore, porm, poder ser melhor modificar o procedimento, conforme descrevemos, para que ele percorra um grafo e no uma rvore. No caso de problemas simples, o mtodo gerar-e-testar exaustivo em geral uma tcnica razovel. Por exemplo, considere o quebra-cabea que consiste em quatro cubos de seis lados, sendo que cada lado de cada cubo pintado de uma entre quatro cores. Uma soluo para este quebra-cabea consiste em arranjar os cubos em fila, de forma que, em todos os quatro lados da fila, uma face do cubo de cada cor fique mostra. Este problema pode ser solucionado por uma pessoa (que um processador muito mais lento para este tipo de coisa do que at mesmo um computador bem barato) em vrios minutos atravs da tentativa exaustiva e sistemtica de todas as possibilidades. Ele pode ser solucionado muito mais rapidamente usando-se um procedimento de gerao-e-teste heurstico. Um rpido exame dos quatro cubos revela que h, digamos, mais faces vermelhas do que de outras cores. Assim, quando colocamos um cubo com vrias faces vermelhas, ser melhor usar o menor nmero possvel delas como faces externas. 0 maior nmero possvel delas deve ser colocado de modo a ficarem encostadas no prximo cubo. Usando-se esta heurstica, muitas configuraes no precisaro nunca ser exploradas e uma soluo poder ser encontrada com bastan te rapidez. Infelizmente, quando os problemas so mais difceis do que este, nem mesmo a heurstica gerare-testar sozinha nuns tcnica muito eficiente. Mas, quando combinada com outras tcnicas para restringir ainda mais o espao de busca, a tcnica pode ser bastante eficaz. Por exemplo, um dos primeiros programas de sucesso em IA DENDRAL [Lindsay et al., 1980], que infere a estrutura de componentes orgnicos usando dados de espectrograma de massa e de ressonncia magntica nuclear (NMR - Nuclear Magnetic Resonance). Ele usa uma estratgia chamada planejar-gerar-testar, na qual um processo de planejamento que usa tcnicas de satisfao de restries (veja Seo 3.5) cria listas de subestruturas recomendadas e contra-indicadas. 0 procedimento gerar-e-testar ento usa essas listas para explorar apenas um conjunto de estruturas razoavelmente restrito. Limitado desta maneira, o procedimento gerar-e-testar tem se mostrado altamente eficaz. Esta combinao de planejamento, usando um mtodo de soluo de problemas (neste caso, satisfao de restries) com o uso do plano por um outro mtodo de soluo de problemas, gerar-etestar, um exemplo excelente do modo como as tcnicas podem ser combinadas para superar as limitaes que cada uma possui, individualmente. Uma importante deficincia do planejamento que ele normalmente

3.2 SUBIDA DE ENCOSTA


Subida de encosta (hill climbing) uma variao do procedimento gerar-e-testar, na qual a realimentao dos testes usada para ajudar o gerador a decidir para onde deslocar-se no espao de busca. Em um procedimento gerar-e-testar puro, a funo de teste responde apenas com um sim ou um no. Mas, se a funo de teste for incrementada com uma funo heurstica2 que fornea uma estimativa da proximidade que um determinado estado est do estado-meta, o procedimento de gerao poder explor-lo, conforme mostra o procedimento a seguir. Isto particularmente bom porque normalmente o clculo da funo heurstica pode ser feito quase sem nenhum custo, e ao mesmo tempo em que o teste de uma soluo esteja sendo executado. Subida de encosta muito usado quando h disponibilidade de uma boa funo heurstica para avaliar estados, mas nenhum outro conhecimento til est disponvel. Por exemplo, suponha que voc est em uma cidade desconhecida, sem um mapa, e queira chegar ao centro. Voc simplesmente procura os prdios mais altos. A funo heurstica simplesmente a distncia entre o local corrente e o local dos prdios altos, e os estados desejveis so aqueles nos quais a distncia minimizada. Lembre-se de que na Seo 2.3.4 dissemos que uma maneira de caracterizar problemas de acordo com a resposta deles pergunta: "Uma boa soluo absoluta ou relativa?". As solues absolutas existem sempre que for possvel reconhecer um estado-meta por meio de um simples exame do mesmo. Chegar ao centro de uma cidade um exemplo desse tipo de problema. Nestes casos, a subida de encosta pode terminar sempre que se chegue a um estado-meta. Entretanto, para problemas de maximizao (ou minimizao), como o problema do caixeiro-viajante, existem apenas solues relativas. Nestes problemas no existe um estado-meta a priori. Para problemas deste tipo, faz sentido terminar o processo de subida de encosta quando no h um estado alternativo razovel para o qual se deslocar.

2 0 que estamos chamando de funo heurstica s vezes tambm chamado de funoobjetivo, particularmente na literatura de otimizao matemtica.

80

Inteligncia Artificial Cap. 3


3.2.1 SUBIDA DE ENCOSTA SIMPLES

A maneira mais simples de implementar a subida de encosta a que segue: Algoritmo: Subida de Encosta Simples 1. Avalie o estado inicial. Se ele for um estado-meta, retorne-o e encerre. Caso contrrio, continue com o estado inicial como estado corrente. 2. Repita a operao (faa um "loop") at que uma soluo seja encontrada ou at no haver nenhum operador a ser aplicado ao estado corrente: ( a) Escolha um operador que ainda no tenha sido aplicado ao estado corrente e aplique-o para produzir um novo estado. (b) Avalie o novo estado. I. Se for um estado-meta, ento retorne-o e encerre. II. Se no for um estado-meta, mas for melhor que o estado corrente, ento transforme-o em estado corrente. III. Se no for melhor que o estado corrente, ento continue no lao ("loop"). A diferena-chave entre este algoritmo e aquele fornecido para o procedimento gerar-e-testar o uso de uma funo de avaliao como meio de injetar no processo de controle conhecimentos especficos a respeito da tarefa. o uso deste conhecimento que faz deste e dos outros mtodos discutidos neste captulo mtodos de busca heurstica, e esse mesmo conhecimento que d a estes mtodos poder para solucionar problemas de outro modo intratveis. Note que, neste algoritmo, fizemos uma pergunta relativamente vaga: "Um estado melhor que outro?". Para o algoritmo funcionar, precisamos fornecer uma definio precisa de melhor. Em alguns casos, melhor significa um valor maior da funo heurstica. Em outros, significa um valor menor. Mas isto no importa, desde que um determinado programa de subida de encosta seja consistente em sua inter pretao. Para ver como funciona o processo de subida de encosta, vamos voltar ao quebra-cabea dos quatro cubos coloridos. Para solucionar o problema, primeiro precisamos definir uma funo heurstica que descreva quo perto de ser uma soluo est uma determinada configurao. Uma funo deste tipo simplesmente a soma do nmero de cores diferentes em cada um dos quatro lados da fila de blocos. Uma soluo para o quebra-cabea ter o valor 16. A seguir, precisamos definir um conjunto de regras que descrevam maneiras de transformar uma configurao em outra. Na verdade, uma regra suficiente. Ela diz simplesmente: pegue um bloco e gire-o 90 graus em qualquer direo. Depois de fornecidas estas definies, a prxima etapa ser gerar

uma configurao inicial. Isto pode ser feito aleatoriamente, ou com a ajuda da funo heurstica descrita na seo anterior. Agora a subida de encosta pode comear. Geramos um novo estado selecionando um bloco e girando-o. Se o estado resultante for melhor, ento ele ser mantido. Se no, voltaremos ao estado anterior e tentaremos uma ao diferente.

Cap. 3 Tcnicas de busca heurstica

81

3.2.2 SUBIDA DE ENCOSTA PELA TRILHA MAIS NGREME Uma variao til da subida de encosta simples considera todos os movimentos feitos a partir do estado corrente e seleciona o melhor deles como prximo estado. Este mtodo chamado de subida de encosta pela trilha mais ngreme (steepest-ascent hill climbing) ou busca pelo gradiente. Note que este mtodo contrasta com o mtodo bsico pelo qual se seleciona o primeiro estado que for melhor que o estado corrente. 0 algoritmo funciona da seguinte maneira. Algoritmo: Subida de Encosta pela Trilha mais ngreme 1. Avalie o estado inicial. Se ele tambm for um estado-meta, retorne-o e encerre. Caso contrrio, continue com o estado inicial como estado corrente. 2. Repita o processo at encontrar uma soluo ou at que uma iterao completa no produza nenhuma mudana no estado corrente: ( a) Atribua a SUCESSOR seja um estado onde qualquer possvel sucessor do estado corrente seja melhor do que SUCESSOR. (b) Para cada operador que se aplique ao estado corrente faa o seguinte: I. Aplique o operador e gere um estado novo. II. Avalie o novo estado. Se for um estado-meta, retorne-o e encerre. Se no, compare-o a SUCESSOR. Se melhor, ento atribua-o a SUCESSOR. Se no for melhor, deixe SUCESSOR como est. (c) Se

SUCESSOR for melhor que o estado corrente, ento transforme-o em estado

corrente. Para aplicar o mtodo de subida de encosta pela trilha mais ngreme ao problema dos cubos coloridos, precisamos considerar todas as alteraes do estado inicial e escolher a melhor. No caso deste problema, isto dificil, j que h muitos movimentos possveis. H sempre perdas e ganhos entre o tempo exigido para escolher um movimento (normalmente maior no caso da variao subida de encosta pela trilha mais ngreme) e o nmero de movimentos necessrios para chegar a uma soluo (normalmente maior no caso da subida de encosta bsica) que precisam ser conside-

9 9 ------- Intel gncia Artificial Cap. 3

Cap. 3 Tcnicas de busca heurstica


outro) que foram usados na Seo 2.3.1. Suponha que utilizemos a seguinte funo heurstica: Local: Some um ponto para cada bloco que estiver em cima do bloco em que ele deve estar. Subtraia um ponto para cada bloco que estiver sobre o bloco errado. Usando esta funo, o estado-meta vale 8 pontos. 0 estado inicial vale 4 pontos (j que um ponto somado para os blocos C, D, E, F, G e H e um ponto subtrado para os blocos A e B). H apenas um movimento a partir do estado inicial, ou seja mover o bloco A para a mesa. Este movimento produz um estado que vale 6 pontos (j que agora a posio de A faz com que seja somado um ponto, e no subtrado). 0 procedimento de subida de encosta aceitar esse movimento. A partir do novo estado, h trs movimentos possveis, que levam aos trs estados mostrados na Figura 3.2. Estes estados valem: (a) 4, (b) 4 e (c) 4.0 procedimento ser interrompido, porque todos estes estados tm valor menor que o estado corrente. 0 processo chegou a um mximo local, que no o mximo global. 0 problema que, atravs de um exame puramente local das estruturas de apoio, o estado corrente parece ser melhor do que qualquer um de seus sucessores, porque mais blocos esto sobre os objetos corretos. Para solucionar este problema, necessrio desmontar uma boa estrutura local (a pilha de B a H) porque ela est no contexto global incorreto.

rados quando se est decidindo que mtodo funcionar melhor com um determinado problema. Tanto a subida de encosta como a variao pela trilha mais ngreme podem no encontrar uma soluo. Qualquer um dos algoritmos pode terminar no porque o estado-meta foi encontrado, mas porque chegou-se a um estado que no pode gerar nenhum estado melhor que ele. Isto ocorrer se o programa tiver alcanado um mximo local, um plat ou uma cordilheira. U m mximo local um estado melhor do que todos os seus vizinhos, mas no melhor que outros estados mais distantes. Em um mximo local, todos os movimentos parecem piorar as coisas. Os mximos locais so particularmente frustrantes, porque em geral ocorrem quando falta pouco para que uma soluo seja encontrada. Neste caso, eles so chamados de contrafortes.

O plat uma rea plana do espao de busca na qual todo um grupo de estados vizinhos tem o mesmo valor. Em um plat, no possvel determinar a melhor direo atravs de comparaes locais. O cume um tipo especial de mximo local. Ele uma rea do espao de busca mais alta do que as reas vizinhas e tem ele prprio uma rampa (que seria interessante subir). Mas a orientao da regio alta, comparada com o grupo de movimentos disponveis e com as direes em que eles se movem, impossibilita atravessar a cordilheira com um nico movimento.
H vrios modos de lidar com estes problemas, embora esses mtodos no sejam de modo algum garantidos:

Volte a algum n anterior e tente seguir em uma direo diferente. Isto particularmente razovel se naquele n houver uma direo aparentemente promissora ou quase to promissora quanto a que foi escolhida anteriormente. Para implementar esta estratgia, mantenha uma lista dos caminhos que quase foram escolhidos e volte a um deles se o caminho escolhido levar a um beco sem sada. Esta uma maneira bastante boa de lidar com mximos locais. D um salto grande em alguma direo para tentar chegar a uma nova seo do espao de busca. Esta uma maneira particularmente boa de lidar com plats. Se as nicas regras disponveis descrevem etapas pequenas, aplique-as vrias vezes na mesma direo. Aplique duas ou mais regras antes de fazer o teste. Isto corresponde a mover-se em vrias direes ao mesmo tempo. Esta estratgia particularmente boa para lidar com cordilheiras.

H GF E D C BA

H GF

Mesmo com estas medidas de primeiros socorros, a subida de encosta no sempre muito eficiente. Ela particularmente inadequada para problemas onde o valor da funo heurstica cai repentinamente quando voc se move para longe de uma soluo. Isto geralmente ocorre sempre que se fizer presente qualquer tipo de efeito de limite (threshold effect). Subida de encosta um mtodo local, o que significa que ele decide o que fazer a seguir analisando apenas as conseqncias "imediatas" de sua escolha, sem explorar exaustivamente todas as conseqncias. Ele compartilha com outros mtodos locais, como, por exemplo, a heurstica do vizinho mais prximo, descrita na Seo 2.2.2, a vantagem de ser menos explosivo em termos combinatrios do que mtodos globais comparveis. Mas ele tambm compartilha com outros mtodos locais a falta de garantia de eficincia. Apesar de ser verdade que o procedimento de subida de encosta em si s analisa um movimento frente sem ir mais alm, esse exame pode, na verdade, explorar uma quantidade arbitrria de informaes globais que estejam codificadas na funo heurstica. Considere o problema do mundo de blocos mostrado na Figura 3.1. Assuma os mesmos operadores (isto , pegue um bloco e coloque-o na mesa; pegue um bloco e coloque-o sobre

E D C B A

estado inicial Figura 3.1 Um problema de subida de encosta.

estado-meta

84

Inteligncia Artificial Cap. 3

Cap. 3 Tcnicas de busca heurstica

85

AH G F ED CB (a) G F E D C B (b) Figura 3.2 Trs movimentos possveis. Poderamos culpar o prprio mtodo de subida de encosta por no ir mais adiante at encontrar uma soluo. Mas poderamos culpar tambm a funo heurstica, e tentar modific-la. Suponha que experimentemos a seguinte funo heurstica em lugar da primeira: Global: Quando o bloco tem a estrutura de apoio correta (isto , a estrutura completa sobre ele exatamente o que deveria ser), some um ponto para cada bloco da estrutura de apoio. Quando o bloco tem uma estrutura de apoio incorreta, subtraia um ponto para cada bloco da estrutura de apoio existente. Usando esta funo, o estado-meta vale 28 pontos (1 para B, 2 para C etc.). 0 estado inicial vale -28. Mover o bloco A para a mesa resulta em um estado que vale -21, j que A no tem mais sete blocos errados debaixo dele. Agora, os trs estados que podem ser produzidos a seguir tm o seguinte valor: (a) -28, (b) -16 e (c) -15. Desta vez, a variao trilha mais ngreme escolher o movimento (c), que o movimento correto. Esta nova funo heurstica capta os dois aspectos-chave deste problema: estruturas incorretas so ruins e devem ser eliminadas; e estruturas corretas so boas e devem ser aprimoradas. Conseqentemente, o mesmo procedimento de subida de encosta, que falhou com a funo heurstica anterior, agora funciona perfeitamente. Infelizmente, nem sempre possvel construir uma funo heurstica perfeita como esta. Por exemplo, considere novamente o problema de ir ao centro da cidade. A funo heurstica perfeita precisaria ter conhecimento das ruas de mo nica e das ruas sem sada, informaes que, no caso de uma cidade estranha, nem sempre esto disponveis. E mesmo que, em princpio, o conhecimento perfeito esteja disponvel, ele pode no ter uso prtico em termos computacionais. Como exemplo extremo, imagine uma funo heurstica que compute o valor de um estado pedindo para que seu prprio procedimento de soluo de problemas olhe alm do estado no qual a soluo deve ser encontrada. Ela saber ento quanto custa exatamente encontrar aquela soluo, e pode retornar esse custo como seu valor. Uma funo heurstica que executa este tipo de operao converte o procedimento de subida de encosta local em mtodo global, porque incorpora em si mesma um mtodo global. Mas agora as vantagens computacio
-

E-

nais de um mtodo local se perderam. Assim, ainda verdade que a subida de encosta pode ser muito ineficaz em um espao de problema grande e desigual. Mas ela normalmente til quando combinada com outros mtodos que a colocam na vizinhana correta.

F ED 3.2.3 TMPERA SIMULADA A tmpera simulada (simulated annealing) uma variao de subida de encosta na qual, no incio do processo, podem ser feitos alguns movimentos descendentes (morro abaixo). A idia explorar suficientemente todo o espao do problema logo no incio, para que a soluo final seja relativamente insensvel ao estado inicial. Isto deve diminuir as chances de ficar preso em um mximo local, plat ou cordilheira. Para fins de compatibilidade com o uso padro nas discusses sobre tmpera simulada, faremos duas mudanas notacionais que sero vlidas apenas nesta seo. Usaremos o termo funo-objetivo em lugar do termo funo heurstica. E tentaremos minimizar em lugar de maximizar o valor da funo-objetivo. Assim, na verdade estaremos descrevendo um processo de descida de vale em lugar de subida de encosta. A tmpera simulada (Kirkpatrick et al., 1983) como processo computacional moldou-se no processo fsico do recozimento, onde substncias fsicas como os metais so fundidas (isto , elevadas a altos nveis de energia) e depois gradualmente resfriadas at alcanar um estado slido. 0 objetivo deste processo produzir um estado final com um mnimo de energia. Deste modo, este processo um tipo de descida de vale, no qual a funo-objetivo o nvel de energia. As substncias fsicas em geral movem-se de configuraes em que o nvel de energia mais alto para configuraes em que o nvel de energia mais baixo; portanto, a descida de vale ocorre naturalmente. Mas existe uma certa probabilidade de ocorrer uma transio para um estado de maior energia. Esta probabilidade fornecida pela funo p=e-AE/kT onde AE a mudana positiva no nvel de energia, T a temperatura e k a constante de Boltzmann. Assim, na descida de vale fsica que ocorre durante a tmpera, a probabilidade de um grande movimento ascendente menor que a probabilidade de um movimento pequeno. A probabilidade de um movimento ascendente diminui, medida que diminui a temperatura. Deste modo, estes movimentos so mais provveis durante o incio do processo, quando a temperatura alta, tornando-se menos provveis quando a temperatura comea a diminuir. Uma caracterstica deste processo que os movimentos descendentes so permitidos a qualquer hora. Grandes movimentos ascendentes podem ocorrer logo no incio, mas, com o andamento do processo, apenas pequenos CB

nn
(c)

86

Inteligncia Artificial Cap. 3

Cap. 3 Tcnicas de busca heurstica

87

movimentos ascendentes so permitidos, at que finalmente o processo converge para uma configurao de mnimo local. A velocidade com que o sistema resfriado chamada de cronograma de tmpera. Os processos fsicos de tmpera so muito sensveis ao cronograma de tmpera. Se o resfriamento ocorrer muito rapidamente, formar-se-o regies estveis de alta energia. Em outras palavras, ser alcanado um mnimo local e no um mnimo global. Se, no entanto, for usada uma escala mais lenta, ser provvel o desenvolvimento de uma estrutura cristalina uniforme, que corresponde a um mnimo global. Mas, se a escala for muito lenta, haver perda de tempo. Em temperaturas altas, onde so permitidos movimentos essencialmente aleatrios, no acontece nada til. Em temperaturas baixas, pode-se perder muito tempo depois de ter sido formada a estrutura final. 0 cronograma de tmpera ideal para. cada problema especfico de tmpera em geral precisa ser descoberto empiricamente. Estas propriedades da tmpera fisica podem ser usadas para definir um processo anlogo de tmpera simulada, que pode ser utilizado (embora nem sempre com a mesma eficincia) sempre que a subida de encosta simples tambm puder ser utilizada. Neste processo anlogo, AE generalizado de forma a representar no especificamente a mudana de energia, mas, mais genericamente, a mudana no valor da funo-objetivo, seja ela qual for. 0 correspondente a kT ligeiramente menos direto. No processo fsico, temperatura uma noo bem definida, medida em unidades padres. A varivel k descreve a correspondncia entre as unidades de temperatura e as unidades de energia. Uma vez que, no processo anlogo, as unidades de E e T so ambas artificiais, faz sentido incorporar k a T, escolhendo valores de T que produzam um comportamento desejvel por parte do algoritmo. Assim, usamos esta frmula revisada para a probabilidade p'= e- variao(AE/T) Mas ns ainda precisamos escolher uma escala dos valores para T (ao qual ainda chamamos de temperatura). Discutiremos esta questo rapidamente a seguir, depois de apresentarmos o algoritmo da tmpera simulada. O algoritmo para a tmpera simulada apenas ligeiramente diferente do procedimento de subida de encosta simples. As trs diferenas so:

Algoritmo: Tmpera Simulada 1. Avalie o estado inicial. Se for tambm um estado-meta, ento retorne-o e encerre. Caso contrrio, continue com o estado inicial como estado corrente. 2. Inicialize melhor-at-o-momento como igual ao estado corrente. 3. Inicialize T de acordo com o cronograma de tmpera. 4. Repita o processo at ser encontrada uma soluo ou at no haver mais nenhum operador que possa ser aplicado no estado corrente. (a) Selecione um operador que ainda no tenha sido aplicado ao estado corrente e aplique-o para produzir um estado novo. (b) Avalie o novo estado. Calcule

delta(E) = (valor do estado corrente) - (valor do estado novo)

Se o estado novo for um estado-meta, retorne-o e encerre. Se no for um estado-meta, mas for melhor que o estado corrente, ento torne-o o estado corrente. Atribua tambm este novo estado a melhorat-o-momento.

Se ele no for melhor que o estado corrente, ento torne-o o estado corrente com a probabilidade p' definida acima. Esta etapa geralmente implementada invocando-se um gerador de nmeros aleatrios para produzir um nmero na faixa [0,11. Se esse nmero for menor que p', ento o movimento ser aceito. Caso contrrio, no faa nada. (c) Revise T sempre que necessrio de acordo com o cronograma de tmpera. 5. Retorne melhor-at-o-momento como resposta. Para implementar este algoritmo revisado, necessrio escolher um cronograma de tmpera, que tem trs componentes. 0 primeiro o valor inicial a ser usado para a temperatura. 0 segundo o critrio ou critrios que sero usados para decidir quando a temperatura do sistema deve ser reduzida. 0 terceiro quanto a temperatura deve ser reduzida toda vez que ela mudar. Poder haver tambm um quarto componente, o momento de encerrar. A tmpera simulada normalmente usada para solucionar problemas em que .o nmero de movimentos a partir de um dado estado muito grande (como, por exemplo, o nmero de permutaes que podem ser feitas em uma determinada rota de viagem). No caso destes problemas, pode no ser razovel tentar todos os movimentos possveis. Em vez disso, talvez seja til explorar algum critrio que envolva o nmero de movimentos que j foram testados, desde que se obtenha uma melhora. Experincias feitas com tmpera simulada em uma srie de problemas sugerem que a melhor maneira de escolher um cronograma de tmpora testar vrios e

0 cronograma de tmpora precisa ser mantido. Movimentos para estados piores podem ser aceitos. urna boa idia manter, alm do estado corrente, o melhor estado encontrado at o momento. Depois, se o estado final for pior que aquele estado anterior (por causa de falta de sorte na aceitao de movimentos para estados piores), o estado anterior ainda estar disponvel.

88

Inteligncia Artificial Cap. 3

Cap. 3 Tcnicas de busca heurstica

89

observar o efeito sobre a qualidade da soluo encontrada e sobre a velocidade com que o processo converge. Para se comear a ter uma noo de como chegar a um cronograma, a primeira coisa a observar que, quando T aproxima-se de zero, a probabilidade de aceitar um movimento para um estado pior vai a zero e a tmpera simulada fica idntica a uma subida de encosta simples. A segunda coisa a observar que o que realmente importa no clculo da probabilidade de aceitar um movimento a proporo E/T. Assim, importante que os valores de T sejam escalonados de forma a tornar esta proporo significativa. Por exemplo, T pode ser inicializada em um valor de tal forma que, para um E mdio, p' seja igual a 0,5. 0 Captulo 18 volta tmpera simulada no contexto das redes neurais.

3.3 BUSCA PELA MELHOR ESCOLHA


At aqui, discutimos realmente apenas duas estratgias sistemticas de controle, busca em amplitude e busca em profundidade (de vrios tipos). Nesta seo, discutiremos um novo mtodo, a busca pela melhor escolha (best-first search), que uma maneira de combinar em um nico mtodo as vantagens das buscas em profundidade e em amplitude.

A Figura 3.3 mostra o incio de um procedimento de busca pela melhor escolha. Inicialmente, h apenas um n, portanto ele ser expandido. Esta expanso gera trs novos ns. Afuno heurstica, que, neste exemplo, uma estimativa do custo de se chegar a uma soluo a partir de um dado n, aplicada a cada um destes novos ns. Como o n D o mais promissor, ele expandido a seguir, produzindo dois ns sucessores, E e F. Depois, a funo heurstica aplicada a eles. Agora um outro caminho, que passa pelo n B, parece mais promissor, portanto ele analisado e gera os ns G e H. Mas novamente, quando estes novos ns so avaliados, eles parecem menos promissores do que um outro caminho, portanto a ateno voltada ao caminho que vai de D a E. E ento expandido, produzindo os ns I e J. Na etapa seguinte, J ser expandido por ser o mais promissor. Este processo pode continuar at que uma soluo seja encontrada. Figura 3.3 Uma busca pela melhor escolha. Passo 1 Passo 2 Passo 3

(3) 3.3.1 GRAFOS OU

(3)

(5)

(6)

A busca em profundidade boa porque permite que uma soluo seja encontrada sem que todas as ramificaes concorrentes tenham de ser expandidas e tambm porque no fica presa em caminhos sem sada. Uma maneira de combinar os dois mtodos seguir um nico caminho de cada vez, mas mudar de caminho toda vez que algum caminho concorrente parecer mais promissor do que o caminho corrente. Em cada etapa do processo de busca pela melhor escolha, escolhemos o n mais promissor gerado at o momento. Isto feito aplicando-se urna funo heurstica apropriada a cada um dos ns gerados. Depois expandimos o n escolhido usando as regras para a gerao de seus sucessores. Se um deles for a soluo; podemos encerrar. Se no, todos os ns novos so acrescentados ao grupo de ns gerados at o momento. Novamente, o n mais promissor selecionado, e o processo continua. Em geral o que acontece um pouco da busca em profundidade, quando a ramificao mais promissora explorada. Mas depois, se a soluo no for encontrada, aquela ramificao comear a parecer menos promissora do que uma das ramificaes de nvel superior que foram ignoradas. Nesse ponto, ser explorada a ramificao agora mais promissora, anteriormente ignorada. Mas a ramificao antiga no esquecida. Seu ltimo n permanece no grupo de ns gerados, mas no expandidos. A busca pode voltar a ele sempre que todos os outros ns ficarem to ruins que ele novamente passe a ser o caminho mais promissor.

Passo 4

Passo 5

(5)

(5)

(6) (5) (4)

(6)

(6) (5)

(6)

0(2)11

Note que este procedimento muito semelhante ao procedimento da variao trilha mais ngreme do mtodo subida de encosta. Na subida de encosta, um movimento selecionado e todos os outros so rejeitados, e nunca mais voltam a ser reconsiderados. Isto produz o comportamento direto que caracterstica da subida de encosta. Na

--W_ __, Lntelignia.Artifzcial - Cap. 3


busca pela melhor escolha, um movimento selecionado, mis os outros ficam por perto para poderem ser revisitados mais tarde, se o caminho selecionado comear a parecer menos promissores Alm disso, o melhor estado disponvel escolhido na busca pela melhor escolhi, mesmo que o valor desse estado seja menor que o valor do estado que acabou de ser explorado. Esta caracterstica contrista com o mtodo de subida de encosta, que pra se no houver disponvel nenhum estado sucessor com valores melhores que o do estado corrente. Apesar de o exemplo mostrado ilustrar rama busca pela melhor escolhi em uma rvore, s vezes importante buscar um grifo para que os caminhos duplicados no sejam trilhados. Para fizer isto, um algoritmo operar atravs da busca em um grifo direcionado, no qual cada n representa um ponto no espao do problema. Cada n conter, alm da descrio do estado de problema que ele representa, uma indicao de quo promissor ele , uma ligao com o pai, que aponta para o melhor n do qual ele veio, e uma lista dos ns que ele gerou. A ligao com o pai possibilitar recuperar o caminho at o objetivo, uma vez que este tenha sido encontrado. A lista de sucessores possibilitar, ciso seja encontrado um caminho melhor para um n j existente, propagar i melhoria para seus sucessores. Chamaremos este tipo de grafo de grafo OU, j que cada uma de suas ramificaes representa um caminho alternativo pira i soluo do problema. Para implementar este procedimento de pesquisa de grifos, precisaremos usar duas listas de ns: longos.

Cap. 3 Tcnicas de busca heurstica

91

A operao propriamente dita do algoritmo muito simples. Ele progride em passos, expandindo um n i cada passo, at gerir um n que correspondi i um estado-meta. A cada passo, ele pega os ns mais promissores geridos at o momento que ainda no foram expandidos. Ele gera os sucessores do n escolhido, aplica i funo heurstica i eles, e acrescenta-os lista de ns abertos, depois de verificar se algum deles j foi gerido antes. Com esta verificao, garantimos que cada n s aparecer uma vez no grifo, embora muitos ns possam apontar pira ele como sucessor. Comea ento o passo seguinte. Este processo pode ser resumido da seguinte maneira: Algoritmo: Busca pela Melhor Escolha 1. Comece com ABERTOS contendo apenas o estado inicial. 2. At ser encontrado um estado-meta ou at no haver mais nenhum n em ABERTOS, faa o seguinte:

(a) Pegue o melhor n de ABERTOS. (b)


Gere seus sucessores. (c) Para cada sucessor, faa: I . Se ele ainda no tiver sido gerido antes, avalie-o, acrescente-o i ABERTOS e registre seu pai. II. Se ele j tiver sido gerido antes, mude o pai se este novo caminho for melhor que o interior. Nesse ciso, atualize o custo de chegar a este n e a qualquer um dos sucessores que este n possa ter. A idia bsica deste algoritmo simples. Infelizmente, so raros os casos em que simples escrever corretamente algoritmos para percorrer grifos. E so ainda mais raros os casos onde simples garantir i correo deste tipo de algoritmo. Ni seo que se segue, descreveremos este algoritmo em maiores detalhes, como exemplo do projeto e anlise de um programa pira busca em grifos.

ABERTOS -

ns que foram geridos e sofreram i aplicao da funo heurstica, mas que ainda no foram examinados (isto , seus sucessores no foram geridos). ABERTOS na verdade uma fila de prioridades onde os elementos com prioridade mxima so aqueles onde i funo heurstica tem o valor mais promissor. Tcnicas padres que manipulam filas de prioridade podem ser usadas para manipular esta lista.

FECHADOS

-ns que j foram examinados. Precisamos manter estes ns na memria se quisermos efetuar rama, busca em grifo em vez de em uma rvore, j que sempre que um novo n gerido, precisamos verificar se ele j foi gerido antes.

Precisaremos tambm de uma funo heurstica que estime os mritos de cada n gerido. Isto permitir que o algoritmo busque caminhos mais promissores antes. Chamaremos esta funo de f (pira indicar que ela uma aproximao da funo f que fornece i verdadeira avaliao do n). Em muitas aplicaes, conveniente definir esta funo como i soma de dois componentes que chamaremos h e h'. A funo g no estimativa de nada; ela i soma exata dos custos da aplicao de cada regra que

3 Em uma variao da busca pela melhor escolha chamada busca em feixe (beam search) apenas os n estados mais promissores so mantidos para consideraes futuras. Este procedimento mais eficiente com respeito memria, mas introduz a possibilidade de que uma soluo seja totalmente perdida caso uma ramificao seja "podada" cedo demais. foi aplicada ao longo do melhor caminho at o n. A funo h' uma estimativa do custo adicional de sair do n corrente e chegar a um estado-meta. Este o lugar onde ser explorado o conhecimento sobre o domnio do problema. A funo combinada f , ento, representa uma estimativa do custo de sair do estado inicial e chegar i um estado-meta atravs do caminho que gerou o n corrente. Se mais de um caminho tiver gerado o n, ento o algoritmo gravar o melhor deles. Note que como g e h' precisam ser somadas, importante que h' seja uma medida do custo de sair do n e chegar a uma soluo (isto , bons ns recebem valores baixos; maus ns recebem valores altos) e no uma medida da boi qualidade de um n (ou seja, bons ns recebem valores altos). Mis isto fcil de conseguir com o uso ponderado dos sinais de menos. tambm importante que g no seja um valor negativo. Se isto ocorrer, ento os caminhos que contenham ciclos no grifo parecero ficar melhores medida que fiquem mais

--_-9Z--------------------- A facial Cap. 3

Cap. 3 Tcnicas de busca heurstica

93

3.3.2 0 ALGORITMO A* O algoritmo da busca pela melhor escolha que acabamos de apresentar uma simplificao do algoritmo chamado A*, que foi apresentado pela primeira vez por Hart et. al. (1968; 1972). Este algoritmo usa as mesmas funes f , g e h, e tambm as listas ABERTOS e FECHADOS, que j descrevemos anteriormente.

N, registre o novo caminho mais barato em g(ANTIGO) e atualize f'(ANTIGO).


(d) Se SUCESSOR no estava em ABERTOS, veja se est em FECHADOS. Em caso positivo, chame o n em FECHADOS de ANTIGO e acrescente ANTIGO
lista de sucessores de MELHOR-N. Verifique se o novo caminho ou o caminho antigo melhor, como na etapa 2(c) e ajuste corretamente a ligao com o pai e os valores de g e f . Se tivermos acabado de encontrar um melhor caminho para ANTIGO, precisamos propagar a melhoria aos sucessores de ANTIGO. Esta operao um pouco delicada. ANTIGO aponta para seus sucessores. Cada sucessor, por sua vez, aponta para seus sucessores, e assim por diante, at que cada ramificao acabe com um n que ainda esteja em ABERTOS ou que no tenha sucessores. Portanto, para propagar um novo custo a todos os sucessores, faa caminhamento em profundidade da rvore, comeando em ANTIGO, mudando o valor de g em cada n (e portanto tambm o valor de f'), e encerrando cada ramificao quando encontrar um n sem sucessores ou um n para o qual um caminho melhor ou equivalente j tenha sido encontrado .4 Esta condio fcil de ser verificada. A ligao de cada n com o pai aponta para o melhor pai conhecido. No momento da propagao, verifique se o pai aponta para o n do qual voc est vindo. Se sim, continue. Caso contrrio, ento o valor de g j reflete o melhor caminho do qual ele parte. Ento a propagao pode parar por aqui. Mas possvel que, com o novo valor de g sendo propagado aos sucessores, o percurso em que voc esteja torne-se melhor do que o caminho atravs do pai atual. Ento compare os dois. Se o caminho atravs do pai atual ainda for melhor, encerre a propagao. Se o caminho atravs do qual que voc est propagando agora for melhor, reajuste o pai e prossiga com a propagao.

Algoritmo: A*
1. Comece com ABERTOS contendo apenas o n inicial. Atribua 0 do valor de g do n, seu valor de h' para qualquer que seja ele e seu valor de f para h'+ 0, ou h' Atribua a FECHADOS a lista vazia. 2. At ser encontrado um n-meta, repita o seguinte procedimento: se no houver nenhum n emABERTOS, reporte fracasso. Caso contrrio, pegue o n de ABERTOS com menor valor de f. Remova-o de ABERTOS. Coloque-o em FECHADOS. Veja se MELHOR-N um n-meta. Em caso positivo, encerre e reporte uma soluo (MELHOR-N se tudo o que quisermos for o n ou o caminho que foi criado entre o estado inicial e MELHOR-N se estivermos interessados no caminho). Caso contrrio, gere os sucessores de MELHOR-N mas ainda no ajuste MELHOR-N para apontar para eles. (Precisamos primeiro ver se algum deles j foi gerado.) Para cada SUCESSOR, faa o seguinte:

(a) Ajuste SUCESSOR para apontar de volta para MELHOR-N. Estas ligaes
para trs permitiro recuperar o caminho, uma vez encontrada uma soluo.

(b) Compute g(SUCESSOR) = g(MELHOR-NO) + o custo de sair de MELHOR-NO e chegar a SUCESSOR.


(c) Veja se SUCESSOR igual a qualquer n em ABERTOS (isto , se ele j foi gerado, mas no processado). Em caso positivo, chame aquele n de ANTIGO. Uma vez que este n j existe no grfico, podemos desconsiderar SUCESSOR e acrescentar ANTIGO lista de sucessores de MELHOR-N. Agora precisamos decidir se a ligao com o pai de ANTIGO deve ser ou no reajustada para apontar para MELHORN. Ela deve ser reajustada se o caminho que encontramos para chegar a SUCESSOR for mais barato que o atual melhor caminho at ANTIGO (j que SUCESSOR e ANTIGO so, na realidade, o mesmo n). Portanto, veja se mais barato chegar a ANTIGO via seu pai atual ou a SUCESSOR via MELHOR-NO: compare os valores de g. Se ANTIGO for mais barato (ou se o preo for o mesmo), ento no precisaremos fazer nada. Se SUCESSOR for mais barato, ento reajuste a ligao com o pai de ANTIGO, para apontar para MELHOR

(e) Se SUCESSOR no estava nem em ABERTOS nem em FECHADOS, ento coloque-o em ABERTOS e acrescente-o lista de sucessores de MELHOR NO. Compute f (SUCESSOR) = g(SUCESSOR) + h'(SU CESSOR).
Vrias observaes interessantes podem ser feitas sobre este algoritmo. A primeira refere-se ao papel da funo g. Ela nos permite escolher que n ser expandido a seguir, com base no apenas na qualidade do n em si (medida por h'), mas tambm com base na qualidade do caminho at o n. Se incorporarmos g em f , nem sempre escolheremos como prximo n a ser expandido o n que parece estar mais prximo ao objetivo. Isto til se nos preocupamos com o n encontrado. Se, por outro lado, nossa 4 Essa segunda verificao garante que o algoritmo termine mesmo que haja ciclos no grafo. Se houver um ciclo, quando um dado n for visitado pela segunda vez, o caminho no ser melhor que na primeira vez, portanto, a propagao acabar.

preocupao apenas encontrar uma soluo, podemos definir g sempre como 0, escolhendo assim sempre o n que parecer mais prximo do objetivo. Se quisermos encontrar um caminho que envolva o menor nmero de passos, ento temos de definir o custo de sair de um n e chegar a seu sucessor como uma constante, geralmente 1. Se, por outro lado, quisermos encontrar o caminho mais barato, e alguns operadores custam mais do que outros, ento ajustamos o custo de sair de um n e chegar a outro de modo a que ele reflita tais custos. Desta forma, o algoritmo A* pode ser usado quer estejamos interessados em encontrar o caminho com o menor custo, quer nossa inteno seja apenas encontrar um caminho o mais rpido possvel. A segunda observao envolve h', o estimador de h, a distncia de um n at o objetivo. Se h' for um estimador perfeito, ento A* convergir imediatamente para o objetivo, sem nenhuma busca. Quanto melhor h', mais prximos ficaremos da abordagem direta. Se, por outro lado, o valor de h' for sempre 0, a busca ser controlada por g . Se o valor de g tambm for 0, a estratgia da busca ser aleatria. Se o valor de g sempre for 1, a busca ser em amplitude. Todos os ns em um nvel tero valores mais baixos para g, e, portanto, valores mais baixos para f , do que no nvel seguinte. E se, todavia, h' no for nem perfeito nem 0? Ser que podemos dizer algo interessante sobre o comportamento da busca? A resposta sim, se pudermos garantir que h' nunca superestime h. Neste caso, o algoritmo A* certamente encontrar um caminho ideal (determinado por g) para o objetivo, se este existir. Isto pode ser facilmente visto com alguns exemplos.5

Considere a situao mostrada na Figura 3.4. Assuma que o custo de todos os arcos seja 1. Inicialmente, todos os ns, exceto o n A, esto em ABERTOS (embora a figura mostre a situao dois passos mais tarde, depois que B e E foram expandidos). Para cada n, f indicada como a soma de h' e g. Neste exemplo, o n B tem o mais baixo valor de f, 4, portanto ele expandido primeiro. Suponha que ele tenha apenas um sucessor, E, que tambm parece estar a trs movimentos de um objetivo. Agora f(E) 5, o mesmo que f (C). Suponha que optemos por este caminho em detrimento do caminho que est sendo seguido no momento. Ento expandiremos E a seguir. Suponha que ele tambm tenha

um

nico sucessor, F,

tambm aparentemente a trs movimentos de um objetivo. Estamos claramente esgotando todos os movimentos sem fazer nenhum progresso. Mas f(F) = 6, que maior que f"(C). Ento expandiremos C a seguir. Assim, vemos que ao subestimarmos h(B), jogamos esforos fora. Mas descobrimos que B estava mais distante do objetivo do que pensvamos e voltamos para experimentar um outro percurso. Agora considere a situao mostrada na Figura 3.5. Novamente expandimos B na primeira etapa. Na segunda etapa, expandimos E novamente. Na etapa seguinte expandimos F e finalmente geramos G, para obter um caminho de soluo cujo comprimento 4. Mas suponha que exista um caminho direto de D at uma soluo, dando um caminho de comprimento 2. Nunca o encontraremos. Ao superestimarmos h'(D), fazemos com que D parea to ruim que podemos encontrar uma outra soluo, pior, sem nunca expandir D. Em geral, quando h' superestima h, no podemos garantir que a soluo mais barata venha a ser encontrada, a menos que todo o grafo seja expandido at que todos os caminhos sejam mais longos que a melhor soluo. Uma pergunta interessante : "Qual o significado prtico do teorema que diz que se h' nunca superestimar h ento A* ser admissvel?". A resposta : "quase nenhum", porque, na maioria dos problemas reais, a nica maneira de garantir que h' nunca superestimar h defini-lo em zero. Mas ento voltamos busca em amplitude, que admissvel, mas no eficiente. Porm existe um corolrio a este teorema que muito til. Podemos defini-lo em termos pouco precisos da seguinte maneira: Degradao Suave da Admissibilidade: se h' raramente superestimar h em mais de, ento o algoritmo A* raramente encontrar urna soluo cujo custo seja maior que o custo da soluo ideal. A formalizao e prova deste corolrio ser deixada como exerccio. A terceira observao que podemos fazer sobre o algoritmo A* tem a ver com o relacionamento entre rvores e grafos. 0 algoritmo foi definido em termos bastante genricos, no que se aplica a

(3+1)

(4+1)

(5+1)

Figura 3.4

h' subestima h.

--- 94

Inteligncia Artificial Cap. 3

Cap. 3 Tcnicas de busca heurstica

95

grafos. Ele pode, claro, ser simplificado, para ser aplicado a rvores, se for deixada de lado a preocupao de verificar se um n novo j est em ABERTOS ou 1+ECHADOS. Esta atitude acelera a gerao de ns mas pode resultar na mesma busca sendo conduzida muitas vezes, se os ns forem freqentemente duplicados. Em certas condies, o algoritmo A* pode ser provado como timo se gerar o menor nmero de ns no processo de encontrar uma soluo a um problema. Em outras condies, ele no timo. Para obter discusses formais sobre estas condies, veja Gelpering (1977) e Martelli (1977).

5 Um algoritmo de busca que garantidamente encontre um percurso ideal para um objetivo, se este existir, chamado de admissvel (Nilsson, 1980).

(3+1)

(4+1)

(5+1)

velmente, gerava novas tarefas no processo. Isto corresponde seleo do n mais promissor no procedimento da busca pela melhor escolha. Mas no caso de AM, tem importncia o fato de vrios caminhos recomendarem a mesma tarefa. Cada um contribui com uma razo pela qual a tarefa levaria a um resultado interessante. Quanto mais razes houver, mais possibilidade existe de a tarefa realmente levar a algo de bom. Portanto, precisamos de um modo de registrar as tarefas propostas juntamente com as razes pelas quais elas foram propostas. AM usou uma agenda de tarefas. Agenda uma lista de tarefas que um sistema pode realizar. Geralmente h duas coisas associadas a cada tafefa: uma lista de razes pelas quais a tarefa est sendo proposta (em geral chamadas de justificativas) e uma classificao que representa o peso total das evidncias que sugerem que a tarefa ser til. Um sistema orientado por agendas usa o seguinte procedimento: Algoritmo: Busca Dirigida por Agenda 1. At chegar a um estado-meta ou at a agenda ficar vazia: . (a) Escolha a tarefa mais promissora da agenda. Note que essa tarefa pode ser representada em qualquer formato desejado. Ela pode ser uma declarao explicita do que deve ser feito a seguir ou, simplesmente, uma indicao do prximo n a ser expandido. (b) Execute a tarefa dedicando a ela a quantidade de recursos determinada por sua importncia. Os recursos importantes a considerar so tempo e espao. A execuo da tarefa provavelmente gerar tarefas adicionais (ns sucessores). Para cada uma delas: I . Veja se ela j existe na agenda. Em caso positivo, veja se esta mesma razo para execut-la j est na lista de justificativas. Em caso positivo, ignore esta evidncia atual. Se a justificativa ainda no estiver presente, acrescente-a lista. Se a tarefa no estiver na agenda, insira-a. II. Calcule a classificao da nova tarefa, combinando as evidncias de todas as suas justificativas. Nem todas as justificativas tm peso igual. Em geral til associar a cada justificativa uma medida de sua fora. Estas medidas so ento combinadas na prxima etapa para produzir uma classificao global da tarefa. Uma questo importante que surge nos sistemas orientados por agendas como encontrar a tarefa mais promissora, a cada ciclo. Uma das possveis maneiras simples. Mantenha a agenda organizada por classificao. Quando uma nova tarefa criada, insira-a na agenda em local apropriado. Quando uma tarefa tem suas justificativas alteradas, recalcule sua classificao e mova-a para o lugar correto na lista. Mas este mtodo faz com que se gaste muito tempo mantendo a agenda em perfeita ordem. E grande parte deste tempo se perde, j que no precisamos de uma ordem perfeita.

Figura 3.5 h' superestima h.

3.3.3 AGENDAS Em nossa discusso sobre a busca pela melhor escolha em grafos OU, assumimos que seria possvel avaliar vrios caminhos para o mesmo n independentes uns dos outros. Por exemplo, no problema das jarras de gua, no faz diferena para a avaliao do mrito da posio (4, 3) o fato de haver pelo menos dois caminhos separados atravs dos quais ela pode ser alcanada. Isto no verdadeiro, porm, em todas as situaes, especialmente quando no h nenhuma funo heurstica simples que mea a distncia entre um dado n e uma meta. Considere, por exemplo, a tarefa enfrentada pelo programa AM de descobertas matemticas, escrito por Lenat (1977; 1982). AM recebeu um pequeno grupo de fatos iniciais sobre a teoria dos nmeros e um conjunto de operadores que ele poderia usar para desenvolver novas idias. Estes operadores incluam coisas como "encontrar exemplos de um conceito que voc j conhea". 0 objetivo de AM era gerar novos conceitos matemticos "interessantes". Ele obteve xito ao descobrir os nmeros primos e a conjectura de Goldbach. Armado unicamente com seus operadores bsicos, AM teria sido capaz de criar muitos outros conceitos novos, a maioria dos quais teria sido intil. Ele precisava de um mtodo para decidir inteligentemente que regras deveriam ser aplicadas. Para isto, ele recebeu um conjunto de regras heursticas que diziam coisas do tipo: "Os casos extremos de qualquer conceito provavelmente so interessantes". "Interesse" foi, ento, usado como medida do mrito de tarefas individuais que o sistema poderia realizar. 0 sistema selecionava, em cada etapa, a tarefa mais interessante, executava-a e, possi

98

Inteligncia Artificial Cap. 3

Cap. 3 Tcnicas de busca heurstica

99

Precisamos apenas saber corretamente qual o primeiro elemento. A estratgia modificada, que apresentamos a seguir, pode ocasionalmente fazer com que uma outra tarefa, que no a melhor, seja executada, mas significativamente mais barata do que o mtodo perfeito. Quando uma tarefa proposta, ou r'ma nova justificativa acrescentada a uma tarefa existente, calcule a nova classificao e compare-a com os melhores (por exemplo, cinco ou dez) elementos da agenda. Se ela for melhor, insira o n na posio apropriada, no topo da lista. Caso contrrio, deixe-a onde est ou simplesmente insira-a no final da agenda. No incio de cada ciclo, escolha a primeira tarefa da agenda. Alm disso, de vez em quando, examine a agenda e reorganize-a corretamente. Uma estrutura de controle orientada por agendas tambm til caso algumas tarefas (ns) proporcionem evidncias negativas sobre os mritos de outras tarefas (ns). Isto pode ser representado por justificativas com peso negativo. Quando estes pesos negativos forem usados, poder ser til verificar a possibilidade no apenas de mover uma tarefa para o topo da agenda como tambm de deslocar uma tarefa do topo para o final da agenda, caso apaream novas justificativas negativas. Mas isto fcil. Como voc pode ver, o mecanismo da agenda fornece meios para que se volte a ateno de um sistema complexo para reas sugeridas pelo maior nmero de indicadores positivos. Mas o custo adicional (over head) de ter cada tarefa executada pode ser bastante alto. Isto faz surgir a questo de qual o tamanho ideal para a diviso de todo o processo de soluo de problemas em tarefas isoladas. Suponha que cada tarefa seja muito pequena. Nunca chegaremos a fazer nada, mesmo que muito pequeno, a menos que isto seja realmente o melhor a fazer. Mas despenderemos uma grande porcentagem do nosso esforo total tentando descobrir o que deve ser feito a seguir. Se, por outro lado, o tamanho de uma tarefa isolada for muito grande, poderemos estar despendendo esforos inteis tentando concluir uma tarefa em lugar de executar outras mais promissoras. Porm uma porcentagem menor do tempo total ser gasta na tentativa de descobrir o que deve ser feito a seguir. A escolha exata do tamanho de uma tarefa para um determinado sistema depende de saber se a execuo de uma coisa pequena realmente significa que tambm vale a pena executar um conjunto de outras coisas pequenas. Normalmente preciso experimentar um pouco para chegarmos escolha certa. H alguns domnios de problemas para os quais o mecanismo da agenda inadequado. 0 mecanismo da agenda assume que, se existe uma boa razo para que algo seja executado agora, esta mesma razo justificar a execuo posterior de alguma coisa, a menos que algo melhor aparea nesse nterim. Mas nem sempre isto o que acontece, particularmente no caso de sistemas que interagem com pessoas. 0 dilogo a seguir no seria aceitvel para a maioria das pessoas: Pessoa: Eu no quero ler mais nada sobre a China. D-me alguma outra coisa. Computador:

Computador: Sobre que aspectos da Itlia voc gostaria de ler? Pessoa: Gostaria de saber um pouco sobre sua histria. Computador: Por

que que voc no quer ler mais nada sobre a China? Seria adequado tentar descobrir porque a pessoa no est mais interessada na China logo aps ela ter mencionado este fato. 0 computador, em vez disso, optou por tentar descobrir uma nova rea de interesse positivo, algo tambm razovel. Mas o fato de algo ser razovel agora no significa que ele continuar a s-lo depois de algum tempo de conversa. Portanto, no uma boa idia simplesmente colocar possveis afirmaes em uma agenda, esperar por um momento futuro e depois faze-las surgir no decorrer de uma conversa. Mais precisamente, as agendas so um bom modo de implementar sistemas de produo monotnicos (no sentido da Seo 2.4) e uma maneira infeliz de implementar sistemas no-monotnicos. Apesar destas dificuldades, as estruturas de controle orientadas por agendas so teis. Elas constituem um meio de integrar informaes de uma variedade de fontes em um programa, j que cada fonte simplesmente acrescenta tarefas e justificativas agenda. medida que os programas de IA ficam mais complexos e aumentam suas bases de conhecimentos, esta vantagem torna-se particularmente significativa.

3.4 REDUO DE PROBLEMAS


At aqui, consideramos estratgias de buscas para grafos OU por meio das quais pretendemos encontrar um nico caminho para um objetivo. Estas estruturas representam o fato de que saberemos como sair de um n e chegar a um estado-meta se pudermos descobrir como sair daquele n e chegar ao objetivo ao longo de qualquer uma das ramificaes que dele partem.

3.4.1

GRAFOS E-OU

OK Em que mais voc est interessado? Pessoa: Que tal a Itlia? Acho a Itlia fascinante.

Uma outra estrutura, o grafo (ou rvore) E-OU, til para representar a soluo de problemas que podem ser resolvidos atravs de sua decomposio em um conjunto de problemas menores, que precisaro, por sua vez, ser resolvidos tambm. Esta decomposio, ou reduo, gera arcos que chamamos de arcos E. Um arco E pode apontar para qualquer nmero de ns sucessores, todos os quais precisam ser solucionados para um arco poder apontar para uma soluo. Assim como em um grafo OU, vrios arcos podem surgir de um nico n, indicando uma srie de maneiras pelas quais o problema original pode ser resolvido. por isso que a estrutura no chamada simplesmente de grafo E, mas de grafo E-OU. Um exemplo de grafo E-OU (que tambm uma rvore

E-OU) est na Figura 3.6. Os arcos E so indicados por uma linha que conecta todos seus componentes. A fim de encontrar solues em um grafo E-OU, precisamos de um algoritmo semelhante busca pela melhor escolha, mas com a capacidade de lidar apropriadamente com os arcos E. Este algoritmo deve encontrar um caminho que v de um n inicial do grafo at um conjunto de ns que representem estados-soluo. Observe que talvez seja necessrio chegar a mais de um estado-soluo j que cada brao de um arco E tem de levar a seu prprio n-soluo. Para ver porque nosso algoritmo de busca de melhor escolha no adequado para buscar um grafo E-OU, considere a Figura 3.7 (a). 0 n superior, A, foi expandido, produzindo dois arcos, um levando a B e outro a C e D. Os nmeros em cada n representam o valor de f naquele n. Assumimos, para fins de simplicidade, que toda operao tem um custo uniforme, portanto cada arco com um nico sucessor tem um custo de 1 e cada arco E com vrios sucessores tem um custo de 1 para cada componente. Se examinarmos apenas os ns e escolhermos para expanso aquele com menor valor de f , teremos de selecionar C. Mas usando as informaes agora disponveis, seria melhor explorar o caminho que passa por B, j que, para usar C, teremos que usar tambm D, com um custo total de 9 (C+D+2) comparado com um custo de 6 obtido quando passamos por B. 0 problema que a escolha do n a ser expandido a seguir depende no apenas do valor de f naquele n mas tambm do fato de esse n ser ou no parte do melhor caminho corrente a partir do n inicial. A rvore mostrada na Figura 3.7 (b) ainda mais esclarecedora. 0 n mais promissor G, onde f vale 3. Ele at faz parte do arco mais promissor, G-H, com um custo total de 9. Mas esse arco no faz parte do melhor caminho corrente, j que, para us-lo, temos de tambm usar o arco I-J, com um custo de 27.0 caminho de A, passando por B, at E e F, melhor, com um custo total de 18. Portanto, no devemos expandir G a seguir; em vez disso, devemos examinar E ou F. Objetivo: Adquirir aparelho de TV

lop
(38)

(5)

(3)

(4) (17) (5)

0
(9) (27) (10)

(10)

(3) (4) (15) (b)

(a) Figura 3.7 Grafos E-OU. Algoritmo: Reduo de Problemas

1. Inicialize o grafo no n inicial. 2. Repita at que o n inicial esteja marcado Resolvido ou at que seu custo fique acima de FUTILIDADE: (a) Percorra o grafo, comeando no n inicial e seguindo o melhor caminho corrente, e acumule o conjunto de ns que esto no caminho e que ainda no foram expandidos, nem marcados RESOLVIDO.

(b) Pegue um destes ns que ainda no foram expandidos e expanda-o. Se no houver nenhum sucessor, atribua a FUTILIDADE o valor deste n. Caso contrrio, acrescente seus sucessores ao grafo e, para cada um deles, calcule f (use apenas h' e ignore g, por motivos que discutiremos adiante). Se f de qualquer n for zero, marque esse n como RESOLVIDO.
(c) Mude a estimativa f do n recm-expandido para refletir as novas informaes fornecidas por seus sucessores. Propague esta mudana para trs. Se algum n contiver um arco sucessor cujos descendentes estiverem todos solucionados, marque o n propriamente dito como RESOLVIDO. Em cada n visitado durante a subida do grfico, decida que arco sucessor o mais promissor e marque-o como parte do melhor caminho corrente, que por isto pode vir a sofrer alteraes. Esta propagao para cima das estimativas revisadas de custo no era necessria no algoritmo de busca pela melhor escolha, porque apenas os ns noexpandidos eram examinados. Mas agora, os ns expandidos precisam ser reexaminados para que o melhor caminho corrente possa ser selecionado. Assim, importante que seus valores f sejam as melhores estimativas disponveis.

Figura 3.6 Grafo E-OU simples. A fim de descrevermos um algoritmo para buscar um grafo E-OU, precisamos explorar um valor a que chamamos de FUTILIDADE. Se o custo estimado de uma soluo for maior que o valor de FUTILIDADE, ento abandonaremos a busca. FUTILIDADE deve ser escolhido para corresponder a um patamar acima do qual qualquer soluo que venha a ser encontrada fique inviabilizada, por ser muito cara. Agora podemos definir o algoritmo.

102

Inteligncia Artificial Cap. 3

Cap. 3 Tcnicas de busca heurstica

103

Este processo est ilustrado na Figura 3.8. No passo 1, A o nico n, portanto est no final do melhor caminho corrente. Ele expandido, produzindo os ns B, C e D. 0 arco para D marcado como o mais promissor que surge de A, j que custa 6, e o arco B-C custa 9. (Os arcos marcados esto indicados nas figuras por setas.) No passo 2, o n D escolhido para expanso. Este processo produz um novo arco, o arco E para E e F, com uma estimativa combinada de custo de 10. Portanto, atualizamos o valor f de D para 10. Voltando mais um nvel, vemos que isto faz com que o arco B-C fique melhor que o arco para D, portanto ele marcado como melhor caminho corrente. No passo 3, percorremos esse arco a partir de A e descobrimos os ns B e C, no-expandidos. Para podermos encontrar uma soluo ao longo deste caminho, teremos de expandir B e C, portanto, vamos optar por explorar B primeiro. Isto gera dois novos arcos, que vo para G e H. A propagao para trs dos valores de f a tua liza o valor f de B para 6 (j que isto , para ns, o melhor que podemos fazer, e que podemos alcanar passando por G). Isto requer a atualizao do custo do arco E B-C para 12 (6+4+2). Depois disso, o arco para D passa a ser novamente o melhor caminho a partir de A, portanto ele registrado como melhor caminho corrente e o n E ou o n F ser escolhido para expanso no passo 4. Este processo continua at que uma soluo seja encontrada ou at que todos os caminhos tenham levado a becos sem sada, indicando que no h soluo para o problema.

Figura 3.8 A operao de reduo de problemas.

Antes do passo 1

Antes do passo 2

(5)

(9) (3) Antes do passo 3 (4)

(5) Li

Antes do passo 4

(9

0 0
(4) (4) (5) (6)

0
(4) (4)

0 18 (7)

Alm da diferena discutida, existe uma segunda maneira pela qual um algoritmo para busca em um grafo E-OU precisa diferir de um algoritmo para busca em um grafo OR. Tambm esta diferena surge do fato de que caminhos isolados de um n a outro no podem ser considerados independentemente dos caminhos atravs de outros ns conectados aos ns originais por arcos E. No algoritmo da busca pela melhor escolha, o caminho desejado de um n a outro sempre era aquele com menor custo. Mas este nem sempre o caso quando se busca um grafo E-OU. Considere agora o exemplo mostrado na Figura 3.9 (a). Os ns foram gerados em ordem alfabtica. Agora suponha que o n J seja expandido na etapa seguinte e que um de seus sucessores seja o n E, produzindo o grafo mostrado na Figura 3.9 (b). Este novo caminho para E mais longo que o caminho anterior, que passava por C. Mas como o caminho por C levar a uma soluo apenas se existir tambm uma soluo para D, que sabemos no existir, o caminho por J melhor. Existe uma importante limitao do algoritmo que acabamos de descrever. Ele no leva em considerao nenhuma interao entre subobjetivos. Um exemplo simples deste lapso mostrado na Figura 3.10. Supondo que tanto o n C quanto o n E em ltima anlise levam a uma soluo, nosso algoritmo reportar uma soluo completa que inclui os dois ns. 0 grafo E-OU afirma que, para A ser solucionado, tanto C quanto D precisam tambm ser solucionados. Mas o algoritmo considera a soluo de D como um processo totalmente separado da soluo de C. Examinando apenas as alternativas a partir de D, E o melhor caminho. Mas acontece que C necessrio de qualquer maneira, portanto seria melhor us-lo tambm para satisfazer D. Porm, como nosso algoritmo no considera essas alteraes, ele encontrar um caminho no-ideal. No Captulo 13, apresentaremos mtodos para soluo de problemas que consideram interaes entre subobjetivos.

00
(a) Figura 3.9 Um caminho mais longo pode ser melhor.

(b)

114

Inteligncia Artificial Cap. 3

Cap. 3 Tcnicas de busca heurstica

115

(b) Gere os sucessores de N. Se no houver nenhum sucessor, ento atribua a FUTILIDADE o valor h' de N. Isto equivale a dizer que N no solucionvel. Se houver sucessores, ento, para cada um deles (chamado SUCESSOR) que no seja tambm um ancestral de N, faa o seguinte: I . Acrescente SUCESSOR a GRAFO. II. Se SUCESSOR for um n terminal, marque-o como RESOLVIDO e atribua a ele um valor h' igual a 0. (5) (2) III. Se SUCESSOR no for um n terminal, calcule seu valor h'. (c) Propague as informaes recm-descobertas grafo acima com o seguinte procedimento: seja S um conjunto de ns que estejam marcados como RESOLVIDO ou cujos valores h' foram alterados e, portanto, precisam de que seus valores sejam propagados de volta a seus pais. Inicialize S com NO. Repita o procedimento a seguir at S ficar vazio: I . Se possvel, selecione em S um n que no tenha nenhum descendente em GRAFO ocorrendo em S. Se esse n no existir, escolha qualquer n em S. Chame este n de CORRENTE e remova-o de S. ALGORITMO AO* O algoritmo da reduo de problemas que acabamos de descrever uma simplificao de um algoritmo descrito em Martelli e Montanari (1973), Martelli e Montanari (1978) e Nilsson (1980). Nilsson chama-o de algoritmo AO*, nome que assumiremos. Em lugar das duas listas, ABERTOS e FECHADOS, que usamos no algoritmo A*, o algoritmo AO* usar uma nica estrutura, GRAFO, que representa a parte do grafo de busca que foi explicitamente gerada at o momento. Cada n do grafo apontar tanto para seus sucessores imediatos quanto para seus predecessores imediatos. Cada n do grafo tambm estar associado a um valor h', estimativa do custo de um caminho dele prprio at um conjunto de ns-soluo. No armazenaremos g (custo de sair do n inicial e chegar ao n corrente) como o fizemos no algoritmo A*. No possvel computar este tipo de valor, j que pode haver muitos caminhos para o mesmo estado. E esse valor no necessrio, porque percorremos o melhor caminho conhecido de cima para baixo (top-down), o que garante que apenas os ns que esto no melhor caminho sero considerados para expanso. Portanto, h' servir como estimativa da qualidade de um n. Algoritmo~* II. Calcule o custo de cada um dos arcos que emergem de COR RENTE. 0 custo de cada arco igual soma dos valores h' de cada um dos ns ao fim do arco mais qualquer que seja o custo do arco propriamente dito. Atribua como novo valor h' de CORRENTE o m n i mo dos custos que acabaram de ser calculados para os arcos que dele emergem. III. Marque o melhor caminho que parte de CORRENTE marcando o arco com menor custo, de acordo com o que foi calculado na etapa anterior. IV Marque CORRENTE como RESOLVIDO se todos os ns conectados a ele atravs do arco recm-marcado tiverem sido marcados como

Figura 3.10 Interao de subobjetivos. 3.4.2 0

RESOLVIDO.
V Se CORRENTE tiver sido marcado RESOLVIDO ou se o custo de CORRENTE acabou de ser alterado, ento seu novo estado precisa ser propagado grafo acima. Portanto, acrescente todos os ancestrais de CORRENTE a S. Vale a pena notar alguns pontos sobre a operao deste algoritmo. Na etapa 2(c)u, os ancestrais de um n cujo custo foi alterado so acrescentados a um conjunto de ns cujos custos tambm precisam ser revisados. Conforme afirmamos, o algoritmo inserir todos os ancestrais do n no conjunto, o que pode resultar na propagao da alterao do custo por um grande nmero de caminhos sabidamente no muito bons.

1. GRAFO deve consistir apenas no n que representa o estado inicial. (Chame este n de INIC.) Calcule h'(INIC).
2. At INIC ser marcado RESOLVIDO ou at que o valor h' de INIC fique maior que FUTILIDADE, repita o seguinte procedimento: (a) Trace os arcos marcados a partir de INIC e selecione para expanso um dos ns que ainda no foram expandidos e que esteja neste caminho. Chame o n escolhido de NO.

Por exemplo, na Figura 3.11, fica claro que o caminho que passa por C sempre ser melhor que o caminho que passa por B, portanto h perda de tempo quando se trabalha no caminho que passa por B. Mas se o custo de E for revisado e esta mudana no propagada atravs de B e C, B poder parecer melhor. Por exemplo, se, como resultado da expanso do n E, atualizamos seu custo para 10, ento o custo de C ser atualizado para 11. Se apenas isto for feito, quando A for examinado, o caminho que passa por B ter um custo de apenas 11 comparado com 12 do caminho que passa por C e ele ser marcado erroneamente como caminho mais promissor. Neste exemplo, o erro pode ser detectado no passo seguinte, durante o qual D ser expandido. Se seu custo mudar e for propagado de volta a B, o custo de B ser recalculado, e o novo custo de E ser usado. Ento o novo custo de B ser propagado de volta a A. Nesse ponto, o caminho que passa por C ser novamente o melhor. Tudo o que ocorreu foi perda de tempo na expanso de D. Mas, se o n cujo custo mudou estiver mais alm no grafo de busca, o erro poder nunca ser detectado. Um exemplo disto mostrado na Figura 3.12 (a). Se o custo de G for revisado conforme mostra a Figura 3.12 (b) e se ele no for imediatamente propagado de volta para E, ento a mudana nunca ser registrada e poder ser descoberta uma soluo no-tima atravs de B.

real. As tarefas de projeto tambm podem ser vistas como problemas de satisfao de restries em que um projeto precisa ser criado dentro de limites fixos de tempo, custos e materiais. Ao classificar um problema como sendo de satisfao de restries, normalmente possvel reduzir substancialmente a quantidade de busca necessria, em comparao com um mtodo que tenta formar solues parciais diretamente atravs da escolha de valores especficos para componentes da soluo eventual. Por exemplo, um procedimento de busca direta para resolver um problema de criptoaritmtica pode operar em um espao de estados de solues parciais em que letras so atribudas a determinados nmeros como sendo seus valores. Um esquema de controle em profundidade poderia ento seguir um caminho de atribuies at ser encontrada uma soluo ou uma inconsistncia. Em contraste, uma abordagem de satisfao de restries para resolver este problema evita fazer suposies sobre determinadas atribuies de nmeros a letras, a menos que seja este o procedimento a ser seguido. Em vez disso, o conjunto inicial de restries, que diz que cada nmero pode corresponder a apenas uma letra e que a soma dos dgitos precisa sempre ser aquela informada no problema, primeiro ampliado para incluir restries que podem ser inferidas a partir das regras da aritmtica. Depois, apesar de ainda haver certa necessidade de adivinhaes, o nmero de suposies permitidas reduzido e, portanto, o grau de busca encurtado. Figura 3.12 Uma propagao para trs necessria. A satisfao de restries um procedimento de busca que opera em um espao de conjuntos de restries. 0 estado inicial contm as restries originalmente fornecidas na descrio do

(6)

Figura 3.11 Uma propagao desnecessria para trs. Um segundo ponto relacionase ao trmino da propagao do custo para trs na etapa 2 (c). Como GRAFO pode conter ciclos, no h nenhuma garantia de que este processo termine simplesmente porque ele chegou ao "topo" do grafo. Acontece, no entanto, que o processo pode garantidamente terminar devido a um motivo diferente, explorado em um dos exerccios ao final deste captulo.

(5) (6)

(3)

(5) (6)

(3)

3.5 SATISFAO DE RESTRIQES


(a) Muitos problemas de IA podem ser vistos como problemas de satisfao de restries, em que o objetivo descobrir algum estado de problema que satisfaa a um determinado conjunto de restries. Exemplos deste tipo de problema incluem criptoaritmtica (descrita na Seo 2.6) e muitos problemas de interpretao da percepo do mundo (b)

problema. Um estado-meta qualquer estado que tenha sido "suficientemente" limitado, onde "suficientemente" precisa ser definido para cada pro-

114

Inteligncia Artificial Cap. 3

Cap. 3 Tcnicas de busca heurstica

115

blema. Por exemplo, na criptoaritmtica, suficientemente significa que a cada letra foi atribudo um nico valor numrico. A satisfao de restries um processo de duas etapas. Primeiro, as restries so descobertas e propagadas o mais distante possvel em todo o sistema. Depois, se ainda no houver uma soluo, a busca comea. Uma suposio sobre alguma coisa feita, e esta acrescentada lista como nova restrio. A propagao pode ento ocorrer com esta nova restrio, e assim por diante. A primeira etapa, propagao, surge do fato de que em geral h dependncias entre as restries. Estas dependncias ocorrem porque muitas restries envolvem mais de um objeto, e muitos objetos participam de mais de uma restrio. Portanto, por exemplo, assuma que comecemos com uma restrio, N = E + 1. Depois, se acrescentssemos a restrio N = 3, poderamos propag-la para obter uma restrio mais forte sobre E, especificamente, E = 2. A propagao de restries tambm surge da presena de regras de inferncia que permitem que restries adicionais sejam inferidas a partir de inferncias j fornecidas. A propagao de restries termina por um destes dois motivos. Primeiro, pode ser detectada uma contradio. Se isto acontecer, ento no h soluo consistente com todas as restries conhecidas. Se a contradio envolver apenas as restries que foram definidas com parte da especificao do problema (ao contrrio daquelas que foram supostas durante a soluo do problema), ento no existe nenhuma soluo. 0 segundo motivo para o trmino que a propagao perdeu fora e no h mais nenhuma alterao a ser feita com base no conhecimento atual. Se isto acontecer, e nenhuma soluo tiver sido ainda adequadamente especificada, ento a busca necessria para que o processo entre outra vez em movimento. Neste ponto, comea a segunda etapa. H necessidade de que certas hipteses sobre uma maneira de fortalecer as restries sejam feitas. No caso do problema de criptoaritmtica, por exemplo, isto em geral significa supor um determinado valor para alguma letra. Uma vez cumprida esta operao, a propagao de restries pode comear novamente a partir deste novo estado. Se for encontrada uma soluo, ela poder ser reportada. Se ainda mais suposies forem necessrias, elas podero ser feitas. Se for detectada uma contradio, ento o retrocesso pode ser usado para tentar uma suposio diferente e prosseguir com ela. Podemos definir este procedimento mais precisamente da seguinte maneira: Algoritmo: Satisfao de Restries 1. Propague as restries disponveis. Para tanto, primeiro atribua aABERTOS o conjunto de todos os objetos que precisam ter valores atribudos a eles em uma soluo completa. Depois, faa at ser detectada uma inconsistncia ou at ABERTOS ficar vazio:

(b) Se este conjunto for diferente do conjunto assinalado quando OB foi examinado pela ltima vez ou se esta for a primeira vez que OB examinado, ento acrescente a ABERTOS todos os objetos que compartilham com OB quaisquer
restries. (c) Remova OB de ABERTOS. 2. Se a unio de restries descobertas definir uma soluo,_ento saia e reporte a soluo encontrada. 3. Se a unio de restries descobertas definir uma contradio, ento retorne fracasso. 4. Se no ocorrer nenhuma das hipteses citadas, ento ser necessrio fazer suposies sobre algo a fim de prosseguir com o processo. Para tanto, repita a operao at que uma soluo tenha sido encontrada ou at que todas as solues possveis tenham sido eliminadas. (a) Selecione um objeto cujo valor ainda no tenha sido determinado e selecione um modo de fortalecer as restries sobre aquele objeto.

(b) Recursivamente, invoque a satisfao de restries com o atual conjunto de


restries aumentado pela restrio de fortalecimento que acabou de ser selecionada. Este algoritmo foi definido da maneira mais genrica possvel. Sua aplicao a um domnio de problema em particular requer o uso de dois tipos de regras: regras que definem o modo como as restries podem ser propagadas de forma vlida e regras que sugerem suposies quando estas se fizerem necessrias. Vale a pena notar, porm, que em certos domnios de problemas as suposies podem no ser exigidas. Por exemplo, o algoritmo de Waltz para a propagao de marcao de linhas em uma figura, descrito no Captulo 14, uma verso do algoritmo da satisfao de restries em que foi eliminada a etapa das suposies. Em geral, quanto mais poderosas as regras para a propagao de restries, menos necessrias tornam-se as suposies. Para ver como funciona este algoritmo, considere o problema de criptoaritmtica mostrado na Figura 3.13. 0 estado-meta um estado de problema no qual a todas as letras foram atribudos dgitos distintos, de modo a satisfazer todas as restries iniciais. 0 processo de soluo desenvolve-se em ciclos. A cada ciclo, duas tarefas significativas so realizadas (correspondendo aos passos 1 e 4 deste algoritmo): 1. As restries so propagadas, usando-se as regras que correspondem s propriedades da aritmtica. 2. Supe-se um valor para alguma letra, cujo valor ainda no tenha sido determinado.

(a) Selecione um objeto OB de ABERTOS. Fortalea o mximo possvel o conjunto de restries que se aplicam a OB.

Problema:
SEND+MO RE

M = 1, j que nmeros de dois dgitos mais um vai-um no podem totalizar mais que 19. S=8ou9,jqueS+M+C3 >9(paragerarovai-um)eM=1,S+1+C3 > 9, portanto S + C3 >
8 e C3 , no mximo, 1.

0 = 0, j que S + M(1) + C3 ( 1) precisa ser pelo menos 10 para gerar um vai-um e


no mximo 11. Mas M j 1, portanto 0 precisa ser 0.

N = E ou E + 1, dependendo do valor de C2. Mas N no pode ter o mesmo


M0NEY

Para que C2 seja 1, a soma de N + R + C1 precisa ser maior que 9, portanto N + R precisa
Estado Inicial: Duas letras no podem ter o mesmo valor. As somas dos dgitos precisa ser como mostrado no problema. Figura 3.13 Um problema de criptoaritmtica. No primeiro passo, no importa muito a ordem da propagao, j que todas as propagaes disponveis sero executadas antes do final da etapa. No segundo passo, entretanto, a ordem na qual as suposies so levantadas pode ter impacto substancial sobre o grau de busca necessrio. Algumas heursticas teis podem ajudar a selecionar a suposio que deve ser testada em primeiro lugar, por ser a melhor. Por exemplo, se urna letra tem apenas dois valores possveis e outra seis valores possveis, as chances de uma suposio correta so maiores na primeira letra do que na segunda. Uma outra heurstica til que, se uma letra participa de muitas restries, ento uma boa idia preferi-la a urna letra que participe de poucas. Uma suposio sobre uma letra to altamente restringida em geral levar mais rapidamente a uma contradio (caso esteja errada) ou gerao de muitas restries adicionais (caso esteja correta). Uma suposio sobre uma letra menos restringida, por outro lado, fornece menos informaes. 0 resultado dos primeiros ciclos do processamento deste exemplo aparece na Figura 3.14. J que as restries nunca desaparecem nos nveis inferiores, apenas aquelas que esto sendo acrescentadas so mostradas em cada nvel. No ser muito mais dificil ao resolvedor do problema acessar as restries como um conjunto de listas ou como uma nica lista longa, e esta abordagem eficiente tanto em termos de espao de armazenamento quanto de facilidade de retrocesso. Uma outra abordagem razovel para este problema seria armazenar todas as restries em uma base de dados central, e tambm registrar a cada n as mudanas que precisam ser desfeitas durante o retrocesso. C1, C2, C3 e C4 indicam os vai-um (carrybits) em cada coluna, numerados da direita para a esquerda. Inicialmente, as regras para a propagao de restries geram as seguintes restries adicionais: ser maior que 8.

valor de E. Portanto, N = E + 1 e C2 1.

N + R no pode ser maior que 18, mesmo recebendo um vai-um, portanto E no pode ser 9.
Neste ponto, vamos assumir que no possvel gerar mais nenhuma restrio. Ento, para que haja algum progresso a partir da, precisamos de uma suposio. Suponha que o valor 2 seja atribudo a E. (Escolhemos supor um valor para E porque ele ocorre trs vezes e, assim, interage muito com as outras letras.) Agora comea o ciclo seguinte. O propagador de restries agora observa que:

N=3,jqueN=E+1. R = 8 ou9,jqueR+ N(3)+ Cl(louO)=2ou12. Mas comoNj 3 , a soma destes


nmeros no-negativos no pode ser menos que 3. Assim, R + 3 + (Oou1)=12eR=8ou9. 2 + D = Y ou 2 + D = 10 + Y, a partir da soma da coluna mais direita. Novamente, supondo-se que mais nenhuma restrio pode ser gerada, h necessidade de uma suposio. Suponha que C2 seja escolhido para receber uma suposio quanto ao valor. Se tentarmos o valor 1, ento conseqentemente chegaremos a um impasse, conforme mostra a figura. Quando isto acontece, o processo retrocede e tenta C1 = 0. Vale a pena fazer algumas observaes sobre este processo. Observe que tudo o que se exige das regras de propagao de restries que elas no infiram restries esprias. Elas no precisam inferir todas as restries legais. Por exemplo, poderamos concluir que C1 igual a 0, observando que, para que C1 seja 1, o seguinte precisa acontecer: 2 + D = 10 + Y Para que este seja o caso, D teria que ser 8 ou 9. Mas tanto S quanto R precisam ser 8 ou 9 e trs letras no podem ter os mesmos valores. Portanto, C1 no pode ser 1. Se tivssemos percebido isto inicialmente, poderamos ter evitado buscas desnecessrias. Mas, j que as regras para a propagao de restries que usamos no tinham um grau to elevado de sofisticao, ento houve necessidade de

114

Inteligncia Artificial Cap. 3

Cap. 3 Tcnicas de busca heurstica

115

certa busca. Se a rota da busca ser mais ou menos longa do que a rota da propagao de restries depende de quanto tempo leva para executar o raciocnio exigido para a propagao de restries. Y=1

explicitamente em cada estado de problema. As restries mais complicadas, que expressam relacionamentos, so dinmicas no domnio da criptoaritmtica, j que so diferentes em cada problema. Mas em muitos outros domnios elas so estticas. Por exemplo, no algoritmo de Waltz para a marcao de linhas, as nicas restries binrias surgem da natureza do mundo fsico, no qual as superfcies podem juntarse apenas em um nmero fixo de maneiras possveis. Estas maneiras so as mesmas em todas as figuras que o algoritmo possa ver. Sempre que as restries binrias so estticas, pode ser computacionalmente eficiente no represent-las explicitamente na descrio do estado, mas sim codific-las diretamente no algoritmo. Quando isto feito, as nicas coisas que so propagadas so valores possveis. Mas o algoritmo bsico o mesmo, em ambos os casos. At o momento, descrevemos um algoritmo bastante simples para a satisfao de restries em que o retrocesso cronolgico usado quando as suposies levam a um conjunto inconsistente de restries. Uma alternativa usar um esquema mais sofisticado, no qual causas especficas da inconsistncia so identificadas, e apenas as restries que dependem dessas inconsistncias so desfeitas. As outras, mesmo que possam ter sido geradas aps a inconsistncia, so deixadas sozinhas, se no tiverem relao com o problema e sua causa. Esta abordagem chamada de retrocesso dirigido por dependncia (DDB - Dependency-Directed Backtracking). Ela ser descrita em detalhes na Seo 7.5.1.

Estado Inicial I _______________ 1

SEND _+MOR.E MONEY

M=1 S=8ou9 0=0ouI-+0=0 N=EouE+1--+N=E+1 C2=1 N+R>8 E<>9

E=2 N=3 R=8ou9 2+D = Y ou 2+D =10+Y Cl = C1=1

3.6 ANALISE MEIOS-FINS


At aqui, apresentamos uma coleo de estratgias de busca que podem raciocinar para frente ou para trs, mas para cada problema uma direo ou a outra precisa ser escolhida. Normalmente, porm, uma mistura das duas direes faz-se apropriada. Esta estratgia mista possibilitaria a soluo de partes importantes de um problema primeiro para que depois se voltasse soluo dos pequenos problemas que surgem quando se "juntam" as peas. Uma tcnica conhecida como anlise meios-fins (meansends analysis) permite-nos efetuar essa operao. Conflito 0 processo da anlise meios-fins centraliza-se na deteco das diferenas entre o estado corrente e o estado-meta. Uma vez isolada uma diferena, preciso encontrar um operador que possa reduzi-la. Mas talvez esse operador no possa ser aplicado ao estado corrente. Ento definimos um subproblema: como chegar a um estado no qual ele possa ser aplicado. 0 tipo de encadeamento para trs no qual os operadores so selecionados e depois subobjetivos so definidos para estabelecer as precondies para os operadores chamado de subobjetivao de operadores (operators subgoaling). Mas talvez o operador no produza exatamente o estado-meta que desejamos. Ento temos um segundo subproblema: sair do estado que ele realmente produz e chegar ao objetivo. Mas se a diferena foi escolhida corretamente e se o operador realmente eficiente na reduo da diferena, ento os dois subproblemas devem ter soluo mais fcil do que o problema original. 0 processo da anlise meios-fins pode

2+D = Y N+R =10+E R=9 S=8 D=8 D=9 Y=0

2+D = 10+Y D = 8+Y D=8ou9

Conflito Figura 3.14 Resolvendo um problema de criptoaritmtica.

Um outro fato que precisa ser notado que em geral h dois tipos de restries. 0 primeiro tipo simples: elas simplesmente listam os valores possveis para um nico objeto. 0 segundo tipo mais complexo: elas descrevem relacionamentos entre dois ou mais objetos. Ambos os tipos de restries desempenham o mesmo papel no processo de satisfao de restries, e, no exemplo de criptoaritmtica, foram tratados de modo idntico. No entanto, em certos problemas pode ser til representar os dois tipos de restries de modos distintos. As restries simples, que listam valores, so sempre dinmicas, e portanto precisam ser representadas

ento ser aplicado recursivamente. A fim de focalizar a ateno do problema primeiro nos problemas grandes, as diferenas podem ter assinalados nveis de prioridade. As diferenas com prioridades mais altas podem ento ser consideradas antes daquelas com prioridades mais baixas.

Operador
EMPURRAR (obj, loc)

Precondies
em(rob, obj) A grande(obj) ^ livre(obj) A brao-vazio

Resultados
em(obj,loc) A em(rob,loc)

CARREGAR (obj, loc) ANDAR (loc) PEGAR(obj) LARGAR (obj) COLOCAR(obj1, obj2)

em(rob, obj) A pequeno(obj) nenhuma em(rob, obj) segurando(obj) em(rob,obj2) A segurando

em(obj,loc) ^ em(rob, loc) em(rob,loc) segurando(obj) -t segurando(obj) sobre(objl,obj2)

Suponha que o rob deste domnio tivesse de resolver o problema de mover uma mesa com dois objetos sobre ela de uma sala para outra. Os objetos tambm precisam ser movidos. A principal diferena entre o estado inicial e o estado de meta seria a localizao da mesa. Para reduzir essa diferena, poderamos escolher EMPURRAR ou CARREGAR. Se CARREGAR for escolhido primeiro, suas precondies tero de ser satisfeitas. Isto resulta em mais duas diferenas que precisam ser reduzidas: o local do rob e o tamanho da mesa. Para o local do rob podemos aplicar o operador ANDAR, mas no h nenhum operador que consiga mudar o tamanho de um objeto (j que no inclumos SERRAR). Portanto, esse caminho leva a um impasse. Seguindo a outra ramificao, tentamos aplicar EMPURRAR. A Figura 3.17 mostra o progresso do resolvedor do problema neste ponto. Ele encontrou um modo de fazer algo til. Mas ainda no est em posio de faze-lo. E este algo til no o leva a um estado-meta. Portanto, agora as diferenas entre A e B e entre C e D precisam ser reduzidas. Empurrar Mover objeto Mover rob Liberar objeto Colocar objeto sobre objeto 'Ficar com o brao vazio Estar segurando objeto Figura 3.16 Uma tabela de diferenas. Figura 3.17 0 progresso do mtodo da anlise B A Incio meios-fins. EMPURRAR tem quatro precondies, sendo que duas delas produzem diferenas entre o estado inicial e o estado de meta: o rob precisa estar perto da mesa e a mesa precisa estar limpa. Uma vez que a mesa j grande e que o brao do rob j est vazio, essas duas precondies podem ser ignoradas. 0 rob pode ser trazido para a posio correta usando-se ANDAR. E a superficie da mesa pode ser limpa com o uso de PEGAR. Mas depois de um PEGAR, a tentativa de us-lo uma segunda vez resulta em uma outra diferena - o brao precisa estar vazio. LARGAR pode ser usado para reduzir essa diferena. Uma vez executado EMPURRAR, o estado do problema fica prximo do estadometa, mas no muito. Os objetos precisam ser colocados de volta na mesa. COLOCAR ir coloc-los l. Mas ele no pode ser aplicado imediatamente. Uma outra * * * Carregar Andar Pegar Largar Colocar

Figura 3.15 Os operadores do rob. 0 primeiro programa de IA a explorar a anlise meios-fins foi o General Problem Solver (Resolvedor Geral de Problemas - GPS) [Newell e Simon, 1963; Ernst e Newell, 1969]. Seu projeto foi motivado pela observao de que as pessoas normalmente usam esta tcnica quando solucionam problemas. Mas o GPS um bom exemplo da impresso dos limites entre criar programas que simulam o que as pessoas fazem e criar programas que simplesmente solucionam um problema de qualquer maneira possvel. Assim como as outras tcnicas de soluo de problemas que j discutimos, a anlise meios-fins baseia-se em um conjunto de regras que podem transformar um estado de problema em outro., Essas regras em geral no so representadas com descries completas de estado em cada lado. Em vez disso so representadas

I Empurrar I

D
Objetivo

das como

um
lado esquerdo que descreve as condies que precisam ser satisfeitas para que a regra seja aplicvel regra) e um lado direito que descreve os (essas condies so chamadas de precondies aspectos do estado do problema que sero alterados pela aplicao da regra. Uma estrutura de dados separada, chamada de tabela de dife renas, indexa as regras pelas diferenas que elas podem usar para reduzir. Considere o domnio de um simples rob domstico. Os operadores disponveis so mostrados na Figura 3.15, juntamente com suas precondies e resultados. A Figura 3.16 mostra a tabela de diferenas que descreve quando cada um dos operadores apropriado. Observe que, s vezes, pode haver mais de um operador que consiga reduzir uma determinada diferena, e que um determinado operador pode ser capaz de reduzir mais de uma diferena.

116

Inteligncia Artificial Cap. 3


A

Cap. 3 Tcnicas de busca heurstica


B C E D

117

diferena precisa ser eliminada, j que o rob precisa estar segurando os objetos. 0 progresso do resolvedor do problema neste ponto mostrado na Figura 3.18. A diferena final entre C e E pode ser reduzida usando-se ANDAR para levar o rob de volta aos objetos, seguido de PEGAR e CARREGAR. 0 processo que acabamos de ilustrar (que chamamos abreviadamente de AMF) pode ser resumido da seguinte maneira: Algoritmo: Anlise Meios-Fins (CORRENTE, OBJETIVO) 1. Compare CORRENTE com OBJETIVO. Se no houver nenhuma diferena entre eles, ento retorne. 2. Caso contrrio, selecione a diferena mais importante e reduza-a, fazendo o seguinte at ter sinal de sucesso ou fracasso: (a) Selecione um operador 0 que ainda no tenha sido testado e que seja aplicvel diferena atual. Se tal operador no existir, sinalize fracasso.

Andar I Pegar I Largar I Pegar I Largar I Empurrar I Objetivo

I Colocar

Incio
Figura 3.18 Mais progressos do mtodo meios-fins.

3.7 RESUMO
No Captulo 2, listamos quatro etapas que precisam ser cumpridas no projeto de um programa para solucionar um problema de IA. As duas primeiras etapas eram: 1. Definir o problema precisamente. Especificar o espao do problema, os operadores para movimentao dentro do espao e os estados inicial e de objetivo. 2. Analisar o problema para determinar onde ele se encontra com respeito a sete questes importantes. As outras duas etapas eram isolar e representar o conhecimento de tarefa exigido, e escolher as tcnicas de soluo de problemas e aplic-las ao problema em questo. Neste captulo, comeamos nossa discusso sobre a ltima etapa deste processo, apresentando alguns mtodos de propsito geral para soluo de problemas. H vrios aspectos importantes em que estes algoritmos diferem, incluindo:

(b) Tente aplicar 0 a CORRENTE. Gere descries de dois estados: 0INCIO, estado no qual as precondies de 0 so satisfeitas, e O-RESULTADO, estado que resultaria caso 0 fosse aplicado em O-INCIO.
(c) Se

(PRIMEIRA-PARTE AMF(CORRENTE,O-INCIO)) e (ULTIMA-PARTE AMF(O-RESULTADO, OBJETIVO))


tiverem xito, ento sinalize sucesso e retorne o resultado da concatenao de

PRIMEIRA-PARTE, 0 e LTIMA-PARTE.
Muitos detalhes deste processo foram omitidos na discusso. Em particular, a ordem segundo a qual as diferenas so consideradas pode ser crucial. importante que as diferenas significativas sejam reduzidas antes das menos crticas. Se isto no for feito, poder ocorrer muita perda de esforo em situaes que cuidam de si mesmas, uma vez solucionadas as partes principais do problema. Esse processo simples que descrevemos em geral no adequado para a soluo de problemas complexos. 0 nmero de permutaes das diferenas pode ficar grande demais. Trabalhar em uma diferena pode interferir no plano de reduo de outra. E, em mundos complexos, as tabelas de diferenas exigidas seriam imensas. No Captulo 13, analisaremos algumas maneiras de ampliar a abordagem da anlise meios-fins de modo a lidar com esses problemas.

0 que representam os estados no(s) espao(s) de busca. s vezes, os estados representam solues completas em potencial (como na subida de encosta). s vezes, representam solues parcialmente especificadas (como na satisfao de restries). Como, em cada estgio do processo de busca, um estado selecionado para expanso. Como os operadores que devem ser aplicados quele n so escolhidos. Se uma soluo tima pode ser garantida. Se um dado estado pode acabar sendo considerado mais de uma vez. Quantas descries de estado precisam ser mantidas durante o processo de busca. Em que circunstncias um determinado caminho de busca deve ser abandonado.

Nos captulos que seguem, falaremos sobre como codificar conhecimentos sobre domnios de tarefas nos programas de soluo de problemas e discutiremos

tcnicas para combinar mtodos de soluo de problemas com conhecimento, para solucionar vrias classes importantes de problemas.

escolha resulte na seguinte situao (a + b significa que o valor de h' em um n a e que o valor de g b):

3.8 EXERCCIOS
1. Quando uma busca pela melhor escolha seria pior do que uma busca em amplitude simples? 2. Suponha que temos um problema que pretendemos resolver usando um procedimento de busca heurstica de busca pela melhor escolha. Precisamos decidir se ela ser implementada como busca em rvore ou como busca em grafo. Suponha que sabemos que, em mdia, cada n distinto ser gerado N vezes durante o processo de busca. Sabemos tambm que, se usarmos um grafo, levar, em mdia, o mesmo tempo para verificarmos se um n j foi gerado do que para processar M ns caso nenhuma verificao seja feita. Como que podemos decidir pelo uso de uma rvore ou de um grafo? Alm dos parmetros N e M, que outras suposies precisam ser feitas? 3. Pense em solucionar o quebra-cabea de 8 usando subida de encosta. Ser que voc consegue encontrar uma funo heurstica que o faa funcionar? Ela deve funcionar no seguinte exemplo: Incio _______ Objetivo 4. Descreva o comportamento de uma verso revisada do algoritmo de subida de encosta pela trilha mais ngreme na qual a etapa 2(c) substituda por "atribua o estado atual a melhor sucessor". 5. Suponha que o primeiro passo da operao do algoritmo de busca pela melhor 1 8 4 2 5 3 6 1 4 7 2 5 3 6

(a) Que n ser expandido no prximo passo?

(b) Podemos garantir que a melhor soluo ser encontrada?


6. Por que que o algoritmo A* precisa funcionar corretamente em grafos que contm ciclos? Os ciclos poderiam ser evitados se, quando um novo caminho fosse gerado para um n existente, esse caminho fosse simplesmente desconsiderado, caso no fosse melhor que o caminho existente. Se g um nmero no-negativo, um caminho cclico nunca pode ser melhor que o mesmo caminho com o ciclo omitido. Por exemplo, considere o primeiro grafo mostrado a seguir, no qual os ns foram gerados em ordem alfabtica. 0 fato de o n D ser sucessor do n F simplesmente no poderia ser registrado, j que o caminho pelo n F mais longo que o caminho pelo n B. 0 mesmo raciocnio tambm impediria que registrssemos o n E como sucessor do n F, fosse este o caso. Mas o que aconteceria na situao mostrada no segundo grafo a seguir se o caminho do n G para o n F grafo no estivesse gravado e, na prxima etapa, descobrssemos que o n G sucessor do n C?

120

Inteligncia Artificial Cap. 3


7. Formalize o Corolrio da Degradao Suave da Admissibilidade e prove que ele verdadeiro a partir do algoritmo A*. 8. Na etapa 2(a) do algoritmo AO*, um estado aleatrio ao final do melhor caminho corrente escolhido para expanso. Mas h heursticas que podem ser usadas para influenciar esta escolha. Por exemplo, pode fazer sentido escolher o estado cuja atual estimativa de custo seja a mais baixa. O argumento que, para tais ns, apenas alguns passos so exigidos antes que uma soluo seja encontrada, ou que uma estimativa revisada de custo seja produzida. Com ns cujas estimativas correntes de custo so grandes, por outro lado, muitos passos podem ser necessrios antes que qualquer informao seja obtida. Como que o algoritmo teria de ser alterado para implementar essa heurstica de seleo de estados? 9. A etapa 2(c), propagao do custo para trs, do algoritmo AO* precisa seguramente terminar mesmo em grafos que contm ciclos. Como que podemos dar esta garantia? Para ajudar a responder a esta pergunta, considere o que acontece nos grafos a seguir, assumindo que em cada caso o n F expandido a seguir e que seu nico sucessor seja A: tcnica deve funcionar corretamente no grafo que segue, se o custo do n E for alterado:
DS DANGER

Cap. 3 Tcnicas de busca heurstica

121

11. Considere novamente o algoritmo AO*. Em que circunstncias haver ns em S, mas no haver nenhum n em S que no tenha descendentes tambm em S? 12. Trace o procedimento de restrio das satisfaes para solucionar o seguinte problema de criptoaritmtica:
CR0SS+ROA

(50)

U 1 8 (28)

0 1
(15) (11)

13. 0 procedimento de satisfao de restries que descrevemos executa a busca em profundidade sempre que algum tipo de busca se faz necessria. Mas o mtodo de busca em profundidade no o nico para conduzir tal tipo de busca (embora, talvez, seja o mais simples). (a) Reescreva o procedimento de restries das satisfaes para que ele use a busca em amplitude. (b) Reescreva o procedimento de restries das satisfaes para que ele use a busca pela melhor escolha. 14. Mostre como a anlise meios-fins pode ser usada para solucionar o problema de chegar de um lugar a outro. Assuma que os operadores disponveis sejam andar, dirigir, tomar nibus, tomar txi e voar.

Considere tambm o que acontece no seguinte grafo se o custo do n C for alterado para 3:

(5)

10. 0 algoritmo AO*, no passo 2(c)i, requer que um n sem descendentes em S seja

selecionado em S, se possvel. Como deve ser implementada a manipulao de S para que tal n seja escolhido de modo eficiente? Sua