Você está na página 1de 14

INTRODUO INTELIGNCIA ARTIFICIAL

PARTE 1. ESTRATGIAS DE BUSCA


1. Sistemas de Produo

1.1. Introduo Um sistema de produo um formalismo computacional, onde pode ser identificado claramente trs componentes principais: uma base de dados global, um conjunto de regras de produo e um sistema de controle. Os sistemas de produo capturam a essncia da operao de muitos sistemas de Inteligncia Artificial (IA). A base de dados global a estrutura de dados central usada por um sistema de produo em IA. Dependendo da aplicao, esta base de dados pode ser uma matriz de nmeros ou uma estrutura de arquivo indexado relacional. As regras de produo operam na base de dados global. Cada regra tem uma prcondio que ou satisfeita ou no pela base de dados global. Se a pr-condio for satisfeita, a regra pode ser aplicada. A aplicao de uma regra altera a base de dados. O sistema de controle escolhe qual regra aplicvel deve ser aplicada e termina a computao quando uma condio de terminao na base de dados global for satisfeita.

1.2. Um exemplo: o tabuleiro de 8 pedras Para o tabuleiro de 8 pedras, a base de dados global seria representada por uma matriz de inteiros (pode-se imaginar o -1 representando o espao). As regras de produo seriam as regras que aplicadas a uma configurao da base de dados, modificariam esta configurao. Para este exemplo, onde se tem 8 pedras distintas, e cada pedra pode ser movimentada para cima, para baixo, para esquerda e para direita, dever-se-ia ter 8 x 4 = 32 regras de produo. Mas pode-se optar por movimentar o branco (vazio), que nico, ao invs de se mover 8 pedras diferentes. Neste caso, o conjunto de regras de produo reduziria a 4 regras, a saber, mover o branco para cima (R1), para baixo (R2), para direita (R3) e para esquerda (R4). esta base de dados, transformam-na. Suponha que se deseje partir de uma configurao inicial 283-164-7b5 e chegar em 123-8b4-765, como mostra a figura abaixo: ------------| 2 | 8 | 3 | |---|---|---| | 1 | 6 | 4 | |---|---|---| | 7 | | 5 | ------------------------| 1 | 2 | 3 | |---|---|---| | 8 | | 4 | |---|---|---| | 7 | 6 | 5 | -------------

INTRODUO INTELIGNCIA A RTIFICIAL - LTP

JLGR

Inicial

Meta

PARTE 1. ESTRATGIAS DE BUSCA

JLGR

1.3. O Procedimento Bsico O algoritmo que vai implementar esta busca de aplicao de regras num sistema de produo o seguinte:

Procedimento PRODUO 1 2 3 4 5 6 DATA base de dados inicial at DATA satisfazer a condio de terminao, faa: incio selecione alguma regra, R, no conjunto de regras que possa ser aplicada a DATA DATA resultado da aplicao de R a DATA fim

