Sie sind auf Seite 1von 19

TAV III

INTELIGNCIA ARTIFICIAL

I.

INTRODUO

1. Definio de Inteligncia Artificial Uma das primeiras dificuldades daquele que inicia o estudo de Inteligncia Artificial tentar delimitar seu campo de estudo. O que , exatamente, Inteligncia Artificial ? Quais seus objetivos ? De uma forma simples, poderamos definir Inteligncia Artificial como a rea da Computao que procura fazer com que o computador resolva problemas para os quais se exige inteligncia; essa definio, no entanto, costuma acarretar discusses filosficas e psicolgicas a respeito do significado do termo inteligncia e da possibilidade de existncia de mquinas inteligentes. Essa questo, de saber se uma mquina pode ou no ser inteligente, se uma mquina pode ou no exibir comportamento inteligente vem sendo discutida j h muito tempo; uma das principais contribuies a essa discusso foi dada pelo matemtico ingls Alan Turing, em 1950, definindo o que ficou conhecido como Teste de Turing : coloca em uma sala A um ser humano, e em uma se sala B, um computador. Uma outra pessoa, fazendo perguntas ao ser humano e ao computador, deve decidir qual deles a mquina; se errar em mais de 50% das vezes, a mquina pode ser considerada inteligente. Esse critrio exige uma habilidade em manipulao de linguagem natural que, ainda hoje, nenhuma mquina possui. Pelo Teste de Turing, ainda hoje no existe nenhuma mquina inteligente. Uma outra definio de Inteligncia Artificial, devida a Rich, diz que IA o estudo de como fazer os computadores realizarem tarefas que, no momento, so melhor executadas pelas pessoas. Essa definio no inclui aqueles problemas nos quais os computadores j so melhores que os humanos, nem as reas nas quais os problemas no so bem solucionadas nem pelos humanos nem pelos computadores; no entanto, uma definio til, pois limita, de forma razoavelmente precisa, o escopo da Inteligncia Artificial. At onde sabemos, o termo Inteligncia Artificial foi utilizado pela primeira vez, por John McCarthy, em agosto de 1956, no convite para o encontro que ficou conhecido por Conferncia de Dartmouth. Esse encontro tinha por objetivo estudar as bases da conjectura de que cada aspecto do aprendizado e da inteligncia pode, em princpio, ser to precisamente descrito que o torne passvel de ser simulado por uma mquina, e reuniu 15 pioneiros do que viria a constituir a rea de Inteligncia Artificial. 2. Primeiros trabalhos Listamos, abaixo, alguns dos principais projetos apresentados: Tradutor Automtico Ingls-Russo

Desenvolvido por Oettinger, desde 1954; pretendia ser um programa que traduzisse textos (especialmente tcnicos) do ingls para o russo e vice versa. Logic Theorist

Desenvolvido por Newell, Shaw e Simon, de 1956 a 59; pretendia ser um programa que , a partir dos postulados da Lgica, desenvolvesse e provasse seus teoremas; seus criadores acreditavam que em pouco tempo, ele provaria teoremas ainda desconhecidos.

GPS General Problem Solver

Desenvolvido por Newell, Shaw e Simon, entre 1959 e 1967; pretendia ser um programa que estabelecesse critrios gerais de resoluo de problemas; isto , dadas as condies iniciais, a configurao final, e os meios de se passar de uma configurao para outra, o programa devia desenvolver estratgias que permitissem obter o caminho que levaria da configurao inicial final. Studant

