Buscar

Inteligência Artificial e o Teste de Turing

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 37 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 37 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 37 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Unidade 01 
Introdução a Inteligência Artificial, Problemas e Espaço de Problemas 
 
1. CONTEXTUALIZAÇÃO 
 
 A inteligência é uma capacidade que os seres humanos – cuja espécie é 
denominada “Homem Sábio” – possuem influenciados por todos os seus componentes 
ontológicos. Inúmeros autores formalizam o conceito de inteligência de maneiras 
distintas. De acordo com o dicionário Aurélio ‘[Aurélio, 2009], inteligência é a “faculdade 
ou capacidade de aprender, apreender, compreender ou adaptar-se; habilidade mental; 
perspicácia”. Jean Piaget [Piaget, 1982] define como ”aquilo que você usa quando não sabe 
o que fazer” e de acordo com Humberto Maturana [Maturana, 1998] “representa um 
atributo ou propriedade distintiva de alguns organismos”. 
 Formulados alguns conceitos de inteligência, é possível iniciar uma reflexão no 
sentido de quais características um determinado procedimento deve possuir, para ser 
considerado inteligente. Neste contexto, cabe destacar: 
 Aprendizado por experiência; 
 Utilização de conhecimento adquirido por experiência; 
 Capacidade de solucionar problemas mesmo na ausência de alguma informação; 
 Reação imediata perante uma nova situação; 
 Capacidade de determinar o que é relevante e o que não é; 
 Capacidade de raciocínio; 
 Capacidade de entender imagens visuais e processar e manipular símbolos; 
 Tem criatividade e imaginação; 
 Fazer uso de heurísticas, ou seja, saber identificar uma solução como satisfatória 
mesmo que esta não seja a melhor de todas as soluções possíveis. 
 A partir destas características, pode-se levantar o seguinte questionamento: qual a 
possibilidade/dificuldade de se criar sistemas inteligentes? Uma porta que se abre quando 
alguém se aproxima, um carro que avisa quando a porta está aberta ou quando o cinto de 
 
 
Título: Unidade 1 
 
Autora: Profª. M. Sc. Luciana De Nardin 
 
segurança não está colocado ou um computador que joga xadrez podem ser considerados 
procedimentos inteligentes? 
 Partindo deste questionamento a próxima seção introduz o conceito de 
inteligência artificial, suas aplicações e outras informações relevantes. 
 
2. A ÁREA DE INTELIGÊNCIA ARTIFICIAL 
 
 É interessante analisar a metáfora existente no nome inteligência artificial, uma 
vez que “inteligência” é uma capacidade exclusiva e natural do ser humano e, se torna 
contraditório, pensar nessa característica modelada artificialmente. 
 A Tabela 1 ilustra as diferenças no tratamento de determinadas informações entre 
a inteligência natural e artificial, e através destas diferenças percebe-se o quão complexo 
se torna construir sistemas verdadeiramente ou “naturalmente” inteligentes. 
 
 Natural Artificial 
Facilidade em adquirir uma grande quantidade de 
informação externa 
Alto Baixo 
Utilização de sensores para percepção (visão, audição, 
tato, cheiro) 
Alto Baixo 
Capacidade de ser criativo e tem imaginativo Alto Baixo 
Capacidade de aprender por experiência Alto Baixo 
Capacidade de armazenar dados detalhados Baixo Alto 
Capacidade de fazer cálculos complexos Alto Baixo 
Capacidade de adaptação Alto Baixo 
Capacidade de utilização de várias fontes de informação Alto Baixo 
Facilidade na transferência de informação Baixo Alto 
 
Tabela 1 Diferenças no Tratamento da Informação entre Inteligência Natural e Artificial 
 
2.1 Teste de Turing 
 
 Um dos primeiros testes a investigar questões de inteligência de máquina foi 
escrito em 1950 por Alan Turing [Turing, 1950] e foi chamado de Teste de Turing. Em 
sua proposta Turing sugeriu deixar de lado a maneira convencional de avaliar o conceito 
de inteligência, que era utilizando uma longa lista de requisitos mínimos, e propôs um 
teste que medisse o desempenho de uma máquina supostamente inteligente em 
comparação ao desempenho de um ser humano. 
 Este teste recebeu o nome de “jogo de imitação” e foi realizado da seguinte 
maneira: seleciona-se uma máquina “A” a ser avaliada e duas pessoas nomeadas “B” e “C”. 
A entidade C é o interrogador e as entidades A e B são os interrogados. As três entidades 
estão em locais distintos e distantes o suficiente, para que não haja nenhum contato visual, 
e se comunicam por meio de uma interface (computador). A tarefa do interrogador C é 
distinguir o computador (A) do ser humano (B) utilizando como referência apenas as 
respostas fornecidas às suas perguntas através do dispositivo de interface. Se o 
interrogador C não for capaz de distinguir a máquina do ser humano, pode-se considerar 
que a máquina A é inteligente. 
 A Figura 1 ilustra esta situação fisicamente. 
 
 
Figura 1 – Ilustração gráfica do Teste de Turing 
 
 A situação proposta por Turing neste teste assegura que o interrogador não será 
influenciado pela aparência da máquina. Dessa forma, o interrogador está livre para 
perguntar qualquer coisa (direta ou indireta) que contribua para descobrir quem é a 
máquina. 
 Luger [Luger, 2004] sugere dois testes para identificar pontos estratégicos em 
cada uma das entidades. Primeiro, pode-se solicitar que as duas entidades realizem um 
determinado cálculo aritmético bastante complexo, é fato que a máquina será mais rápida 
e com probabilidade de acerto maior do que a do ser humano; em contrapartida, a 
máquina pode perceber que este seja um bom momento de “deixar” de obter a resposta 
correta com o intuito de se parecer com o ser humano. O segundo teste proposto é de 
natureza emocional, pedindo, por exemplo, que ambas as entidades façam uma análise 
sobre um determinado poema ou uma obra de arte, uma vez que esta estratégia irá 
requerer que o computador possua conhecimentos sobre sensações emocionais inerentes 
aos seres humanos. 
 Na próxima seção serão apresentados uma série de problemas que apresentam 
características bastante complexas. Sobre tais problemas serão levantados 
questionamentos que buscam destacar as dificuldades apresentadas por cada uma das 
situações. 
 
2.2 Problemas Encontrados no Desenvolvimento de Aplicações 
 
a) Controle de robôs: como obter navegação segura e eficiente, estabilidade, 
manipulação final e versátil? Como tratar o comportamento dos robôs em 
ambientes dinâmicos e imprevisíveis? Exemplos: HAZBOT (robô para 
ambientes com atmosfera inflamável), robô aspirador etc. 
Como tratar questões referentes à visão, raciocínio, planejamento, controle, 
comunicação e aprendizagem? Exemplo: RoboCup (futebol de robôs). 
b) Jogos e histórias interativas: como modelar o ambiente físico e o 
comportamento/personalidade dos personagens? Como permitir boa 
interação com o usuário? Exemplos: The Sims 3 (2009), Fifa Soccer etc. 
c) Automação de sistemas complexos: como modelar os componentes do 
sistema e lhes dar autonomia? Como assegurar uma boa comunicação e 
coordenação entre esses componentes? 
d) Busca de informações na web: como localizar a informação relevante? 
e) Recomendação de produtos: como fazer recomendações personalizadas de 
produtos? Como modelar os perfis dos compradores? 
f) Personalidades virtuais (verbots): como modelar indivíduos que tenham 
capacidade de conversar e trocar informações com humanos? Exemplo: 
Cybelle (www.cybelle.cjb.net) 
g) Previsão: como prever o valor do dólar ou o clima de amanhã? Quais dados 
são realmente relevantes? Existem comportamentos recorrentes? 
h) Detecção de intrusão e filtragem de spams: como saber se uma mensagem é 
lixo ou se ela realmente interessa? Como saber se um dado comportamento de 
um usuário é suspeito e como lidar com isto? 
i) Sistemas de controle: como brecar o carro sem as rodas deslizarem em 
função da velocidade, atrito etc.? Como focar a câmera fotográfica em função 
da luminosidade, distância etc.? Como ajustar a temperatura da água da 
máquina de lavar em função da quantidade de roupa, fluxo de água etc.? 
http://www.cybelle.cjb.net/
j) Interface: como dar ao usuário a ajuda de que ele realmente precisa? Como 
interagir (e quem sabeaté navegar) com celular sem ter de digitar nada 
(hands-free)? 
 Todos os problemas levantados apresentam as seguintes características em 