1.4. Controle O procedimento acima no-determinstico porque no se especificou precisamente como se selecionar uma regra aplicvel na linha 4. A seleo de regras e a manuteno da trilha das seqncias de regras j tentadas e as bases de dados que elas produzem constituem o que se chama de estratgia de controle para sistemas de produo. Em muitas aplicaes de IA, a informao disponvel para a estratgia de controle no suficiente para permitir a seleo da maioria das regras apropriadas no passo 4. A operao dos sistemas de produo de IA pode ento ser caracterizada como um processo de busca nos quais as regras so tentadas at que alguma seqncia delas seja encontrada que produza uma base de dados que satisfaa a condio de terminao. As estratgias de controle eficientes requerem conhecimento suficiente sobre o problema a ser resolvido tal que a regra selecionada no passo 4 tenha uma boa chance de ser a mais apropriada. Uma estratgia boa (informada) para o problema do tabuleiro de 8 pedras a estratgia Hill-Climbing, que consiste em aplicar uma regra que no tire uma pedra que j esteja na sua posio final ((Nilsson, 1982):

INTRODUO INTELIGNCIA A RTIFICIAL - LTP

JLGR

Existem dois tipos principais de estratgias de controle: irrevogvel e tentativa. Num regime de controle irrevogvel, uma regra aplicvel selecionada e aplicada irrevogavelmente sem proviso para reconsiderao mais tarde. Num regime de controle tentativo, uma regra aplicvel selecionada (ou arbitrariamente ou talvez com uma boa razo), a regra aplicada, mas feita proviso para retornar mais tarde a este ponto para aplicar alguma outra regra. Vai-se distinguir dois tipos de regimes de controle tentativo. Num, chamado backtracking (veja aplicao para o problema do tabuleiro de 8 pedras na figura abaixo (Nilsson, 1982)), um ponto de backtracking estabelecido quando uma regra selecionada. Caso a computao subseqente encontre dificuldade de produzir uma soluo, o estado da computao reverte ao ponto de backtracking prvio, onde uma outra regra aplicada, e o processo continua.

PARTE 1. ESTRATGIAS DE BUSCA

JLGR

No segundo tipo de regime de controle tentativo, chamado de controle por busca em grafo, a proviso feita para manter a trilha dos efeitos de muitas seqncias de regras simultaneamente. Vrios tipos de estrutura de grafos e procedimentos de busca em grafos so usados neste tipo de controle.

2. Estratgias de Busca para sistemas de produo de IA

2.1. Backtracking

INTRODUO INTELIGNCIA A RTIFICIAL - LTP

JLGR

Em muitos problemas de interesse, a aplicao de uma regra imprpria pode atrasar substancialmente ou inibir uma terminao bem sucedida. Nestes casos, deseja-se uma estratgia de controle que possa tentar uma regra e, se mais tarde descobrir que esta regra imprpria, voltar e tentar uma outra regra ao invs daquela. O processo de backtracking uma forma na qual a estratgia de controle pode ser tentativa. Uma regra selecionada, e se no levar a uma soluo, os passos intermedirios so "esquecidos" e uma outra regra selecionada. Formalmente, a estratgia de backtracking pode ser usada a despeito de quanto conhecimento est disponvel na hora de selecionar a regra. Se no houver conhecimento nenhum disponvel, as regras podem ser selecionadas de acordo com algum esquema arbitrrio. Por ltimo, o controle retornar para selecionar a regra apropriada. Obviamente, se puder ser usado conhecimento confivel para seleo de regras, o backtracking para considerar regras alternativas ocorrer com menor freqncia, e o processo como um todo ser mais eficiente. Um procedimento recursivo simples captura a essncia da operao de um sistema de produo sob controle de backtracking. Este procedimento, chamado BACKTRACK, pega um nico argumento, DATA, inicialmente com o valor igual a base de dados global do sistema de produo. At a terminao bem sucedida, o procedimento retorna uma lista de regras, que, se aplicada em seqncia base de dados inicial, produz uma base de dados satisfazendo a condio de terminao. Se o procedimento parar sem achar tal lista de regras, ele retorna FAIL.

2.1.1. Procedimento Recursivo BACKTRACK (DATA) 1 se TERMO(DATA), retorne ; TERMO um predicado verdadeiro para argumentos que satisfazem a condio de terminao do sistema de produo. At a terminao bem sucedida, , a lista vazia, retornada. 2 se DEADEND(DATA), retorne FAIL; DEADEND um predicado verdadeiro para argumentos que so sabidos no pertencerem ao caminho para uma soluo. Neste caso, o procedimento retorna o smbolo FAIL (falha). 3 REGRAS REGRASAPL(DATA); REGRASAPL uma funo que computa as regras aplicveis a seu argumento e as ordena (ou arbitrariamente, ou de acordo com mrito heurstico). 4 LOOP: se NULL(REGRAS), retorne FAIL; se no houver (mais) regras a aplicar, o procedimento falha. 5 R PRIMEIRA(REGRAS); a melhor das regras aplicveis selecionada.

6 REGRAS CAUDA(REGRAS); a lista de regras aplicveis diminuda removendo a recm selecionada. 7 RDATA R(DATA); a regra R aplicada para produzir uma nova base de dados.

PARTE 1. ESTRATGIAS DE BUSCA

JLGR

8 CAMINHO BACKTRACK(RDATA); BACKTRACK chamada recursivamente na nova base de dados. 9 se CAMINHO = FAIL, v para LOOP; se a chamada recursiva falha, tente uma outra regra. 10 retorne CONS(R,CAMINHO); de outra forma, passe a lista de regras bem sucedidas, adicionando R frente da lista.

2.1.2. Exemplo: o problema das 8 rainhas Imagine um tabuleiro de xadrez (matriz 8 por 8). O problema das 8 rainhas consiste em colocar uma rainha em cada linha de tal forma que uma rainha no coma a outra. 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 X X X X X

Suponha a configurao acima. O algoritmo deve agora tentar colocar uma rainha na linha 6. No possvel. Backtrack para realocar a rainha da linha 5, movendo-a para a coluna 8. Ainda assim no possvel realocar a 6. Logo, backtrack para a linha 4 e assim por diante.

2.2. Busca em Grafo Os grafos (ou mais especialmente, as rvores) so estruturas extremamente teis para manter a trilha dos efeitos de muitas seqncias de regras. Nas estratgias de backtracking, o sistema de controle efetivamente esquece qualquer caminho que resulta em falha. Apenas o caminho correntemente sendo estendido armazenado explicitamente. Um procedimento mais flexvel envolve o armazenamento explcito de todos os caminhos de tal forma que qualquer um deles pode ser candidato a futura extenso. 2.2.1. Notao de Grafos Um grafo consiste de um conjunto (no necessariamente finito) de ns. Certos pares de ns so conectados por arcos, e estes arcos so direcionados de um membro do par ao outro. Tal

10

INTRODUO INTELIGNCIA A RTIFICIAL - LTP

JLGR

grafo chamado de grafo direcionado. Para este modelo, os ns so rotulados por base de dados e os arcos so rotulados por regras. Se um arco direcionado do n ni para o n nj, ento o n nj o sucessor do n ni, e o n ni o pai do n nj. Nos grafos de interesse, um n pode ter apenas um nmero finito de sucessores. (Os sistemas de produo tm apenas um nmero finito de regras aplicveis.) Cada n de um par pode ser sucessor do outro; neste caso o par de arcos direcionados algumas vezes substitudo por uma margem. Uma rvore um caso especial de um grafo no qual cada n tem, no mximo, um pai. Um n na rvore que no tem pai chamado de n raiz. Um n na rvore que no tem sucessores chamado de n folha. Diz-se que o n raiz de profundidade zero. A profundidade de qualquer outro n na rvore , por definio, a profundidade de seus pais mais 1. Uma seqncia de ns (ni1,ni2,...,nik), com cada nij um sucessor de n para j = 2,...,k, ij-1 chamada de um caminho de comprimento k do n ni1 para o n nik. Se um caminho existe entre o n ni para o n nj, ento o n nj acessvel a partir do n ni. O n nj ento um descendente do n ni, e o n ni um ancestral do n nj. Note que o problema de achar uma seqncia de regras para transformar uma base de dados em outra equivalente ao problema de achar um caminho num grafo. Freqentemente conveniente atribuir custos positivos aos arcos, para representar o custo da aplicao da regra correspondente. Usa-se a notao c(ni, nj) para denotar o custo de um arco direcionado do n ni para o n nj. O custo de um caminho entre dois ns a soma dos custos de todos os arcos que conectam os ns no caminho. Em alguns problemas, deseja-se achar o caminho que tenha custo mnimo entre dois ns. No tipo mais simples de problema, deseja-se achar um caminho (talvez tendo custo mnimo) entre um n dado s, representando a base de dados inicial e um outro n dado t, representando alguma outra base de dados. A situao mais usual envolve achar um caminho entre um n s e qualquer membro do conjunto de ns { i} que representa as bases de dados que satisfazem a t condio terminal. Chama-se o conjunto {t i} o conjunto meta e cada n t em {t i} um n meta.

2.2.2. Um procedimento geral de busca em grafo

Procedimento GRAPHSEARCH 1 Crie um grafo de busca, G, consistindo somente do n inicial, s. Ponha s numa lista chamada OPEN. 2 Crie uma lista chamada CLOSED que est inicialmente vazia.

3 LOOP: se OPEN est vazia, saia com falha. 4 Selecione o primeiro n em OPEN, remova-o de OPEN, o ponha-o em CLOSED. Chame este n de n.

11

PARTE 1. ESTRATGIAS DE BUSCA

JLGR

5 Se n um n meta, saia com sucesso com a soluo obtida traando um caminho entre os ponteiros de n para s em G. (Os ponteiros so estabelecidos no passo 7.) 6 Expanda o n n, gerando o conjunto, M, de seus sucessores que no so ancestrais de n. Instale estes membros de M como sucessores de n em G. 7 Estabelea um ponteiro para n a partir daqueles membros de M que ainda no estejam nem em OPEN nem em CLOSED. Adicione estes membros de M a OPEN. Para cada membro de M que j esteja em OPEN ou CLOSED, decida se direciona ou no seu ponteiro para n. Para cada membro de M j em CLOSED, decida para cada um de seus descendentes em G se redireciona ou no o seu ponteiro. 8 Reordene a lista OPEN, de acordo com alguma esquema arbitrrio ou de acordo com mrito heurstico. 9 V para LOOP.

2.2.3. Procedimentos no informados de Busca em Grafos

Se nenhuma informao heurstica do domnio do problema usada para ordenar os ns em OPEN, algum esquema arbitrrio deve ser usado no passo 8 da algoritmo. O procedimento de busca resultante chamado no informado. Em IA, normalmente no se interessa por procedimentos no informados. Os procedimentos no informados mais comuns so: busca em profundidade e busca em largura. O primeiro tipo de busca no informada ordena os ns em OPEN na ordem descendente de sua profundidade na rvore de busca. Os ns mais profundos so colocados primeiro na lista. Ns de profundidade igual so ordenados arbitrariamente. A busca que resulta de tal ordenao chamada de busca por profundidade (depth-first) (veja aplicao para o tabuleiro de 8 pedras na figura abaixo (Nilsson, 1982)) porque o n mais profundo na rvore de busca sempre selecionado para expanso. Para prevenir o processo de busca de ficar rodando em algum caminho intil para sempre, um limite de profundidade necessrio. Nenhum n cuja profundidade na rvore de busca excede este limite gerado.

12

INTRODUO INTELIGNCIA A RTIFICIAL - LTP

JLGR

O procedimento de busca em profundidade gera novas bases de dados em uma ordem similar gerada por uma estratgia de controle backtracking no informada. A correspondncia seria exata se o processo de busca em grafo gerasse apenas um sucessor de cada vez. Usualmente, a implementao backtracking preferida verso busca em profundidade do GRAPHSEARCH porque o backtracking mais simples de implementar e envolve menos armazenamento. (As estratgias de backtracking salvam apenas um caminho ao n meta; elas no salvam o registro inteiro da busca como fazem as estratgias de busca em grafo por profundidade.) Algoritmo: Busca em Profundidade 1. Se o estado inicial um estado meta, saia e retorne com sucesso. 2. Caso contrrio, faa o seguinte at que sucesso ou falha seja assinalado: (a) Gere um sucessor, E, do estado inicial. Se no houver mais sucessores, assinale falha. (b) Chame Busca por Profundidade com E como o estado inicial. (c) Se sucesso retornado, assinale sucesso. Caso contrrio, continue neste loop.

O segundo tipo de procedimento de busca no informada ordena os ns em OPEN na ordem crescente de sua profundidade na rvore de busca. (Novamente, para promover o trmino antecipado, ns metas devem ser postos imediatamente no nicio de OPEN.) A busca que resulta de tal ordenao chamada de busca em largura (breadth-first) (veja aplicao para o tabuleiro de 8 pedras na figura abaixo (Nilsson, 1982)) porque a expanso dos ns na rvore de busca acontece ao longo do contorno de profundidade igual.

13

PARTE 1. ESTRATGIAS DE BUSCA

JLGR

A busca por largura garante achar um caminho de comprimento mais curto a um n meta, se este caminho existir. (Se nenhum caminho existe, o mtodo falhar para grafos finitos ou nunca terminar para grafos infinitos.)

Algoritmo: Busca em Largura 1. Crie uma varivel chamada LISTA-DE-NS e faa-a igual ao estado inicial. 2. At que um estado meta seja achado ou LISTA-DE-NS esteja vazia faa: (a) Remova o primeiro elemento da LISTA-DE-NS e chame-o de E. Se LISTA-DE-NS estiver vazia, saia. (b) Para cada forma que cada regra possa casar com o estado descrito em E faa: i. Aplique a regra para gerar um estado novo. ii. Se o estado novo um estado meta, saia e retorne este estado. iii. Caso contrrio, adicione o estado novo ao final de LISTA-DE-NS.

2.2.4. Procedimentos Heursticos de Busca em Grafos

Os mtodos de busca no informados, seja a busca em largura ou em profundidade, so mtodos exaustivos para achar caminhos para o n meta. Em princpio, estes mtodos provem uma soluo ao problema de achar um caminho, mas eles so freqentemente inviveis para usar o controle dos sistemas de produo porque a busca expande muitos ns antes que um caminho seja encontrado. Como sempre existem limites prticos quantidade de tempo e armazenamento disponveis para usar na busca, alternativas mais eficientes busca no informada devem ser encontradas.

14

INTRODUO INTELIGNCIA A RTIFICIAL - LTP

JLGR

Para muitas tarefas possvel usar a informao dependente da tarefa para ajudar a reduzir a busca. Informao deste tipo usualmente chamada de informao heurstica 1, e os procedimentos de busca que a usa so chamados de mtodos heursticos de busca. possvel especificar a heurstica que reduza o esforo de busca (abaixo daquele esforo gasto, por exemplo, pela busca em largura) sem sacrificar a garantia de achar um caminho de comprimento mnimo. Algumas heursticas reduzem bastante o esforo de busca mas no garantem achar caminhos de custo mnimo. Em muitos problemas prticos, estamos interessado em minimizar alguma combinao do custo do caminho e o custo da busca necessrio para obter o caminho. Alm disso, ns estamos interessados em mtodos de busca que minimizem esta combinao mdia sobre todos os problemas a serem encontrados. Se o custo de combinao mdia do mtodo de busca 1 menor que o custo de combinao mdia do mtodo de busca 2 ento o mtodo de busca 1 tem mais potncia heurstica que o mtodo de busca 2. Note que de acordo com esta definio, no necessrio que um mtodo de busca com mais potncia heurstica garanta achar um caminho de custo mnimo. Custos de combinao mdia nunca so realmente computados, porque difcil decidir combinar custo de caminho e custo de esforo de busca e porque seria difcil definir uma distribuio de probabilidade sobre o conjunto de problemas a ser encontrado. Alm disso, o problema de decidir se um mtodo de busca tem mais potncia heurstica do que outro normalmente deixado para a intuio informada, obtida das experincias reais com os mtodos. Considere o seguinte problema. O problema do caixeiro viajante: Um vendedor tem uma lista de cidades, que ele deve visitar apenas uma vez. Existem estradas diretas ligando cada par de cidades da lista. Ache a rota que o vendedor deve seguir para a viagem mais curta possvel que comea e termina em uma das cidades. Um exemplo de uma boa heurstica de propsito geral que til para vrios problemas combinatoriais a heurstica do vizinho mais prximo, que trabalha selecionando a alternativa localmente superior a cada passo. Aplicando-a ao problema do caixeiro viajante, produzimos o seguinte procedimento: 1. Arbitrariamente selecione uma cidade inicial. 2. Para selecionar a prxima cidade, olhe todas as cidades ainda no visitadas e selecione a mais prxima a cidade corrente. V a ela. 3. Repita o passo 2 at que todas as cidades tenham sido visitadas. Este procedimento executado em tempo proporcional a N 2, uma melhora significante sobre N!, que seria o tempo gasto caso fosse usada uma estratgia no informada (que geraria uma exploso combinatorial).

A palavra heurstica vem da palavra grega heuriskein, que significa descobrir, que tambm a origem de eureka, a famosa exclamao de Arquimedes (Eu achei).

15

PARTE 1. ESTRATGIAS DE BUSCA

JLGR

Existem muitas heursticas que, ainda que no sejam to gerais quanto a heurstica do vizinho mais prximo, so teis em uma ampla variedade de domnios. Por exemplo, considere a tarefa de descobrir idias interessantes em alguma rea especfica. A seguinte heurstica freqentemente til: Se h uma funo interessante de dois argumentos f(x, y), olhe para o que acontece se os dois argumentos so idnticos. No domnio da matemtica, esta heurstica leva descoberta do quadrado se f for a funo de multiplicao e leva descoberta da funo identidade se f for a funo da unio de conjuntos. Em domnios menos formais, esta mesma heurstica leva descoberta da introspeo se f for a funo contemplar ou leva noo de suicida se f for a funo matar. Sem a heurstica estaramos desesperanosamente envolvidos em uma exploso combinatorial. S isto j poderia ser um argumento suficiente a favor de seu uso. Mas existem outros argumentos tambm: Raramente precisamos da soluo tima; uma boa aproximao usualmente serve muito bem. De fato, existe alguma evidncia de que as pessoas, quando resolvem problemas, ao invs de serem otimizadoras, elas procuram a satisfao. Em outras palavras, elas procuram qualquer soluo que satisfaa algum conjunto de requisitos, e assim que elas encontram um elas terminam. Um bom exemplo disto a procura de um espao no estacionamento. A maioria das pessoas param assim que acham um bom espao, mesmo que haja um espao melhor mais a frente. Ainda que as aproximaes produzidas por heursticas possam no ser muito boas no pior caso, os piores casos raramente acontecem na vida real. Por exemplo, ainda que muitos grafos no sejam separveis e portanto no possam ser considerados como um conjunto de problemas menores ao invs de um nico grande problema, muitos grafos que descrevem o mundo real so separveis. A tentativa de entender por que uma heurstica funciona, ou por que ela no funciona, freqentemente leva a um entendimento mais aprofundado do problema.

EXERCCIOS PROPOSTOS 1.1. Usando busca em profundidade, concluir o problema iniciado em sala de aula, para o algoritmo GRAPHSEARCH, para o tabuleiro de 8 pedras: - escrever o desenvolvimento completo das listas OPEN e CLOSED e dos ponteiros para o pai; - fazer a recuperao da trajetria tima. 1.2. Discutir vantagens e desvantagens dos mtodos heursticos e no-informados de busca em grafos. 1.3. Descrever todas as seqncias de regras que so aplicadas ao problema do tabuleiro de 8 pedras, para o procedimento "Hill-Climbing", para qualquer configurao inicial. 1.4. Representar os elementos de um sistema de produo para o exemplo do caixeiro viajante usando a notao de grafos. Considerar as possibilidades para a soluo deste problema, levando em considerao um caminho timo (custo mnimo).

BIBLIOGRAFIA

16

INTRODUO INTELIGNCIA A RTIFICIAL - LTP

JLGR

Nilsson, N. J. (1982). "Principles of Artificial Intelligence". Springer-Verlag. Rich, E. & Knight, K. (1994). Inteligncia Artificial. 2a. Edio. Makron Books/McGraw-Hill.

17

Você também pode gostar