Desenvolvido por Bobrow, entre 1956 e 1961; pretendia ser um programa que resolvesse problemas de lgebra elementar, isto , o programa deveria, a partir do enunciado do problema, estabelecer e resolver as equaes algbricas necessrias para a resoluo do problema. interessante ressaltar o otimismo (ou a ingenuidade) dos pesquisadores, na poca; os problemas abordados so extremamente difceis, e, mesmo hoje em dia, no esto satisfatoriamente resolvidos. 3. Dificuldades no processamento de IA Em 1972, o filsofo Hubert Dreyfus publicou um livro chamado Uma crtica da Razo Artificial, no qual examina o desenvolvimento da Inteligncia Artificial. Com respeito ao desenvolvimento dos primeiros trabalhos, diz Dreyfus: Todos os trabalhos tinham em comum um inicio auspicioso, para, em seguida, esbarrar em dificuldades intransponveis. No era difcil construir um programa que realizasse certa tarefa; mas parecia impossvel fazer o programa realiz-la bem, isto , torn-lo competitivo, em termos de qualidade, com o ser humano. Em virtude desses fatos, Dreyfus conclui que os pesquisadores em IA baseavam, implicitamente, seus trabalhos, em quatro pressupostos falsos: Pressuposto biolgico: o crebro pode ser modelado por um computador digital.

O crebro humano possui, pelo menos, 106 vezes mais conexes do que qualquer computador; alem disso, o processamento do crebro apresenta certas caractersticas (diversidade, simultaneidade, interatividade) que os computadores no possuem. Pressuposto psicolgico: a mente pode ser simulada por um programa.

Esse pressuposto fica claro em algumas afirmaes da poca: Em 10 anos, as teorias psicolgicas assumiro a forma de um programa de computador (Simon, 1957); A tarefa de um psiclogo que tenta compreender a cognio humana anloga de algum que tenta descobrir como um computador foi programado (Neisser, 1959). No sabemos o suficiente sobre a mente humana para decidir se pode ou no ser simulada por um programa, mas tudo indica que no. Pressuposto epistemolgico: todo conhecimento pode ser formalizado.

O conhecimento cientfico certamente pode ser formalizado, mas o conhecimento comum, no. O exemplo mais claro o da linguagem: possvel (e simples) ao ser humano compreender uma frase em que uma regra gramatical foi infringida, mas impossvel programar um computador para que compreenda infrao de regras (seria necessrio incluir regras gramaticais, meta-regras, meta-metaregras, e assim por diante).

Pressuposto ontolgico: existem tomos de conhecimento.

Em outras palavras, tudo que essencial para o comportamento inteligente, deve, em princpio, poder ser expresso em termos de um conjunto de elementos independentes os tomos de conhecimento. Se esses tomos de conhecimento existissem, todo comportamento humano poderia ser precisamente descrito, o que, pelo menos at hoje, se revelou impossvel. Alm disso, Dreyfus estabeleceu quatro tipos de processamento humano que resiste formalizao, e que inviabiliza todo programa que tem por objetivo sua simulao. So eles: Conscincia marginal

Dreyfus chamou de conscincia marginal um tipo de processamento secundrio do crebro humano, e que as pessoas raramente se do conta; eis alguns exemplos: o tique taque de um relgio, que s percebido quando pra; a percepo de um rosto conhecido na multido, mesmo quando no est sendo procurado. Tolerncia ambigidade

O ser humano utiliza o contexto para reduzir a ambigidade, sem que necessite uma formalizao; por exemplo, reconhecimento de escrita cursiva, compreenso de frases como ele segue Marx, ou o trem saltou da linha, ou, ainda, fique perto de mim. Discriminao essencial / no essencial

Na resoluo de um problema, o ser humano descarta imediatamente o conhecimento no essencial (por exemplo, em um diagnstico mdico, o nome do paciente). Decidir o que no essencial extremamente difcil de formalizar. Reconhecimento de similaridades

possvel reconhecer um amigo na rua, mesmo que no o vejamos h muito tempo. Seu rosto, embora diferente, apresenta certa similaridade com o que conhecemos. No possvel formalizar esse conceito de similaridade. 4. Uma classificao das atividades inteligentes Em sua obra, Dreyfus prope uma classificao das atividades do pensamento, em quatro reas, de acordo com a maior ou menor utilizao de inteligncia, e os procedimentos computacionais adequados para sua soluo; em sua argumentao, a ltima rea seria inacessvel ao processamento artificial. rea I Comportamento associativo elementar onde o significado e o contexto so irrelevantes. Exemplos: jogos de memria associativa; jogos resolvveis por tentativa e erro; dicionrio mecnico; Soluo: busca em tabelas, rvores de deciso.