comum: 
 Grande complexidade devido ao grande número, a variedade e a natureza das 
tarefas; 
 Não possuem solução algorítmica, mas, tem-se grande conhecimento sobre o 
problema; 
 Envolve a modelagem do comportamento de um ser inteligente que seja capaz 
de aprender, possuir iniciativa etc. 
 Utilizando estes problemas, pode-se visualizar o quão importante é se 
implementar um sistema supostamente inteligente, mesmo que se tenha certa dificuldade 
em pensar em um modelo que seja capaz de se comparar à inteligência dos humanos em 
toda sua amplitude; já que, para se dizer que um programa raciocina como um ser 
humano, é necessário penetrar nos componentes reais que envolvem a inteligência. 
Componentes como vontades, sentimentos, percepções, sensações – fatores que 
influenciam os seres humanos no processo de tomada de decisão. Muitas vezes, se está 
diante de situações que colocam a emoção descrita por Pascal contra a razão defendida 
por Descartes. 
 Sistemas artificialmente inteligentes possuem limitações, mas, também podem 
apresentar inúmeras vantagens. 
 A partir dessas considerações é possível contextualizar formalmente o conceito de 
inteligência artificial, entretanto, vale destacar que cada autor exerce essa tarefa de 
maneira distinta. A Tabela 2 destaca algumas dessas definições. 
 
[Luger & Stubblefield, 1993] 
Ramo da ciência da computação dedicado à automação de 
comportamento inteligente. 
[Nilsson, 1998] 
Conjunto de técnicas para a construção de máquinas “inteligentes” 
capazes de resolver problemas que requerem inteligência humana. 
[Winston, 1992] 
Tecnologia de processamento de informação que envolve processos 
de raciocínio, aprendizado e percepção. 
[Rich & Knight, 1994] 
Área de pesquisa que investiga formas de habilitar o computador a 
realizar tarefas nas quais, até o momento, o ser humano tem um 
melhor desempenho. 
 
Tabela 2 Definição da IA de acordo com alguns autores 
 
2.3 Categorias de IA 
 
 Os sistemas que usam IA podem ser categorizados em quatro grandes grupos. São 
eles: 
a) Sistemas que pensam como humanos: possuem uma abordagem cognitiva e 
tentam expressar a “teoria da mente” em um programa de computador. Nesta 
categoria, a automação das atividades está associada com o pensamento 
humano e não se preocupa em resolver problemas com precisão, mas, procura 
simular a forma com que os seres humanos resolvem seus problemas. Como 
exemplos podem-se citar: processo de tomada de decisão, solução de 
problemas e aprendizagem [Simon & Newell, 1961]. 
b) Sistemas que pensam racionalmente: tais sistemas seguem as leis do 
pensamento utilizando silogismos, que são padrões para estruturas de 
argumentos que sempre fornecem conclusões corretas partindo do princípio 
de que as premissas estão corretas. Neste contexto, estão as leis do 
pensamento que dão origem à lógica e que governam a mente. Porém, esse 
modelo apresenta algumas desvantagens tais como: 
- Dificuldade em representar o conhecimento informal em um modelo formal 
como a notação lógica exige; 
- Dificuldade em representar incerteza; 
- Mesmo em problemas descritos por poucos fatos torna-se impraticável para 
resolver problemas. 
c) Sistemas que agem como humanos: o exemplo clássico de sistemas desta 
categoria é o teste de Turing. Neste modelo procura-se fazer com que o 
computador se comporte como um ser humano realizando funções que 
requerem inteligência quando realizadas por pessoas conforme visto 
anteriormente na seção 2.1. 
d) Sistemas que agem racionalmente: neste tipo de sistema se encaixam os 
agentes. Um agente é uma entidade que percebe o meio através de sensores e 
age por meio de efetuadores. No entanto, espera-se que um agente não se 
comporte como um mero “programa”, uma vez que deve possuir características 
mais “evoluídas” que simples programas. Entre essas características podemos 
destacar: adaptar-se a mudanças, perceber o ambiente, raciocinar sobre o 
estado atual e o estado esperado, entre outras. 
 
2.4 Áreas de Apoio para a IA 
 
 Inúmeras áreas contribuíram com ideias, pontos de vista e técnicas para a 
fundamentação da IA. A Figura 2 ilustra essas áreas. 
 
 
 
 
 
 
 
 
 
 
 
 
Figura 2 – Áreas de apoio para a IA 
 
2.5 Subáreas da IA 
 
 A Figura 3 mostrada a seguir e extraída de [Souto, 2009] mostra algumas das 
subáreas da IA. 
 
Figura 3 – Subáreas da IA (Fonte: [Souto, 2009]). 
 
 
IA 
Psicologia 
Biologia 
Ciência da 
Computação 
Linguística 
Engenharia 
Filosofia 
Lógica 
Matemática 
 
2.6 Evolução histórica da IA 
 
 No verão de 1956 no decorrer de dois meses, foi realizado em Dartmouth um 
seminário denominado Workshop Dartmouth College que contou com dez participantes de 
todo mundo incluindo representantes de Princeton, IBM e MIT. Deste seminário, o fruto 
mais importante foi um acordo para adotar o nome sugerido por John McCarthy de 
Inteligência Artificial, para nominar a área de pesquisa que tenta construir máquinas 
que funcionem de forma autônoma em ambientes complexos e, muitas vezes, variáveis. 
Nas próximas seções serão descritos os principais acontecimentos históricos na área de IA 
conforme períodos e fatos apresentados em [Russell & Norvig, 2004]. 
 
2.6.1 A gestação da IA (1943-1955) 
 
 O primeiro trabalho reconhecido na área de IA foi um modelo de neurônios 
artificiais realizado por Warren McCulloch e Walter Pitt em 1943. 
 No começo dos anos 50, Marvin Minsky e Dean Edmonds construíram o primeiro 
computador baseado em redes neurais. Ironicamente, posteriormente, Minsky provou 
teoremas importantes que levaram a descrença de redes neurais devido a algumas 
limitações. 
 
2.6.2 O entusiasmo inicial com a IA (1952-1969) 
 
 No início da década de 50, Newell e Simon desenvolveram o General Problem 
Solver (GPS) cujo objetivo era imitar protocolos humanos de resolver problemas. Dessa 
forma, o GPS foi o primeiro modelo a incorporar a abordagem Pensar como Humanos 
descrita anteriormente na seção 2.3. 
 Em 1952, Arthur Samuel escreveu um conjunto de programas que incorporavam o 
princípio do aprendizado para jogar damas e contrariou o que era senso comum na época, 
o fato de que os programas só eram capazes de fazer aquilo para o qual tinham sido 
programados. Um fato interessante percebido foi que os programas rapidamente 
aprendiam a jogar melhor do que seus criadores. 
 Em 1958, no MIT, John McCarthy definiu a linguagem de alto nível LISP que se 
tornaria a linguagem predominante em IA. Depois disso, em 1963 J. A. Robinson descobriu 
o método de resolução (um algoritmo completo para demonstração de teoremas para a 
lógica de primeira ordem), a partir desta descoberta, a linguagem PROLOG estava a 
caminho. 
 Com Marvin Minsky no MIT, as pesquisas na área de redes neurais voltaram a 
florescer. 
 
2.6.3 Uma dose de realidade (1966-1973) 
 
 A principal barreira que muitos projetos de IA encontraram foi o fato de que os 
métodos eram eficientes, para demonstrar um ou dois exemplos simples, e falhavam 
terrivelmente quando foram testados com uma seleção maior de problemas ou problemas 
mais complexos. 
 Outras três dificuldades que podem ser destacadas são: 
 Os primeiros programas tinham pouco ou nenhum conhecimento do assunto 
que eles tratavam e tinham sucesso apenas através de manipulações sintáticas 
muito simples (exemplo: ELIZA em 1965). 
 A intratabilidade de muitos problemas que estavam tentando ser resolvidos 