rea II Comportamentos formais simples onde os significados so completamente explcitos e independentes do contexto. Exemplos jogos computveis ou quase computveis (jogo da velha, jogo de damas); problemas combinatrios simples (problema do labirinto); prova de teoremas utilizando procedimentos mecnicos (lgica formal); reconhecimento de configuraes rgidas simples (leitura de pgina impressa); Soluo: procedimentos exaustivos de busca. rea III Comportamentos formais complexos onde os significados no so totalmente explcitos nem totalmente independentes do contexto. Exemplos: jogos incomputveis (xadrez); problemas combinatrios complexos (planejamento); demonstraes de teoremas que exijam procedimentos no mecnicos, como a intuio; reconhecimento de configuraes complexas (fotografia por satlite); Soluo: busca heurstica. rea IV Comportamentos no formais onde os significados no so explcitos e dependem completamente do contexto. Exemplos: problemas mal definidos (charadas); problemas de estrutura aberta - no so claras as condies relevantes (diagnstico mdico); traduo de linguagem natural; reconhecimento de configuraes variadas e alteradas (fala, escrita cursiva, paisagem natural). Soluo: restringir o problema a uma poro pelo menos parcialmente formalizvel e enquadr-lo na rea III. 5. O ressurgimento da IA A partir da dcada de 80, comearam a aparecer alguns fatores que levaram a uma intensificao das pesquisas e a um ressurgimento da rea de Inteligncia Artificial; em linhas gerais so os seguintes: orientao das pesquisas no sentido de auxiliar (e no substituir) a inteligncia humana; so exemplos as pesquisas em sistemas especialistas, em matemtica semi-automatizada, em gerao de programas, em agentes inteligentes, etc.; desenvolvimento de novas arquiteturas, como o projeto japons de 5a. gerao e as pesquisas em processamento paralelo;

desenvolvimento de novos ambientes de programao, como o de linguagens voltadas para os problemas de IA, principalmente Lisp e Prolog; desenvolvimento de uma nova tecnologia de programao, na qual o conhecimento e o procedimento so considerados separadamente, e tratados de forma independente.

Em virtude desses fatos, a rea de Inteligncia Artificial diversificou-se, abrindo novas reas de pesquisa e desenvolvimento; entre as principais, podemos citar: organizao e representao do conhecimento prova automtica de teoremas raciocnio aproximado sistemas especialistas planejamento processamento de linguagem natural programao automtica reconhecimento de padres aprendizagem compreenso percepo

II.

ESTRATGIAS DE BUSCA

1. Sistemas de Produo Um dos paradigmas mais utilizados na resoluo de problemas de IA, o modelo conhecido como Sistema de Produo; um Sistema de Produo um programa no qual podemos identificar: uma base de dados um conjunto de operadores uma estratgia de controle

e que processado segundo o Algoritmo Bsico: DADOS Base inicial de dados 2. At que DADOS satisfaa condio de trmino, faa: a. Selecione um operador R b. DADOS R (DADOS)
1.

As bases de dados so as diversas configuraes que o problema pode assumir; a base inicial a configurao inicial do problema, e, em geral, existem uma ou mais configuraes s quais se deseja chegar: so as configuraes finais; resolver o problema significa estabelecer o caminho para se chegar a uma dessas configuraes. Os operadores so procedimentos que transformam uma base (ou configurao) de dados em outra; resolver um problema obter a sucesso de operadores que levam da configurao inicial a uma das configuraes finais. Quando existe mais de um operador aplicvel a uma configurao, necessitamos de uma estratgia de controle, ou seja, um processo que nos permita selecionar o operador mais adequado quela situao. Neste algoritmo, condies de trmino pode significar: obteno de uma configurao final impossibilidade de aplicao de operadores exausto de recursos computacionais

O objetivo do algoritmo obter uma configurao final; na primeira condio de trmino, o algoritmo alcana seu objetivo, e dizemos que ele termina com SUCESSO; nas demais, termina com FRACASSO. Este modelo apresenta algumas vantagens e algumas desvantagens sobre os modelos tradicionais de processamento; entre as principais vantagens podemos citar a modularidade (o programa composto de diversas partes, com certo nvel de interdependncia), e a possibilidade de rastrear o raciocnio (o processamento consiste basicamente de aplicao de uma seqncia de operadores; a determinao da forma pela qual o programa escolhe os operadores chamada, por alguns autores, rastreamento do raciocnio)

Entre as desvantagens da utilizao desse modelo, podemos citar: a programao mais complexa (pela necessidade de modularizao; atualmente, o desenvolvimento de ambientes apropriados de programao tende a minimizar esse problema), e o consumo de recursos computacionais (o desenvolvimento de procedimentos mais eficientes e o aumento continuado de potncia das mquinas tendem a diminuir esse problema). 2. Grafos de Estado Os Grafos de Estado so representaes grficas dos Sistemas de Produo, e auxiliam enormemente a compreenso do seu funcionamento. Em termos matemticos, um grafo G = { V, A } um sistema constitudo por um conjunto no vazio V, de elementos chamados vrtices, e de um conjunto A, cujos elementos so pares ordenados de elementos de V, e so chamados arestas. Os grafos possuem uma representao grfica, na qual os vrtices so indicados por pontos, e as arestas so representadas por setas ligando esses pontos. Por exemplo, seja o grafo G constitudo pelo conjunto de vrtices V = {a, b, c} e pelas arestas A = {(a, b), (a, c)}; uma possvel representao grfica seria: b

Grafos de Estado so grafos nos quais cada vrtice representa uma configurao distinta da base de dados, e cada aresta representa a aplicao de um operador, de forma que se o operador R leva da configurao A para a configurao B, a aresta que representa R leva do vrtice que representa A para o vrtice que representa B. Vamos ilustrar com alguns exemplos, iniciando com o Problema dos Jarros dgua Dados dois jarros dgua, A e B, inicialmente vazios, com capacidade para 4 e 3 litros respectivamente, sem marcas intermedirias, determinar como colocar 2 litros dgua no jarro A. Podemos executar sobre os jarros, trs tipos de operaes : encher totalmente um jarro, com a gua de uma torneira; esvaziar totalmente um jarro, lanando fora seu contedo; passar a gua de um jarro para outro.

Em uma possvel representao em grafos de estado, cada vrtice seria constituido por um par ordenado, indicando a quantidade de gua em cada jarro; assim, o par (2, 3) indicaria que o jarro A tem dois litros de gua, enquanto o jarro B possui 3 litros.

Cada aresta, por sua vez, representaria a aplicao de um operador sobre o par ordenado, obtendo outro par ordenado. Por exemplo, o operador R, que representa esvaziar o jarro B, quando aplicado sobre o vrtice (2, 3), produziria o vrtice (2, 0). Como podemos executar trs operaes sobre cada jarro, podemos identificar seis operadores: R1 encher o jarro A, com a gua da torneira; R2 encher o jarro B, com a gua da torneira; R3 esvaziar o jarro A, lanando fora sua gua; R4 esvaziar o jarro B, lanando fora sua gua; R5 passar a gua do jarro A para o jarro B; R6 passar a gua do jarro B para o jarro A. Como os jarros esto inicialmente vazios, a base inicial de dados constituda pelo par ordenado (0,0); como o problema consiste em como colocar 2 litros de gua no jarro A, sem exigncia sobre a quantidade de gua no jarro B, a condio de trmino se torna obter um par ordenado no qual a primeira ordenada 2; por exemplo, (2, 0), (2, 1), (2, 2) ou (2, 3). Representamos, abaixo, um trecho do grafo de estados do problema: R1 R1 R3 (4,0) R6 R5 (1,3) R1 R1 R2 R3 (0,3) R3 R2 (4,3) R4