pela IA (problemas NP - Completos X hardwares mais rápidos). 
 As limitações das estruturas básicas usadas para gerar comportamento 
inteligente. 
 
2.6.4 Sistemas Baseados em Conhecimento: a chave para o poder? (1969-1979) 
 
 O método de resolução de problemas, usado na primeira década na IA, foi o 
mecanismo de busca dopropósito geral que buscava reunir passos básicos de raciocínio 
com o intuito de encontrar soluções completas. Este modelo foi também chamado de 
método fraco, uma vez que usava pouca informação sobre o domínio do problema. 
Porém, apresentava desempenho paupérrimo quando o domínio do problema era mais 
amplo e complexo. 
 Nesta época, Ed Feigenbaum e outros em Stanford começaram a investigar uma 
nova metodologia de sistemas especialistas. Como resultado desta investigação foi 
desenvolvido o DENDRAL (1969) e seu objetivo era inferir a estrutura molecular a partir 
das informações fornecidas através de um espectrômetro de massa. 
 Com o crescimento das aplicações inspiradas no mundo real, cresceu a demanda 
por esquemas de representação de conhecimento alternativos tais como: programação 
lógica e frames. 
 
 
 
2.6.5 A IA se torna comercial (1980-1988) 
 
 Com as pesquisas já voltadas para a área comercial, o primeiro sistema especialista 
que apresentou sucesso comercial se chamava R1 e tinha por função ajudar a configurar 
ordens para novos computadores e, em 1986, seu uso levava a uma economia de cerca de 
40 milhões de dólares/ano. 
 Em 1981, os japoneses anunciaram o projeto “Quinta Geração” cujo objetivo era 
construir computadores inteligentes que rodavam Prolog. O crescimento da indústria de 
IA neste período saiu da casa dos milhões para a casa dos bilhões de dólares. 
 
2.6.6 O retorno das Redes Neurais (de 1986 até a atualidade) 
 
 Após a descrença das redes neurais do início da década de 50, a ciência da 
computação negligenciou o campo das redes neurais, mas as pesquisas continuaram em 
outros campos, especialmente na física. 
 Ao mesmo tempo, algumas desilusões sobre a aplicabilidade de sistemas 
especialistas começaram a surgir. 
 A partir de 1986, novas técnicas surgiram (destacando: algoritmos genéticos e 
sistemas nebulosos) e inúmeras revoluções ocorreram na área de robótica, visão por 
computador, aprendizado de máquina, representação do conhecimento, reconhecimento 
de voz e outros. 
 
2.7 Paradigmas da IA 
 
 Um paradigma pode ser definido como um modelo, uma representação de um 
padrão ou uma referência inicial para estudos e pesquisas; e um paradigma se distingue de 
outro basicamente em três aspectos. São eles: 
 - a forma de adquirir o conhecimento; 
 - a forma de representar o conhecimento: de entrada, de saída e interno; 
 - a forma de raciocinar utilizando esse conhecimento. 
 As pesquisas em IA se dividem em três grandes linhas ou paradigmas. São eles: 
Paradigma Cognitivo ou simbólico, Conexionista ou subsimbólico e Evolucionário. Além 
destes três, podemos utilizar ainda os chamados paradigmas híbridos que são aqueles que 
associam mais de um paradigma dos citados anteriormente. 
 Nas próximas subseções serão descritos cada um deles detalhadamente. 
 
2.7.1 Paradigma Cognitivo ou Simbólico 
 
 Este paradigma se fundamenta na hipótese de que a inteligência é consequência de 
uma manipulação formal de símbolos. Basicamente, se inspira nos processos mentais de 
alto nível, para realizar a representação do conhecimento. Para isso, é preciso: 
 Identificar o conhecimento do domínio; 
 Representá-lo utilizando uma linguagem formal de raciocínio; 
 Implementar um mecanismo de inferência para raciocinar sobre este 
conhecimento e produzir novos. 
 Este paradigma apresenta como principal vantagem a versatilidade; em 
contrapartida, é inadequado para: 
 Raciocínio para execução de ações reflexas (por exemplo: controle dos motores 
efetuadores de um robô); 
 Raciocínio com conhecimento incerto ou que apresente muitos ruídos; 
 Raciocínio que envolva cálculos ou probabilidades. 
 Algumas das técnicas que fazem parte deste paradigma são: a lógica proposicional, 
a lógica de primeira ordem e sistemas baseados em regras. Estas três técnicas serão 
estudadas detalhadamente nas Unidades 05 e 06 desta disciplina. 
 
2.7.2 Paradigma Conexionista ou Sub-Simbólico 
 
 Este paradigma se fundamenta basicamente no funcionamento do cérebro humano 
e tem como princípio que, a partir do momento em que for feito um modelo preciso do 
cérebro humano, este modelo será capaz de reproduzir a inteligência que um cérebro real 
possui. 
 Neste contexto, o conhecimento é representado como padrões de atividades em 
um modelo de rede com pequenas unidades de processamento individual distribuído 
através de conjuntos ou camadas de neurônios. A solução neste paradigma será 
encontrada de maneira paralela, uma vez que todos os neurônios dentro de um conjunto 
ou de uma camada processam suas entradas de maneira simultânea e independente 
[Luger, 2004]. 
 A grande vantagem apresentada por este paradigma é que seus algoritmos 
geralmente são treinados, ao invés de terem que ser pré-programados para todas as 
situações. Entre as tarefas que o paradigma conexionista se mostra adequado [Luger, 
2004] se destacam: 
 Sistemas classificatórios: devem decidir a qual categoria ou grupo pertence um 
determinado valor de entrada; 
 Reconhecimento de padrões: deve identificar uma estrutura ou padrão em um 
conjunto de dados; 
 Predição: deve identificar, por exemplo, a partir de um grupo de sintomas qual 
a doença em potencial; 
 Otimização: deve encontrar a “melhor” solução dado um conjunto de 
restrições; 
 Filtragem de Ruídos: deve identificar e separar o que é realmente sinal do que 
é ruído. 
Para ilustrar o funcionamento de uma rede neural, é fundamental conhecer o 
funcionamento de um neurônio natural e como os neurônios estão interligados formando 
uma rede que é fonte inspiradora para as redes neurais artificiais. 
A Figura 4 ilustra um neurônio natural. 
 
Figura 4 – Neurônio Natural 
 
 No neurônio mostrado na Figura 4 é possível visualizar as sinapses que são o 
ponto de ligação entre dois neurônios. Essa conexão não acontece fisicamente, pois há um 
espaço denominado fenda sináptica, onde ocorre a ação dos neurotransmissores, que são 
substâncias liberada pelos axônios, que por sua vez atravessam a fenda e estimulam os 
receptores pós-sinápticos. Através da ação dos neurotransmissores é que acontece a 
transmissão de um impulso nervoso (ou informação) de um neurônio para outro. 
 Uma rede neural busca representar em modelo de maneira artificial, assim, um 
neurônio artificial padrão está representado na Figura 5. 
 
 
Figura 5 – Neurônio Artificial 
 
 Neste neurônio pode-se destacar: 
 Sinais de entrada (s1, sj, sn): são dados que podem vir do ambiente ou ainda 
da ativação de outros neurônios. Geralmente, as entradas são discretas, do 
conjunto {0,1} ou {-1,1} ou ainda, números reais. 
 Ligações sinápticas (w1i, wji, wni): são as ligações entre os neurônios. Cada 
ligação deve ter associada a ela um valor (peso), que irá representar a sua força de 
conexão, assim, os estímulos de entrada (s1, sj, sn) serão multiplicados pelos 
respectivos pesos da ligação correspondentes de forma a gerar um sinal positivo 
(excitatório) ou negativo (inibitório). 
 Combinador Linear (∑): realiza o somatório dos sinais produzidos através do 
produto entre os pesos sinápticos e as entradas fornecidas ao neurônio. 
 Função de limiar (∫): a saída do neurônio (s(i)) será definida através da 