(3,0) R6

R3

(0,0) R4

R5

Jogo dos 8 O Jogo dos 8 foi inventado em meados do sculo XIX, e consistia de uma pequena caixa retangular de madeira, na qual 8 peas eram dispostas em forma de matriz 3 x 3. A falta de uma pea permitia que as peas adjacentes pudessem deslizar, alterando a configurao da matriz. Esse jogo fez enorme sucesso em todo o mundo, em particular porque os fabricantes costumavam oferecer vultosos prmios para quem obtivesse determinadas configuraes. Mais tarde, os matemticos puderam determinar quais configuraes eram acessveis, a partir da configurao inicial, e os prmios perderam o interesse, pois as configuraes premiadas nunca eram acessveis. Em termos matemticos, o Jogo dos 8 pode ser representado por uma matriz 3 x 3, com os elementos numerados de 0 (representando a casa vazia) a 8, na qual podemos permutar a posio de elemento 0 com um elemento adjacente. Dada uma configurao inicial e uma configurao final, o problema consiste em obter a seqncia de movimentos do elemento 0 que permita passar da configurao inicial final.

No grafo de estados, cada vrtice representado por uma matriz 3 x 3, com elementos numerados de 0 a 8, indicando uma configurao do problema; as arestas representam a troca de posio do elemento 0 com um elemento adjacente. Como existem quatro possveis elementos adjacentes, temos os operadores: R1 troca do 0 com elemento acima; R2 troca do 0 com elemento direita; R3 troca do 0 com elemento abaixo; R4 troca do 0 com elemento esquerda. Abaixo, exemplos de configuraes inicial e final, e um trecho do grafo de estados: Configurao inicial Configurao final

4 1 3 7 2 5 8 0 6

1 2 3 4 5 6 7 8 0

Um trecho do grafo de estados:

4 1 3 7 2 5 8 0 6 R3 R1 4 1 3 7 0 5 8 2 6 R4 R2 4 1 3 0 7 5 8 2 6 R4 4 1 3 7 5 0 8 2 6 R4 R2

R2

R4 4 1 3 7 2 5 0 8 6
R3

R3

R2

4 1 3 7 2 5 8 6 0
R3

R1 4 0 3 7 1 5 8 2 6

R1 4 1 3 0 2 5 7 8 6

R1 4 1 3 7 2 0 8 6 5

Problema do Labirinto Dado um labirinto, encontrar um caminho entre a Entrada e pelo menos uma Sada.

Saida

Entrada

Como o labirinto constitudo por cmaras e passagens entre as cmaras, podemos, nomeando as cmaras com as letras de A a Z, e representando as ligaes entre as cmaras por linhas ligando as letras, prescindir da estrutura do labirinto, e representar o problema de uma forma mais esquemtica: A B C D E

Na construo do grafo de estados para esse problema, podemos fazer com que cada vrtice represente uma cmara (ou uma letra); a configurao inicial seria Z, e a final, U. Cada aresta, por sua vez, representa uma direo a tomar; observe que as arestas no so direcionadas: uma aresta

entre A e B indica que podemos passar tanto de A para B como de B para A; nesse caso, como em cada posio podemos tomar quatro direes possveis, temos os operadores: R1 acima R2 esquerda R3 abaixo R4 direita Eis um trecho do Grafo de Estados:

R3

R2

T
R1

R1

R4

Y
R4

R4

R1

3. Mtodos de Busca O objetivo do Algoritmo Bsico dos Sistemas de Produo obter uma seqncia de operadores que levem a base de dados, da configurao inicial a uma possvel configurao final. Para isso so necessrias formas sistemticas de percorrer o grafo de estados, chamadas Mtodos de Busca. Esses mtodos, durante seu processamento, constrem sobre o grafo de estados, um outro tipo de grafo, que chamamos rvore de Busca. Uma rvore de busca um subgrafo do grafo de estados, com as seguintes caractersticas: o estado inicial corresponde raiz da rvore; todos os vrtice, exceto a raiz, tm exatamente um pai.

As condies acima exigem que, se durante a construo da rvore, forem obtidos dois vrtices que representem a mesma configurao, apenas um deles permanece na rvore. De um modo geral, podemos classificar os mtodos de busca em dois tipos, conhecidos como mtodos informados e mtodos no informados. Os mtodos no informados atuam unicamente sobre o modelo em grafo de estados; os principais so:

Irrevogvel Backtracking Busca em Largura e em Profundidade Busca Ordenada

Os mtodos informados, por sua vez, atuam sobre o grafo de estados, mas utilizam tambm informaes especficas sobre o problema. Os principais so: BF* A* IDA*

Quando, em um problema, existe um nico caminho do estado inicial a um estado final, ento, resolver o problema encontrar esse caminho; muitas vezes, no entanto, existe mais de um caminho que leva do estado inicial a um final; nesse caso, em geral, existe um caminho que melhor que os outros, em algum sentido. Nesse ltimo caso, temos, portanto, duas instncias de resolver: encontrar uma soluo (um caminho) ou encontrar a soluo tima (o melhor caminho). Nos exemplos dados, nos modelos do Problema dos Jarros dgua, do Jogo dos 8 e do Labirinto, resolver o problema pode significar, apenas, encontrar caminho mais curto para o estado final; esse seria o melhor caminho. 4. Mtodo Irrevogvel o mtodo mais simples de se construir a rvore de busca sobre um grafo de estados: a partir da raiz, e por aplicao sucessiva dos operadores, percorre-se um caminho at que a soluo seja encontrada (SUCESSO) ou at que no se possa mais prosseguir, seja pela impossibilidade de aplicar operadores, seja por exausto dos recursos computacionais (FRACASSO). Veja um fluxograma para o mtodo Irrevogvel na pgina seguinte. A questo da duplicidade de configuraes Nesse mtodo, a rvore de busca se reduz a uma seqncia linear de vrtices; se for produzida uma configurao j alcanada anteriormente, esta desconsiderada, sob pena de o algoritmo repetir o ciclo indefinidamente (entrar em loop); por isso, dizemos que um operador R aplicvel configurao a N quando essa aplicao pode ser realizada, isto , produz alguma configurao, e essa configurao no consta do caminho de S a N. A questo da qualidade da soluo O mtodo Irrevogvel no garante encontrar soluo para o problema; e, quando encontra alguma, no podemos saber se a mais curta ou no.

Mtodo Irrevogvel S Base inicial de Dados N S

S Foi excedido o limite de computao ? N Selecione operador R aplicvel a N

Existe ? S

FRACASSO

N R(N)

N N o objetivo ? S

SUCESSO