função de ativação que calcula o estado final do neurônio determinando – quanto o 
nível de ativação do neurônio está acima ou abaixo de um determinado valor. 
Dessa forma, que o objetivo principal desta função é produzir o estado de 
ligado/desligado dos neurônios reais [Luger, 2004]. 
 Uma rede neural artificial possui inúmeros neurônios conectados entre si e 
organizados em camadas. A camada de entrada e a camada de saída mostradas na Figura 6 
são fundamentais. As camadas escondidas ou subcamadas serão definidas de acordo com a 
topologia que estabelece o padrão de conexões entre os neurônios individuais. A Figura 6 
ilustra essas informações. 
 
 
Figura 6 – Modelobásico de uma Rede Neural 
 
2.7.3 Paradigma Evolucionista 
 
 Neste paradigma não há nada de cognitivo para a solução dos problemas. A fonte 
de inspiração é o paradigma neodarwiniano da evolução das espécies. 
 Em seu livro a Origem das Espécies Charles, Darwin faz a seguinte explanação: 
“Que limites podemos impor a este poder, que age durante longas eras e escrutina 
rigidamente toda a constituição, estrutura e hábitos de cada criatura – favorecendo o que 
é bom e rejeitando o que é ruim? Não vejo limites a este poder de adaptar 
vagarosamente e maravilhosamente cada forma às mais complexas relações de vida”. 
 Este é o princípio básico da teoria da evolução das espécies, no qual o paradigma 
evolucionista se inspira e que tem as seguintes características: 
 A diversidade é gerada através de cruzamentos entre indivíduos e mutações 
em indivíduos; 
 Os seres mais adaptados aos seus ambientes sobrevivem através da seleção 
natural das espécies; 
 As características genéticas de tais indivíduos são herdadas pelas próximas 
gerações. 
 
3. SISTEMA DE PRODUÇÃO 
 
 Um sistema de produção de acordo com Nilsson [Nilsson, 1986] é um formalismo 
computacional que tem se provado importante em IA e consiste de três partes: base de 
dados, regras de produção e estratégias de controle. A base de dados deverá conter todas 
as informações de maneira estruturada sobre um determinado problema. O conjunto de 
regras de produção opera sobre a base de dados e são representadas por um par do tipo 
condição-ação. A condição da regra é um padrão que determina quando aquela regra pode 
ser aplicada para um caso específico do problema em questão, e a ação define o passo da 
solução do problema associado [Luger, 2004]. Por fim, têm-se as estratégias de controle 
cujas funções primordiais são: escolher as regras aplicáveis e identificar quando um 
estado meta foi alcançado. 
 Tais partes podem ser representadas pelo esquema gráfico mostrado na Figura 7 
que ilustra como acontece a interação. 
 
Figura 7 – Esquema gráfico de um sistema de produção 
 
 Um exemplo muito simples de um sistema de produção pode ser mostrado 
utilizando o exemplo das Torres de Hanói. O problema das Torres de Hanói consiste em 
uma base com três pinos, em um dos pinos está organizado um conjunto de três discos (ou 
mais) em ordem crescente de diâmetro de cima para baixo como mostrado na Figura 8. O 
problema consiste em passar todos os discos do pino atual para um segundo pino 
qualquer utilizando o terceiro pino como auxiliar no menor número possível de jogadas e 
sem violar as seguintes regras: 
 Um disco maior nunca pode ser colocado sobre um disco menor; 
 Só é permitido mover um disco de cada vez; 
 Um disco deve estar sempre em um dos três pinos ou em movimento. 
 
Figura 8 – Ilustração gráfica do problema das Torres de Hanói 
 
 Conhecendo o problema é possível modelar o sistema de produção da seguinte 
forma: 
 Base de dados (representação): 
 - x representa a lista de discos no pino A 
 - y representa a lista de discos no pino B 
 - z representa a lista de discos no pino C 
 
Estado inicial = (x, y, z) = (123, 0, 0) 
 
 Regras de Produção (representação ótima e sequencial) 
 R1 = mover disco do pino A para o pino C 
 R2 = mover disco do pino A para o pino B 
 R3 = mover disco do pino C para o pino B 
 R4 = mover disco do pino A para o pino C 
 R5 = mover disco do pino B para o pino A 
 R7 = mover disco do pino B para o pino C 
 R8 = mover disco do pino A para o pino C 
 Estratégias de Controle 
 Sucesso = (0, 0, 123) 
Fracasso = (x, y, a), (x, a, z), (a, y, z) com a = vwu ou vw onde v > w, ou seja, 
qualquer situação do tipo (132, 0, 0) onde um disco maior esteja sobre um 
disco menor. 
 
Problema  Como evitar repetição? 
 Como buscar sucesso? Qual a melhor estratégia? 
 
4. CONSIDERAÇÕES SOBRE A BUSCA EM UM ESPAÇO DE ESTADOS 
 
 Um problema em IA pode ser definido em termos de um espaço de estados 
possíveis que inclui um estado inicial e um final que representa o estado objetivo ou meta. 
Por exemplo, se a necessidade é ir de Poços de Caldas a Belo Horizonte, então o estado 
inicial é Poços de Caldas, o estado final é Belo Horizonte, e o espaço de estados será todas 
as cidades da região. 
 Para realizar uma busca em um espaço de estados, é fundamental definir os 
seguintes itens. São eles: 
a) Definição do objetivo: o objetivo no contexto de cada problema é uma 
propriedade abstrata e é representada por um ou mais estados do conjunto de 
estados possíveis. Por exemplo: condição de xeque-mate em um jogo de xadrez 
ou estar em Belo Horizonte; 
b) Aplicação das regras de produção: as regras de produção representam um 
conjunto de ações que permitam passar de um estado para outro. Por exemplo: 
mexer uma peça em um jogo de xadrez ou dirigir de uma cidade até outra; 
c) Identificação da solução: a solução será representada por um caminho 
(sequência de ações) que conduz do estado inicial até o estado final (objetivo); 
d) Espaço de estados: é o conjunto de todos os possíveis estados alcançáveis a 
partir do estado inicial através de qualquer sequência de ações. 
 Utilizando como exemplo o problema do 8-Number Puzzle ilustrado na Figura 9 (a) 
e (b), cujo objetivo é colocar os números em ordem crescente deixando o espaço em 
branco na última posição, é possível definir todos os itens necessários, para que uma 
busca aconteça em um espaço de estados. 
 
4 5 8 
 1 6 
7 2 3 
Figura 9 (a) – Estado inicial do 8-Number Puzzle 
 
1 2 3 
4 5 6 
7 8 
Figura 9 (b) – Estado final do 8-Number Puzzle 
 
 Sendo: 
 Espaço de estados: cada possível configuração do tabuleiro; 
 Estado inicial: qualquer um dos estados possíveis; 
 Estado final: número ordenados com o espaço em branco na posição [3,3]; 
 Regras de produção: mover o espaço em branco (esquerda, direita, para cima 
e para baixo); 
 Custo do caminho: cada passo custa um assim, o custo do caminho é o número 
de passos até encontrar a solução. 
 A partir da definição do sistema de produção para o 8-Number Puzzle é possível 
esquematizar uma árvore de busca mostrada na Figura 10, onde as regras de produção são 
as seguintes: 
a) R1 = mover branco para cima 
b) R2 = mover branco para a direita 
c) R3 = mover branco para baixo 
d) R4 = mover branco para esquerda 
 
Figura 10 – Árvore de busca para o 8-Number Puzzle 
 Observando a Figura 04 é possível perceber que a partir do estado inicial denotado 
como raiz da árvore, três novos estados são possíveis a partir da aplicação das regras R1, 
R2 ou R3. A R4 não pode ser aplicada, pois não é possível realizar o movimento de mover o 
espaço em branco para a esquerda. Se for aplicada a regra R1, uma mudança de 
configuração no tabuleiro acontece e um novo estado é gerado, a partir deste estado é 
possível aplicar as regras R2 ou R3. Dessa forma, espera-se que pelo menos uma solução 
possível seja encontrada em uma das folhas da árvore. 
 
5 ESTRATÉGIAS DE CONTROLE 
 
 Como visto brevemente na seção 3, as estratégias de busca têm como principais 
funções: 
 Selecionar a ordem de aplicação das regras. 
 Registrar qual foi a sequencia de regras aplicadas e o estado associado a cada 