5. Backtracking uma modificao do mtodo Irrevogvel; no Irrevogvel, quando no for mais possvel aplicar um operador, o processo pra; no Backtracking, volta-se a um vrtice anterior (o pai, em geral), e tenta-se outro caminho. Desta forma, se houver recursos computacionais suficientes, todo o grafo de estados examinado; por esse motivo, dito um mtodo exaustivo. Se existir algum caminho entre o estado inicial e algum vrtice final, o Baktracking o encontrar. Na pgina seguinte, apresentamos um fluxograma para o mtodo Backtracking. A questo da duplicidade de configuraes Da mesma forma que no mtodo Irrevogvel, no se deve permitir que a configurao obtida pela aplicao do operador R a um vrtice N figure no caminho de S a N. Mas, e se essa configurao j figurar na rvore, mas no no caminho de S a N ? Digamos que, na construo da rvore de busca, foi obtido um vrtice V com configurao X; posteriormente, foi obtido um vrtice T, no descendente de V, com a mesma configurao X. Ora, o Bactracking j explorou todos os caminhos que passam por V, quando de sua incluso na rvore; como a soluo no foi encontrada, conclui-se que a configurao X no leva soluo; por isso, do ponto de vista computacional, intil incluir o vrtice T na rvore. Por outro lado, para evitar a incluso de T na rvore, necessrio manter a rvore permanentemente na memria, o que demanda grande quantidade de espao, e pesquis-la a cada incluso de vrtice, o que demanda grande quantidade de tempo de processamento. Por isso, usual no algoritmo de Backtracking, sempre que se conclui que um vrtice no leva soluo (isto , quando se volta ao pai), exclui-lo da rvore, devolvendo memria o espao por ele utilizado. Dessa forma, quando aplicado um operador ao vrtice N, existe na memria apenas o caminho de S a N. Com esse procedimento, arriscamo-nos a explorar novamente caminhos j explorados, mas esse fato largamente compensado pela economia de memria (no armazenando a rvore) e de tempo de processamento (reduzindo a pesquisa por configuraes repetidas apenas ao caminho de S a N). A questo da qualidade da soluo O Backtracking um algoritmo exaustivo, isto , percorre todo o grafo; portanto, se houver alguma soluo, o Backtracking a encontra. Se houver mais de uma soluo, o algoritmo pra na primeira encontrada e, portanto, pode no garante encontrar a soluo mais curta. 6. Backtracking Iterativo Um algoritmo iterativo de busca um algoritmo que constri a rvore de busca, repetidas vezes, a partir da raiz, ampliando a rvore construda, a cada iterao. Embora os algoritmos iterativos possam parecer, a principio, ineficientes, s vezes so teis, em virtude de suas caractersticas. Um dos algoritmos iterativos mais interessantes o Backtracking Iterativo. Este algoritmo consiste em executar repetidas vezes o Backtracking: na primeira vez, at a profundidade 1; na segunda vez, at a profundidade 2; na terceira vez, at a profundidade 3, e assim por diante, at que na p sima vez, o algoritmo executado at a profundidade p.

Backtracking S Base inicial de Dados N S

Foi excedido o limite de computao ? N S

Nivel de N p ? N

N pai (N)

Selecione operador R aplicvel a N

N pai (N) S No existe e N = S ? N S No existe e N S ? N N R(N) FRACASSO

N o objetivo ? S SUCESSO

fcil perceber que o Backtracking Iterativo percorre a rvore de busca nvel a nvel; dessa forma, encontra a soluo mais curta, parando no vrtice terminal mais prximo da raiz. O espao de memria requerido pelo Backtracking Iterativo o mesmo que para o Backtracking comum enquanto que o tempo de processamento do algoritmo iterativo claramente maior. No entanto, possvel mostrar que, para problemas muito grandes, os tempos de processamento de ambos os algoritmos convergem para o mesmo valor; ento podemos dizer que o tempo de processamento, em ambos os casos, tema a mesma ordem de grandeza. 7. Busca em Largura e em Profundidade Nos mtodos Irrevogvel e Backtracking, apenas um filho de cada vrtice gerado por vez; nos mtodos de busca em Largura e em Profundidade, todos os filhos de cada vrtice so gerados de uma vez e colocados na rvore. Por esse motivo, podemos distinguir, na rvore de busca, dois tipos de vrtices: ABERTOS, isto , vrtices instalados na rvore, mas cujos filhos ainda no foram obtidos, e FECHADOS, isto , vrtices instalados na rvore, cujos filhos tambm esto instalados na rvore. Os mtodos de busca em Largura e em Profundidade esto apresentados no fluxograma da pgina seguinte, chamado rvore de Busca. O algoritmo costuma utilizar listas auxiliares, para gerenciar os dois tipos de vrtices, chamadas, respectivamente, Lista de ABERTOS e Lista de FECHADOS. No algoritmo, a expanso da rvore est limitada ao nvel p. No passo Selecione N em ABERTOS e coloque em FECHADOS podemos distinguir duas polticas: Selecionar o vrtice que est h mais tempo na lista nesse caso, a Lista de ABERTOS tem o comportamento de uma fila, e a rvore gerada nvel a nvel; esta a busca em Largura. Selecionar o vrtice instalado mais recentemente na lista nesse caso, a Lista de ABERTOS se comporta como uma pilha, e a rvore gerada lateralmente; esta a Busca em Profundidade. Esse mtodo semelhante ao Backtracking, em termos de tempo de processamento, em memria utilizada, e em qualidade da soluo; por esse motivo muitos autores no o consideram distinto do Backtracking.