regra. 
 Identificar quando o estado meta foi atingido. 
 Além destas, é também sua responsabilidade sempre apresentar “movimento” 
após a aplicação de uma regra, com isso evitando loopings. 
 De acordo com [Russell & Norvig, 2004], a saída de um algoritmo consiste 
basicamente em uma falha ou sucesso, porém, alguns algoritmos podem ficar em loopings 
infinitos e nunca retornarem uma saída. Dessa forma, são sugeridos quatro aspectos que 
deverão ser analisados para escolha de uma estratégia de controle. São eles: 
1. Completeza: ou seja, o algoritmo oferece garantia de encontrar sempre uma 
solução quando esta existir? 
2. Otimização: a estratégia encontra a solução ótima? Considerando como soluçãoótima aquela que tiver o menor custo de caminho entre todas as soluções. 
3. Complexidade de tempo: quanto tempo o algoritmo leva para encontrar uma 
solução? 
4. Complexidade de espaço: quanta memória é necessária para executar a 
busca? 
Nas próximas seções serão apresentadas algumas estratégias de controle divididas 
em duas categorias: Irrevogáveis e por Tentativa. 
 
5.1 Estratégias de Controle Irrevogáveis 
 
 O exemplo clássico deste tipo de estratégia é o algoritmo Hill Climbing ou Subida da 
Encosta. Este algoritmo é a técnica de busca local mais básica; é baseado no método do 
gradiente (otimização) e utiliza uma função heurística para selecionar as regras. Uma 
regra só será selecionada se produzir um estado na base de dados que gere um valor 
maior ou igual ao valor atual para a função heurística. Ele é repetitivo e se move de forma 
contínua no sentido do valor – isto é, encosta acima e só termina quando alcança um “pico” 
onde nenhum vizinho tenha valor mais alto. Se nenhuma das regras permitir um aumento 
no valor da função, uma regra será selecionada arbitrariamente de forma que também não 
diminua o valor; caso não haja nenhuma regra que possa satisfazer isso, o processo é 
cancelado. 
 Sua característica principal, quando comparado a métodos por tentativa, é o fato 
de não examinar antecipadamente valores de estados além dos vizinhos imediatos ao 
estado atual. De acordo com [Russel & Norvig, 2004], o funcionamento deste algoritmo é 
equivalente a “tentar alcançar o cume do Monte Everest em meio a um nevoeiro denso 
durante uma crise de amnésia”. 
 Este algoritmo é também conhecido como busca gulosa local, uma vez que opta por 
um estado vizinho sem levar em consideração para onde irá depois dele. 
 Com o intuito de auxiliar a compreensão de seu funcionamento, será utilizado um 
problema já citado anteriormente, o 8-Number Puzzle com a diferença que o estado final 
serão os números ordenados, mas, o espaço em branco deverá estar na posição central 
([2,2]). Uma função precisa ser definida para avaliar a regra a ser aplicada, dessa forma, a 
função será representada pelo negativo do número de peças que estejam fora do lugar. 
 A Figura 11 mostra o estado inicial e o estado final (ou estado meta) que deverá ser 
atingido. 
 
Figura 11 – Estado inicial e estado final (ou meta) 
 Para o estado inicial, o valor da função é f= - 4 e representa o negativo das quatro 
peças que estão fora do lugar, sendo elas: 1, 2, 6 e 8. 
 A partir do estado inicial são possíveis os seguintes movimentos: mover branco 
para a esquerda (f = - 5), mover branco para a direita (f = - 5) e mover branco para cima (f 
= - 3). Dessa forma, a única regra que faz com que o valor de f aumente é mover branco 
para cima. A Figura 12 ilustra o novo estado gerado a partir da aplicação da regra. 
 
 
Figura 12 – Novo estado gerado com três peças fora do lugar 
 Considerando o novo estado mostrado na Figura 12 são possíveis os seguintes 
movimentos: mover branco para esquerda (f = - 3), mover branco para cima (f = - 3), 
mover branco para a direita (f = - 4) e mover branco para baixo (f = - 4). Neste ponto, não 
existe nenhuma regra que aumente o valor da função, mas, existem duas regras que 
mantêm o valor da função estável; assim, uma dessas duas regras será aplicada. Se a regra 
escolhida for a que move o espaço em branco para cima, o estado atual será o mostrado na 
Figura 13. 
 
Figura 13 – Novo estado gerado com três peças fora do lugar 
 
 A partir do estado mostrado na Figura 13 são possíveis os seguintes movimentos: 
mover o branco para a esquerda (f = - 2), mover o branco para a direita (f = - 4) e mover 
branco para baixo (f = - 3). Uma vez que movendo o branco para a esquerda a função 
melhora seu valor, este será o movimento escolhido e o novo estado é mostrado na Figura 
14. 
 
Figura 14 – Novo estado gerado com duas peças fora do lugar 
 
 Considerando o estado atual mostrado na Figura 14 são possíveis os seguintes 
movimentos: mover branco para a direita (f = - 3) e mover branco para baixo (f = - 1). Com 
o objetivo de melhorar a função o movimento de mover o branco para baixo é escolhido, e 
o novo estado é mostrado na Figura 15. 
 
Figura 15 – Novo estado gerado com uma peça fora do lugar 
 
 A partir do estado mostrado na Figura 15 três movimentos são possíveis: mover 
branco para cima (f = - 2), mover branco para a direita (f = 0) e mover branco para baixo (f 
= - 2). Dentre as opções disponíveis será escolhido o movimento do branco para a direita, 
com isso, o valor da função atinge zero, ou seja, nenhuma peça está fora do lugar e se 
atinge o estado meta representado anteriormente na Figura 11. 
 A sequência de passos que fizeram com que fosse atingido o estado meta é 
mostrada na Figura 16. 
 
 
Figura 16 – Sequência de passos realizados para atingir o estado meta 
 Apesar do algoritmo Subida da Encosta se mostrar eficiente em algumas situações, 
ele apresenta algumas limitações e pode ficar paralisado pelas seguintes razões: 
 Máximo local: é um estado melhor do que seus vizinhos, porém, pior que o 
máximo global. Os algoritmos de subida da encosta que atingirem a vizinhança 
de um máximo local serão deslocados para cima em direção ao pico, porém, 
depois ficarão estagnados lá sem ter para onde ir; 
 Pico: os picos são uma sequência de máximos locais que torna difícil a 
navegação para este tipo de algoritmo; 
 Platô: é uma área do espaço de estados em que a topologia é plana, ou seja, a 
função de avaliação tem sempre o mesmo valor e não é possível progredir. Um 
algoritmo da subida da encosta pode ser incapaz de encontrar a saída de um 
platô. 
 O sucesso deste tipo de algoritmo depende muito da topologia do espaço de 
estados e, mesmo com métodos eficientes que são usados para minimizar suas limitações, 
a Subida da Encosta (Hill Climbing) pode não se mostrar eficiente. 
 
5.2 Estratégias de Controle por Tentativa 
 Neste tipo de busca é feita uma provisão para aplicação de outras regras, uma vez 
que é uma estratégia de controle por tentativa. Nas estratégias de controle por tentativa 
serão estudados dois tipos: backtracking (ou retrocesso) e a busca em grafo. 
5.2.1 Backtrack 
 Em sua execução uma regra é selecionada e, caso a aplicação desta regra produza 
um estado inadequado ou não permita chegar ao estado meta, ocorre um retrocesso, e 
outra regra é selecionada e aplicada. 
 Em suas características principais podemos destacar o fato de exigir pouco 
conhecimento para a seleção das regras já que podem ser selecionadas de acordo com 
algum esquema arbitrário, porém, é mais eficiente quando a seleção das regras não é 
arbitrária, mas, utiliza alguma informação para a seleção. A chave em sua execução é o fato 
deste ser um procedimento recursivo. 
 O algoritmo base da sua execução é o seguinte: 
 1. Se TERM(DATA) retorne NIL 
 Neste caso, TERM é um predicado verdadeiro para argumentos que satisfazem a 
condição terminal (estado meta) do sistema de produção. Se a terminação for bem 
sucedida, a lista vazia NIL é retornada. 
 2. Se DEADEND(DATA) retorne FAIL 
 DEADEND é um predicado verdadeiro para argumentos que são conhecidos por 
não estar em um caminho que conduza a solução. Nesse caso, o procedimento retorna 
FAIL. 
 3. RULES  APPRULES(DATA) 
 APPRULES é uma função que computa as regras aplicáveis e seus argumentos e os 
ordena de maneira arbitrária ou de acordo com uma função heurística (de forma que a 
melhor solução esteja no topo da lista) 
 4. LOOP: Se NULL (RULES) retorne FAIL 
 Neste ponto, tem início um looping de forma que se não há mais regras a ser 
aplicadas, o algoritmo retorna FAIL. 
 5. R  FIRST (RULES) 
 A melhor das regras aplicáveis é escolhida. 
 6. RULES  TAIL (RULES) 
 A lista de regras aplicáveis é diminuída através da remoção da regra escolhida e 
aplicada no passo 5. 
 7. RDATA  R(DATA) 
 A regra R é aplicada paraproduzir uma nova base de dados. 
 8. PATH  BACKTRACK (RDATA) 
 A função BACKTRACK é chamada recursivamente na nova base de dados. 
 9. Se PATH = FAIL retorne para LOOP 
 Se a chamada recursiva falha, tente outra regra. 
 10. Retorne CONS(R, PATH); 
 Caso contrário, passe a frente a lista bem sucedida de regras, adicionando a regra R 
na frente da lista PATH através do procedimento CONS. 
 Para ilustrar o funcionamento de um algoritmo do tipo Backtrack, a seguir é 
apresentado e resolvido o problema das Quatro Rainhas; é dado um tabuleiro 4 x 4 
posicionar quatro rainhas de forma que nenhuma rainha ataque qualquer outra, sendo 
que uma rainha ataca qualquer rainha situada na mesma linha, mesma coluna ou mesma 
diagonal. 
 O primeiro passo é definir um sistema de produção para o problema. Dessa forma, 
a Figura 17 ilustra o estado inicial que é o tabuleiro vazio. 
 
Figura 17 – Estado inicial do problema das Quatro Rainhas 
 
 As regras de produção serão definidas da seguinte forma: 
 Rij  representam as posições no tabuleiro, sendo que i representa as linhas, j 
representa as colunas e ambos podem variar de 1 a 4. 
 Condição: 
 - Se i = 1, significa que não há nenhuma rainha no tabuleiro. 
 - Se 1 < i <= 4, significa que há rainha na linha (i – 1) 
 Ação: Colocar uma rainha na linha i e coluna j (Rij). Por exemplo, R12 significa 
colocar uma rainha na linha 1 coluna 2. 
 A estratégia de controle utilizada será o backtrack com seleção, sendo que a 
seleção será realizada através de uma função heurística que fará a ordenação pelo número 
característico da diagonal. Neste caso, a cada posição do tabuleiro será associado um 
número que representa o tamanho da maior diagonal conforme pode ser visto na Figura 
18. 
 
4 3 3 4 
3 4 4 3 
3 4 4 3 
4 3 3 4 
 Figura 18 – Tabuleiro com ordenação pelo número característico da diagonal 
 
 Na Figura 18 é possível perceber que a primeira posição do tabuleiro (linha 1 e 
coluna 1) tem associado o número quatro, isso se deve ao fato de sua maior diagonal ter 
quatro casas. Na segunda posição (linha 1 e coluna 2), uma diagonal tem duas casas e a 
outra tem três casas; considerando que será utilizada a maior diagonal, a segunda posição 
do tabuleiro terá o número três. Esse processo se repete até que o tabuleiro esteja 
totalmente preenchido. A seguir, é possível definir a ordem de aplicação das regras 
considerando os números no tabuleiro e a seguinte regra: começando pela primeira linha, 
a primeira regra a ser aplicada é a que tem o menor número, caso existam dois números 
iguais, primeiro será utilizado o mais a esquerda. Dessa forma, a ordem de aplicação das 
regras é mostrada na Tabela 4. 
 
Linha do Tabuleiro Regras 
1 R12, R13, R11, R14 
2 R21, R24, R22, R23 
3 R31, R34, R32, R33 
4 R42, R43, R41, R44 
Tabela 4 – Ordem de aplicação das regras 
 O estado final ou estado meta que se deseja alcançar é o mostrado na Figura 19. 
 
Figura 19 – Estado meta do problema das Quatro Rainhas 
 Definidos: estado inicial, regras de produção, estratégia de controle e estado final, 
pode-se começar a resolver o problema. Utilizando a Tabela 4, a primeira regra a ser 
aplicada será R12, o que significa que a primeira rainha será colocada na linha 1 e coluna 2. 
Executada esta regra, o tabuleiro ficará como mostrado na Figura 20. 
 
Figura 20 – Nova configuração do tabuleiro gerada a partir da aplicação da Regra R12 
 Uma vez que a primeira linha já tem sua rainha, é necessário prosseguir para a 
segunda linha. De acordo com a Tabela 4, a primeira regra a ser aplicada para a segunda 
linha é a R21; depois de aplicada esta regra, o tabuleiro ficará como mostrado na Figura 21. 
 
 Figura 21 – Nova configuração do tabuleiro gerada a partir da aplicação da Regra R21 
 Depois de aplicada a regra R21 é possível perceber que uma das regras básicas do 
problema das Quatro Rainhas é violada!!! Uma vez que uma rainha se encontra na mesma 
diagonal que outra, a rainha da primeira linha será atacada, o que significa que esta regra 
não pode ser aplicada. Com isso, acontece um deadend e um retrocesso (ou backtrack) é 
necessário. Dessa forma, a aplicação da regra anterior é desfeita e uma nova regra será 
aplicada. A próxima regra a ser aplicada de acordo com a Tabela 4 é a R24. Após o 
retrocesso e a aplicação da nova regra, o tabuleiro ficará como mostrado na Figura 22. 
 
 
Figura 22 – Nova configuração do tabuleiro após retrocesso e aplicação da Regra R24 
 Colocada a rainha da linha dois e uma vez que na posição R41 não acontece nenhum 
ataque, deve-se passar para a linha três do tabuleiro. De acordo com a Tabela 01, para a 
terceira linha, a primeira regra a ser aplicada será a R31. Uma vez aplicada R31, o tabuleiro 
ficará como mostrado na Figura 23. 
 
 Figura 23 – Nova configuração do tabuleiro gerada a partir da aplicação da Regra R31 
 Para a quarta linha do tabuleiro, a primeira regra a ser aplicada é R42, e o resultado 
da aplicação desta regra pode ser visto na Figura 24. 
 
Figura 24 – Nova configuração do tabuleiro gerada a partir da aplicação da Regra R42 
 Na Figura 24 é possível perceber que um deadend acontece já que a rainha da 
quarta linha encontra-se na mesma diagonal da rainha da terceira linha. Com isso, é 
necessário um retrocesso (ou backtrack) e uma nova regra deve ser aplicada. De acordo 
com a Tabela 4, a próxima regra a ser aplicada para a quarta linha é a R43 e, após a 
aplicação desta regra, o tabuleiro ficará como mostrado na Figura 25. 
 
Figura 25 – Nova configuração do tabuleiro após retrocesso e aplicação da Regra R43 
 Considerando que a aplicação de R42 não viola nenhuma das regras do problema 
das Quatro Rainhas, conclui-se o preenchimento do tabuleiro; porém, neste ponto é 
fundamental verificar se o estado encontrado é o estado que se deseja. Assim, voltando à 
Figura 19, pode-se perceber que o estado que foi alcançado é realmente o estado desejado. 
 O número de backtracks que aconteceram foi dois, e um resumo da resolução do 
problema das Quatro Rainhas pode ser visto na Figura 26. 
 
Figura 26 – Resumo da resolução do problema das Quatro Rainhas 
 Avaliando a execução descrita passo a passo anteriormente e a Figura 26, é 
possível perceber que para o backtrack: 
 O procedimento termina com sucesso somente se atinge o estado meta 