A questo da duplicidade de configuraes Normalmente, procuramos obter, com esses algoritmos, a melhor soluo para o problema, se existir alguma; ento, dados dois vrtices que representam o mesmo estado, devemos desprezar aquele que se encontra mais longe da raiz. Portanto, ao gerar um vrtice A cuja configurao j consta em um vrtice B, comparamos as distancias de S a A e de S a B, e desprezamos o mais distante. A questo da qualidade da soluo O algoritmo de busca em Largura tambm exaustivo, e encontra uma soluo, se existir alguma; se existir mais de uma, o algoritmo de busca encontra soluo mais curta, atingindo o vrtice terminal mais prximo da raiz.

Algoritmo rvore de Busca S Base inicial de dados Ponha S em ABERTOS Crie a lista FECHADOS, vazia

ABERTOS = ? N

FRACASSO

Selecione N em ABERTOS e coloque-o em FECHADOS

N o objetivo ? N

SUCESSO

Nivel (N) > p ? N

Gere o conjunto M, de filhos de N. Coloque em ABERTOS aqueles cuja configurao no aparece nem em ABERTOS nem em FECHADOS. Para os demais, decida se devem ser desprezados os antigos ou os agora gerados.

8. Busca Ordenada Muitas vezes, quando modelamos um problema em grafos, necessrio rotular as arestas com valores numricos, que representem um custo para passar de um estado para outro. Considere, por exemplo, o grafo abaixo: nesse grafo, A, B, C, D e E representam cidades em uma regio, e os valores aos lados das arestas representam as distancias ao longo das rodovias entre as cidades. Nosso problema seria encontrar o caminho mais curto entre as cidades A e D. A 4 B 1 2 C

Grafos em que as arestas so associadas a custos so chamados grafos ponderados. Em grafos ponderados, soluo tima a soluo de menor custo, e no soluo mais curta; o algoritmo de rvore de Busca ainda pode ser utilizado para esse problema, mas com algumas modificaes; essas modificaes do origem ao algoritmo de Busca Ordenada. No algoritmo rvore de Busca, temos o seguinte passo: Selecione N em ABERTOS e coloque-o em FECHADOS J vimos que selecionar o mais antigo na lista de ABERTOS produz o que chamamos busca em Largura e que selecionar o mais recente na lista de ABERTOS produz a busca em Profundidade. Propomos agora nova poltica: selecionar o vrtice N em ABERTOS tal que o custo do caminho do vrtice inicial at N seja mnimo. Essa poltica d origem a um mtodo de busca conhecido como busca Ordenada, que tem como objetivo encontrar a soluo de custo mnimo. Para encontrar o vrtice em aberto de custo mnimo, usual estruturar o conjunto de vrtices em aberto como uma lista, organizada de forma crescente dos custos dos caminhos da raiz at o vrtice; nesse caso, o vrtice de custo mnimo seria o cabea da lista.

Das könnte Ihnen auch gefallen