(condição de terminação sobre DATA); 
 Terminações sem sucesso (deadend) ocorrem nas linhas 2 e 4; 
 No passo 4 o procedimento falha se todas as regras já foram tentadas; 
 O procedimento pode nunca terminar, uma vez que podem acontecer ciclos ou 
recursões infinitas; 
 Limites arbitrários sobre ciclos ou sobre a recursividade podem ser colocados. 
5.2.2 Busca em Grafos 
 A busca em grafos pode ser utilizada quando o espaço de estados puder ser 
representado por meio de um grafo direcionado (árvore). Neste caso: 
 Os nós correspondem às situações do problema; 
 Os arcos correspondem a movimentos válidos que transformam uma situação 
em outra; 
 Um problema será definido por um estado inicial e um estado final; 
 Uma solução do problema corresponde a um caminho no grafo. 
Se o problema for um problema de otimização (seja de maximização ou 
minimização) podem ser associados custos aos arcos. 
Nesta seção serão apresentadas estratégias de busca reunidas sob o título de busca 
sem informação (busca cega) e busca com informação (busca heurística). No primeiro 
caso, as estratégias não têm nenhuma informação adicional sobre os estados, seu papel é 
apenas o de gerar sucessores e saber distinguir um estado objetivo de um não objetivo. No 
segundo caso, as estratégias sabem se um estado não objetivo é “melhor” que outro. A 
diferença básica entre ambas se deve à ordem em que os nós serão visitados. 
 
5.2.2.1 Busca desinformada 
a) Busca em Largura 
 Na busca em largura (ou em extensão) o nós raiz é expandido primeiro, em seguida 
todos os sucessores deste nó raiz sãoexpandidos e, assim, sucessivamente. A Figura 27 
ilustra essa situação e a ordem de visitação dos nós será: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 e, por 
último, o 12. 
 
 
Figura 27 – Busca em Largura 
Cabe destacar que na busca em largura, se houver uma solução, é garantido que 
esta solução será obtida exigindo o menor número de etapas, uma vez que caminhos mais 
longos só serão explorados quando os mais curtos já tiverem sido além, de não correr o 
risco de examinar por longo tempo becos sem saída. Porém, nem sempre esta é a melhor 
estratégia, uma vez que apresenta a desvantagem de ser necessário armazenar todos os 
nós na memória, assim, a complexidade de espaço é igual à complexidade de tempo. 
1º 
2º 
4º 
3º 
A raiz da árvore de busca gera b nós no primeiro nível, b2 nós no segundo nível, b3 
no terceiro nível e assim sucessivamente. Considerando d a profundidade, o número total 
de nós gerados será: 
b + b2 + b3 +.... + bd + (bd+1 – b) = O (bd + 1) 
Em [Russell & Norvig, 2004] temos o seguinte exemplo: considerando um grafo de 
profundidade oito, o tempo necessário para encontrar uma solução seria 
aproximadamente 31 horas ao custo memória de 1 terabyte ou 1024 gigabytes. Caso a 
profundidade aumentasse para 12, seriam necessários 35 anos de processamento e 10 
petabytes (1024 terabytes) de memória. 
Neste contexto, os requisitos de memória são um problema maior para a busca em 
largura do que o tempo de execução, uma vez que esperar 31 horas pela solução de um 
problema é aceitável, porém, poucos computadores têm a memória principal da ordem de 
terabytes necessária. Além disso, problemas de complexidade exponencial não podem ser 
resolvidos por métodos de busca sem informação, exceto as muito pequenas. 
b) Busca em Profundidade 
 Na busca em profundidade o algoritmo começa no nó raiz e expande o nó mais 
profundo na borda atual do grafo. Assim, a busca prossegue imediatamente até o nível 
mais profundo do grafo onde os nós não têm mais sucessores. À medida que esses nós são 
retirados da borda, a busca retorna ao nó seguinte mais raso que ainda tem sucessores a 
serem explorados. A Figura 28 ilustra essa situação. 
 
 
Figura 28 – Busca em Profundidade 
 
 A ordem de visitação dos nós na Figura 28 é 1, 2, 5, 9, 10, 6, 3, 4, 7, 11, 12 e 8. 
1º 
2º 
3º 4º 
5º 
6º 
7º 
A busca em profundidade tem requisitos de memória bem mais modestos que a 
busca em largura, pois só precisa armazenar um único caminho de um nó raiz até um nó 
folha e, uma vez que um nó é expandido, ele pode ser removido da memória, assim que 
todos os seus descendentes tenham sido explorados. Alem disso, tem chances de 
encontrar uma solução sem examinar muito do espaço de busca desde que a solução esteja 
nos primeiros nós e mais profundos. 
c) Estratégia Branch-and-Bound 
 Esta estratégia consiste basicamente em “ramificar e podar”. Ela começa gerando 
caminhos completos e armazenando o menor caminho encontrado até o momento. Assim 
que um caminho em avaliação apresentar um comprimento parcial maior do que o 
caminho total já encontrado essa solução, é deixada de lado, e outra começa a ser 
explorada, pois, se o caminho parcial já é maior que um caminho total encontrado 
anteriormente, com certeza este caminho será pior e não há necessidade de continuar 
explorando-o. Dessa forma, esta estratégia pode garantir o encontro do menor caminho de 
maneira mais eficiente, mas, ainda assim, pode requerer tempo exponencial. 
 O tempo exato que esta estratégia irá economizar depende da ordem em que os 
caminhos são explorados, porém, continua ineficiente para problemas grandes. 
5.2.2.2 Busca com informação (busca heurística) 
 Os métodos vistos nas seções anteriores encontram uma solução para um 
problema partindo de um nó origem até um estado meta. Entretanto, em muitos casos a 
utilização destes métodos se torna impraticável devido ao elevado número de nós que 
devem ser expandidos até que uma solução seja encontrada. Um exemplo clássico desse 
tipo de problema é o Caixeiro Viajante, onde um vendedor tem uma lista de cidades que 
precisa visitar exatamente uma vez. Existem estradas diretas entre cada par de cidades da 
lista, e o objetivo é encontrar a menor rota que o vendedor deverá seguir começando e 
terminando pela mesma cidade, que pode ser qualquer uma da lista. 
 Neste problema é possível perceber a necessidade de explorar todos os caminhos 
possíveis na árvore de busca e retornar o de menor comprimento; porém, quando o 
número de cidades começa a aumentar, ocorre o que se chama de explosão combinatória 
já que o número de soluções diferentes para n cidades é (n-1)!, ou seja, para dez cidades 
teremos 3.628.000 soluções diferentes. 
 Problemas desta natureza, com solução algorítmica conhecida, mas, cuja solução 
demoraria muito tempo para ser encontrada, são categorizados como NP - Completos e, na 
prática, é como se não tivessem solução. 
 Para minimizar este problema, em alguns casos é possível estabelecer alguns 
princípios (ou regras práticas) para ajudar a reduzir a busca. Qualquer técnica utilizada 
para melhorar a busca depende, fundamentalmente, de informações especiais sobre o 
problema, e essas informações são chamadas de informações heurísticas. Uma heurística é 
uma técnica cujo objetivo é melhorar a eficiência de um determinado processo de busca ao 
custo de não assegurar que a solução ótima será encontrada; porém, raramente são 
necessárias soluções ótimas, geralmente, uma boa aproximação é aceitável. Neste 
contexto, a heurística irá apontar para caminhos que podem ser “interessantes” percorrer, 
porém, algumas vezes pode ser considerada inadequada no sentido que pode deixar de 
fora pontos interessantes para outros indivíduos. É importante destacar que funções 
heurísticas são específicas para cada problema. 
 Uma das maiores dificuldades quando se pretende utilizar uma função heurística é 
exatamente como definir uma boa função heurística. Para isso, ela deve ter como 
principal característica ser admissível, ou seja, nunca se deve superestimar o custo real 
da solução. Utilizando como exemplo o problema de encontrar o menor caminho entre 
Poços de Caldas e Belo Horizonte, pode-se considerar que uma função heurística 
admissível é considerar a distância direta entre os pontos, afinal, a menor distância entre 
dois pontos é uma reta. Com isso, é possível avaliar se a função heurística não está nem 
subestimada nem superestimada. 
 Nas próximas seções serão apresentados alguns algoritmos que utilizam 
heurísticas. 
a) Heurística do vizinho mais próximo 
 O funcionamento desta heurística é a cada nó visitado selecionar a melhor 
alternativa localmente superior a cada etapa. Utilizando como exemplo o problema do 
caixeiro viajante aplicado ao mapa mostrado na Figura 29, a lógica de execução do 
algoritmo é: 
1. Selecione arbitrariamente uma cidade inicial; 
2. Para selecionar a próxima cidade, examine todas as cidades que ainda não 
foram visitadas e selecione a que estiver mais perto da cidade atual e vá para 
lá; 
3. Repita o passo até que todas as cidades tenham sido visitadas. 
 
Figura 29: Mapa para simulação do algoritmo do vizinho mais próximo 
 
 Aplicando o passo 1 do algoritmo mostrado anteriormente, deve-se escolher a 
cidade inicial. Supondo que a cidade inicial seja Arad, a partir dela é possível chegar a 
Zerind (distante 75 milhas), Sibiu (distante 140 milhas) e Timisoara (distante 118 milhas). 
Aplicando o passo 2, deve-se escolher a cidade mais próxima da atual (ainda não visitada), 
portanto, a cidade escolhida será Zerind. Esta cidade passa a ser o novo ponto de origem. A 
partir de Zerind, pode-se ir para Oradea (distante 71 milhas) ou voltar para Arad (distante 
75 milhas). Uma vez que Arad já foi visitada, a única escolha possível é Oradea, então, 
segue-se para lá, e esta passa a ser a nova cidade origem. O processo continua até que 
todas as cidadestenham sido visitadas. 
Utilizando este procedimento, o número de possíveis soluções cai de (n-1)! para n2. 
b) Busca pela melhor escolha 
 Esta heurística tenta expandir o nó mais próximo à meta, supondo que isso 
provavelmente levará a uma solução rápida e é bastante semelhante à busca em 
profundidade, por preferir seguir um único caminho até o objetivo, mas, caso encontre um 
beco sem saída, irá retroceder. Além de a execução ser semelhante à busca em 
profundidade, ela tem também as mesmas deficiências – não é ótima nem é completa. 
c) Algoritmo A* 
 O algoritmo A* tem como objetivo minimizar o custo total estimado da solução 
através de uma função de avaliação. Essa função heurística de avaliação é representada 
por: 
f(n) = g(n) + h(n) 
 
 Onde: 
 g(n) é a distância de n ao nó inicial (s); 
 h(n) é a distância estimada de n ao nó final (t). 
 A Figura 30 ilustra essa situação. 
 Figura 30 – Função heurística A* 
 Neste algoritmo é expandido o nó de menor valor de f na fronteira do espaço de 
estados. Assim, se h for admissível f(n) nunca irá superestimar o custo real da melhor 
solução através de n. 
 Para ilustrar o funcionamento do algoritmo A* , será apresentado um exemplo 
proposto por [Russell & Norvig, 2004] cujo objetivo é ir de Arad até Bucareste. A Tabela 5 
apresenta as distâncias em linha reta de cada uma das cidades até Bucareste e a Figura 31 
apresenta o mapa com destaque para o ponto inicial (Arad) e para o ponto final 
(Bucareste). 
Arad 366 Mehadia 241 
Bucareste 0 Neamt 234 
Craiova 160 Oradea 380 
Dobreta 242 Pitesti 100 
Eforie 161 Rimnicu Vilcea 193 
Fagaras 176 Sibiu 253 
Giurgiu 77 Timisoara 329 
Hirsova 151 Urziceni 80 
Iasi 226 Vaslui 199 
Lugoji 244 Zerind 374 
Tabela 5 – Distâncias em linha reta até Bucareste 
 
 
Figura 31 – Espaço de busca entre Arad e Bucareste 
 
 A função heurística será f(n) = g(n) + h(n) , onde g(n) representa a distância da 
cidade n até Arad , e por h(n) que representa a distância em linha reta de n até Bucareste. 
Dessa forma, partindo de Arad podemos ir para Timisoara, Zerind e Sibiu. A expansão 
deste nós ficará como mostrado na Figura 32. 
 
 
Figura 32 – Expansão do nó Arad 
 A cada uma das cidades mostradas na Figura 32 estão associados os custos de 
acordo com a função heurística definida anteriormente. Dessa forma, o algoritmo A* irá 
optar pela menor distância, ou seja, vai escolher se deslocar para Sibiu e irá expandir esse 
nó como mostrado na Figura 33. 
 
Figura 33 – Expansão do nó Sibiu 
 Na Figura 33 é possível perceber que a partir de Sibiu é possível se deslocar para 
Arad, Fagaras, Oradea e Rimnicu. Dentre as possibilidades, a cidade mais próxima é 
Rimnicu, e com isso o próximo nó a ser expandido é Rimnicu. A execução continua desta 
forma até que a cidade Bucareste seja atingida. 
 Algumas considerações devem ser feitas com relação ao algoritmo A*. São elas: 
 A solução encontrada pelo A* é completa e ótima; 
 O comportamento do algoritmo A* é monotônico, ou seja, o custo de cada nó 
gerado no mesmo caminho nunca diminui; 
 O custo de tempo é exponencial de acordo com o tamanho da solução, porém, 
boas funções heurísticas diminuem significativamente esse custo; 
 Com relação a armazenamento de informação é importante destacar que são 
guardados todos os nós expandidos na memória, o que é um problema bem 
mais grave do que o tempo de busca e a complexidade do espaço do A* ainda é 
proibitiva. 
 
6. BIBLIOGRAFIA 
 
[Aurélio, 2009] Dicionário Aurélio. Disponível em: 
<http://www.dicionariodoaurelio.com>. Acesso em: 25 jul 2009. 
 
[Bello, 1995] Bello, J. L. P. A Teoria Básica de Jean Piaget. Vitória, 1995. Disponível em: 
<http://www.pedagogiaemfoco.pro.br/per09.htm>. Acesso em: 03 ago 2009. 
 
[Luger, 2004] Luger, G. F. Inteligência Artificial: estruturas e estratégias para a 
resolução de problemas complexos. Porto Alegre: Bookman, 2004. 774 págs. 
 
[Luger & Stubblefield, 1993] Luger, G. F.; Stubblefield, W. A. Artificial Intelligence: 
Structures and Strategies for Complex Problem Solving. Benjamin/Cummings. Redwood 
City, Califórnia, 2ª Ed., 1993. 
 
[Lustosa & Alvarenga, 2004] Lustosa, V. G.; Alvarenga, R. O Estado da Arte em 
Inteligência Artificial. Revista Digital da CVA-Ricesu. Brasília, 2004. 
 
[Maturana, 1998] Maturana, H. R. Da Biologia à Psicologia. Artmed Editora Ltda, 1998. 
 
[Nilsson, 1998] Nilsson, N. J. Artificial Intelligence: a new synthesis. Morgan Kaufmann, 
1998. 
 
[Piaget, 1982] Piaget, J. O Nascimento da Inteligência na Criança. 4ª Ed., Rio de Janeiro: 
Zahar, 1982. 
 
[Rich & Knight, 1994] Rich, E.; Knight, K. Inteligência Artificial. 2ª Ed., São Paulo: 
McGraw-Hill, 1994. 
 
[Russell & Norvig, 2004] Russell, S.; Norvig, Peter. Inteligência Artificial. 2ª Ed. 2003. 
 
[Simon & Newell, 1961] Simon, H. A.; Newell, A. Computer simulation of human thinking 
and problem solving. Datamation, June/July, 35-37, 1961. 
 
[Souto, 2009] Souto, M. C. P. Introdução à Inteligência Artificial. Notas de Aula. 
DIMAp/UFRN. Disponível em: <http://www.dimap.ufrn.br/~marcilio/IA/IA2004.1/IA-
aula-01-introducao.ppt>. Acesso em: 03 ago 2009. 
 
[Turing, 1950] Computing machinery and intelligente. Mind, 59: págs. 433-460. 
 
[Winston, 1992] Winston, P. H. Artificial Intelligence. MA: Addison-Wesley, 1992.

Continue navegando