Prévia do material em texto
IN
TELIG
ÊN
C
IA
A
RTIFIC
IA
L
RA
ZER A
N
TH
O
M
N
IZER RO
JA
S M
O
N
TA
Ñ
O
Código Logístico
59395
Fundação Biblioteca Nacional
ISBN 978-85-387-6635-3
9 7 8 8 5 3 8 7 6 6 3 5 3
Inteligência Artificial
Razer Anthom Nizer Rojas Montaño
IESDE BRASIL
2021
© 2021 – IESDE BRASIL S/A.
É proibida a reprodução, mesmo parcial, por qualquer processo, sem autorização por escrito do autor e do detentor dos
direitos autorais.
Projeto de capa: IESDE BRASIL S/A.
Imagem da capa:phipatbig/ Carlos Amarillo/ Jemastock/ Jackie Niam/Shutterstock
Todos os direitos reservados.
IESDE BRASIL S/A.
Al. Dr. Carlos de Carvalho, 1.482. CEP: 80730-200
Batel – Curitiba – PR
0800 708 88 88 – www.iesde.com.br
CIP-BRASIL. CATALOGAÇÃO NA PUBLICAÇÃO
SINDICATO NACIONAL DOS EDITORES DE LIVROS, RJ
M765i
Montaño, Razer Anthom Nizer Rojas
Inteligência artificial / Razer Anthom Nizer Rojas Montaño. - 1. ed. -
Curitiba [PR] : IESDE, 2021.
146 p. : il.
Inclui bibliografia
ISBN 978-85-387-6635-3
1. Inteligência artificial. I. Título.
21-68548 CDD: 006.3
CDU: 004.8
Razer Anthom Nizer Rojas
Montaño
Doutor em Ciência da Computação pela Universidade
Federal do Paraná (UFPR) na área de inteligência
computacional. Mestre e bacharel em Informática pela
mesma instituição. Autor de artigos científicos nas áreas
de inteligência artificial e engenharia de software. Tem
experiência em desenvolvimento de software, análise e
projeto de sistemas, inteligência artificial e aprendizado
de máquina. Atua na área de tecnologia da informação
há mais de 25 anos e como docente há mais de 20 anos.
Atualmente, é professor adjunto na UFPR/SEPT, atuando
nos cursos de Tecnologia em Análise e Desenvolvimento
de Sistemas, Especialização em Desenvolvimento Ágil de
Software e Especialização em Inteligência Artificial Aplicada.
Agora é possível acessar os vídeos do livro por
meio de QR codes (códigos de barras) presentes
no início de cada seção de capítulo.
Acesse os vídeos automaticamente, direcionando
a câmera fotográ�ca de seu smartphone ou tablet
para o QR code.
Em alguns dispositivos é necessário ter instalado
um leitor de QR code, que pode ser adquirido
gratuitamente em lojas de aplicativos.
Vídeos
em QR code!
SUMÁRIO
1 Fundamentos de inteligência artificial 9
1.1 O que é inteligência artificial 9
1.2 História da inteligência artificial 14
1.3 Aplicações da inteligência artificial 21
1.4 Questões éticas referentes à inteligência artificial 24
2 Resolução de problemas 33
2.1 Definição de problemas 33
2.2 Busca por soluções 38
2.3 Busca cega 41
2.4 Busca heurística 48
2.5 Busca competitiva: jogos 56
3 Raciocínio lógico e conhecimento 66
3.1 Agentes lógicos 66
3.2 Lógica 71
3.3 Raciocínio baseado em lógica 75
3.4 Planejamento 84
3.5 Representação do conhecimento 89
4 Aprendizado de máquina 95
4.1 Introdução ao aprendizado de máquina 95
4.2 Aprendizado supervisionado 99
4.3 Aprendizado não supervisionado 112
5 Computação evolucionária 122
5.1 Algoritmos genéticos 122
5.2 Métodos de seleção 131
5.3 Operadores genéticos 135
Gabarito 141
APRESENTAÇÃOVídeo
Atualmente, a inteligência artificial (IA) tem um papel importante na
vida de todos, pois está presente em tudo que nos cerca. Em nossos
smartphones, assistentes pessoais usam processamento de linguagem
natural, reconhecimento de padrões e outras técnicas para responder às
nossas demandas. Na área automobilística, desde sistemas multimídias
inteligentes até veículos autônomos já são uma realidade. Na área médica,
é possível contar com a ajuda de aplicações que fazem diagnósticos,
analisando resultados de exames.
Basicamente, a IA tem como objetivo geral a automação do
comportamento inteligente, com fundamentos sólidos na matemática e na
ciência da computação. Aprofundando a discussão, a definição da IA pode
considerar até aspectos de racionalidade e de simulação do comportamento
humano. Seu estudo é muito amplo e pode ser aplicado em praticamente
qualquer área do conhecimento, desde engenharias, passando pelo direito,
até a medicina.
Nesta obra, buscou-se uma abordagem dos aspectos básicos da IA,
apresentando subáreas e conceitos que são o alicerce de toda aplicação
avançada da área. Os capítulos estão organizados de modo a apresentar os
principais conceitos da IA gradualmente.
Inicia-se com uma introdução conceitual e a história da IA, além de
uma discussão ética sobre seu impactos. Então, são apresentados os
conceitos de problemas e soluções, bem como alguns dos aspectos mais
básicos da IA: os algoritmos de busca. A formalização do raciocínio lógico e
a representação do conhecimento são apresentadas na sequência. Depois,
um dos assuntos que mais evoluiu nos últimos anos também é abordado: o
aprendizado de máquina. Por fim, o livro termina explicando a computação
evolucionária, mais especificamente os algoritmos genéticos.
Resumindo, esta obra traz informações básicas sobre os principais
aspectos da inteligência artificial, de maneira progressiva e clara, e se
destina a estudantes tanto de cursos de informática como de outras áreas.
Bons estudos!
Fundamentos de inteligência artificial 9
1
Fundamentos de
inteligência artificial
Quando se fala de inteligência artificial (IA), logo vêm à mente imagens de
ficção científica, como as máquinas dominando o mundo, os robôs humanoides
e a raça humana sendo substituída. Mas IA não tem a ver somente com robôs,
e sim com um conjunto de tecnologias, não tão recentes como se imagina, que
tem como objetivo a construção de máquinas ou softwares com comportamen-
to inteligente.
Desde jogar xadrez até planejar a rota de um veículo espacial, muitas tarefas
simples para os humanos são extremamente complexas para as máquinas. Nos
dias de hoje algumas dessas atividades já estão bem resolvidas, como é o caso
do jogo de xadrez ou damas, ou até mesmo de treinar e reconhecer objetos.
Todos os avanços vieram do desenvolvimento da ciência, descrito neste livro, e
dos dispositivos de hardware.
Ao longo desta obra serão apresentados os mais diversos assuntos relacio-
nados à IA, e será dado um panorama do que é essa área do conhecimento.
Com todo esse repertório teórico, será possível observar que ainda se está
longe da ficção, mas que a tecnologia está avançando a passos largos.
Este capítulo está organizado da seguinte forma: na Seção 1.1 será apresen-
tada uma análise do conceito de inteligência artificial na literatura; na Seção 1.2
serão vistos os marcos históricos da IA; na Seção 1.3 serão mostradas aplica-
ções práticas e teóricas da inteligência artificial; e na Seção 1.4 serão discutidos
aspectos éticos referentes à IA.
Sh
ao
19
/W
ik
im
ed
ia
C
om
m
on
s
1.1 O que é inteligência artificial
Vídeo A inteligência artificial nunca teve tanto destaque na mídia como nos
últimos anos. Essa visibilidade começou com filmes de ficção científi-
ca, que mostravam robôs humanoides inteligentes ou computadores
que tomavam decisões complexas sozinhos e muitas vezes melhor
que um humano. Essa exposição e o grande avanço da área na atua-
lidade dão a entender que a IA é algo mais simples do que realmente
é. Sendo assim, vale uma análise mais aprofundada do assunto.
10 Inteligência Artificial
Segundo Luger (2013), a inteligência artificial é um ramo da ciência da computação
responsável pela automação do comportamento inteligente.
Essa definição traz afirmações e questionamentos interessantes, como o fato
de depositar a IA em um ramo da ciência da computação e de abrir uma discussão
sobre o que é um comportamento inteligente.
Russel e Norvig (2013) apresentam um amplo debate sobre a definição de in-
teligência artificial com base em duas dimensões: processos de pensamento e ra-
ciocínio e processos de comportamento. São também ramificadas em outras duas
abordagens: fidelidade em relação ao comportamento humano e racionalidade.
Elas podem ser dispostas como mostraIn: 19º INTERNATIONAL JOINT
CONFERENCE ON ARTIFICIAL INTELLIGENCE. Anais [...] Edinburgh, jul./ago. 2005. Disponível em: https://
ti.arc.nasa.gov/m/pub-archive/944h/0944%20(Bresina).pdf. Acesso em: 2 dez. 2020.
BYFORD, S. AlphaGo beats Lee Se-dol again to take Google DeepMind Challenge series. The Verge, 12 mar.
2016. Disponível em: https://www.theverge.com/2016/3/12/11210650/alphago-deepmind-go-match-3-
result. Acesso em: 2 dez. 2020.
CADWALLADR, C.; GRAHAM-HARRISON, E. Revealed: 50 million Facebook profiles harvested for Cambridge
Analytica in major data breach. The Guardian, 17 mar. 2018. Disponível em: https://www.theguardian.
com/news/2018/mar/17/cambridge-analytica-facebook-influence-us-election. Acesso em: 2 dez. 2020.
COOK, S. The complexity of theorem-proving procedures. In: 3º ANNUAL ACM SYMPOSIUM ON THEORY
OF COMPUTING . Anais [...] Nova Iorque, maio. 1971.
COSTA, N. et al. Lógica paraconsistente aplicada. São Paulo: Atlas, 1999.
DADA, E. et al. Machine learning for email spam filtering: review, approaches and open research
problems. Heliyon, v. 5, n. 6, jun. 2019. Disponível em: https://www.sciencedirect.com/science/article/pii/
S2405844018353404. Acesso em: 2 dez. 2020.
ESA. Robots in space. ESA – The European Space Agency, 14 jan. 2020. Disponível em: https://www.esa.int/
Enabling_Support/Preparing_for_the_Future/Discovery_and_Preparation/Robots_in_space2. Acesso em: 2
dez. 2020.
EVANS, T. A heuristic program to solve geometric-analogy problems. In: AFIPS ‘64. Anais [...] Nova
Iorque, abr. 1964.
FRIEDBERG, R. A learning machine: part I. IBM Journal of Research & Development, v. 2, n. 1, p. 2-13, jan. 1958.
FRIEDBERG, R.; DUNHAM, B.; NORTH, J. A learning machine: part II. IBM Journal of Research and Development,
v. 3, n. 3, p. 282-287, jul. 1959.
FRUTUOSO, R. et al. Uso de algoritmos de reconhecimento de padrões aplicados ao problema de
câncer de pele do tipo melanoma. In: 11º CONGRESSO BRASILEIRO DE INTELIGÊNCIA COMPUTACIONAL.
Anais [...] Porto de Galinhas, 2013. Disponível em: http://abricom.org.br/wp-content/uploads/2016/03/
bricsccicbic2013_submission_321.pdf. Acesso em: 2 dez. 2020.
GARDNER, H. A nova ciência da mente. São Paulo: Unesp, 1996.
GOODMAN, D.; KEENE, R. Man versus machine: Kasparov versus Deep Blue. Manassas: H3 Publications, 1997.
HARNAD, S. Other bodies, other minds: a machine incarnation of an old philosophical problem. Minds and
Machines, v. 1, p. 43-54, 1991.
HARRISON, J. Floating-point verification using theorem proving. Formal Methods for Hardware Verification,
Berlin, v. 3.965, p. 211-242, 2006.
HART, P.; DUDA, R. PROSPECTOR: a computer-based consultation system for mineral exploration.
International Association for Mathematical Geology, v. 10, n. 5-6, 1977.
HAYS, J.; EFROS, A. Scene completion using millions of photographs. Computer Graphics Proceedings, São
Diego, v. 26, n. 3, 2007.
HOPFIELD, J. Neural networks and physical systems with emergent collective computational abilities.
PNAS – Proceedings of the National Academy of Sciences of the United States of America, v. 79, n. 8,
p. 2.554-2.558, abr. 1982. Disponível em: https://www.pnas.org/content/pnas/79/8/2554.full.pdf. Acesso
em: 2 dez. 2020.
IBM. 704 Data Processing System. IBM, 2020a. Disponível em: https://www.ibm.com/ibm/history/exhibits/
mainframe/mainframe_PP704.html. Acesso em: 3 dez. 2020.
IBM. The IBM PC’s debut: at the beginning. IBM, 2020b. Disponível em: https://www.ibm.com/ibm/history/
Fundamentos de inteligência artificial 31
exhibits/pc25/pc25_intro.html. Acesso em: 2 dez. 2020.
IMAGENET. ImageNet, 2016. Página Inicial. Disponível em: http://image-net.org/. Acesso em: 2 dez. 2020.
IMAGENET. Large scale visual recognition challenge 2012 (ILSVRC2012). ImageNet, 2012. Disponível em:
http://www.image-net.org/challenges/LSVRC/2012/results.html. Acesso em: 2 dez. 2020.
KRIZHEVSKY, A.; SUTSKEVER, I.; HINTON, G. ImageNet classification with deep convolutional neural
networks. Advances in Neural Information Processing Systems 25 (NIPS 2012), 2012. Disponível em: https://
papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf. Acesso
em: 2 dez. 2020.
KURZWEIL, R. The age of intelligent machines. Cambridge: MIT Press, 1990.
LECUN, Y. et al. Gradient-based learning applied to document recognition. Proceedings of the IEEE, v. 86,
n. 11, p. 2.278-2.324, nov. 1998.
LIGHTHILL, J. Artificial intelligence: a general survey. Science Research Council, 1973. Disponível em: http://
www.chilton-computing.org.uk/inf/literature/reports/lighthill_report/p001.htm. Acesso em: 2 dez. 2020.
LIMA, I.; SANTOS, F.; PINHEIRO, C. Inteligência artificial. Rio de Janeiro: Elsevier, 2014.
LUGER, G. Inteligência artificial. 6. ed. São Paulo: Pearson Education do Brasil, 2013.
MCCARTHY, J. Programs with common sense. Symposium on Mechanization of Thought Processes, Teddington,
1958. Disponível em: http://jmc.stanford.edu/articles/mcc59/mcc59.pdf. Acesso em: 2 dez. 2020.
MCCULLOCH, W.; PITTS, W. A logical calculus of the ideas immanent in nervous activity. The bulletin of
mathematical biophysics, v. 5, p. 115-133, 1943.
MIT. MIT Computer Science and Artificial Intelligence Laboratory, 2020. Página inicial. Disponível em:
https://www.csail.mit.edu. Acesso em: 2 dez. 2020.
MONTEIRO, R. et al. Contributions to the study of fake news in portuguese: new corpus and automatic
detection results. In: 13º INTERNATIONAL CONFERENCE ON THE COMPUTATIONAL PROCESSING
OF PORTUGUESE. Anais [...] Canela, jan. 2018. Disponível em: https://sites.icmc.usp.br/taspardo/
PROPOR2018-MonteiroEtAl.pdf. Acesso em: 2 dez. 2020.
MORIMOTO, C. E. Zettabyte (ZB). Hardware.com.br, 25 jun. 2005. Disponível em: https://www.hardware.
com.br/termos/zettabyte-zb. Acesso em: 2 dez. 2020.
NASA. Remote Agent. Nasa, 2020. Disponível em: https://ti.arc.nasa.gov/tech/asr/groups/planning-and-
scheduling/remote-agent/. Acesso em: 2 dez. 2020.
NEWELL, A.; SIMON, H. GPS, a program that simulates human thought. In: BILLING, H. (ed.). Lernende
automaten. Munchen: R. Oldenbourg, 1961.
NGUYEN, T. et al. Deep learning for deepfakes creation and detection: a survey. Computer Vision and Pattern
Recognition, v. 2, 28 jul. 2020. Disponível em: https://arxiv.org/pdf/1909.11573.pdf. Acesso em: 2 dez. 2020.
NILSSON, J. Artificial intelligence: a new syntesis. Burlington: Morgan Kaufmann, 1998.
NOGAROLI, R. Implicações ético-jurídicas da medicina robótica e inteligência artificial nas cirurgias e cuidados
da saúde. In: 9º CONGRESSO BRASILEIRO DE DIREITO MÉDICO. Anais [...] Brasília: CFM, 4-5 set. 2019.
NOGUEIRA, L. Drone de combate vai lutar contra avião tripulado nos EUA. Olhar Digital, 5 jun. 2020.
Disponível em: https://olhardigital.com.br/noticia/drone-de-combate-vai-lutar-contra-aviao-tripulado-
nos-eua/101781. Acesso em: 2 dez. 2020.
PASTOR, M. Data storage is the key to autonomous vehicles’ future. IoT Now, 12 fev. 2019. Disponível
em: https://iotnowtransport.com/2019/02/12/71015-data-storage-key-autonomous-vehicles-future/.
Acesso em: 2 dez. 2020.
PERUZZO, D. et al. Sistema especialista para auxiliar no diagnóstico de depressão. Saúde.com, v. 15, n. 2. 2019.
RADFORD, A. et al. Better language models and their implications. OpenAI, 14 fev. 2019. Disponível em:
https://openai.com/blog/better-language-models/. Acesso em: 2 dez. 2020.
RAJANI, N. et al. Explain yourself! leveraging language models for commonsense reasoning. Proceedings of
the Association for Computational Linguistics (ACL), Florença, v. 1, 6 jun. 2019. Disponível em: https://arxiv.
org/pdf/1906.02361.pdf. Acesso em: 2 dez. 2020.
REZENDE, S. Sistemas inteligentes: fundamentos e aplicações. Barueri: Manole, 2003.
RIDGWAY, A. Deepfakes: the fight against this dangerous use of AI. Science Focus, 12 nov. 2019. Disponível
em: https://www.sciencefocus.com/future-technology/the-fight-against-deepfake/. Acesso em: 2 dez. 2020.
ROBINSON, J. A machine-oriented logic based on the resolution principle. Journalof the ACM, v. 12, n. 1,
p. 23-41, jan. 1965.
ROSENBLATT, F. Principles of neurodynamics. Nova Iorque: Spartan, 1962.
ROSENBLATT, F. The Perceptron: a probabilistic model for information storage and organization in the
brain. Psychological Review, v. 65, n. 6, p. 386-408, 1958.
RUMELHART, D.; HINTON, G.; WILLIAMS, R. Learning representations by back-propagating errors. Nature,
v. 323, p. 533-536, 1986.
RUSSELL, S.; NORVIG, P. Inteligência artificial. 3. ed. Rio de Janeiro: Elsevier, 2013.
SAE INTERNATIONAL. Taxonomy and definitions for terms related to driving automation systems for
32 Inteligência Artificial
on-road motor Vehicles. SAE – Society of Automotive Engineers, 15 jun. 2018. Disponível em: https://www.
sae.org/standards/content/j3016_201806/. Acesso em: 2 dez. 2020.
SALVADOR, S. O mundo esteve à beira da guerra nuclear e foi salvo por Petrov. Diário de Notícias, 26 set.
2018. Disponível em: https://www.dn.pt/mundo/o-mundo-esteve-a-beira-da-guerra-nuclear-e-foi-salvo-
por-petrov-9906827.html. Acesso em: 2 dez. 2020.
SAMUEL, A. Some studies in machine learning using the game of checkers. IBM Journal of Research and
Development, v. 3, n. 3, p. 210-229, 1959.
SCHAEFFER, J. et al. Checkers is solved. Sciencexpress, v. 317, p. 1.518-1.522, jul. 2007.
SEAGATE. Data age 2025. Seagate, 2020. Disponível em: https://www.seagate.com/br/pt/our-story/data-
age-2025/. Acesso em: 2 dez. 2020.
SHORTLIFFE, E. H. Computer-based medical consultations: MYCIN. Amsterdã: Elsevier, 1976.
SPRENGER, P. Sun on privacy: ‘get over it’. Wired, 26 jan. 1999. Disponível em: https://www.wired.
com/1999/01/sun-on-privacy-get-over-it/. Acesso em: 2 dez. 2020.
THE MOONSHOT FACTORY. Brain – Bringing the benefits of AI and machine learning to everyone. X –
The Moonshot Factory, 2019. Disponível em: https://x.company/projects/brain/. Acesso em: 2 dez. 2020.
TOLOSANA, R. et al. DeepFakes and beyond: a survey of face manipulation and fake detection. Information
Fusion, v. 64, p. 131-148, 2020.
TRATOR autônomo da Case IH é a grande atração da Agrishow. Máquinas e Inovações Agrícolas, 4 maio
2017. Disponível em: https://portalmaquinasagricolas.com.br/case-ih-apresenta-seu-trator-autonomo-
sem-cabine-e-sem-operador/. Acesso em: 6 out. 2020.
TRINDADE, R. Como acidente fatal mudou o programa de carros autônomos da Uber. Tilt, 16 nov. 2019.
Disponível em: https://www.uol.com.br/tilt/noticias/redacao/2019/11/16/como-acidente-fatal-mudou-o-
programa-de-carros-autonomos-da-uber.htm. Acesso em: 6 out. 2020.
TURING, A. Computing machinery and intelligence. Mind, v. 59, n. 236, p. 433-460, out. 1950. Disponível
em: https://academic.oup.com/mind/article/LIX/236/433/986238. Acesso em: 6 out. 2020.
UNIÃO EUROPEIA. Projeto de Relatório que contém recomendações à Comissão sobre disposições
de Direito Civil sobre Robótica (2015/2013(INL)). Relatora Mady Delvaux. Publicado em 31 maio 2016.
Disponível em: https://www.europarl.europa.eu/doceo/document/JURI-PR-582443_PT.pdf?redirect.
Acesso em: 30 nov. 2020.
UNIÃO EUROPEIA. Resolução do Parlamento Europeu, de 16 de fevereiro de 2017, com recomendações
à Comissão de Direito Civil sobre Robótica (2015/2103(INL)). Publicado em 16 fev. 2017. Disponível em:
https://www.europarl.europa.eu/doceo/document/TA-8-2017-0051_EN.html?redirect#BKMD-12. Acesso
em: 30 nov. 2020.
US GOVERNEMENT INFORMATION. Public Law 91-121, Statute 83, 1969. Disponível em: https://www.
govinfo.gov/content/pkg/STATUTE-83/pdf/STATUTE-83-Pg204.pdf. Acesso em: 30 nov. 2020.
VELASCO, C.; DOMINGOS, R. O que é um robô na web e como ele pode influenciar o debate nas redes?
Especialistas explicam. G1 Economia, 12 dez. 2017. Disponível em: https://g1.globo.com/economia/
tecnologia/noticia/o-que-e-um-robo-na-web-e-como-ele-pode-influenciar-o-debate-nas-redes-
especialistas-explicam.ghtml. Acesso em: 6 out. 2020.
VINCENT, J. OpenAI has published the text-generating AI it said was too dangerous to share. The Verge,
7 nov. 2019. Disponível em: https://www.theverge.com/2019/11/7/20953040/openai-text-generation-ai-
gpt-2-full-model-release-1-5b-parameters. Acesso em: 6 out. 2020.
VINCENT, J. Twitter taught Microsoft’s AI chatbot to be a racist asshole in less than a day. The Verge, 24
mar. 2016. Disponível em: https://www.theverge.com/2016/3/24/11297050/tay-microsoft-chatbot-racist.
Acesso em: 6 out. 2020.
VINGE, V. The coming technological singularity: how to survive in the post-human era. NASA Lewis Research
Center, Vision 21: Interdisciplinary Science and Engineering in the Era of Cyberspace, 1993.
VINHOLES, T. Conheça o Atobá, o primeiro drone militar fabricado no Brasil. Airway, 31 ago. 2020.
Disponível em: https://www.airway.com.br/empresa-do-rio-de-janeiro-lanca-o-primeiro-drone-militar-
fabricado-no-brasil/. Acesso em: 6 out. 2020.
WAYMO. Waymo, 2020. Página Inicial. Disponível em: https://waymo.com/. Acesso em: 6 out. 2020.
WEIZENBAUM, J. ELIZA – A computer program for the study of natural language communication between
man and machine. Communications of the ACM, v. 9, n. 1, p. 36-45, jan. 1966.
WIDROW, B.; HOFF, M. Adaptive Switching Circuits. IRE WESCON Convention Record, p. 96-104, 1960.
WINSTON, H. Artificial intelligence. 3. ed. Boston: Addison-Wesley, 1992.
ZANELLA, V. Software auxilia diagnóstico virtual de problemas no cultivo de maçã, morango e pêssego.
Embrapa, 28 abr. 2020. Disponível em: https://www.embrapa.br/busca-de-noticias/-/noticia/51743247/
software-auxilia-diagnostico-virtual-de-problemas-no-cultivo-de-maca-morango-e-pessego. Acesso em:
6 out. 2020.
Resolução de problemas 33
2
Resolução de problemas
Um dos aspectos utilizados para determinar se um sistema é ou não inte-
ligente é a sua capacidade de resolver problemas. Assim, definir o que é um
problema, determinar o que pode ser uma solução e escrever algoritmos que
conseguem resolvê-lo são objetos de estudo da IA.
Dessa forma, este capítulo está organizado como descrito a seguir.
Inicialmente, na Seção 2.1, é definido o conceito de problema e de suas
soluções para que, assim, seja possível a definição dos algoritmos de busca
a serem utilizados. Os algoritmos podem ser sem informações adicionais
ou busca informada, assunto que será visto nas Seções 2.2, 2.3 e 2.4, nas
quais serão trabalhadas a busca por soluções, a busca cega e a busca heu-
rística, respectivamente. Já na Seção 2.5, serão apresentados agentes que
possuem objetivos conflituosos, levando à busca competitiva, como ocorre
em jogos de xadrez.
2.1 Definição de problemas
Vídeo Um agente é um elemento que pode perceber seu ambiente por meio de sen-
sores e agir sobre ele por meio de atuadores (RUSSEL; NORVIG, 2013). Exemplos
de sensores no corpo humano são os olhos e ouvidos, e exemplos de atuadores
são as mãos e pernas. Já em um agente robótico, uma câmera que capta imagens
do ambiente pode ser um sensor, e motores que efetuam algum movimento po-
dem ser os atuadores. Um agente de software pode ter entradas de dados como
sensores e a escrita de resultados em arquivos ou em tela como atuadores.
Para implementar a função do agente, que mapeia suas percepções em ações,
projeta-se o programa do agente. Nesta obra, os programas dos agentes são sim-
ples: recebem leituras dos sensores como entrada e devolvem uma ação específica
para os atuadores.
O primeiro impulso de implementação do agente é criar uma tabela em memó-
ria contendo todas as possíveis situações que pode perceber pelos sensores e, para
cada uma delas, indicar a ação a ser tomada. Por exemplo, conside-
rando o número de jogadas possíveis do jogo de xadrez, tem-se 10120,
número conhecido como o número de Shannon.
A quantidade de informação a ser armazenada e consultada é
maior do que a capacidade de qualquer computador, e o tempo de
computação seria maior do que o tempo de vida do universo antes
de perecer por conta da entropia. Assim, um dos grandes objetivos
Curiosidade
O número de Shannon é maior
do que a quantidade estimada
de átomos no universoe maior
do que a quantidade estimada de
nanosegundos que se passaram
desde o Big Bang (LUGER, 2013).
34 Inteligência Artificial
da IA é conseguir escrever programas que não precisem armazenar e consultar ta-
belas de estados, como a citada para o programa de xadrez, e que consigam gerar
um resultado satisfatório e racional.
Nesta seção, assume-se a implementação de agentes racionais, em especial
os agentes de resolução de problemas, que se baseiam em objetivos (RUSSEL;
NORVIG, 2013). Eles se caracterizam por possuírem uma representação do estado
atual do ambiente, isto é, em que situação o agente se encontra, além de uma
informação de objetivo que guia a tomada de decisão sobre ações que podem ser
tomadas. Também são caracterizados por representar o mundo internamente de
modo atômico, ou seja, cada estado é indivisível, sem estrutura interna. Por exem-
plo, o estado atual de um agente que tenta encontrar uma rota de uma cidade a
outra pode representar esse estado como somente o nome da cidade atual.
O processo que procura uma sequência de ações que fazem o agente alcançar seu
objetivo, isto é, que o levam do estado inicial até o estado objetivo, é chamado de busca.
Para a resolução de problemas, primeiramente é preciso definir o que é um
problema, como representá-lo e o que é uma solução para ele. Segundo Russel e
Norvig (2013), um problema pode ser definido por seus cinco componentes:
Tarapong Siri/
sh
utt
ers
toc
k
Estado
inicial:
ponto de
partida.
1
2
3
4
5
Ações possíveis de
serem tomadas:
conjunto de ações que
podem ser tomadas caso
o agente esteja em um
estado s.
Modelo de transição:
descrição do que cada
ação faz; isto é, em um
estado s, aplicando-se a
ação a, o modelo indica
qual é o resultado da
aplicação de a em s.
Teste de objetivo:
determina se um estado s
é o estado objetivo.
Função de custo do
caminho: atribui um custo
numérico a cada caminho,
dependendo do seu objetivo e
da sua definição de eficiência.
Aqui o custo do caminho será
a soma dos custos individuais
para tomar cada ação.
Tome como exemplo um agente que precisa sair da cidade romena de Arad e
chegar à capital, Bucareste. Para isso, ele segue o mapa rodoviário simplificado da
Figura 1. Nesse mapa são apresentadas algumas cidades da Romênia, as estradas
entre cada uma delas e suas respectivas distâncias. Os valores de cada distância
entre cidades são chamados de custos de passo, isto é, o custo de tomar uma
ação estando em um determinado estado. Por exemplo, de acordo com a Figura 1,
estando em Lugoj, o custo de passo para se movimentar para Timisoara é 111 e o
custo de passo para se movimentar para Mehadia é 70.
Resolução de problemas 35
Figura 1
Mapa rodoviário simplificado de algumas cidades da Romênia
Oradea
71
75
118
Zerind
Arad
Timisoara
Lugoj
Mehadia
Dobreta
Craiova
Sibiu Fagaras
Bucareste
Giurgiu
Urziceni
Hirsova
Neamt
Iasi
Vaslui
Eforie
Pitesti
Rimnicu Vilcea
111
70
146
75
120
140
151
99
211
142
92
87
80
101
138
90
85 98
86
Fonte: Adaptada de Russel e Norvig, 2013.
Um espaço de estados é composto do estado inicial, das ações possíveis em
cada estado e do modelo de transição. Em outras palavras, é o conjunto de todos
os estados acessíveis a partir do estado inicial pela aplicação das ações possíveis.
O espaço de estados pode ser definido como um grafo dirigido em que cada vértice
é um estado e cada aresta é a aplicação de uma ação.
A Figura 1 apresenta o espaço de estados de um problema representado por
um grafo não dirigido, mas, levando em consideração que uma estrada pode ser
percorrida em ambos os sentidos, assume-se que cada ligação entre duas cidades
é composta de duas arestas, uma em cada direção.
Um caminho do espaço de estados é uma sequência de estados conectados pela
aplicação de ações. Uma solução para o problema é um caminho, ou uma sequên-
cia de ações, que leva o agente do estado inicial até o estado objetivo. Já uma solução
ótima depende de uma medida de qualidade da solução ou custo de caminho, sen-
do a solução ótima a que possuir o menor custo dentre todas as soluções possíveis.
Dessa forma, o problema de partir de Arad para Bucareste pode ser descrito da
seguinte maneira:
• Estado inicial: em Arad.
• Ações: observando o mapa da Figura 1, consegue-se descobrir as ações possíveis estando em qual-
quer cidade. Por exemplo, em Arad é possível se movimentar para Zerind, Sibiu e Timisoara, que são as
cidades para as quais há estrada.
• Modelo de transição: novamente observando o mapa, consegue-se descrever o modelo para cada
cidade. Por exemplo, estando em Arad e aplicando a ação de se movimentar para Zerind, o estado
resultante do agente é estar em Zerind.
• Teste de objetivo: se a cidade onde o agente estiver for Bucareste, então o teste retorna positivo.
• Custo do caminho: se o agente se movimentou de Arad até Sibiu e depois até Fagaras, o custo do
caminho é a soma de custos de passo para cada movimentação feita, ou seja, a soma das distâncias
entre as cidades, que nesse caso seria 140 + 99 = 239.
36 Inteligência Artificial
Uma solução para esse problema é uma rota partindo de Arad e chegando a
Bucareste.
Deve-se perceber que esse modelo matemático de definição de problemas não
leva em consideração vários aspectos na representação do mundo real; por exemplo,
quando se faz uma viagem de Arad a Bucareste, deve-se considerar aspectos como
clima, paisagem, postos policiais etc. Ademais, várias ações foram omitidas, como
aumentar a velocidade, mudar de faixa, ultrapassar, ligar o rádio, abrir a janela etc.
Esses aspectos omitidos são irrelevantes para o problema de encontrar a rota
solicitada. O ato de remover detalhes não importantes para o problema é conheci-
do como abstração (RUSSEL; NORVIG, 2013).
Com relação aos problemas, pode-se distinguir os problemas do mundo real
dos problemas simplificados. Os problemas do mundo real são aqueles cujas
soluções interessam às pessoas, como rotas em estradas, problema do caixeiro-
-viajante, layout de circuitos eletrônicos, veículos autônomos etc. Em geral, eles
possuem várias representações diferentes. Já os problemas simplificados são
usados para ilustrar e exercitar técnicas de resolução de problemas e costumam
ter uma descrição concisa e exata.
Um exemplo de problema simplificado é o quebra-cabeça de oito peças, que
consiste em um tabuleiro de 3 x 3 com posições numeradas de 1 a 8 e uma posição
vazia. Uma posição adjacente ao quadrado vazio pode ser deslocada para a posição
deste. A Figura 2 apresenta um exemplo de estado inicial e estado objetivo.
Figura 2
Estados inicial e objetivo do quebra-cabeça de oito peças
3 8
4
12
6
7
5
3
1
4
76
2
5
8
Estado inicial Estado objetivo
Fonte: Adaptada de Russel e Norvig, 2013.
O problema do quebra-cabeça de oito peças é definido do seguinte modo:
• Estados: um estado é a descrição das posições das oito peças e do quadrado vazio.
• Estado inicial: qualquer estado pode ser o estado inicial.
• Ações: movimentação do quadrado vazio, que pode ser para esquerda, para direita, para cima ou
para baixo.
• Modelo de transição: dado um estado e uma ação, o modelo devolve o estado resultante. Por
exemplo, no estado inicial da Figura 2, aplicar a ação para direita move o quadrado branco para a
direita trocando de posição com o 4.
• Teste de objetivo: verifica se o estado atual é o estado objetivo da Figura 2. Outros estados objetivo
podem ser definidos.
• Custo do caminho: cada ação ou passo custa valor um, assim o custo do caminho é a quantidade
de passos efetuados.
Resolução de problemas 37
Não há possibilidade de apresentar todo o espaço de estados do problema do
quebra-cabeça de oito peças, pois ele possui 9!/2 = 181.440 estados. Uma variante
contendo 24 peças em um tabuleiro 5 x 5 possui cerca de 1025 estados.
Outro problema conhecido em IA é o problema das oito rainhas. No jogo de
xadrez, a peça conhecida como rainha ataca qualquerposição situada na mesma
linha, coluna ou diagonal. O objetivo é posicionar oito rainhas em um tabuleiro de
xadrez de modo que nenhuma ataque qualquer outra. A Figura 3 apresenta um
tabuleiro possível, mas que não é uma solução, visto que as rainhas no canto su-
perior esquerdo e no canto inferior direito se atacam. No total, para um tabuleiro
8 x 8, tem-se 92 disposições possíveis de oito rainhas que não se atacam. A Figura 4
apresenta uma possível solução.
Figura 3
Tabuleiro do problema das oito rainhas
Fonte: Adaptada de Russel e Norvig, 2013.
Figura 4
Uma possível solução para o problema das oito rainhas
Fonte: Elaborada pelo autor.
A definição do problema é:
• Estados: qualquer disposição de nenhuma até oito rainhas.
• Estado inicial: tabuleiro vazio, sem qualquer rainha.
• Ações: colocar uma rainha em alguma casa vazia.
• Modelo de transição: devolve a rainha adicionada ao quadrado específico.
• Teste de objetivo: verifica se há oito rainhas no tabuleiro e nenhuma se ataca.
• Custo do caminho: irrelevante, pois o interesse é somente a disposição das rainhas no es-
tado objetivo.
Nessa definição do problema, sem qualquer melhoria, pode-se colocar as oito
rainhas em qualquer casa vazia, ou seja, é a combinação de 64 elementos tomados
oito a oito, em um total de 4.426.165.368 possíveis configurações.
Para melhorar a formulação do problema, pode-se proibir o depósito de uma
rainha em uma coluna ou linha em que já haja uma rainha. Isso reduziria o espaço
de estados para 8! = 40.320 possíveis configurações. Reduzindo ainda mais, colo-
ca-se uma rainha em uma casa que já estiver sob ataque (isso inclui as diagonais).
Nessa formulação tem-se um espaço de estados de apenas 2.057 configurações.
Saiba mais
Em análise combinatória,
a combinação de elementos é
dada por C = n!
r! (n–r)!
n
r . Assim,
no problema das oito rainhas
tem-se C = 64!
8! (64–8)!
64
8 =
4.426.165.368 (GERSTING; IÓRIO,
2012).
38 Inteligência Artificial
Para formular o problema dessa maneira, deve-se alterar a definição de estado e
de ações do problema para:
• Estados: qualquer disposição de n rainhas (0 ≤ n ≤ 8), sem que qualquer rainha ataque outra.
• Ações: colocar uma rainha em alguma casa vazia na coluna mais à esquerda, de modo que não seja
atacada por qualquer outra rainha.
A melhoria do espaço de estados de 4.426.165.368 para 2.057 configurações
a serem buscadas pode não parecer significativa, em vista do poder computacio-
nal das máquinas atualmente. Porém, se o problema for estendido para 100 ra-
inhas, tem-se um espaço de estados de aproximadamente 10400 configurações sem
melhorias, portanto intratável. Com as restrições aqui apresentadas, o espaço de
estados diminui para cerca de 1052 estados, que é uma grande melhoria, mas o
problema continua não sendo tratável.
Com os problemas e suas definições aqui apresentadas, percebe-se que, de-
pendendo da maneira com a qual os problemas são definidos e as restrições apli-
cadas, pode haver favorecimento para os algoritmos de busca pela solução. Assim,
abstrair os aspectos importantes do problema e analisar o espaço de estado para
tentar retirar casos infrutíferos (como adicionar uma rainha em uma casa que está
sendo atacada) são tarefas de extrema importância no mapeamento de problemas.
2.2 Busca por soluções
Vídeo Uma solução para os problemas apresentados é uma sequência de ações que
devem ser praticadas para alcançar o objetivo. Os algoritmos de busca devem
considerar ações possíveis a partir de um estado inicial, formando uma árvore de
busca, a qual tem como raiz o estado inicial; os demais nós são outros estados do
espaço, e as arestas que unem os estados são as ações efetuadas.
Considere o mapa apresentado na Figura 1 e o problema de encontrar uma
rota partindo de Arad até Bucareste. O estado inicial de um agente que efetua uma
busca é estar em Arad, que será representado por Em(Arad). O estado objetivo será
representado por Em(Bucareste). A primeira tarefa é verificar se o estado atual é o
estado objetivo. Como não é, deve-se escolher efetuar uma ação entre as disponí-
veis, processo conhecido como expansão do estado atual, que significa gerar mais
estados a partir do atual.
O processo então se inicia no estado Em(Arad), conforme a Figura 5. Os nós e
setas tracejadas indicam estados que ainda não foram gerados.
Resolução de problemas 39
Figura 5
Estado inicial da árvore de busca
Arad
Sibiu
Arad Oradea Arad AradFagaras Rimnicu
Vilcea
Lugoj Oradea
Timisoara Zerind
Fonte: Adaptada de Russel e Norvig, 2013.
No estado Em(Arad), o processo de expansão gera mais três estados filhos,
a saber: Em(Sibiu), Em(Timisoara) e Em(Zerind). O processo de busca deverá esco-
lher entre um desses possíveis estados e deixar os demais para, se necessário,
explorar mais tarde. A Figura 6 apresenta a árvore de busca após a geração dos
filhos de Arad.
Figura 6
Árvore de busca após a geração dos filhos de Arad
Arad
Sibiu
Arad Oradea Arad AradFagaras Rimnicu
Vilcea
Lugoj Oradea
Timisoara Zerind
Fonte: Adaptada de Russel e Norvig, 2013.
Nesse ponto, o agente pode escolher entre várias ações, representadas aqui
como: Ir(Sibiu), Ir(Timisoara) e Ir(Zerind). Na suposição de escolha do agente para ir
a Sibiu, verifica-se que Em(Sibiu) não é o estado objetivo e que, portanto, o estado
deve ser expandido. Nessa expansão são gerados mais quatro estados: Em(Arad),
Em(Fagaras), Em(Oradea) e Em(Rimnicu Vilcea). A árvore parcial resultante pode ser
observada na Figura 7.
Figura 7
Árvore de busca após a escolha de Sibiu
Arad
Sibiu
Arad Oradea Arad AradFagaras Rimnicu
Vilcea
Lugoj Oradea
Timisoara Zerind
Fonte: Adaptada de Russel e Norvig, 2013.
40 Inteligência Artificial
Nesse ponto, o agente pode escolher entre algum desses quatro estados ou
escolher os estados que foram armazenados anteriormente: Em(Timisoara) e
Em(Zerind). Esses seis nós são conhecidos como nós folha, pois não possuem fi-
lhos. O conjunto contendo todos os nós folha disponíveis para escolha (isto é, ex-
pansão) é conhecido como borda. Nas figuras 5, 6 e 7, a borda é representada por
nós com contornos mais fortes, e os nós expandidos estão sombreados.
O processo continua até que o estado objetivo seja encontrado ou que não haja
mais nós a expandir. A maneira com a qual os nós são escolhidos define a estraté-
gia de busca. O Algoritmo 1 apresenta o processo de busca em árvore.
Algoritmo: Busca em Árvore
Dados Recebidos: Problema
Retorno: Uma solução ou falha
1 Inicializar a Borda com o estado inicial
2 REPITA
3 SE Borda está Vazia ENTÃO
4 RETORNAR Falha
5 FIM SE
6 Escolher um nó folha
7 Remover da Borda
8 SE Nó escolhido contém o estado objetivo ENTÃO
9 RETORNAR Solução
10 FIM SE
11 Expandir o nó escolhido
12 Adicionar resultantes na Borda
13 FIM REPITA
Algoritmo 1
Busca em árvore
Fonte: Adaptado de Russel e Norvig, 2013.
Um aspecto importante a ser observado é que na expansão de Sibiu (Figura 7)
aparece novamente Arad. Isso significa que, dependendo da estratégia de busca,
o processo pode ficar preso em um caminho em laço, pois encontrou um estado
repetido. Nesse ponto, a escolha por Arad leva ao estado inicial, depois novamente
a Sibiu, depois a Arad etc.
Para evitar tal situação, deve-se armazenar os estados pelos quais o processo
já passou, melhorando o Algoritmo 1 para armazenar o conjunto explorado, que
contém todos os nós já expandidos. Essa melhoria pode ser vista no Algoritmo 2.
Resolução de problemas 41
Algoritmo: Busca em Grafo
Dados Recebidos: Problema
Retorno: Uma solução ou falha
Inicializar a Borda com o estado inicial
Inicializar o Conjunto Explorado com Vazio
REPITA
SE Borda está Vazia ENTÃO
RETORNAR Falha
FIM SE
Escolher um nó folha
Remover da Borda
SE Nó escolhido contém o estado objetivo ENTÃO
RETORNAR Solução
FIM SE
Adicionar o nó ao Conjunto Explorado
Expandir o nó escolhido
PARA CADA Nó resultante da Expansão FAÇA
SE Nó não está na Borda E nem noConjunto Explorado ENTÃO
Adicionar nó na Borda
FIM SE
FIM PARA
FIM REPITA
Algoritmo 2
Busca em grafo
Fonte: Adaptado de Russel e Norvig, 2013.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Com as verificações, a árvore de busca gerada pelo Algoritmo 2 conterá somen-
te uma cópia de cada estado.
Os demais algoritmos de busca são obtidos com base nos dois algoritmos apre-
sentados anteriormente. Com relação ao passo de escolha de um novo, tem-se
dois tipos de algoritmos: busca cega, ou busca sem informação, quando não se tem
qualquer dado adicional sobre os estados; e busca heurística, ou busca informada,
quando é dado ao algoritmo alguma informação que pode direcionar a escolha por
um estado mais promissor.
2.3 Busca cega
Vídeo Nos algoritmos de busca cega não é dado nenhum tipo de informação sobre
os estados. Assim, são as estratégias de escolha de estados que fazem a distinção
entre cada algoritmo. Nesta seção serão vistos os seguintes algoritmos: busca em
largura, busca de custo uniforme e busca em profundidade.
42 Inteligência Artificial
2.3.1 Busca em largura
A busca em largura (BFS, do inglês Breadth-first Search) tem a estratégia de ex-
pandir todos os nós que estão no mesmo nível. Dessa forma, ela expande o estado
raiz; depois, todos os filhos da raiz; então, expande todos os sucessores desses úl-
timos; e assim por diante. O próximo nó a ser expandido sempre é o menos recen-
temente adicionado à borda. Assim, a busca em largura encontra o caminho mais
raso (isto é, com o menor número de passos) dos nós da borda até a raiz.
A Figura 8 apresenta um esquema de busca em largura em uma árvore simples.
Perceba que, ao expandir o nó A, são gerados B e C. Ao expandir B, são gerados os
nós D e E. Nesse ponto, o próximo nó escolhido é o C, isto é, o menos recentemente
adicionado.
Figura 8
Esquema de busca em largura
A
B
A A A
B B CC CB C
D D D D FF F FE E E E GG G G
Em cada fase, o nó a ser expandido está indicado por uma seta.
Fonte: Adaptada de Russel e Norvig, 2013.
Para conseguir o comportamento de se obter o menos recentemente adicio-
nado, usa-se uma estrutura de dados Fila do tipo FIFO (do inglês First-In, First-Out),
ou seja, o primeiro elemento inserido é o primeiro a ser removido (ZIVIANI, 2010).
Para que uma estrutura de fila possa ser utilizada, são definidas algumas ope-
rações básicas, a saber:
• CRIAR-FILA(): cria uma nova fila vazia.
• VAZIA(Fila): retorna verdadeiro se a fila estiver vazia.
• REMOVER(Fila): remove o elemento da frente da fila e o retorna.
• INSERIR(Fila, x): insere o elemento x no final da fila.
Sempre que um elemento é inserido na fila isso é feito na parte de trás, en-
quanto a remoção é feita na parte da frente. A Figura 9 mostra uma fila com alguns
elementos já inseridos.
Figura 9
Fila Q
Fila Q
Frente
d a f b e
Trás
Fonte: Elaborada pelo autor.
Fila é uma estrutura de dados
baseada em lista linear, em que
todas as operações são feitas nas
extremidades. O início da fila é
chamado de Frente e o final, de
Trás. O seu modelo intuitivo é o
mesmo usado em filas de banco,
aeroportos etc. Uma pessoa que
chega na fila entra na extremidade
de trás e a próxima pessoa que
sai, para ser servida, é a que está
no início (frente). Esse padrão é
seguido na estrutura de dados Fila,
portanto um elemento sempre é
inserido na extremidade de trás
e retirado da extremidade da
frente. Como não há remoção ou
inserção de elementos em outras
posições da fila, duas operações
de manipulação são permitidas:
inserir ou enfileirar e remover ou
desenfileirar (ZIVIANI, 2010).
Saiba mais
Resolução de problemas 43
Ao se inserir o elemento c na Fila Q, ele é colocado na parte de trás, logo após o
elemento e. Com a inserção, a fila fica como mostrado na Figura 10.
Figura 10
Fila Q com a inserção do elemento c
Fila Q
Frente
d a f b e c
Trás
Fonte: Elaborada pelo autor.
Caso haja uma remoção na Fila Q, o elemento a ser removido é sempre o que
se encontra na frente da fila, que no caso é o elemento d. Havendo uma remoção,
a fila fica como mostrado na Figura 11.
Figura 11
Fila Q com a remoção de um elemento
Fila Q
Frente
a f b e c
Trás
Fonte: Elaborada pelo autor.
Para facilitar os algoritmos de busca, assume-se uma função chamada NÓ-FILHO,
que recebe um nó e uma ação como parâmetro e devolve um nó filho resultado da
aplicação da ação no nó passado. Por exemplo, na Figura 6 o estado atual é Em(Arad) e,
a partir dele, tem-se três ações possíveis: Ir(Sibiu), Ir(Timisoara) e Ir(Zerind). Se o agente,
estando em Arad, decide ir a Sibiu, o estado resultante é Em(Sibiu). Este é o objetivo da
função NÓ-FILHO(Nó, Ação): calcular o nó resultante da aplicação de uma ação, e não
efetivamente aplicar a ação, além de calcular o custo do caminho, que será o custo do
nó passado adicionado do custo do passo para aplicar a ação.
O pseudocódigo do algoritmo de busca em largura pode ser visualizado no
Algoritmo 3.
Algoritmo 3
Busca em largura
Algoritmo: Busca em Largura
Dados Recebidos: Problema
Retorno: Uma solução ou falha
Nó ← Estado inicial do problema
Custo-Caminho ← 0
SE Nó é Objetivo ENTÃO
RETORNAR Solução
FIM SE
Borda ← CRIAR-FILA()
INSERIR(Borda, Nó)
Explorado ← ∅
REPITA
SE VAZIA(Borda) ENTÃO
1
2
3
4
5
6
7
8
9
10 (Continua)
44 Inteligência Artificial
RETORNAR Falha
FIM SE
Nó ← REMOVER(Borda)
Explorado ← Explorado ∪ {Nó}
AçõesPossíveis ← Ações possíveis a partir de Nó
PARA CADA Ação ∈ AçõesPossíveis FAÇA
Filho ← NÓ-FILHO(Nó, Ação)
SE Filho não está na Borda E
Filho ∉ Explorado ENTÃO
SE Filho Contém o estado Objetivo ENTÃO
RETORNAR Solução
FIM SE
INSERIR(Borda, Filho)
FIM SE
FIM PARA
FIM REPITA
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Fonte: Adaptado de Russel e Norvig, 2013.
O grande problema do algoritmo de busca em largura é a quantidade de me-
mória utilizada para armazenar as estruturas de dados. Assuma que cada nó gera
b filhos. Sabendo que o nó raiz gera b nós filhos e cada um destes gera também b
nós, tem-se b x b, ou b2, nós na profundidade dois. Cada um deles gerando b nós
resulta em b3 nós na profundidade três. Assim, assumindo um fator de ramificação
b a uma profundidade d, a complexidade de espaço é O(bd).
Assumindo um fator de ramificação de 10 (isto é, a cada expansão são gerados
outros dez nós) e que cada nó precisa de 1.000 bytes para ser armazenado, a pre-
visão de uso de memória da Tabela 1 pode ser esperada.
Tabela 1
Uso de memória da busca em largura
Profundidade Quantidade de nós Memória necessária
2 110 107 KB (kilobytes)
4 11.110 10,6 MB (megabytes)
6 106 1 GB (gigabyte)
8 108 103 GB (gigabytes)
10 1010 10 TB (terabytes)
12 1012 1 PB (petabyte)
14 1014 99 PB (petabytes)
16 1016 10 EB (exabytes)
Fonte: Adaptada de Russel e Norvig, 2013.
Essas estimativas dependem do tipo de problema sendo resolvido, mas proble-
mas com essas características exponenciais não podem ser solucionados em tem-
po/espaço hábil por algoritmos de busca em largura sem que sejam acrescentadas
informações à busca, ou seja, usando-se métodos de busca heurística.
Resolução de problemas 45
2.3.2 Busca de custo uniforme
A busca de custo uniforme é uma extensão da busca em largura, na qual, em vez
de expandir o nó mais raso na borda, expande-se o nó com menor custo de cami-
nho. Esse algoritmo é ótimo para a função de custo do passo, pois sempre encontra
o caminho entre o estado inicial e o objetivo que tiver o menor custo.
A maneira de implementar essa estratégia é substituir a borda por uma fila de
prioridades ordenada pela função de custo. Pela sua característica, essa fila pode
ser usada tanto com altas prioridades quanto com baixas, dependendo da maneira
pela qual os elementos estão ordenados.
Como a remoção ocorre no elemento da frente da fila, se ela estiver ordenada
de maneira decrescente, sempre será removido o elemento que tiver o maior valor
de prioridade. Se a fila estiverordenada de modo crescente, sempre será removido
o elemento com a menor prioridade.
Aqui, a prioridade será representada pelo custo do caminho, portanto é utiliza-
da uma fila de prioridades ordenada crescentemente, para que as remoções sejam
feitas nos elementos que possuírem o menor custo de caminho.
Para utilizar a fila de prioridades no algoritmo e para não haver confusão com a
fila usada na busca em largura, são definidas as seguintes operações:
• CRIAR-FILA-PRIORIDADES(): cria uma nova fila de prioridades vazia.
• VAZIA(Fila): retorna verdadeiro se a fila estiver vazia.
• REMOVER-PRIORIDADES(Fila): remove o elemento da frente da fila, que será o que tem o menor
custo de caminho, e o retorna.
• INSERIR-PRIORIDADES(Fila, x): insere ordenadamente o elemento x na fila, de maneira crescente
pelo custo de caminho.
O Algoritmo 4 apresenta a busca de custo uniforme. Algumas alterações são
feitas em relação à busca em largura. A primeira é que o teste de nó objetivo é feito
quando o nó é selecionado para expansão, pois na primeira vez que um objetivo é
encontrado, ele pode ter um valor abaixo do ótimo. A segunda diferença é a adição
de um teste (Linhas 21 a 24) que verifica se um filho encontrado já está na borda
com um custo de caminho maior do que o recém-gerado. Isso acontece quando um
estado é atingido de dois caminhos diferentes, possuindo, assim, custos diferentes.
Algoritmo 4
Busca de custo uniforme
Algoritmo: Busca de Custo Uniforme
Dados Recebidos: Problema
Retorno: Uma solução ou falha
Nó ← Estado inicial do problema
Custo-Caminho ← 0
Borda ← CRIAR-FILA-PRIORIDADES()
INSERIR-PRIORIDADES(Borda, Nó)
Explorado ← ∅
1
2
3
4
5 (Continua)
Uma fila de prioridades é uma
estrutura de fila com algumas
alterações na inserção e remoção
dos elementos. A remoção é
baseada em uma informação, a
prioridade, isto é, quando é efe-
tuada uma remoção, o elemento
com maior prioridade é retirado da
fila. Uma representação dessa es-
trutura é uma lista ordenada pela
prioridade, na qual a operação de
inserção adiciona o elemento em
sua posição correta em relação à
prioridade, e a operação de remo-
ção retira o primeiro elemento da
fila (ZIVIANI, 2010).
Saiba mais
46 Inteligência Artificial
REPITA
SE VAZIA(Borda) ENTÃO
RETORNAR Falha
FIM SE
Nó ← REMOVER-PRIORIDADES(Borda)
SE Nó é Objetivo ENTÃO
RETORNAR Solução
FIM SE
Explorado ← Explorado ∪ {Nó}
AçõesPossíveis ← Ações possíveis a partir de Nó
PARA CADA Ação ∈ AçõesPossíveis FAÇA
Filho ← NÓ-FILHO(Nó, Ação)
SE Filho não está na Borda E
Filho ∉ Explorado ENTÃO
INSERIR-PRIORIDADES(Borda, Filho)
SENÃO
SE Filho Está na Borda E
O custo de caminho na Borda é maior ENTÃO
Substitui o nó na Borda por Filho
FIM SE
FIM SE
FIM PARA
FIM REPITA
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Fonte: Adaptado de Russel e Norvig, 2013.
Tome como exemplo o mapa da Figura 1. Partindo de Arad, é possível chegar
a Sibiu por dois caminhos (outros são possíveis, mas somente dois são analisados
aqui): Arad → Sibiu, com distância 140; e Arad → Zerind → Oradea → Sibiu, com dis-
tância 297. Assumindo a distância como custo do caminho, se o algoritmo encontra
primeiro o caminho mais longo até Sibiu e depois encontra o caminho mais curto,
deve-se substituir na borda o caminho longo pelo mais curto, a fim de se conseguir
o custo ótimo.
Uma grande diferença em relação à busca em largura, apesar de os algo-
ritmos serem muito parecidos, é que a busca de custo uniforme leva em con-
sideração sempre o custo do caminho, e não a profundidade da árvore ou o
número de passos.
2.3.3 Busca em profundidade
A busca em profundidade (DFS, do inglês Depth-first Search) sempre expande o
nó mais profundo na borda. Isto é, a busca continua sempre no nó que se encontra
no nível mais alto da árvore até que não haja mais sucessores a serem explorados.
A Figura 12 apresenta um exemplo de ordem de escolha dos nós na árvore de bus-
ca nesse tipo de busca. Deve-se perceber que sempre é escolhido o elemento mais
recentemente adicionado na borda.
Resolução de problemas 47
Figura 12
Ordem da escolha dos nós na árvore de busca em uma busca em profundidade
A
B C
D F
H LJ NI MK O
E G
A
B C
D F
H LJ NI MK O
E G
A
B C
D F
H LJ NI MK O
E G
A
B C
D F
H LJ NI MK O
E G
A
B C
D F
LJ NI MK O
E G
A
B C
F
LJ NMK O
E G
A
B C
F
LJ NMK O
E G
A
B C
F
L NMK O
E G
A
C
F
L NM O
G
A
C
F
L NM O
G
A
C
F
L NM O
G
A
C
F
NM O
G
Fonte: Adaptada de Russel e Norvig, 2013.
Uma implementação possível é alterar o algoritmo de busca em largura para
que, na escolha de um nó da borda, em vez de retornar o nó menos recentemente
adicionado (o mais velho), retorne o mais recentemente adicionado (o mais novo).
Essa alteração é feita com a troca da fila FIFO por uma pilha LIFO (do inglês Last-in,
First-out).
Outra implementação possível é feita por meio de uma recursão e, nesse caso,
sem a necessidade de uso da estrutura auxiliar de pilha (RUSSEL; NORVIG, 2013).
A busca em profundidade não é ótima. Considere o exemplo da Figura 12, se o
nó C e o nó K forem nós objetivo, o primeiro a ser retornado é o nó K, mesmo sendo
C o mais raso e possivelmente melhor. Assim, aparentemente, a busca em profun-
didade não possui vantagem alguma em relação à busca em largura.
Se em uma fila a inserção e
remoção são feitas em extremos
diversos (frente e trás), em uma
pilha a inserção e remoção são
realizadas no mesmo extremo,
também conhecido como topo.
Dessa forma, o último elemento
adicionado na fila será o primeiro a
ser removido (ZIVIANI, 2010).
Saiba mais
48 Inteligência Artificial
Contudo, ao se analisar em termos de espaço de armazenamento, percebe-se
que a quantidade de memória necessária é muito menor. O grande motivo para
isso é que não há necessidade de se armazenar em memória os nós expandidos
cujos filhos foram totalmente explorados. É o caso do nó D e seus filhos na Figura
12, quando no sexto passo o algoritmo passa a explorar o nó E.
Dessa forma, em uma árvore de busca com fator de ramificação b e profun-
didade máxima m, a busca em profundidade exige que somente O(bm) sejam
armazenados. Levando em consideração as suposições da Tabela 1, na profundi-
dade 16, uma busca em profundidade exigiria somente 156 kilobytes de memó-
ria, e não 10 exabytes.
Apesar disso, um dos grandes problemas desse tipo de busca é quando o es-
paço de estados é infinito. Basicamente não há limite que leve uma busca em um
ramo a parar de se aprofundar nas expansões. Para resolver essa questão, pode-se
implementar a busca em profundidade limitada. Na prática, estipula-se um valor
de profundidade limitante l e, assim, assume-se que os nós na profundidade l não
possuem sucessores.
Infelizmente, essa estratégia adiciona outro problema. Se o valor de l escolhido
for menor do que a profundidade do objetivo mais raso, então o algoritmo não o
encontra. Percebe-se também que a busca em profundidade é um caso especial da
busca em profundidade limitada quando l = ∞.
Conhecer a profundidade do objetivo pode não ser fácil ou direto, mas é possível
ter uma estimativa ao se analisar o problema. Por exemplo, no mapa da Figura 1,
tem-se 20 cidades, portanto qualquer solução deve ter no máximo comprimento
19. Em uma análise mais profunda do mapa, percebe-se que uma cidade pode ser
alcançada a partir de qualquer outra em, no máximo, nove passos. Assim, o valor 9
dá um limitante melhor para a profundidade do algoritmo.
Outros algoritmos de busca podem ser encontrados na literatura e, em geral,
são extensões dos vistos aqui. Como exemplos há a busca de profundamente in-
terativo, que efetua buscas em profundidade limitada, a qual é aumentada ao lon-
go das iterações, e a busca bidirecional, que executa duas buscas, uma do estado
inicial até o estado objetivo e outra do estado objetivo até o estado inicial; quando
ambasas buscas se encontrarem, a solução completa é dada.
2.4 Busca heurística
Vídeo A busca heurística, ou busca informada, utiliza algum tipo de conhecimento es-
pecífico do problema para direcionar a estratégia e encontrar as soluções de modo
mais eficiente (RUSSEL; NORVIG, 2013).
Para efetuar as expansões, os algoritmos usam uma função de avaliação f(n),
que retorna a melhor escolha de nó a ser expandido. Essa função pode ser enten-
dida como uma estimativa do custo que aquele caminho terá até a solução, o que
é diferente do custo do caminho (que dá o custo despendido até se chegar àquele
nó). Assim, se a função de avaliação dá uma estimativa do custo da solução, o algo-
ritmo, aqui chamado de busca de melhor escolha, escolherá sempre o nó que tiver a
menor estimativa, ou seja, o menor valor da função de avaliação.
Resolução de problemas 49
A implementação é idêntica à da busca de custo uniforme. Relembrando: é usa-
da uma fila de prioridades e a ordenação dos nós na borda é dada pelo custo do
caminho, isto é, o custo acumulado desde o nó inicial até o nó corrente. Na busca
de melhor escolha, em vez de se usar o custo do caminho (que aqui será denotado
como g(n)), é usada uma função de avaliação f(n) para ordenar os nós que são in-
seridos na borda.
Escolher qual função de avaliação usar determina a estratégia de busca. A gran-
de maioria dos algoritmos usa uma função heurística h(n) como componente da
função de avaliação, em que h(n) retorna o custo estimado do caminho de menor
custo, partindo de n até um estado objetivo.
Percebe-se que a função h(n) não depende do caminho percorrido até se chegar
a n, mas faz uma estimativa do custo do melhor caminho partindo de n até um
objetivo. Isto é, no estado n, analisando-se todos os caminhos de n até o estado
objetivo e observando-se o que tem o menor custo, h(n) estima o custo desse me-
lhor caminho. Por exemplo, dado o mapa da Figura 1, pode-se estimar o custo de
menor caminho entre Arad e Bucareste (estado objetivo) pela distância em linha
reta entre as cidades.
Para os algoritmos aqui descritos, assume-se que uma função heurística não
retorna valores negativos e que h(n) = 0 se n for um estado objetivo.
2.4.1 Busca gulosa
A busca gulosa, ou busca gulosa de melhor escolha, sempre tenta expandir o
nó que, pela função de avaliação f(n), está mais próximo do objetivo. Sua função de
avaliação é simplesmente usar a heurística, ou seja, f(n) = h(n).
Como exemplo, no problema de sair de Arad e chegar a Bucareste (Figura 1),
pode-se adicionar uma informação relevante, que é a distância em linha reta entre
uma cidade e Bucareste. Essa função heurística é chamada aqui de hDLR. A Tabela 2
mostra as distâncias em linha reta entre todas as cidades do mapa e Bucareste.
Tabela 2
Retorno de hDLR: distâncias em linha reta para Bucareste
Origem Distância Cidade Distância
Arad 366 Mehadia 241
Bucareste 0 Neamnt 234
Craiova 160 Oradea 380
Drobeta 242 Pitesti 100
Eforie 161 Rimnicu Vilcea 193
Fagaras 176 Sibiu 253
Giurgiu 77 Timisoara 329
Hirsova 151 Urziceni 80
Iasi 226 Vaslui 199
Lugoj 244 Zerind 374
Fonte: Adaptada de Russel e Norvig, 2013.
Convém ressaltar que as distâncias em linha reta não podem ser obtidas pela
descrição do problema, portanto são uma informação adicional. Além disso,
50 Inteligência Artificial
deve-se ter alguma experiência para saber que elas estão relacionadas com as dis-
tâncias das estradas, sendo, portanto, uma heurística útil.
A implementação da busca gulosa pode ser feita pela busca em árvore, apresen-
tada no Algoritmo 1, a qual altera o algoritmo para que a escolha do nó seja feita
pela função de avaliação.
Considere o problema de partir de Arad e chegar a Bucareste. A Figura 14 apresenta
o estado inicial da árvore de busca aplicando busca gulosa com a heurística hDLR.
Figura 14
Estado inicial da busca gulosa com hDLR
Arad
366
Fonte: Adaptada de Russel e Norvig, 2013.
A Figura 15 mostra a árvore após expandir Arad.
Figura 15
Estado após a expansão de Arad
Fonte: Adaptada de Russel e Norvig, 2013.
Arad
Sibiu Timisoara Zerind
366
253 329 374
Como está sendo usada a heurística hDLR, o próximo nó escolhido para expansão
é Sibiu, e a Figura 16 apresenta o resultado.
Figura 16
Estado após a expansão de Sibiu
Fonte: Adaptada de Russel e Norvig, 2013.
Arad
Sibiu Timisoara Zerind
329
193380176366
Arad Fagaras Oradea Rimnicu
Vicea
374
Nesse ponto, são analisadas todas as possíveis expansões, isto é, os nós na bor-
da, que agora são Arad, Fagaras, Oradea, Rimnicu Vilcea, Timisoara e Zerind. Pela
heurística hDLR, Fagaras possui a menor distância em linha reta até Bucareste e, por-
Resolução de problemas 51
tanto, será escolhido. Na expansão de Fagaras (Figura 17), já se chega a Bucareste,
que é o objetivo.
Figura 17
Estado após a expansão de Fagaras e chegada ao objetivo Bucareste
Fonte: Adaptada de Russel e Norvig, 2013.
Arad
Sibiu Timisoara
Sibiu
Zerind
Bucareste
329
253
374
0
193380366
Arad Fagaras Oradea Rimnicu
Vicea
A solução encontrada é: Arad → Sibiu → Fagaras → Bucareste; somando as dis-
tâncias das estradas, tem-se 450 km.
Nesse caso, a busca gulosa encontrou a solução, mas não foi uma solução óti-
ma. Analisando o mapa da Figura 1, o caminho de Sibiu até Bucareste via Fagaras,
que foi o escolhido, tem 310 km. Se fosse escolhido o caminho por Rimnicu Vilcea, o
resultado seria 278 km, uma diferença de 32 km. A razão para isso é que ela sempre
tenta chegar o mais próximo possível do objetivo, mas só leva em consideração a
heurística, que, como no caso da distância em linha reta, pode não favorecer deter-
minados caminhos.
A busca gulosa também não é completa, ou seja, havendo apenas um caminho,
eventualmente ela pode não o encontrar. É o caso de partir de Iasi para Fagaras.
Em Iasi, tem-se dois filhos (Neamt e Vaslui). Pelo mapa da Figura 1, percebe-se que
Neamt é mais próximo em linha reta. Assim, o algoritmo expande Neamt, o que
coloca Iasi novamente na borda. Como Neamt é um beco sem saída, a única rota
é por Iasi; quando lá, Neamt é novamente colocada na borda. O algoritmo fica em
laço nessas duas cidades, quando o real caminho a ser seguido é por Vaslui e de-
pois por Urziceni, Bucareste e, finalmente, Fagaras.
2.4.2 Busca A*
Para resolver os problemas encontrados na busca gulosa, pode-se usar a busca
A* (“busca A estrela”). A grande alteração feita é na função de avaliação, a qual usa
uma combinação de g(n), que é o custo para se alcançar um nó, e h(n), que é a esti-
mativa do custo para ir do nó até o objetivo. Assim:
f(n) = g(n) + h(n)
52 Inteligência Artificial
Dessa forma, f(n) dá o custo estimado da melhor solução passando por n. Isso
significa que, em determinado momento na árvore de busca, vale a pena expandir
o nó que tiver menor valor de f(n). Se a função h(n) satisfizer determinadas con-
dições, garante-se que o algoritmo é completo – isto é, sempre que houver uma
solução, ele a encontra – e ótimo – ou seja, sempre encontra a melhor solução
(RUSSEL; NORVIG, 2013).
O algoritmo da busca A* é muito parecido com a busca de custo uniforme, mas
na A* a verificação do custo é feita por g(n) + h(n), e não somente por g(n), como no
custo uniforme.
O Algoritmo 5 apresenta a busca A*. Deve-se perceber que a verificação para
analisar se o nó é objetivo só é feita quando o nó é escolhido da borda. Isso garante
que o caminho até o objetivo seja retornado.
Algoritmo: Busca A*
Dados Recebidos: Problema, hDLR
Retorno: Uma solução ou falha
Nó ← Estado inicial do problema
Custo-Caminho ← 0
Borda ← CRIAR-FILA-PRIORIDADES()
INSERIR-PRIORIDADES(Borda, Nó)
Explorado ← ∅
REPITA
SE VAZIA(Borda) ENTÃO
RETORNAR Falha
FIM SE
Nó ← REMOVER-PRIORIDADES(Borda)
SE Nó é Objetivo ENTÃO
RETORNAR Solução
FIM SE
Explorado ← Explorado ∪ {Nó}
AçõesPossíveis ← Ações possíveis a partir de Nó
PARA CADA Ação ∈ AçõesPossíveis FAÇA
Filho ← NÓ-FILHO(Nó, Ação)
SE Filho não está na Borda EFilho ∉ Explorado ENTÃO
INSERIR-PRIORIDADES(Borda, Filho)
SENÃO
SE Filho Está na Borda E
g(n)+h(n) na Borda é maior ENTÃO
Substitui o nó na Borda por Filho
FIM SE
FIM SE
FIM PARA
FIM REPITA
Algoritmo 5
Busca A*
Fonte: Adaptado de Russel e Norvig, 2013.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Resolução de problemas 53
Considere o problema de partir de Arad e chegar a Bucareste usando a heurísti-
ca de distância em linha reta. A Figura 18 apresenta o estado inicial em Arad. Os es-
tados estão assinados com: f(n) = g(n) + hDLR(n), em que g(n) é o custo do caminho, ou
seja, o custo acumulativo até se chegar àquele nó, e hDLR é a heurística de distância
em linha reta representada pela Tabela 2. Perceba que g(n) acumula as distâncias
percorridas até se chegar ao nó.
Figura 18
Busca A*: estado inicial.
Arad
366 = 0 + 366
Fonte: Adaptada de Russel e Norvig, 2013.
Expandindo Arad, obtém-se a árvore da Figura 19.
Figura 19
Busca A*: expansão de Arad
Fonte: Adaptada de Russel e Norvig, 2013.
Arad
Sibiu Timisoara Zerind
393 = 140 + 253 447 = 118 + 329 449 = 75 + 374
O nó expandido está com preenchimento, os nós na borda estão com seus cálculos de f(n) e o próximo nó a ser
escolhido está apontado com uma seta.
Da expansão de Arad, três nós são obtidos: Sibiu (f(Sibiu) = 393), Timosoara
(f(Timisoara) = 447) e Zerind (f(Zerind) = 449). Eles são os únicos na borda, e o es-
colhido é Sibiu, por possuir o menor valor de f(n). Expandindo Sibiu, obtém-se a
árvore da Figura 20. Percebe-se que o nó Arad foi gerado novamente, mas agora
sua função f(Arad) retornou 646. Isso ocorre porque f(Arad) = g(Arad) + hDLR(Arad).
Como essa instância de Arad foi gerada pelo caminho Arad → Sibiu → Arad, o valor
de g(Arad) é acumulativo, isto é, de Arad até Sibiu 140 km, de Sibiu até Arad 140 km,
resultando em 280 km. Assim, f(Arad) = 280 + 366, resultando em 646.
Figura 20
Busca A*: expansão de Sibiu
Fonte: Adaptada de Russel e Norvig, 2013.
Arad
Sibiu Timisoara Zerind
447 = 118 + 329
646 = 280 + 366 415 = 239 + 176 671 = 291 + 380 413 = 220 + 193
449 = 75 + 374
Arad Fagaras Oradea Rimnicu
Vicea
54 Inteligência Artificial
Nesse momento, tem-se na borda: Arad (646), Fagaras (415), Oradea (671),
Rimnicu Vilcea (413), Timisoara (447) e Zerind (449). O nó com menor valor de f(n) é
Rimnicu Vilcea, que é expandido, e a árvore da Figura 21 é gerada.
Figura 21
Busca A*: expansão de Rimnicu Vilcea
Fonte: Adaptada de Russel e Norvig, 2013.
Arad
Sibiu Timisoara
Craiova Pitesti
Zerind
Sibiu
447 = 118 + 329 449 = 75 + 374
646 = 280 + 366
426 = 366 + 160 417 = 317 + 100 553 = 300 + 253
415 = 293 + 176 671 = 291 + 380
Arad Fagaras Oradea Rimnicu
Vicea
Analisando todos os nós na borda, escolhe-se Fagaras (415) para expandir.
O resultado consta na Figura 22.
Figura 22
Busca A*: expansão de Fagaras
Fonte: Adaptada de Russel e Norvig, 2013.
Arad
Sibiu Timisoara
Sibiu Craiova Pitesti
Zerind
Bucareste Sibiu
447 = 118 + 329
591 = 338 + 253
449 = 75 + 374
450 = 450 + 0
646 = 280 + 366
426 = 366 + 160 417 = 317 + 100 553 = 300 + 253
671 = 291 + 380
Arad Fagaras Oradea Rimnicu
Vicea
Nesse ponto, houve a geração do nó Bucareste (f(Bucareste) = 450). Apesar de
o nó objetivo estar na borda, ele só será testado quando for escolhido para ex-
pansão, garantindo que caminhos promissores (menor distância estimada) sejam
antes avaliados. Esse é o caso de Pitesti, que está na borda e contém valor de
f(n) = 417. Sua expansão gera a árvore da Figura 23.
Resolução de problemas 55
Figura 23
Busca A*: expansão de Pitesti
Fonte: Adaptada de Russel e Norvig, 2013.
Arad
Sibiu Timisoara
Sibiu Craiova
Bucareste
Pitesti
Craiova
Zerind
Bucareste Sibiu
Rimnicu
Vicea
447 = 118 + 329
591 = 338 + 253
449 = 75 + 374
450 = 450 + 0
646 = 280 + 366
426 = 366 + 160
418 = 418 + 0 615 = 455 + 160 607 = 414 + 193
553 = 300 + 253
671 = 291 + 380
Arad Fagaras Oradea Rimnicu
Vicea
Com a expansão de Pitesti é gerado Bucareste com um valor de f(n) = 418, me-
nor que todos os demais (inclusive de Bucareste gerado anteriormente, que era de
450). O procedimento para e encontra a solução, que é: Arad → Sibiu → Rimnicu
Vilcea → Pitesti → Bucareste, com 418 km.
Para o algoritmo A*, duas condições são necessárias para otimalidade, isto é,
para que a solução encontrada seja sempre a ótima, referentes à função heurística.
A primeira é que h(n) deve ser uma heurística admissível, ou seja, nunca superes-
tima o custo de atingir o objetivo (RUSSEL; NORVIG, 2013). No caso da hDLR apresen-
tada, uma distância em linha reta nunca será maior do que a distância pelas
estradas, portanto é uma heurística admissível.
Outra condição é a consistência, ou monotonicidade, necessária apenas para
implementação do A* como uma busca em grafos, como o caso do Algoritmo 5.
Uma heurística é consistente se, a partir de um
nó n e seus sucessores n’, o custo estimado para
alcançar o objetivo a partir de n sempre for me-
nor ou igual ao custo de passo até n’ mais o cus-
to estimado de se alcançar o objetivo a partir de
n’ (LUGER, 2013). Essa é uma forma de desigual-
dade triangular, que pode ser vista na Figura 24.
De Arad a Bucareste, o custo estimado é 366.
De Arad a Bucareste, passando por Timisoara,
o custo do passo adicionado à estimativa de
Timisoara a Bucareste é 118 + 329. Assim, 366
de busca possa ser ignorada, pois não levaria a posições promissoras.
Isso é muito importante em espaços de estados gigantescos, como os do xadrez e
do jogo de go. As funções de avaliação heurísticas são outro aspecto importante,
porque dão uma estimativa de utilidade de um estado, sem a necessidade de reali-
zar uma busca completa. Quanto melhor a função de avaliação, mais precisas serão
as estimativas (RUSSEL; NORVIG, 2013).
2.5.1 Valor minimax
Nesta subseção serão considerados jogos com dois jogadores, que serão cha-
mados de MAX (maximização) e MIN (minimização). MAX faz o primeiro movimen-
Resolução de problemas 57
to e depois os jogadores se alternam até o final da partida. Assim, pode-se definir
formalmente um jogo como esse da seguinte forma:
• S
0
: estado inicial, como o jogo está no início.
• JOGADORES(s): retorna qual jogador deve se mover em um estado s.
• AÇÕES(s): retorna o conjunto de movimentos válidos no estado s.
• RESULTADO(s, a): modelo de transição; define o resultado da aplicação do movimento a no estado s.
• TESTE DE TÉRMINO(s): é o teste de objetivo, que retorna verdadeiro quando o jogo termina. Os estados
em que o jogo termina são chamados estados terminais.
• UTILIDADE(s, p): função utilidade, objetivo ou compensação, que define um valor numérico para um
jogo que termina no estado terminal s por um jogador p. Por exemplo, no xadrez tem-se vitória, der-
rota ou empate (+1, 0 ou ½).
Como exemplo, observe a Figura 25. Ela apresenta uma árvore de busca parcial
do jogo da velha. Inicialmente o tabuleiro está vazio. MAX faz o primeiro movimen-
to colocando um X em uma das nove casas vazias. Logo após é a vez de MIN colocar
um O nas oito casas vazias restantes. E assim o jogo segue sucessivamente. No jogo
da velha, analisando-se todas as jogadas possíveis, tem-se nove possibilidades na
primeira jogada, oito na segunda, sete na terceira, e assim por diante. Isso dá 9 x 8
x 7 x 6 x 5 x 4 x 3 x 2 x 1 = 9! = 362.880 jogadas possíveis.
É tarefa de MAX descobrir qual a sua melhor jogada em um determinado ponto
do jogo. O termo árvore de busca é usado aqui para denotar a árvore que está
sobreposta à arvore de jogo completa, sendo que nela serão examinados os nós
que darão a MAX a possibilidade de escolher a próxima jogada.
Figura 25
Árvore de busca parcial do jogo da velha
MAX(X)
MIN(O)
MAX(X)
MIN(O)
Terminal
Utilidade: –1 0 +1
...
............
X X X
X X X
X X X
X X XO O
O
X X X X
XX
O O O
X X X
X X
X X X
X
XX X
O O O
O O
O O
O
O
O
Fonte: Adaptada de Russel e Norvig, 2013.
58 Inteligência Artificial
Em uma tarefa de busca simples, bastaria MAX encontrar um caminho que
leve a um estado terminal no qual é vitorioso. Mas MIN tem influência nessa
escolha; portanto, deve-se estabelecer uma estratégia que gere o primeiro mo-
vimento de MAX, que depois gere o movimento de MAX após a jogada de MIN,
e assim por diante.
Considere a árvore de jogo da Figura 26. No estado inicial A, MAX pode fazer as
jogadas a1, a2 e a3; no estado B, que é a jogada a1 de MAX, MIN pode fazer as jogadas
b1, b2 e b3; no estado C, que é a jogada a2 de MAX, MIN pode fazer as jogadas c1, c2
e c3; e assim sucessivamente. Esse jogo, em especial, termina após uma jogada de
MAX e uma jogada de MIN. As utilidades nos estados terminais vão de 2 a 14.
Figura 26
Árvore de jogos simples
Fonte: Adaptada de Russel e Norvig, 2013.
MAX
MIN
A
B C D
3
3 2 2
3 12 8 2 4 6 14 5 2
a1
a3a2
b1 c1 d1b2 c2 d2b3 c3 d3
A estratégia ótima em uma árvore de jogo pode ser dada pelo valor minimax
de cada nó, que será representado aqui por VALOR-MINIMAX(n). O valor minimax
retornado em um nó é o valor utilidade para MAX de se encontrar no estado n.
Supõe-se que ambos os jogadores têm desempenho ótimo do estado n até o
final do jogo, isto é, que seu oponente vai jogar da melhor forma possível. Para um
estado terminal, o valor minimax é sua própria utilidade. Em nós em que há uma
escolha de jogada, MAX vai preferir se movimentar para um estado com valor má-
ximo e MIN vai preferir se movimentar para um estado com o valor mínimo. Assim,
VALOR-MINIMAX(n) é:
• UTILIDADE(n), se TESTE DE TÉRMINO(n) é verdadeiro;
• Maxa∈AÇÕES(n) VALOR-MINIMAX(RESULTADO(s, a)), se JOGADOR(n) = MAX;
• Mina∈AÇÕES(n) VALOR-MINIMAX(RESULTADO(s, a)), se JOGADOR(n) = MIN.
Na árvore de jogo da Figura 26, MAX está no estado A e precisa decidir qual
jogada fazer. Iniciam-se os cálculos, e os valores minimax dos nós terminais são
atribuídos pelos seus valores utilidade, ou seja, o valor numérico para aquele esta-
do do jogo. Aqui, valores altos favorecem MAX e valores pequenos favorecem MIN.
No estado B, que é uma jogada de MIN, a melhor escolha para MIN é jogar b1,
pois dá o menor valor entre todas as possíveis jogadas, que é 3. O mesmo vale para
o estado C, em que MIN escolhe c1, com valor 2; no estado D, MIN escolhe d3, com
valor de utilidade 2. Dessa forma, os nós B, C e D possuem seus valores minimax
Resolução de problemas 59
atribuídos (3, 2 e 2 respectivamente) conforme a escolha de MIN, assumindo que
MIN sempre faz a melhor jogada.
No estado A, MAX precisa escolher entre as ações a1, a2 e a3, que levam aos
estados B, C e D respectivamente. MAX escolhe qual jogada fazer observando o
valor minimax dos nós e decide jogar a1, pois é o que tem maior valor minimax,
indicando maiores chances de ganhar. Essa decisão de qual jogada MAX deve fazer,
estando no estado n, é chamada decisão minimax (RUSSEL; NORVIG, 2013).
Resumindo: MIN sempre escolhe uma jogada que leva a um estado com valor
minimax menor, pois o favorece, e MAX sempre escolhe uma jogada que leva a um
estado com valor minimax maior, pois favorece a sua vitória.
Para calcular a decisão minimax que MAX deve fazer em um estado, tem-se o
algoritmo MINIMAX, o qual efetua uma recursão até os nós terminais, calcula suas
utilidades e retorna propagando o valor minimax até chegar ao estado corrente
(RUSSEL; NORVIG, 2013).
Esse processo pode ser visto no Algoritmo 6. A função MIN(x, y) retorna o menor valor
entre x e y. A função MAX(x, y) retorna o maior valor entre x e y. O procedimento principal
(MINIMAX) retorna a ação à que dá o maior valor de VALOR-MAX(RESULTADO(estado, a)),
isto é, a ação que tem o maior valor de utilidade quando são feitas as jogadas de MAX
(RESULTADO(estado, a)) e MIN fez suas escolhas (VALOR-MIN).
Algoritmo 6
Algoritmo MINIMAX
Algoritmo: MINIMAX
FUNÇÃO MINIMAX(estado) RETORNA ação
v ← VALOR-MAX(estado)
RETORNAR Ação a que possui valor v
FIM FUNÇÃO
FUNÇÃO VALOR-MAX(estado) RETORNA valor utilidade
SE TESTE DE TÉRMINO(estado) ENTÃO
RETORNAR UTILIDADE(estado)
FIM SE
v ← -∞
PARA a ∈ AÇÕES(estado) FAÇA
filho ← RESULTADO(s, a)
valor_filho ← VALOR-MIN(filho)
v ← MAX(v, valor_filho)
FIM PARA
RETORNAR v
FIM FUNÇÃO
FUNÇÃO VALOR-MIN (estado) RETORNA valor utilidade
SE TESTE DE TÉRMINO(estado) ENTÃO
RETORNAR UTILIDADE(estado)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
(Continua)
60 Inteligência Artificial
FIM SE
v ← +∞
PARA a ∈ AÇÕES(estado) FAÇA
filho ← RESULTADO(s, a)
valor_filho ← VALOR-MAX(filho)
v ← MIN(v, valor_filho)
FIM PARA
RETORNAR v
FIM FUNÇÃO
20
21
22
23
24
25
26
27
28
Fonte: Adaptado de Russel e Norvig, 2013.
Um problema com o MINIMAX é que ele executa uma busca em profundi-
dade na árvore de jogo. Se a profundidade dessa árvore é m e tem-se b movi-
mentos válidos em cada estado, então a complexidade de tempo é O(bm). Dessa
forma, o tempo de execução é impraticável e são necessárias técnicas para
melhorar seu desempenho.
2.5.2 Poda alfa-beta
Uma técnica muito usada é a poda alfa-beta. Uma poda em árvore é um corte,
um ramo inteiro que é deixado de lado sem explorar, pois já é sabido que seu valor
nãomelhorará o resultado final. No MINIMAX a ideia é não explorar jogadas que
não influenciam a decisão de MAX (LUGER, 2013). Na poda alfa-beta são propaga-
dos dois parâmetros:
• α: o valor mais alto encontrado até o momento ao longo do caminho para
MAX, indicando que jogadas com valores menores que α podem ser ignora-
das, pois MAX nunca as escolherá.
• β: o valor mais baixo encontrado até o momento ao longo do caminho para
MIN, indicando que jogadas com valores maiores que β podem ser ignoradas,
pois MIN nunca as escolherá.
Ao longo da busca, os valores de α e β são atualizados e o processo termina no
momento em que o valor do nó corrente se torna pior que os valores de α e β para
MAX ou MIN, respectivamente.
Suponha, em uma árvore de busca, que em determinado estado α = 9. Como
MAX sempre escolhe a ação com o maior valor, não irá escolher qualquer nó abaixo
dele que retorne um valor menor que 9. Como os nós abaixo são nós do jogador
MIN e como MIN sempre escolherá o valor menor, se for encontrada uma jogada
que retorne um valor menor ou igual a 9, já se sabe que, pelo menos, MIN escolhe-
rá essa jogada (ou outra com valor de utilidade menor). Desse modo, as ações se-
guintes não precisam ser avaliadas. O procedimento MINIMAX com poda alfa-beta
pode ser visto no Algoritmo 7.
Resolução de problemas 61
Algoritmo 7
Algoritmo MINIMAX com poda alfa-beta
Algoritmo: MINIMAX COM PODA ALFA-BETA
FUNÇÃO MINIMAX-ALFA-BETA(estado) RETORNA ação
v ← VALOR-MAX(estado, -∞, +∞)
RETORNAR Ação a que possui valor v
FIM FUNÇÃO
FUNÇÃO VALOR-MAX(estado, α, β) RETORNA valor utilidade
SE TESTE DE TÉRMINO(estado) ENTÃO
RETORNAR UTILIDADE(estado)
FIM SE
v ← -∞
PARA a ∈ AÇÕES(estado) FAÇA
filho ← RESULTADO(s, a)
valor_filho ← VALOR-MIN(filho)
v ← MAX(v, valor_filho)
SE v ≥ β ENTÃO RETORNAR v
α ← MAX(α, v)
FIM PARA
RETORNAR v
FIM FUNÇÃO
FUNÇÃO VALOR-MIN(estado, α, β) RETORNA valor utilidade
SE TESTE DE TÉRMINO(estado) ENTÃO
RETORNAR UTILIDADE(estado)
FIM SE
v ← + ∞
PARA a ∈ AÇÕES(estado) FAÇA
filho ← RESULTADO(s, a)
valor_filho ← VALOR-MAX(filho)
v ← MIN(v, valor_filho)
SE v ≤ α ENTÃO RETORNAR v
β ← MIN(β, v)
FIM PARA
RETORNAR v
FIM FUNÇÃO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Fonte: Adaptado de Russel e Norvig, 2013.
Algumas diferenças são observadas no uso da poda. Ao longo das funções
VALOR-MAX e VALOR-MIN, os valores de α e β são atualizados e propagados. Perceba
que dentro do laço de ações na linha 14 do procedimento VALOR-MAX, por exemplo, há
uma comparação que pergunta se o valor recebido daquela possível jogada é maior ou
igual ao valor β. Como exemplo, veja a árvore de jogo da Figura 27.
62 Inteligência Artificial
Figura 27
Árvore de jogo com poda alfa-beta
Fonte: Adaptada de Luger, 2013.
MAX
MIN
MAX
MIN
C
A
B
D E
3
3
3
3
20
0
5
2 2 15
0 2
c1
c3c2
a1 e1d1a2
e2
d2
Observe que o nó A (jogada de MIN) tem β = 3, ou seja, nesse momento, na pior
das hipóteses, MIN fará a jogada a1. Assim, quando o nó B (jogada de MAX) é expan-
dido e é retornado o valor 5 do estado terminal, sabe-se que MAX escolherá uma
jogada com o valor no mínimo 5, isto é, se as demais expansões retornarem um
valor menor que 5, serão ignoradas, e se retornarem um valor maior que 5, serão
escolhidas. O fato é que o nó B terá um valor no mínimo 5 e que, portanto, pode ser
podado, já que MIN nunca escolherá a jogada a2.
O nó C (jogada de MAX), nesse ponto, possui α = 3, indicando que na pior das
hipóteses escolherá a jogada c1. Então, ocorre a expansão de D, que é uma jogada
de MIN. Como a jogada d1 resultou em valor 0, MIN escolherá ela ou uma jogada
com valor menor. Em qualquer caso, ambas possuem um valor menor do que α = 3,
o que indica que MAX nunca escolherá c2. Dessa forma, analisando o nó D, não há
necessidade de aplicar a jogada d2, portanto toda subárvore pode ser podada. Com
o nó E ocorre o mesmo caso, portanto a ação e2 nunca será avaliada.
Pode-se perceber que a efetividade da poda alfa-beta depende da ordem em
que os estados são avaliados. Se no estado D a execução de d1 gerasse um valor
maior que três, seria necessário avaliar d2 para saber qual ação MIN escolheria. Se
a ação d2 gerasse como resultado estados com valor menor que 3, a ação d1, e toda
a subárvore de sua aplicação, teria sido analisada em vão.
Não há como efetuar uma ordenação perfeita, pois isso levaria a um jogo perfei-
to. A tomada de uma ação aleatória para ser analisada já melhora o procedimento
do MINIMAX, levando sua complexidade de tempo a O(b3m/4). Estratégias de orde-
nação podem ser usadas no xadrez para, por exemplo, tentar capturas primeiro
e depois ameaças, movimentos para frente, movimentos para trás etc., fazendo
com que se consiga analisar uma árvore de jogo aproximadamente duas vezes
mais profunda, O(bm/2).
Apesar de atualmente os programas terem vencido mestres humanos em jogos
difíceis, implementá-los não é tarefa fácil. Deve-se levar em conta que muitos jogos
não possuem informações perfeitas, como xadrez ou damas; muitos deles acres-
centam o acaso, como o gamão e jogos em que não se observam todos os estados,
Resolução de problemas 63
como jogos de cartas. Para esses jogos, outras estratégias avançadas são aplicadas.
Além disso, de acordo com Arbulu (2020), os robôs já estão se aventurando em
jogos que demandam habilidades físicas, como o caso do robô que recentemente
venceu atletas de curling.
Atividade 1
Considere o mapa rodoviário simplificado da Romênia e a tabela de distâncias em
linha reta até Bucareste que estão a seguir.
Agora, construa e apresente a árvore de busca final na aplicação do algoritmo de busca gulosa para
encontrar o caminho partindo de Lugoj até Bucareste. Para cada nó da árvore, apresente os valores de
h(n). Também indique em cada nó a ordem em que as expansões foram feitas.
Oradea
71
75
118
Zerind
Arad
Timisoara
Lugoj
Mehadia
Dobreta
Craiova
Sibiu Fagaras
Bucareste
Giurgiu
Urziceni
Hirsova
Neamt
Iasi
Vaslui
Eforie
Pitesti
Rimnicu Vilcea
111
70
146
75
120
140
151
99
211
142
92
87
97
101
138
90
85 98
86
Origem Distância Cidade Distância
Arad 366 Mehadia 241
Bucareste 0 Neamnt 234
Craiova 160 Oradea 380
Drobeta 242 Pitesti 100
Eforie 161 Rimnicu Vilcea 193
Fagaras 176 Sibiu 253
Giurgiu 77 Timisoara 329
Hirsova 151 Urziceni 80
Iasi 226 Vaslui 199
Lugoj 244 Zerind 374
Atividade 2
Veja o mapa rodoviário simplificado da Romênia e a tabela de distâncias em linha
reta até Bucareste que estão na questão anterior. Agora, construa e apresente a árvore
de busca final na aplicação do algoritmo A* para encontrar o caminho partindo de
Lugoj até Bucareste. Para cada nó da árvore, apresente os valores de f(n), g(n) e h(n).
Também indique em cada nó a ordem em que as expansões foram feitas.
Atividade 3
Dê uma formulação de problema (estados, estado inicial, ações, modelo de transição,
teste de objetivo e custo do caminho) para o problema de colorir o mapa do Brasil
usando somente quatro cores.
64 Inteligência Artificial
CONSIDERAÇÕES FINAIS
Este capítulo apresentou formalmente o que é um problema e determinou o que é
uma solução. Foram abordados dois tipos de problemas: os problemas cuja solução é
uma sequência fixa de ações e os problemas competitivos, como os jogos.
Para os problemas que possuem como solução uma sequência de ações, foram
apresentados os procedimentos de busca por uma solução, a saber: busca cega e
busca heurística. Na primeira, foram apresentados os algoritmos de busca em largura,
busca de custo uniforme e busca em profundidade. Na segunda, foram definidos os
conceitos de heurística e as condições para que uma boa heurística possa ser desen-
volvida. Também foram apresentados a busca gulosa e o algoritmo A*.
Para os problemas competitivos, como os jogos, foi apresentadoa Figura 1.
Figura 1
Abordagens da inteligência artificial
Agindo
racionalmente
Agindo como um
humano
Pensando
racionalmente
Pensando como um
humano
Inteligência
artificial
Fonte: Adaptado de Russell e Norvig, 2013.
Cada uma dessas abordagens é seguida por grupos de pesquisadores diferen-
tes e cada uma possui métodos distintos de estudo, que se complementam no en-
tendimento da IA e no desenvolvimento da área. A seguir serão discutidas essas
quatro abordagens.
1.1.1 Agindo como um humano
Um computador agindo de maneira humana não implica a implementação de
processos cognitivos humanos ou mesmo de mecanismos de pensamento dos
quais os humanos dispõem. É a percepção de que o resultado dado pelo computa-
dor é o resultado a que um humano chegaria.
Nessa linha, o Teste de Turing, proposto por Alan Turing
(1912-1954) em 1950, foi projetado para verificar se um compu-
tador apresenta um nível satisfatório de inteligência. É formado
por um interrogador humano, que deve fazer perguntas a uma
pessoa e a um computador. Os integrantes estão separados fisi-
camente, pois a simulação física de uma pessoa não é necessária
para a identificação da inteligência. No teste a pessoa deve dar
O vídeo Inteligência
Artificial – IBM, da Discovery
Brasil, mostra como a
inteligência artificial está
impactando o mundo.
Disponível em: https://youtu.be/
W95YlM5-iPk. Acesso em: 2 dez. 2020.
Vídeo
Visual Generation/Shutterstock
https://youtu.be/W95YlM5-iPk
https://youtu.be/W95YlM5-iPk
Fundamentos de inteligência artificial 11
respostas verdadeiras, ajudando o interrogador. Já o computador deve convencer
o interrogador de que é um humano. Se quem faz as perguntas não conseguir
descobrir se as respostas são dadas por uma pessoa ou uma máquina, então o
computador passa no teste. Não há qualquer tentativa de se definir o que é pen-
samento e mesmo de implementar algum processo automático que siga essa de-
finição. Basicamente o computador deve imitar o comportamento humano, o que
Turing chamou de o jogo da imitação (do inglês the imitation game) (TURING, 1950).
Programar um computador para passar no Teste de Turing é uma tarefa árdua, pois
a máquina deve ter as seguintes habilidades implementadas (RUSSELL; NORVIG, 2013):
Ire
nD
/S
hu
tte
rs
to
ck
Processamento de linguagem natural: a
comunicação entre as partes em determinado
idioma é a interface do teste.
Representação do conhecimento: ter uma
base de conhecimento pré-definida, bem
como armazenar as informações que recebe
durante o teste.
Raciocínio automatizado: necessário para
poder tirar conclusões com base em seu
conhecimento prévio e nas informações
recebidas.
Aprendizado de máquina: necessário para
aprender novos padrões e se adaptar.
Harnad (1991) apresenta o Teste de Turing total, incluindo capacidades de visão
computacional e robótica, o qual tem como objetivo testar se o computador con-
segue fazer, no mundo real, coisas com objetos de maneira indistinguível a um hu-
mano. Assim, seria possível detectar capacidades de reconhecimento e percepção
de objetos, manipulação e movimentação.
As capacidades necessárias para uma máquina passar no Teste de Turing tratam
da maior parte dos assuntos estudados em IA. Mesmo assim, pesquisadores dedi-
cam mais esforços ao estudo dos princípios básicos da inteligência do que propria-
mente a criar uma máquina para passar no teste (RUSSELL; NORVIG, 2013).
1.1.2 Pensando como um humano
Antes de implementar uma máquina que pense como uma pessoa, deve-se es-
tabelecer a forma como os seres humanos pensam, isto é, descobrir de maneira
precisa os processos envolvidos no pensamento, para que possam ser reproduzi-
dos em uma máquina. Russell e Norvig (2013) descrevem três formas de mapear os
processos do pensamento:
O filme O jogo da imitação
retrata uma parte da vida
de Alan Turing, quando o
Reino Unido, na época da
Segunda Guerra Mundial,
reúne cientistas para que-
brar o código criptográfico
que os alemães usavam
para se comunicar com
seus submarinos.
Direção: Morten Tyldum. Reino Unido:
Studio Canal; EUA: The Weinstein
Company, 2014.
Filme
12 Inteligência Artificial
Introspecção:
captando os pensamentos à
medida que vão aparecendo e se
desenvolvendo.
Experimentos psicológicos:
observando a pessoa agindo em
cada circunstância.
Imagens cerebrais:
observando o cérebro agindo em
cada circunstância.
seam
uss/ Shutterstock
Após o mapeamento, seria possível implementar esses processos como progra-
mas de computador. Assim, observa-se se as entradas e saídas coincidem com o
que se espera do comportamento humano. Em caso afirmativo, pode-se dizer que
os processos implementados nos programas estão presentes também nos seres
humanos.
Essa abordagem se relaciona com a ciência cognitiva, que é uma área de
estudo multidisciplinar voltada ao estudo dos processos de funcio-
namento da mente humana, muitas vezes de modo empírico, princi-
palmente em termos do conhecimento e de seu desenvolvimento e
emprego (GARDNER, 1996).
Mapear o pensamento humano e implementá-lo pode não ser
uma tarefa viável. Isso se deve ao fato de que o comportamento e
o pensamento humano estão adaptados a um ambiente específico,
uma coleção de acontecimentos e como cada humano tratou dessas
diversas situações. Também devem ser levados em consideração os
estímulos sofridos por cada pessoa, de tal forma que cada um pode
apresentar, inclusive, um comportamento diferente em situações seme-
lhantes. Contudo, as áreas da computação, mais especificamente da IA,
e das ciências cognitivas estão em constante evolução, cada uma dando
suporte à outra.
1.1.3 Pensando racionalmente
Essa abordagem tem como finalidade codificar o que Russell e Norvig (2013)
chamaram de pensamento correto, ou seja, modelar o processo do raciocínio de
modo que o resultado seja logicamente correto.
Os primeiros estudos surgiram com Aristóteles (384-322 a.C) e os silogismos. Um
silogismo (do grego syllogismus, que significa “conclusão” ou “inferência”) é o termo
pelo qual o filósofo definiu um argumento composto de três proposições, sendo
Andrey Suslov/Shutterstock
Fundamentos de inteligência artificial 13
que duas delas são afirmativas (ou premissas) e uma é conclusão. O silogismo defi-
ne que a conclusão é deduzida com base nas afirmações (BLANCHÉ; DUBUCS, 1996).
Um exemplo clássico de silogismo é:
Sócrates é um homem.
Todo homem é mortal.
Portanto, Sócrates é mortal.
Essa regra deu início à lógica. Os estudiosos dessa área desenvolveram nota-
ções que tornam possível escrever problemas em linguagem lógica e, assim, aplicar
programas de computadores que resolvem um problema empregando as regras
(como os silogismos) para tirar conclusões precisas com base em premissas.
Apesar de ser uma abordagem interessante, nem todo problema é de fácil re-
presentação lógica, e frequentemente se tem extensões da lógica clássica sendo
aplicadas na representação dos problemas. Por exemplo, quando se precisa traba-
lhar com informações que podem ser contraditórias, deve-se estudar lógica
paraconsistente (COSTA et al., 1999).
Outro obstáculo enfrentado por essa abordagem é
a quantidade de recursos computacionais necessária
para que um problema seja resolvido na prática. Ao se
debruçar sobre a lógica matemática e a sua aplicação
em inteligência artificial, logo se percebe que mesmo um
problema pequeno consegue rapidamente esgotar os re-
cursos computacionais disponíveis para resolvê-lo, seja em
termos de espaço em memória e armazenamento, seja em
tempo de execução.
1.1.4 Agindo racionalmente
Russell e Norvig (2013) chamam essa abordagem de agente racional. Um agen-
te é alguma coisa que age; no caso da IA, é uma entidade computacional, isto é, um
programa, uma máquina etc. Nesse sentido, um agente racional age em situações
que buscam encontrar o melhor resultado ou o melhor resultado possível quando
a situação é desconhecida ou incerta.
Essa abordagem possui vantagem em relação à visãoo algoritmo
MINIMAX e a poda alfa-beta. Os conceitos de problemas e suas soluções, bem
como seus algoritmos, não estão limitados a esse conteúdo. Problemas com in-
formações parciais (nos quais o agente não tem a visão do estado como um todo),
problemas com agentes em ambientes desconhecidos, jogos estocásticos (que
incluem um elemento aleatório), entre outros, são domínio da inteligência artificial
e muita pesquisa se faz sobre eles.
REFERÊNCIAS
ARBULU, R. Robô vence atletas de curling usando novo método de deep learning. Olhar Digital, 24 set.
2020. Disponível em: https://olhardigital.com.br/noticia/robo-vence-atletas-de-curling-usando-novo-
metodo-de-deep-learning/107594. Acesso em: 19 nov. 2020.
GERSTING, J. L.; IÓRIO, V. M. Fundamentos matemáticos para a ciência da computação: um tratamento
moderno de matemática discreta. 5. ed. Rio de Janeiro: LTC, 2012.
LUGER, G. Inteligência artificial. 6. ed. São Paulo: Pearson Education do Brasil, 2013.
RUSSELL, S.; NORVIG, P. Inteligência artificial. 3. ed. Rio de Janeiro: Elsevier Brasil, 2013.
ZIVIANI, N. Projeto de algoritmos com implementações em Pascal e C. 3. ed. São Paulo: Cengage Learning,
2010.
66 Inteligência Artificial
3
Raciocínio lógico e
conhecimento
Raciocinar sobre fatos é um dos aspectos entendidos como inteligência.
Dotar agentes computacionais de inteligência, portanto, tem como um dos pas-
sos fazê-los representar conhecimento e raciocinar sobre ele. Tirar conclusões
lógicas demanda um formalismo muito bem definido, bem como operações
que possam deduzir novas afirmações com base em um conjunto de afirma-
ções conhecidas. O formalismo matemático que pode ser usado com esse pro-
pósito é a lógica.
Nesse sentido, na Seção 3.1 são definidos os conceitos básicos necessários
para o entendimento de agentes lógicos. Na Seção 3.2 é abordada a lógica,
discorrendo sobre lógica proposicional, prova de teoremas, problemas de sa-
tisfatibilidade e lógica de primeira ordem. O raciocínio baseado em lógica é
apresentado na seção 3.3. Já na Seção 3.4, o assunto planejamento é abordado.
Por fim, a representação do conhecimento e as ontologias são apresentadas na
Seção 3.5
3.1 Agentes lógicos
Vídeo Analisando os agentes de resolução de problemas, o conhecimento sobre as
transições de estados está impregnado no código e deve ser implementado para
resolver aquele problema. Pode-se dizer que estão limitados a resolver um proble-
ma específico e não conseguem deduzir outras informações.
Os agentes baseados em conhecimento, por sua vez, usam o conhecimento
sobre algum domínio que pode ser informado ao agente e, por meio de proces-
sos lógicos, podem tirar conclusões que não se limitam ao problema em questão.
Eles são capazes de manter representações internas de conhecimento e operá-las
como formas de raciocínio (RUSSEL; NORVIG, 2013).
O conhecimento que o agente possui e pode manipular é chamado de base de
conhecimento (ou KB, do inglês Knowledge Base). Uma KB é basicamente um conjun-
to de afirmações sobre o mundo, denominadas sentenças. Quando as sentenças
são dadas, isto é, não derivadas, podem ser chamadas de axiomas. Para adicionar
novas sentenças à base de conhecimento, pode-se usar inferência, que é a aplica-
ção de regras lógicas que derivam novas afirmações. Para ilustrar esses processos,
será usado aqui um problema clássico da área, chamado de Mundo de Wumpus.
O Mundo de Wumpus é uma caverna com um grande tesouro. Um guerreiro
pode se aventurar nesse mundo para encontrá-lo, mas terá alguns obstáculos. Pri-
meiramente o mundo é composto de um labirinto de salas conectadas por passa-
Raciocínio lógico e conhecimento 67
gens, sendo que algumas salas possuem um poço sem fundo, que não dá chance
ao guerreiro de se salvar caso caia nele. Além disso, o terrível monstro Wumpus
habita a caverna e devora qualquer guerreiro que entra na sua sala. O guerreiro
tem uma, e somente uma, flecha que pode atingir e matar Wumpus.
A Figura 1 apresenta um exemplo de instância do Mundo de Wumpus. Esse ce-
nário termina quando o guerreiro morre ou sai da caverna. O ambiente é composto
de uma grade de 4 x 4 salas e o guerreiro sempre começa na posição 1 x 1. As po-
sições de Wumpus e do outro são escolhidas ao acaso e uma e uma sala, exceto a
primeira, pode conter um poço com 20% de probabilidade.
Figura 1
Exemplo do Mundo de Wumpus
4
3
2
1
1 2 3 4
Fedor
Fedor
Ouro
Fedor
INÍCIO
Brisa
Brisa
Brisa
Brisa
BrisaBrisa
Poço
Poço
Poço
Fonte: Adaptada de Russel; Norvig, 2013.
O guerreiro pode se mover para frente, virar à esquerda 90º ou virar à direita
90º. Ao se movimentar para frente, se houver uma parede, o guerreiro se mantém
na mesma posição. Caso ele se mova para uma sala com o Wumpus vivo ou um
poço, é morte instantânea. Também está disponível a ação atirar, que atira uma
flecha em linha reta para frente do guerreiro. A flecha continua até que o Wumpus
seja atingido, e nesse caso ele é morto, ou até que uma parede seja encontrada. O
guerreiro também pode agarrar o objeto que se encontra na mesma sala, no caso
o ouro. A última ação disponível para o guerreiro é escalar para sair da caverna,
somente disponível na sala 1 x 1.
O guerreiro também possui cinco sensores, e cada um dá um tipo de informa-
ção que pode ser verdadeira ou falsa:
• Na sala onde está Wumpus e nas salas adjacentes (não diagonais), o guerreiro percebe um fedor.
• Nas salas adjacentes a um poço, o guerreiro percebe uma brisa.
• Na sala onde está o ouro, o guerreiro percebe um brilho.
• Se o guerreiro caminhar para uma parede, percebe um impacto.
• Quando Wumpus morre, ele emite um grito, percebido em todas as salas da caverna.
68 Inteligência Artificial
As percepções são dadas como uma lista de símbolos na seguinte ordem: fedor,
brisa, brilho, impacto e grito. Um exemplo é: [Fedor, Brisa, Brilho, Nada, Nada], que
seria exatamente o que o guerreiro receberia ao entrar na sala 2 x 3: fedor, brisa e
brilho, sem impacto ou grito.
A implementação de um agente baseado em conhecimento para o Mundo de
Wumpus deve indicar as ações do guerreiro para chegar até o ouro e sair da caver-
na. O principal desafio desse agente é o fato de desconhecer completamente o con-
teúdo das salas da caverna e, para conseguir atingir seu objetivo, precisa raciocinar
sobre o que já conhece e as novas percepções.
Alguns ambientes podem ser inóspitos, com o ouro em um poço ou cercado por
poços. Em alguns casos, portanto, o agente precisará decidir se sai da caverna sem
a recompensa ou arrisca sua vida.
Com essas informações, pode-se analisar a exploração de uma caverna por um
agente. O agente começa na sala [1, 1] e sabe que é uma sala segura. A Figura 2
apresenta o conhecimento que o agente tem da caverna. A sala em que ele se en-
contra está assinalada com A e uma sala segura com OK.
Figura 2
Estado inicial do agente
Fonte: Adaptada de Russel; Norvig, 2013.
[1,4]
[1,3]
[1,2]
[1,1]
OK
A
[3,4]
[3,3]
[3,2]
[3,1]
[2,4]
[2,3]
[2,2]
[2,1]
[4,4]
[4,3]
[4,2]
[4,1]
A primeira percepção do agente é: [Nada, Nada, Nada, Nada, Nada]. Com isso,
ele consegue deduzir que os quadrados vizinhos ([1,2] e [2,1]) são seguros. A Figura
3 apresenta o resultado dessa conclusão.
Você pode jogar uma simulação
do Mundo de Wumpus no link a
seguir: http://thiagodnf.github.
io/wumpus-world-simulator/.
Acesso em: 7 dez. 2020.
Site
http://thiagodnf.github.io/wumpus-world-simulator/
http://thiagodnf.github.io/wumpus-world-simulator/
Raciocínio lógico e conhecimento 69
Figura 3
Primeira conclusão do agente com base na percepção
Fonte: Adaptada de Russel; Norvig, 2013.
[1,4]
[1,3]
[1,2]
OK
[1,1]
OK OK
A
[3,4]
[3,3]
[3,2]
[3,1]
[2,4]
[2,3]
[2,2]
[2,1]
[4,4]
[4,3]
[4,2]
[4,1]
Assuma a movimentação do agente para frente, isto é, indo à sala [2, 1]. Nesse
momento, o agente recebe a seguinte percepção: [Nada, Brisa, Nada, Nada, Nada].
Comohá brisa em [2, 1], ele conclui que há um poço em uma sala adjacente. As úni-
cas salas que não são seguras e sobre as quais o agente ainda não tem nenhuma
informação (e, portanto, poderiam ter um poço) são [2, 2] e [3, 1]. A Figura 4 apre-
senta o resultado desse percurso. Uma sala visitada é marcada com V, a sala que
contém brisa com B, e uma sala com poço com P. Como o agente não sabe onde
está o poço, as duas salas candidatas são marcadas com P?.
Figura 4
Resultado de caminhar para a sala [2, 1]
Fonte: Adaptada de Russel; Norvig, 2013.
[1,4]
[1,3]
[1,2]
[1,1]
OK OK
OK
B
P?
P?
V
A
[3,4]
[3,3]
[3,2]
[3,1]
[2,4]
[2,3]
[2,2]
[2,1]
[4,4]
[4,3]
[4,2]
[4,1]
70 Inteligência Artificial
O agente precisa ser cauteloso, então não pode caminhar para uma sala onde
não há garantia de que não há um poço. A única sala sabidamente segura e não
visitada é a [1, 2]; portanto o agente faz toda a movimentação para chegar a ela.
Assumindo que ele chega a essa sala, imediatamente recebe a percepção: [Fedor,
Nada, Nada, Nada, Nada]. O Fedor indica que o Wumpus está ou na sala [1, 3] ou na
[2, 2], já que a sala [1, 1] é sabidamente segura. Com certeza o Wumpus não está na
sala [2, 2], senão o agente teria encontrado fedor ao analisá-la [2, 1]. Dessa forma,
conclui-se que o Wumpus se encontra na sala [1, 3] (representado por W!!!).
Outra conclusão que pode ser inferida é a presença de poço na sala [3, 1], já que
a falta de brisa na sala [1, 2] indica que não há poço em [1, 3], [2, 2] nem em [1, 1]
(representado por P!!!).
Depois dessas inferências, o agente também conclui que a sala [2, 2] é segura e
pode se movimentar para lá. A Figura 5 apresenta o conhecimento do agente após
as inferências.
Figura 5
Resultado de caminhar para a sala [1, 2]
Fonte: Adaptada de Russel; Norvig, 2013.
[1,4]
[1,3]
[1,2]
[1,1]
OK OK
OKOK
B
P!!!V
A
[3,4]
[3,3]
[3,2]
[3,1]
[2,4]
[2,3]
[2,2]
[2,1]
[4,4]
[4,3]
[4,2]
[4,1]
Supondo que o agente consiga se mover para [2, 2] e depois para [2, 3], ele rece-
berá como uma das percepções o brilho. Ele agarra o objeto e volta pelo caminho
percorrido até a entrada da caverna.
A principal característica do raciocínio lógico é que todas as conclusões que o
agente infere são corretas, desde que as informações disponíveis estejam também
corretas. Dessa forma, se, no Mundo de Wumpus, as afirmações iniciais e regras
(como as que determinam onde tem poço ou Wumpus) estiverem corretas, aplicar
um mecanismo de inferência que mantém a consistência da base gerará afirma-
ções derivadas que são seguramente verdadeiras.
W!!!
Raciocínio lógico e conhecimento 71
3.2 Lógica
Vídeo A lógica é um dos formalismos usados para representar conhecimento e racio-
cinar sobre ele. Ela é basicamente uma linguagem contendo frases e sentenças,
com as quais se pode representar e raciocinar sobre propriedades e elementos do
mundo (LUGER, 2013).
Várias lógicas estão disponíveis, cada qual com um poder de re-
presentação diferente da outra. Nesta obra será abordada a mais
simples: a lógica proposicional, ou cálculo proposicional. Nessa lógi-
ca, uma proposição, ou declaração, é uma sentença que pode ser
verdadeira ou falsa (GERSTING; IÓRIO, 2012), por exemplo:
• Cinquenta é igual a vinte.
• A chuva molha.
• Existe vida em outros planetas.
A primeira é uma proposição falsa; a segunda é verdadeira; já a
terceira é uma proposição que pode ser verdadeira ou falsa, mas
não sabemos ainda seu valor. Sentenças do tipo “Como você está?”
e “Ele é vaidoso” não são consideradas proposições, pois, no caso
da primeira, não possui um valor verdadeiro ou falso e, no caso da
segunda, o sujeito não está definido.
Para agrupar sentenças, usam-se os conectivos, por exemplo:
“tem sol e está frio”. No caso dessa frase, o conectivo e tem um signifi-
cado que dá o valor lógico da sentença como um todo. Aqui usam-se
letras maiúsculas para denotar sentenças, conhecidas como letras de
proposição, ou símbolos proposicionais. Já os elementos que combinam as senten-
ças para formar outras mais complicadas são os conectivos lógicos.
Assumindo que o conectivo lógico ∧ representa o e na frase, então pode-se es-
crever: P ∧ Q, assumindo P como sendo “Tem sol” e Q como sendo “está frio”. Para
escrever as sentenças, usa-se um alfabeto, definido como:
• Símbolos proposicionais: {A, B, C, ...}.
• Parênteses: ( e ).
• Conectivos lógicos: ¬, ∧, ∨, → e ↔.
• Símbolos de valores verdade: V e F.
Toda lógica possui uma sintaxe e uma semântica. Uma sintaxe define quais
sentenças são permitidas ou, mais formalmente, quais sentenças são bem forma-
das, também conhecidas como fórmulas bem formadas (FBF). A sintaxe da lógica
proposicional pode ser definida pelas seguintes regras:
Vídeo
Para saber mais sobre
como a lógica é tida como
a ciência do raciocínio,
recomenda-se o vídeo A
Lógica como ciência do ra-
ciocínio, apresentado por
Itala M. L. D’Ottaviano.
Disponível em: https://youtu.be/
LxhOLJLuNcY. Acesso em: 7 dez.
2020.
Saiba mais
Para o estudo mais avançado de
inteligência artificial (IA), pode-se
estudar a lógica de primeira ordem
e as lógicas não clássicas, como
as lógicas modais, dependendo
do tipo de aspecto que se quer
representar.
72 Inteligência Artificial
Todas os
símbolos
proposicionais
e símbolos de
valores verdade
são fórmulas
bem formadas.
Se α é uma
fórmula bem
formada, então
(α) também é
bem formada.
Se α é uma
fórmula bem
formada,
então ¬α
também é
bem formada.
Se α e β são
fórmulas bem
formadas, então
α ∧ β, α ∨ β, α
→ β e α ↔ β
também são
bem formadas.
Somente
são bem
formadas as
fórmulas que
seguem essas
regras.
Nessa definição, as letras α e β denotam qualquer fórmula bem formada, desde
simples até complexas.
Define-se também um literal como sendo uma sentença atômica positiva ou
negativa (com o conectivo de negação). Dessa forma, sejam P, Q, R e S letras propo-
sicionais, os seguintes exemplos são FBFs:
• (P ∨ Q) ∧ R
• ¬(¬S ∧ P) ∨ (Q ∨ ¬¬R)
Já os seguintes exemplos não são FBFs:
• (P Q)
• P ¬ Q
• (P ∨ Q) ∧∧ R
A semântica da lógica proposicional define as regras para se determinar se uma
sentença é verdadeira ou falsa com respeito a um estado do mundo. Por exemplo,
a sentença “Está chovendo” depende de como está o clima. A atribuição de um valor
verdade a sentenças é chamado de interpretação, que é uma situação de verdade ou
falsidade em um mundo possível. Se a fórmula for verdadeira para uma interpre-
tação, então essa interpretação é chamada formalmente de modelo. Formalmente,
diz-se que uma interpretação é um mapeamento dos símbolos proposicionais para {
V, F }. A semântica da lógica proposicional pode ser definida da seguinte forma:
Uma interpretação
é a atribuição de
valores verdade V e
F para cada símbolo
proposicional.
O símbolo V tem
valor verdadeiro e o
símbolo F tem valor
falso.
P ∨ Q é verdadeiro
se, e somente
se, P ou Q forem
verdadeiros.
¬P é verdadeiro se,
e somente se, P for
falso.
P → Q é verdadeiro
exceto se P for
verdadeiro e Q
falso.
P ∧ Q é verdadeiro
se, e somente
se, P e Q forem
verdadeiros.
P ↔ Q é verdadeiro
se, e somente
se, ambos forem
verdadeiros ou
ambos forem falsos.
Com a apresentação da semântica, consegue-se construir uma tabela-verdade,
com todos os possíveis valores lógicos dos elementos de uma sentença e o seu re-
sultado final. Sejam P e Q afirmações, a Tabela 1 mostra a tabela-verdade de todos
Raciocínio lógico e conhecimento 73
os conectivos apresentados. Os valores lógicos Verdadeiro e Falso são representa-
dos por V e F respectivamente.
Tabela 1
Tabela-verdade dos conectivos
P Q ¬P P ∧ Q P ∨ Q P → Q P ↔Q
V V F V V V V
V F F F V F F
F V V F V V F
F F V F F V V
Fonte: Elaborada pelo autor.
Com base na sintaxe e na semântica, pode-se criar a tabela-verdade de qualquer
sentença, simples ou complexa. Inicia-se listando todos os símbolos proposicionais
à esquerda e todas as combinaçõesde valores verdade possíveis. Por exemplo, seja
a sentença (P ∨ Q) → ¬R. Como há três símbolos proposicionais, tem-se 23 linhas na
tabela, que são todas as interpretações possíveis.
Para facilitar a compreensão, pense na tabela-verdade construída por partes.
Depois das combinações de valores verdade dos símbolos proposicionais, tem-se a
aplicação das interpretações em (P ∨ Q) do lado esquerdo, em ¬R do lado direito, e
da fórmula completa no meio, em destaque (Tabela 2).
Tabela 2
Tabela verdade de (P ∨ Q) → ¬R
P Q R P ∨ Q (P ∨ Q) → ¬R ¬R
V V V V F F
V V F V V V
V F V V F F
V F F V V V
F V V V F F
F V F V V V
F F V F V F
F F F F V V
Fonte: Elaborada pelo autor.
No caso dessa fórmula, diz-se, por exemplo, que a interpretação m = {P = verda-
deiro, Q = verdadeiro, R = falso} é um modelo.
Quando uma FBF α possui um modelo m, isto é, uma interpretação que torna a
FBF verdadeira, diz-se que m satisfaz α. Assim, se uma FBF α possui uma interpreta-
ção que a torna verdadeira, diz-se que α é satisfatível (ou consistente). Denota-se
M(α) a todos os modelos de uma FBF α.
Quando uma FBF α possui valor verdadeiro para todas as interpretações possí-
veis, α é chamada de tautologia, ou α é dita válida. Se uma FBF assume valor falso
para todas as interpretações é chamada de contradição, ou inválida. Nesse caso,
diz-se que α é insatisfatível (ou inconsistente).
Por exemplo, sejam as fórmulas P ∨ ¬P e ¬P ∧ (P ∧ ¬Q). A Tabela 3 apresenta a
tabela-verdade da primeira fórmula, e a Tabela 4 mostra a tabela-verdade da se-
gunda. Conforme pode-se perceber, a primeira é uma tautologia, e a segunda uma
contradição.
O problema de determinar se uma
fórmula é satisfatível, isto é, se há
uma atribuição que a torne verda-
deira, também conhecido como
SAT, foi o primeiro problema pro-
vado ser NP-completo, em 1971
por Stephen Cook (COOK, 1971).
Muitos problemas da ciência da
computação são essencialmente
problemas de satisfatibilidade,
como o caso dos problemas de
satisfação de restrições (CSP).
Saiba mais
74 Inteligência Artificial
Tabela 3
Tabela-verdade de P ∨ ¬P
P P ∨ ¬P ¬P
V V F
F V V
Fonte: Elaborada pelo autor.
Tabela 4
Tabela-verdade de ¬P ∧ (P ∧ ¬Q)
P Q ¬P ¬P ∧(P ∧¬Q) (P ∧¬Q) ¬Q
V V F F F F
V F F F V V
F V V F F F
F F V F F V
Fonte: Elaborada pelo autor.
Duas fórmulas α e β são ditas logicamente equivalentes quando seus valores verda-
de dos símbolos proposicionais de α e β são os mesmos para todas as interpretações.
Por exemplo, P e ¬(¬P) são logicamente equivalentes. Também são equivalentes P → Q
e (¬P) ∨ Q. Denotam-se duas FBFs α e β equivalentes como α ≡ β. Desse conceito tiram-
-se várias equivalências notáveis, também chamadas de leis, a saber:
Elemento neutro de ∧: α ∧ V ≡ α.
Elemento neutro de ∨: α ∨ F ≡ α.
Elemento anulador de ∧: α ∧ F ≡ F.
Elemento anulador de ∨: α ∨ V ≡ V.
Comutatividade de ∧: α ∧ β ≡ β ∧ α.
Comutatividade de ∨: α ∨ β ≡ β ∨ α.
Associatividade de ∧: (α ∧ β) ∧ γ ≡ α ∧ (β ∧ γ).
Associatividade de ∨: (α ∨ β) ∨ γ ≡ α ∨ (β ∨ γ).
Dupla negação: ¬(¬α) ≡ α.
Contrapositiva: α → β ≡ ¬β → ¬α.
Condicional: α → β ≡ ¬α ∨ β.
Bicondicional: α ↔ β ≡ (α → β) ∧ (β → α).
De Morgan: ¬(α ∧ β) ≡ ¬α ∨ ¬β.
De Morgan: ¬(α ∨ β) ≡ ¬α ∧ ¬β.
Distributiva de ∧ sobre ∨: α ∧ (β ∨ γ) ≡ (α ∧ β) ∨ (α ∧ γ).
Distributiva de ∨ sobre ∧: α ∨ (β ∧ γ) ≡ (α ∨ β) ∧ (α ∨ γ).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Ha
ri
Sy
ah
pu
tra
/ s
hu
tte
rs
to
ck
Raciocínio lógico e conhecimento 75
Perceba que essas leis funcionam em qualquer direção, isto é: p → q é equiva-
lente a ¬p ∨ q. Também, ¬a ∨ b é equivalente a a → b.
Foram usadas letras gregas nas leis para denotar que elas são como esquemas
de substituição, ou seja, α pode ser uma afirmação bem complexa. Por exemplo,
seja α a afirmação (p ∧ q) e seja β a afirmação (q → (r ∨ s)), então a lei do condicional
pode ser aplicada da seguinte forma:
(p ∧ q) → (q → (r ∨ s)) ≡ ¬ (p ∧ q) ∨ (q → (r ∨ s))
Uma das grandes vantagens no uso da lógica para representar o conhecimento
é que, junto com ela, tem-se noções de verdade, consequência e inferência natu-
ralmente ou com formalismo matemático. Todo o arcabouço formal apresentado,
bem como as equivalências notáveis são a base de um mecanismo de raciocínio
baseado em lógica.
3.3 Raciocínio baseado em lógica
Vídeo Para raciocinar em lógica, usa-se o conceito de consequência lógica entre fór-
mulas. Uma fórmula β é consequência lógica de α, denotada por α ⊨ β, quando
todo modelo de α também é modelo de β. Pode-se escrever da seguinte forma:
α ⊨ β se, e somente se, M (α) ⊆ M (β)
Convém ressaltar que essa definição é mais forte para α, isto é, todo modelo de
α também é modelo de β, mas β pode ter outros modelos que não satisfazem α.
Representando a consequência lógica como tabelas-verdade, diz-se que α ⊨ β
se, e somente se, α → β for uma tautologia. Pode-se dizer também que uma FBF β é
consequência lógica de várias FBFs α1, α2, ..., αn, denotada como α1, α2, …, αn ⊨ β se,
e somente, (α1 ∧ α2 ∧ ... αn ) → β for uma tautologia. Nesse caso, as fórmulas α1, α2,
..., αn são chamadas de axiomas, ou premissas, de β. Por exemplo, seja α1 = (P → Q),
α2 = ¬Q e β = ¬P. Para provar que (P → Q), ¬Q ⊨ ¬P, constrói-se a tabela-verdade de
((P → Q) ∧ ¬Q) → ¬P, conforme a Tabela 5.
Tabela 5
Tabela-verdade de ((P → Q) ∧ ¬Q) → ¬P
P Q P → Q ¬Q (P → Q) ∧ ¬Q ((P → Q) ∧ ¬Q) → ¬P ¬P
V V V F F V F
V F F V F V F
F V V F F V V
F F V V V V V
Fonte: Adaptada de Chang; Lee, 1997.
Um outro conceito importante é que se β é consequência lógica de α1, α2, ..., αn,
então a fórmula (α1 ∧ α2 ∧ ... αn ) → β é chamada de teorema e β é dita a conclusão
do teorema (CHANG; LEE, 1997).
Assim, provar um teorema pode ser feito por meio da enumeração de todas as
interpretações baseadas nos símbolos proposicionais e no cálculo do valor verdade
do teorema. O problema dessa abordagem é que, como já visto, se a fórmula tiver
76 Inteligência Artificial
n símbolos proposicionais, sua tabela-verdade terá 2n linhas, sendo exponencial em
relação ao número de símbolos proposicionais.
Com base no conceito de satisfatibilidade, tem-se uma relação com a validade,
a saber, uma FBF α é satisfatível se, e somente se, ¬α não for válida. Dessa forma,
pode-se elaborar o seguinte:
α ⊨ β se, e somente se, α ∧ ¬β for insatisfatível
Essa técnica usada para provar que α ∧ ¬β não é satisfatível é clássica na mate-
mática e na lógica e é chamada reductio ad absurdum, ou redução ao absurdo, pro-
va por refutação ou prova por contradição. Em outras palavras, para se provar que
β é consequência de α, assume-se que β seja falsa e demonstra-se que, juntamente
com α, ela leva a uma contradição. Nesse caso, como ¬β gerou uma contradição a
partir de α, β necessariamente deve ser verdadeira (RUSSEL; NORVIG, 2013).
Uma prova é uma sequência de conclusões tiradas das afirmações que levam
ao objetivo. As conclusões são derivadas por meio de regras de inferência. A regra
de inferência mais popular é a Modus Ponens, descrita como:
α → β, α
β
Essa regra diz que, se forem conhecidas as sentenças α → β e α, então pode-
-se deduzir β. Um exemplo de aplicação pode ser apresentado com as seguintes
proposições:
• α: Chove.
• β: Faz frio.
Assim, imagine as afirmações:
• α → β: Se chove, então faz frio.
• α: Chove.
As afirmações dizem que se chove, então faz frio. Depois, afirma-se que está
chovendo, portanto deduz-se que está fazendo frio.
Outra regra de inferência conhecida é a Eliminação da Conjunção, que pode
ser representada da seguinte forma:
α ∧ β
α
Essa regra diz que, se uma sentença com uma conjunção (um e) é verdadeira,
então qualquer um dos lados da conjunção, sozinho, também é verdadeiro. Por
exemplo, se a sentença “Chove e faz frio” for verdadeira, então “Chove” é verdadei-
ra e “Faz frio” também é (pois a conjunção é comutativa).
As regras de inferência também podem ser escritas com a notação de derivação
com o símbolo ⊢. Por exemplo, Modus Ponens fica:
α → β, α⊢ β
As afirmações antes do símbolo ⊢ são conhecidas e o que vem depois é deduzi-
do. Uma diferença entre as regras de inferência e as leis é que as leis apresentam
equivalências nos dois sentidos, já as regras de inferência não. Isto é, não é possível
Raciocínio lógico e conhecimento 77
deduzir o lado esquerdo de uma regra a partir do lado direito. O Quadro 1 apresen-
ta as regras de inferência mais conhecidas.
Quadro 1
Regras de inferência
Nome Sigla Regra
Adição AD α⊢ α∨ β
Eliminação da conjunção EC α ∧ β ⊢ α
Conjunção CONJ α, β ⊢ α ∧ β
Absorção ABS α → β ⊢ α→ (α ∧ β)
Modus Ponens MP α → β, α ⊢ β
Modus Tollens MT α → β, ¬β ⊢ ¬α
Silogismo disjuntivo SD
α ∨ β, ¬α ⊢ ¬β
α ∨β, ¬β ⊢ ¬α
Silogismo hipotético SH α → β, β → γ ⊢ α → γ
Dilema construtivo DC α → β, γ→ δ, α ∨ γ ⊢ β ∨ δ
Dilema destrutivo DD α → β, γ → δ,¬β ∨ ¬δ ⊢¬α ∨ ¬γ
Fonte: Elaborado pelo autor.
Seja um conjunto de sentenças conhecidas, chamadas base de conhecimento
(KB). Provar que uma sentença α é verdadeira em KB é efetuar uma prova de α
usando como base KB. Uma maneira de provar α com base em KB é efetuar um
encadeamento de regras de inferência e leis (equivalências notáveis) sobre KB até
se conseguir a sentença α. Por exemplo, sejam as seguintes afirmações:
• Se as uvas caem, então a raposa as come.
• Se a raposa as come, então estão maduras.
• As uvas estão verdes ou caem.
E tenha como objetivo provar que:
• A raposa come as uvas se, e somente se, as uvas caem.
O primeiro passo é usar símbolos proposicionais para representar as afirma-
ções, por exemplo:
• p: as uvas caem.
• q: a raposa come as uvas.
• r: as uvas estão maduras.
Dessa forma, as afirmações podem ser representadas pelas seguintes senten-
ças, rotuladas como Ri:
R1) p → q
R2) q → r
R3) ¬r ∨ p
E a conclusão a ser derivada é:
Q) q ↔ p
A partir de agora, a prova é feita aplicando-se as leis e regras de inferência até
que a afirmação Q seja encontrada. Primeiramente se aplica a lei do condicional
(α → β ≡ ¬α ∨ β) em R3, gerando uma nova afirmação como resultado (R4). Do lado
78 Inteligência Artificial
direito será apontada a lei ou regra de inferência utilizada e as afirmações nas quais
foram aplicadas. O traço separa as premissas das afirmações deduzidas. A base
fica:
R1) p → q
R2) q → r
R3) ¬r ∨ p
R4) r → p (Condicional, R3)
Logo após, pode-se aplicar o silogismo hipotético em R2 e R4, sendo que a base
fica:
R1) p → q
R2) q → r
R3) ¬r ∨ p
R4) r → p (Condicional, R3)
R5) q → p (SH, R2 e R4)
Usando as afirmações R5 e R1, pode-se aplicar a regra da conjunção. Perceba a
ordem em que as afirmações são usadas para a regra, resultando na seguinte base:
R1) p → q
R2) q → r
R3) ¬r ∨ p
R4) r → p (Condicional, R3)
R5) q → p (SH, R2 e R4)
R6) (q → p) ∧ (p → q) (CONJ, R5 e R1)
Ao final, aplica-se a lei do bicondicional, resultando na seguinte base:
R1) p → q
R2) q → r
R3) ¬r ∨ p
R4) r → p (Condicional, R3)
R5) q → p (SH, R2 e R4)
R6) (q → p) ∧ (p → q) (CONJ, R5 e R1)
R7) q ↔ p (Bicondicional, R6)
A afirmação R7 é exatamente a que queríamos provar, o que demonstra que
essa afirmação decorre da base de conhecimento inicial (R1, R2 e R3).
Raciocínio lógico e conhecimento 79
Uma vez definidas a sintaxe e semântica da lógica proposicional, pode-se usá-la
para criar uma base de conhecimento para o Mundo de Wumpus. Para facilitar,
serão usados símbolos proposicionais com índices subscritos para indicar as posi-
ções [x, y] em que um elemento se encontra:
• Px,y é verdadeiro se existe um poço na posição [x, y].
• Wx,y é verdadeiro se Wumpus está na posição [x, y].
• Bx,y é verdadeiro se o agente percebe uma brisa na posição [x, y].
• Sx,y é verdadeiro se o agente percebe um fedor na posição [x, y].
A base inicial contém informações imutáveis do mundo, isto é, são verdadeiras
em qualquer mundo de Wumpus, pois fazem parte das regras do jogo, a saber:
• R1: ¬P1,1
• R2: B1,1 ↔ (P1,2 ∨ P2,1)
• R3: B2,1 ↔ (P1,1 ∨ P2,2 ∨ P3,1)
Logo após o agente visitar as duas primeiras salas, inclui-se na base:
• R4: ¬B1,1
• R5: B2,1
Com a definição do processo de inferência, pode-se começar a tirar conclusões
com base nas afirmações. Primeiramente elimina-se a bicondicional de R2, obten-
do-se R6 e a seguinte base:
R1: ¬P1,1
R2: B1,1 ↔ (P1,2 ∨ P2,1)
R3: B2,1 ↔ (P1,1 ∨ P2,2 ∨ P3,1)
R4: ¬B1,1
R5: B2,1
R6: ( B1,1 → (P1,2 ∨ P2,1) ) ∧ ( (P1,2 ∨ P2,1) → B1,1) (Bicondicional, R2)
Em seguida, aplica-se a eliminação da conjunção em R6:
R1: ¬P1,1
R2: B1,1 ↔ (P1,2 ∨ P2,1)
R3: B2,1 ↔ (P1,1 ∨ P2,2 ∨ P3,1)
R4: ¬B1,1
R5: B2,1
R6: ( B1,1 → (P1,2 ∨ P2,1) ) ∧ ( (P1,2 ∨ P2,1) → B1,1) (Bicondicional, R2)
R7: (P1,2 ∨ P2,1) → B1,1 (Elim.Conjunção, R6)
80 Inteligência Artificial
Depois, aplica-se a contrapositiva em R7, obtendo-se:
R1: ¬P1,1
R2: B1,1 ↔ (P1,2 ∨ P2,1)
R3: B2,1 ↔ (P1,1 ∨ P2,2 ∨ P3,1)
R4: ¬B1,1
R5: B2,1
R6: ( B1,1 → (P1,2 ∨ P2,1) ) ∧ ( (P1,2 ∨ P2,1) → B1,1) (Bicondicional, R2)
R7: (P1,2 ∨ P2,1) → B1,1 (Elim.Conjunção, R6)
R8: ¬B1,1 → ¬ (P1,2 ∨ P2,1) (Contrapositiva, R7)
Logo após, aplica-se Modus Ponens com R8 e a percepção do agente R4:
R1: ¬P1,1
R2: B1,1 ↔ (P1,2 ∨ P2,1)
R3: B2,1 ↔ (P1,1 ∨ P2,2 ∨ P3,1)
R4: ¬B1,1
R5: B2,1
R6: ( B1,1 → (P1,2 ∨ P2,1) ) ∧ ( (P1,2 ∨ P2,1) → B1,1) (Bicondicional, R2)
R7: (P1,2 ∨ P2,1) → B1,1 (Elim.Conjunção, R6)
R8: ¬B1,1 → ¬ (P1,2 ∨ P2,1) (Contrapositiva, R7)
R9: ¬ (P1,2 ∨ P2,1) (MP, R4, R8)
E finalmente aplica-se a Lei de Morgan em R9, obtendo-se R10, como pode ser
observado a seguir:
R1: ¬P1,1
R2: B1,1 ↔ (P1,2 ∨ P2,1)
R3: B2,1 ↔ (P1,1 ∨ P2,2 ∨ P3,1)
R4: ¬B1,1
R5: B2,1
R6: (B1,1 → (P1,2 ∨ P2, 1)) ∧ ( (P1,2 ∨ P2,1) → B1,1) (Bicondicional, R2)
R7: (P1,2 ∨ P2,1) → B1,1 (Elim.Conjunção, R6)
R8: ¬B1,1 → ¬ (P1,2 ∨ P2,1) (Contrapositiva, R7)
R9: ¬ (P1,2 ∨ P2,1) (MP, R4, R8)
R10: ¬P1,2 ∧ ¬P2,1 (De Morgan, R9)
Raciocínio lógico e conhecimento 81
Pelo processo de inferência, a afirmação R10 é consequência lógica das regras
R1, R2 e R3 e das percepções R4 e R5. Isto é, consegue-se provar que não há poço em
[1, 2] (dado por ¬P1,2) e que não há poço em [2, 1] (dado por ¬P2,1). Dessa forma, per-
cebe-se que todo o processo de raciocínio pode ser mapeado para transformações
de afirmações por meio de leis de equivalência e regras de inferência.
Como deve ter ficado evidente, muitos pontos de escolha aparecem nesse
processo. Qual regra aplicar? Sobre quais afirmações aplicar? Como saber quais
conclusões são necessárias? Se for implementado como um algoritmo de busca, fa-
cilmente a árvore de busca pode tomar proporções gigantescas. Se por acaso uma
regra de inferência não for implementada, como o caso da bicondicional, a prova
apresentada anteriormente não seria possível. Ademais, a grande diversidade de
conectivos pode ser um fator de crescimento de possibilidades na busca.
Assim, para implementação de procedimentos de prova, classicamente pode-se
transformar todas as afirmações em um formato padrão, conhecido como forma
normal conjuntiva (CNF, do inglês Conjuntive Normal Form). Trata-se de um formato
em que todas as fórmulas são convertidas para uma conjunção de disjunções, nas
quais as negações incidem somente sobre símbolos proposicionais, por exemplo:
(p ∨ ¬q ∨ r) ∧ (¬p ∨ s ∨ ¬r). Cada parte disjuntiva da fórmula é chamada de cláusula
e, assim, uma base pode ser facilmente convertida para uma conjunção de várias
cláusulas.
Por exemplo, a fórmula B1,1 ↔ (P1,2 ∨ P2,1) pode ser convertida para CNF a partir
da aplicação das leis de equivalências, com os seguintes passos:
1. (B1,1 → (P1,2 ∨ P2,1)) ∧ ((P1,2 ∨ P2,1) → B1,1) (Bicondicional)
2. (¬B1,1 ∨ P1,2 ∨ P2,1) ∧ (¬(P1,2 ∨ P2,1) ∨ B1,1) (Condicional)
3. (¬B1,1 ∨ P1,2 ∨ P2,1) ∧ ((¬P1,2 ∧ ¬P2,1) ∨ B1,1) (De Morgan)
4. (¬B1,1 ∨ P1,2 ∨ P2,1) ∧ (¬P1,2 ∨ B1,1) ∧ (¬P2,1 ∨ B1,1) (Distributiva)
Como foram aplicadas leis de equivalência, pode-se dizer que:
B1,1 ↔ (P1,2 ∨ P2,1) ≡ (¬B1,1 ∨ P1,2 ∨ P2,1) ∧ (¬P1,2 ∨ B1,1) ∧ (¬P2,1 ∨B1,1)
Com todas as fórmulas em um padrão, pode-se definir um procedimento de in-
ferência baseada em somente uma regra de inferência: o Princípio da Resolução
(ROBINSON, 1965). Esse princípio diz que dadas duas cláusulas C1 e C2, se houver
um literal L em C1 que está de maneira complementar em C2, então pode-se remo-
ver L e seu complemento de C1 e C2 e construir uma disjunção de ambas as cláusu-
las. O resultado é chamado resolvente de C1 e C2 (CHANG; LEE, 1997). Por exemplo,
sejam as duas cláusulas:
• C1: P ∨ R
• C2: ¬P ∨ Q
Como se observa a presença de P em C1 e ¬P em C2, pode-se aplicar o princípio
da resolução em C1 e C2, obtendo como resolvente: R ∨ Q.
82 Inteligência Artificial
Uma importante propriedade é dada por um teorema que afirma que qualquer
resolvente de duas cláusulas é uma consequência lógica dessas cláusulas. Caso se
tenha duas cláusulas unitárias, isto é, contendo somente um literal, para as quais
se pode aplicar o princípio da resolução, então, como resultado, obtém-se uma
cláusula vazia, denotada por ⊥ e cujo valor verdade é sempre falso.
Dado um conjunto S de cláusulas, uma dedução de C a partir de S é uma sequên-
cia finita de cláusulas C1, C2, ..., Ck, tal que cada Ci ou é uma cláusula de S ou é um
resolvente de cláusulas que precedem Ci e Ck = C. Uma dedução da cláusula vazia ⊥
é chamada refutação, ou prova de S (CHANG; LEE, 1997). Como consequência, deri-
var ⊥ a partir de um conjunto de cláusulas S indica que S é insatisfatível, isto é, não
há qualquer valoração de seus literais que torne S verdadeira.
Esse conceito pode ser aplicado para definir um procedimento de prova com
base no princípio da resolução. Dado um conjunto de cláusulas S, formado por C1,
C2, ..., Ck, provar que Q é verdadeiro é o mesmo que provar que a fórmula C1 ∧ C2 ∧ ...
∧ Ck → Q é válida. Como o conjunto de cláusulas pode ter um número muito grande
de símbolos proposicionais, torna-se inviável calcular a tabela-verdade dessa fór-
mula. Então, pode-se provar que a seguinte fórmula é insatisfatível:
C1 ∧ C2 ∧ ... ∧ Ck ∧ ¬Q
Essa prova é conhecida como prova por refutação. Assim, basta aplicar uma se-
quência de princípios da resolução nesse novo conjunto de cláusulas até que seja
derivado ⊥.
Para aplicar a prova por refutação no Mundo de Wumpus, segue-se o mesmo
processo. Por exemplo, seja como base de conhecimento (KB) somente R2 e R4, para
facilitar o processo. Dessas duas, deseja-se saber se não há poço em [1, 2], isto é,
¬P1,2. Assim, a base de conhecimento é uma conjunção (conectivo e) de tudo o que
é conhecido:
KB = R2 ∧ R4 = (B1,1 ↔ (P1,2 ∨ P2,1)) ∧ (¬B1,1)
Como apresentado anteriormente, para provar uma afirmação α, deve-se con-
verter KB ∧ ¬α em CNF e aplicar regras de inferência até que seja encontrada a
cláusula vazia ⊥. Assim, convertendo para CNF, tem-se as seguintes cláusulas:
• C1: ¬P2,1 ∨ B1,1
• C2: ¬B1,1 ∨ P1,2 ∨ P2,1
• C3: ¬P1,2 ∨ B1,1
• C4: ¬B1,1
• C5: P1,2
Aplicando-se o princípio da resolução em C3 e C4, obtém-se C6, a saber:
C1: ¬P2,1 ∨ B1,1
C2: ¬B1,1 ∨ P1,2 ∨ P2,1
C3: ¬P1,2 ∨ B1,1
C4: ¬B1,1
C5: P1,2
C6: ¬P1,2 RESOLUÇÃO, C3, C4
Raciocínio lógico e conhecimento 83
Aplicando-se o princípio da resolução em C5 e C6, obtém-se C7, que é a cláusula
vazia, a saber:
C1: ¬P2,1 ∨ B1,1
C2: ¬B1,1 ∨ P1,2 ∨ P2,1
C3: ¬P1,2 ∨ B1,1
C4: ¬B1,1
C5: P1,2
C6: ¬P1,2 RESOLUÇÃO, C3, C4
C7: ⊥ RESOLUÇÃO, C5, C6
Dessa forma, está provado pela base de conhecimento que P1,2 gera uma con-
tradição, indicando que ¬P1,2 é uma consequência lógica de KB.
O processo apresentado anteriormente levou em consideração que se sabia
exatamente quais cláusulas deveriam ser operadas. Contudo, em um processo de
busca não há tal informação e deve-se ter alguma percepção nas escolhas a serem
feitas. O Algoritmo 1 apresenta um processo simples de resolução, sem qualquer
tipo de otimização ou heurística para a escolha de cláusulas a serem resolvidas.
Algoritmo: Resolução
Dados Recebidos: KB e α
Retorno: Verdadeiro ou Falso
1 Cláusulas ← Transformação de KB ∧ ¬α para CNF
2 Novas ← ∅
3 REPITA
4 PARA CADA Ci, Cj ∈ Cláusulas FAÇA
5 Resolventes ← RESOLVER(Ci, Cj)
6 SE Resolventes contém ⊥ ENTÃO
7 RETORNAR Verdadeiro
8 FIM SE
9 Novas ← Novas ∪ Resolventes
10 FIM PARA
11 SE Novas ⊆ Cláusulas ENTÃO
12 RETORNAR Falso
13 FIM SE
14 Cláusulas ← Cláusulas ∪ Novas
15 FIM REPITA
Algoritmo 1
Algoritmo de resolução simples
Fonte: Adaptado de Russel; Norvig, 2013.
Esse algoritmo tem vários desafios a serem abordados, que são objeto de pes-
quisa avançada na área. Dentre eles, têm-se:
84 Inteligência Artificial
Quais cláusulas
escolher primeiro?
Como descobrir
rapidamente que
resolver duas
cláusulas não
está gerando
informações já
conhecidas?
Tendo duas
cláusulas
escolhidas, quais
literais escolher
para resolver
primeiro?
Como detectar
que, em algum
momento, o
procedimento não
para porque não é
possível se provar
α?
Outros aspectos importantes se referem ao poder de representação da lógica
proposicional. Nesse aspecto, outras representações e lógicas são usadas, como a
lógica de primeira ordem em que se representam objetos e relações, bem como
quantificação para os objetos. É possível escrever afirmações usando o símbolo ∀,
que significa para todo, e ∃, que significa existe; por exemplo:
∀x Homem(x) → Mortal(x)
Homem(Sócrates)
Essas afirmações indicam que “Para todo x, se x é um homem, então x é mortal”
e “Sócrates é homem”. Aplicando um procedimento de inferência, seria possível
provar Mortal(Sócrates), isto é, “Sócrates é mortal”.
Ademais, outras lógicas podem ser empregadas para representação de outros
aspectos, como tempo, valores parcialmente verdadeiros, crenças etc.
3.4 Planejamento
Vídeo Como visto aqui, a IA se dedica também ao estudo de ações racionais, sendo
o planejamento parte inerente e importante da IA. Pode-se definir planejamento
como a elaboração de um plano de ação para atingir um objetivo.
Um agente de resolução de problemas baseado em busca pode encontrar se-
quências de ações até que um estado objetivo seja encontrado, mas como trata
somente de estados atômicos, depende de boas heurísticas para ter um desempe-
nho aceitável. Já um agente baseado em inferência, como o do Mundo de Wumpus,
sofre pela explosão combinatória quando há muitos estados e ações; por exemplo,
a ação que move o agente um passo à frente deve ser repetida nas quatro direções,
por vários passos no tempo e n2 localizações (tamanho da caverna).
Assim, uma representação mais adequada dos estados e ações, baseada na ex-
pressividade e nos processos de inferência da lógica, deve ser utilizada, como a
PDDL (do inglês Planning Domain Description Language) (MCDERMOTT et al., 1998).
Ela é uma linguagem derivada do Strips (do inglês Stanford Research Institute Pro-
blem Solver) e é uma forma simples de representar os estados, ações, pré-con-
dições e efeitos dessas ações. Em PDDL, cada estado é representado como uma
conjunção de fluentes.
Um fluente é uma condição que pode mudar ao longo do tempo. Por exemplo,
Em(Caminhão1, SãoPaulo) ∧ Em(Caminhão2, Curitiba) indica que o Caminhão1 está
em São Paulo e o Caminhão2 está em Curitiba. Não são permitidos fluentes não ins-
tanciados em um estado, como Em(x, y), pois não se sabe qual é o caminhão nem
Para entender um pouco
sobre como era a navega-
ção autônoma do veículo
de exploração espacial
Curiosity, que usa um pla-
nejador, você pode assistir
ao vídeo Curiosity Drives
Itself With Autonav Tech.
Disponível em: https://youtu.be/
zZlonRahRMM. Acesso em: 7 dez.
2020.
Vídeo
https://youtu.be/zZlonRahRMM
https://youtu.be/zZlonRahRMM
Raciocínio lógico e conhecimento 85
onde está, ou seja, as variáveis x e y não possuem valor ou não estão instanciadas.
Nesse caso, é usada a suposição do mundo fechado, isto é, se alguma afirmação
não está presente, então é assumida falsa. Dessa forma, em PDDL não se represen-
ta fluentes negativos em um estado, como¬Em(Caminhão1, RiodeJaneiro).
Um estado sempre é representado por uma conjunção de fluentes, em que
todas as afirmações são positivas. Essa conjunção pode ser facilmente manipu-
lada por meio de regras de inferência. Já as ações são um conjunto de esquemas
que descrevem o que muda e o que permanece o mesmo como resultado de sua
aplicação.
Em planejamento clássico, considera-se que a aplicação de uma ação deixa a
maioria das coisas inalteradas. Assim, no resultado de uma ação em PDDL é es-
pecificado somente o que muda; o que permanece inalterado não é mencionado.
Um esquema de ação deve especificar as pré-condições para aplicação da ação
e qual é o seu efeito; por exemplo:
AÇÃO (Voar(p, de, para)
PRECOND: Em(p, de) ∧ Avião(p) ∧ Aeroporto(de) ∧ Aeroporto(para)
EFEITO: ¬Em(p, de) ∧ Em(p, para))
Esse esquema define a ação Voar(p, de, para), que, quando aplicada em um avião
p, efetua o voo do aeroporto de até o aeroporto para. Os símbolos p, de e para são
variáveis não instanciadas (isto é, sem valor). Como precondições, p deve estar no
aeroporto de (Em(p, de)) e deve ser um avião (Avião(p)), e de e para devem ser ae-
roportos (Aeroporto(de) ∧ Aeroporto(para)). Como efeito, o avião deixa de estar no
aeroporto de (¬Em(p, de)) e passa a estar no aeroporto para (Em(p, para)).
Uma ação instanciada ocorre quando são dados valores às variáveis; por
exemplo:
AÇÃO(Voar(Voo1015, CWB, CGH)
PRECOND: Em(Voo1015, CWB) ∧ Avião(Voo1015) ∧ Aeroporto(CWB) ∧ Aeroporto(CGH)
EFEITO: ¬Em(Voo1015, CWB) ∧ Em(Voo1015, CGH))
Nesse exemplo, a variável p foi instanciada para Voo1015, a variável de tem o
valor CWB e a variável para tem o valor CGH. Ou seja, todas as ocorrências foram
substituídas.
Uma ação pode ser executada em um estado s se a sua precondição for uma
consequência lógica de s. Assim, se as precondições de uma ação forem satisfeitas
em um estado s, diz-se que a ação é aplicável em s. O resultado da aplicação de
uma ação é um estado s’ formado pelos fluentes de s, removendo os fluentes que
aparecem negativos nos efeitos da ação (também chamados de lista de exclusão)
e adicionando os fluentes que aparecem positivos nos efeitos da ação (também
chamados de lista de adição). No exemplo apresentado sobre a ação Voar(Voo1015,
CWB, CGH), tem-se:
86 Inteligência Artificial
• Lista de exclusão: Em(Voo1015, CWB).
• Lista de adição: Em(Voo1015, CGH).
O estado inicial de um problema de planejamento é uma conjunção de fluen-
tes instanciados. Pela suposição do mundo fechado, qualquer fluente não mencio-
nado é falso.
O objetivo de um problema de planejamento é uma conjunção de fluentes, que
pode conter variáveis e ser positivo ou negativo. O problema é resolvido quando
é possível encontrar uma sequência de ações que gera um estado que satisfaz o
objetivo. Por exemplo, seja como objetivo o seguinte estado: Em(p, CGH) ∧ Avião(p).
Assim, os seguintes estados satisfazem esse objetivo:
• Em(Voo1015, CGH) ∧ Avião(Voo1015).
• Em(Voo8080, CGH) ∧ Avião(Voo8080) ∧ Avião(Voo3435) ∧ Em(Voo3435, CWB).
Como exemplo, seja um domínio famoso em planejamento conhecido como
Mundo dos Blocos, o qual é formado por blocos sobre uma mesa e alguns blocos po-
dem estar sobre os outros. O problema inicia com os blocos em alguma disposição
especificada e tem como objetivo encontrar quais ações devem ser efetuadas para
que, ao final, eles estejam em outra disposição informada. A Figura 6 apresenta um
possível problema no domínio do Mundo dos Blocos. São dados o estado inicial e
o estado objetivo. As ações disponíveis são Mover(b, x, y), que move o bloco b que
está sobre x para cima de y, e MoverParaMesa(b, x) que move o bloco b que está
sobre x para cima da mesa.
Figura 6
Mundo dos Blocos
A
Estado Inicial Estado Objetivo
A
B
B
C
C
Fonte: Adaptada de Russel; Norvig, 2013.
Nessa descrição serão usadas letras maiúsculas para denotar os blocos A, B e C,
bem como a Mesa. Letras minúsculas são usadas para denotar variáveis sem valor
atrelado. Como afirmativas, tem-se:
• Sobre(x, y): Verdadeiro quando o bloco x está sobre o bloco y.
• Bloco(x): Verdadeiro se o elemento x for um bloco.
• Livre(x): Verdadeiro se não há qualquer bloco sobre x.
• x≠y: Verdadeiro se o elemento x é diferente de y.
Raciocínio lógico e conhecimento 87
O problema apresentado na Figura 6 pode ser descrito como apresentado a
seguir, com base em uma adaptação simplificada de PDDL:
INÍCIO(Sobre(A, Mesa) ∧ Sobre(B, Mesa) ∧ Sobre(C, A) ∧ Bloco(A) ∧ Bloco(B)
∧ Bloco(C) ∧ Livre(B) ∧ Livre(C))
OBJETIVO(Sobre(A, B), Sobre(B, C))
AÇÃO(Mover(b, x, y),
PRECOND: Sobre(b, x) ∧ Livre(b) ∧ Livre(y) ∧ Bloco(b) ∧ Bloco(y) ∧ (b≠x) ∧
(b≠y) ∧ (x≠y),
EFEITO: Sobre(b, y) ∧ Livre(x) ∧ ¬Sobre(b, x) ∧ ¬Livre(y))
AÇÃO(MoverParaMesa(b, x),
PRECOND: Sobre(b, x) ∧ Livre(b) ∧ Bloco(b) ∧ (b≠x),
EFEITO: Sobre(b, Mesa) ∧ Livre(x) ∧ ¬Sobre(b, x))
No caso desse problema, a solução é a seguinte sequência de ações:
1. MoverParaMesa(C, A).
2. Mover(B, Mesa, C).
3. Mover(A, Mesa, B).
A Figura 7 ilustra a aplicação dessas ações. Os blocos tracejados denotam as
suas posições antigas, e a seta indica a movimentação efetuada.
Figura 7
Solução para o problema do Mundo dos Blocos
Fonte: Adaptada de Russe; Norvig, 2013.
A
A
Estado Inicial
Mover (B, Mesa, C)
MoverParaMesa(C, A)
Mover(A, Mesa, B)
C
A
B
BB
B
B
C
C
C
C
A
A
88 Inteligência Artificial
Segundo Weld (1999), um algoritmo que resolve um problema de planejamento
deve receber uma descrição das entidades do mundo e da situação atual, dos obje-
tivos, e das ações que podem ser aplicadas. Como resultado, esse algoritmo retor-
na a sequência de ações que levam um agente do estado atual ao estado objetivo.
Computacionalmente o problema de planejamento foi abordado pela primeira
vez por Fikes e Nilsson (1971), com a proposta de representação em Strips. Con-
tudo, eles não obtiveram êxito em resolver problemas que hoje são considerados
simples, devido à alta complexidade do problema (BYLANDER, 1994). Em 1992,
Kautz e Selman (1992) apresentam uma proposta de tradução do problema de
planejamento para satisfatibilidade, conhecido como SATPLAN. Embora promisso-
ra, essa abordagem gastava muitos recursos computacionais para representar os
problemas e encontrar as soluções. Uma abordagem baseada em grafos surgiu
em 1995, com a transformação do problema de planejamento em uma estrutura
chamada Grafo de Planos. A partir desse trabalho, Kautz e Selman (1999) unificaram
as abordagens baseadas em grafos e satisfatibilidade, melhorando ainda mais a
representação dos problemas.
Esses algoritmos formaram a base de pesquisa na área de planejamento e fo-
ram inspiração para vários outros algoritmos, inclusive baseados em outros forma-
lismos e otimizações lógicas (MONTAÑO, 2006; RINTANEN, 2017). Contudo, apesar
desses avanços, o planejamento no mundo real demanda representações e opera-
ções mais complexas. Como exemplos, têm-se o tratamento da duração que uma
ação leva para ser executada e a restrição no uso de recursos. Dessa forma, no
mundo real não é incomum um agente ter que planejar ações em ambientes incer-
tos ou com a ajuda ou impedimento de outros agentes.
Para representar e planejar usando tempo de execução e consumo de recur-
sos, deve-se estender a linguagem clássica para representar essas informações,
além das restrições de ordem de execução. Planejar nesse ambiente pode ser feito
com uma abordagem de planejamento e depois escalonamento. Primeiramente as
ações precisam ser planejadas na ordem em que devem ser executadas, satisfa-
zendo os objetivos do problema. Depois é feito o escalonamento para atender as
restrições temporais e de recursos (RUSSEL; NORVIG, 2013).
Quando a quantidade de estados, ações e possíveis ramificações gera um espa-
ço de ações muito grande, uma abordagem possível é o planejamento hierárqui-
co. Essa abordagem separa o problema em níveis de abstração diferentes por meio
da decomposição hierárquica, fazendo com quese tenha vários níveis de planeja-
mento com um conjunto pequeno de ações (RUSSEL; NORVIG, 2013).
Por exemplo, para tirar férias de duas semanas em Fernando de Noronha, par-
tindo de Curitiba, um plano possível seria:
• ir ao aeroporto de Curitiba;
• pegar o Voo 1015 para Fernando de Noronha;
• aproveitar as férias durante duas semanas;
• ir ao aeroporto de Fernando de Noronha;
• pegar o Voo 8080 para Curitiba;
• ir para casa.
Raciocínio lógico e conhecimento 89
Claramente a ação Ir ao aeroporto de Curitiba pode ser decomposta em várias
outras, como:
• dirigir até o estacionamento do aeroporto de Curitiba;
• estacionar;
• pegar o transfer;
• entrar no terminal.
Além disso, cada uma dessas ações pode ser decomposta até que se chegue em
um nível de ações que a pessoa possa executar. Pode-se observar, portanto, que a
tarefa de planejamento é complexa, principalmente quando aplicada a problemas
do mundo real. Tratamento de recursos, tempo e ambientes parcialmente observá-
veis são somente alguns dos desafios que a área de planejamento tem.
3.5 Representação do conhecimento
Vídeo Pode-se observar que, com o aumento exponencial da informação armazenada
no mundo, técnicas de organização e interpretação têm tido um grande destaque
em empresas e na área científica. O principal objetivo é melhorar o tratamento des-
sas informações, bem como o raciocínio sobre elas, processamento etc.
Dessa forma, faz-se necessário um mecanismo para representar o conhecimen-
to relativo a um domínio, por meio de regras que ditam as relações e a combinação
de conceitos encontrados nele. Em domínios mais simples, a maneira pela qual o
conhecimento é representado não é um aspecto muito importante, bastando que
o formalismo tenha as características necessárias. Já em domínios complexos,
como dirigir um automóvel, é necessária uma representação mais geral e flexível.
Representar elementos gerais e abstratos, como objetos físicos, crenças, eventos e
tempo, faz parte da engenharia ontológica (RUSSEL; NORVIG, 2013).
Pode-se definir ontologia 1 como um conjunto de conceitos bási-
cos e suas relações que representa a maneira como as pessoas in-
terpretam um assunto (ou domínio) de maneira formal, tornando-o
compreensível para humanos e computadores (MIZOGUCHI, 2004).
Considerando um agente que precisa conhecer e interagir com
o ambiente e com outras entidades presentes nele, pode-se tomar
como exemplo o Mundo de Wumpus, em que o guerreiro precisa
caminhar no ambiente, sentir as percepções, interagir com Wumpus
(atirar) e com o ouro. Nessa interação com o mundo e com os agen-
tes pode haver problemas por falta de entendimento das proprieda-
des e características das entidades envolvidas. No caso de ambientes multiagentes,
esses problemas são ampliados, pois todos os agentes precisam ter o mesmo en-
tendimento sobre o ambiente e as entidades.
Dessa forma, uma ontologia pode ser usada para representar a semântica dos
conceitos e dos relacionamentos encontrados no domínio e nas entidades. A Figura
8 mostra a estrutura geral de conceitos, conhecida como ontologia superior.
1
Ontologia vem do grego ontos (ser)
e logia (estudo); é um ramo da
filosofia que tem como objetivo o
estudo dos seres e das suas pro-
priedades mais gerais e comuns.
Pode-se dizer que abrange o
estudo da classificação dos objetos
para uma organização da realidade
(GUARINO, 1998).
90 Inteligência Artificial
Figura 8
Ontologia superior
Fonte: Adaptada de Russel; Norvig, 2013.
QualquerCoisa
EventosGeneralizados
ObjetosRepresentacionais
ObjetosAbstratos
Conjuntos
Categorias Coisas
Animais Agentes Sólido Líquido Gás
Material
Humanos
Números
Sentenças Medidas
Intervalo
Momentos
Lugares ObjetosFísicos Processos
Tempos Pesos
Analisando o Mundo de Wumpus, percebe-se que o estudo de seus seres, isto é,
sua ontologia, é muito simples. Por exemplo, com relação ao tempo, algo só acon-
tece quando o guerreiro age e todas as mudanças são instantâneas. Para melhorar
a representação, poderia ser permitida a inclusão de outros poços ou espécies de
animais (fora o Wumpus) na caverna. Para tal, seria necessária uma taxonomia bio-
lógica para que o guerreiro pudesse prever seus comportamentos.
Como a ontologia do Mundo de Wumpus é simples, algumas alterações como
as apresentadas podem ser feitas para se obter uma ontologia mais geral. Isso é
possível para qualquer ontologia específica.
Construir uma ontologia, portanto, deve levar em consideração que ela pode
ser aplicada a qualquer domínio específico, incluindo-se axiomas específicos do
domínio. Ou seja, não se pode usar nenhum artifício ou manobra artificial para ge-
rar as representações. Uma ontologia não é somente uma hierarquia de conceitos,
mas também suas relações, restrições e axiomas, descrevendo relações semânti-
cas entre seus elementos.
Os objetos são comumente organizados em categorias. Apesar de grande par-
te do raciocínio ser feito em nível de objetos individuais, muito pode ser concluído
em nível de categoria. Por exemplo, quando um usuário de um sistema de vendas
on-line quer fazer uma compra, ele geralmente deseja comprar uma bola de bas-
quete qualquer, e não determinada bola de basquete (RUSSEL; NORVIG, 2013).
As categorias também são organizadas por meio de uma herança, isto é, uma
subcategoria que pode herdar aspectos de outras categorias. Por exemplo, a sub-
categoria Fruta é uma subclasse de Alimento. Assim, elementos de uma categoria
chamada Maçã, que herdam de Fruta, são ditos alimentos. Se todas as instâncias de
alimentos forem sabidamente comestíveis, essa característica é herdada e pode-se
afirmar que as maçãs são comestíveis também. A Figura 9 ilustra essa herança.
Raciocínio lógico e conhecimento 91
Figura 9
Herança de alimento
Alimentos
Frutas Verduras
AlfaceLaranjaMaça ...
Fonte: Elaborada pelo autor.
Essas relações de classe e subclasse formam o que se chama de taxonomia.
Relações mais complexas, como composição (ser parte de), conjuntos disjuntos
(ou é de um tipo ou de outro, mas não os dois), pertinência (fazer parte de um
grupo), eventos (que ocorrem em determinado instante), eventos mentais (como
crenças e saber) etc., são conceitos avançados que também devem ser possíveis
de se representar.
Mas atenção! Não se deve confundir taxonomia com ontologia. Uma ontologia
trata de estabelecer relações semânticas entre os elementos, enquanto uma ta-
xonomia organiza a informação de maneira hierárquica (VITAL; CAFE, 2011). Para
representar esse conhecimento, faz-se necessário o uso de um formalismo, muitas
vezes baseado na lógica matemática, que permita expressar os fatos e raciocinar
sobre eles.
Muitos aspectos podem ser representados, por exemplo, em lógica de primeira
ordem. Seja a representação de um objeto b como uma bola de basquete. Poderia
ser feito como BolaDeBasquete(b) ou poderia ser representado por uma operação
de reificação (ou coisificação), isto é, pela transformação da proposição em objeto.
Dessa forma, poderia representar Elemento(b, BolasDeBasquete) ou b ∈ BolasDe-
Basquete. Da mesma forma é possível indicar que BolasDeBasquete é uma subca-
tegoria de Bolas, representado como: BolasDeBasquete ⊂ Bolas.
Regras também podem ser facilmente escritas. Por exemplo, a regra seguinte
afirma que todo objeto que pertence à categoria das bolas de basquete é esférico:
(x ∈ BolasDeBasquete) → Esférica(x)
Para representar eventos, pode-se usar um formalismo alternativo chamado
cálculo de eventos. Nele, o fluente Em(João, Curitiba) é um objeto que representa
o fato de João estar em Curitiba, mas que, por si só, não indica se é verdadeiro ou
não. Para tal, usa-se o predicado T; por exemplo: T(Em(João, Curitiba, t), que indica
que João está em Curitiba no instante t. Outros predicados também são definidos
para indicar que um evento inicia ou termina em um instante etc.
92 Inteligência Artificial
Para representar eventos mentais, como crenças, deve-se usar uma lógicamo-
dal. Na lógica clássica, pode-se expressar somente afirmações como “P é verda-
deiro”, enquanto na lógica modal, pode-se expressar afirmações como “A sabe P”,
por meio de um operador modal de conhecimento, por exemplo: KA P
2 (RUSSEL;
NORVIG, 2013).
Outro aspecto de representação que deve ser levado em consideração é que
o aprendizado de novas afirmações, que antes eram desconhecidas ou conheci-
damente falsas, leva à quebra da monotonicidade das lógicas clássicas (RUSSEL;
NORVIG, 2013). Uma lógica é monotônica quando a adição de novas afirmações na
base de conhecimento não altera as afirmações que podem ser provadas. O pro-
cesso de raciocínio humano não é monotônico, visto que, a partir do momento que
uma pessoa aprende (adiciona afirmações na sua base de conhecimento), algumas
afirmações podem ser provadas e outras não mais, por conta do seu aprendizado.
Nesse aspecto entra o raciocínio default e dois formalismos muito conheci-
dos: a lógica default e a circunscrição. Esse raciocínio tenta abstrair o conceito de
informações que são conhecidas, exceto se uma afirmação em contrário seja adi-
cionada. Por exemplo, quando uma pessoa olha um carro na rua, mesmo o vendo
de lado, já tem uma conclusão subentendida de que esse automóvel tem quatro
rodas, por mais que não esteja observando as quatro rodas. Essa conclusão é al-
cançada por default (RUSSEL; NORVIG, 2013).
A lógica default é um formalismo no qual se escrevem regras default, isto é,
conclusões que podem ser tiradas a partir da base de dados. Por exemplo, pode-se
tirar a conclusão de que se X é um pássaro, então, por default, X voa. Essa expres-
são em lógica de primeira ordem seria inconsistente, pois nem todos os pássaros
voam (como os pinguins). Em lógica de primeira ordem são necessárias as especi-
ficações das exceções, e a lógica default cria regras sem precisar listá-las (SHANAH-
AN, 1997).
A circunscrição é um formalismo que mapeia o fato de um predicado ser “tão
falso quanto possível”, ou seja, é falsa para todos os objetos, exceto aqueles que
são sabidamente verdadeiros. Para obter tal representação, a circunscrição usa ló-
gica de segunda ordem para minimizar o valor de um predicado em uma base, isto
é, para tornar o predicado verdadeiro somente naqueles objetos da base que o
forçam a ser verdadeiro, e falso nos demais (SHANAHAN, 1997).
Pesquisas na área de representação do conhecimento e ontologias seguem
promissoras. Ontologias também são aplicadas em assistentes virtuais pessoais
(VPA, do inglês Virtual Personal Assistants) para dar contexto, rastrear diálogos etc.
(WESSEL et al., 2018). Na área da saúde, elas também são muito usadas, como o
exemplo do trabalho de Azzi, Iglewski e Nablesi (2018), que projetaram uma on-
tologia para auxiliar um sistema de suporte à decisão usado no diagnóstico de
pneumonia.
Para representação de conhecimento na web, tem-se a RDF (do inglês Resource
Description Framework), que é um modelo padrão de intercâmbio de informações
na web (BRICKLEY; GUHA, 2004). A OWL (do inglês Ontology Web Language) define
uma lógica de descrição de ontologias na web; ela foi projetada para dar significado
A semântica da lógica modal
é mais complexa e não será
comentada aqui.
2
Vale ressaltar o projeto
Protégé, da Universidade
de Stanford, que é uma
plataforma livre e gratuita
para construção de ontolo-
gias e sistemas inteligentes.
Disponível em: https://protege.stan-
ford.edu/. Acesso em: 7 dez. 2020.
Saiba mais
No vídeo O que é Web
Semântica?, publicado por
Waldo Flores, o assunto
Web Semântica é explicado
usando exemplos do coti-
diano e até de filmes.
Disponível em: https://youtu.be/mz-
vot402R8s. Acesso em: 7 dez. 2020.
Vídeo
https://protege.stanford.edu/
https://protege.stanford.edu/
https://youtu.be/mzvot402R8s
https://youtu.be/mzvot402R8s
Raciocínio lógico e conhecimento 93
à informação, e não só representá-la, facilitando assim a interpretação de seu con-
teúdo (SMITH; WELTY; MCGUINNESS, 2004). Segundo Berners-Lee, Hendler e Lassila
(2001), ontologias e OWL são tecnologias usadas na busca pela Web Semântica, isto
é, uma visão da web na qual os dados estão vinculados, interligados e possuem
significado.
Atividade 1
Defina agentes baseados em conhecimento.
Atividade 2
Usado as equivalências notáveis e regras de inferência, demonstre que se pode inferir
q a partir de p → q, p ∧ r, isto é:
p → q, p ∧ r ⊢ q
Atividade 3
Usando as equivalências notáveis e regras de inferência, demonstre que se pode inferir
¬p a partir de p → ¬q, r → q e r, isto é:
p → ¬q, r → q, r ⊢ ¬p
Atividade 5
Por que é necessário usar uma lógica não monotônica na representação do
conhecimento?
Atividade 4
Dado o cenário do Mundo dos Blocos apresentado a seguir, mostre sua descrição usan-
do a versão simplificada de PDDL apresentada nesta obra. Depois, apresente a sequên-
cia de ações necessárias para sair da posição inicial e chegar ao objetivo.
A
Estado Inicial Estado Objetivo
A
B
B
C
C
CONSIDERAÇÕES FINAIS
Este capítulo apresentou agentes lógicos e baseados em formalismos matemáticos
para expressar raciocínio sobre ações. Viu-se que eles não se limitam ao problema
em questão, pois o conhecimento do mundo é representado de maneira geral e o
mecanismo de raciocínio é aplicado sobre ele. Esse conhecimento geral foi represen-
tado por meio da lógica matemática e, para o processo de raciocínio, foram usadas as
inferências lógicas.
94 Inteligência Artificial
Um dos grandes aspectos do raciocínio, visto neste capítulo, é o planejamento,
isto é, dada uma situação inicial, uma situação final e um conjunto de possíveis ações,
descobrir uma sequência de passos para sair da situação inicial até a final.
Por fim, representar o conhecimento do mundo é uma tarefa difícil, que demanda
abstração e direcionamento ao domínio específico. Assim, discutiu-se também a re-
presentação do conhecimento e alguns mecanismos disponíveis para tal.
REFERÊNCIAS
AZZI, S.; IGLEWSKI, M.; NABLESI, V. Design of a Pneumonia Ontology for Diagnosis Decision Support
System. International Journal of Health and Medical Engineering, v. 12, n. 10, 2018.
BERNERS-LEE, T.; HENDLER, J.; LASSILA, O. The Semantic Web: a new form of Web content that is
meaningful to computers will unleash a revolution of new possibilities. Scientific American, maio 2001.
BRICKLEY, D.; GUHA, R. RDF vocabulary description language 1.0: RDF schema. World Wide Web Consortium.
10 fev. 2004. Disponível em: https://www.w3.org/2001/sw/RDFCore/TR/WD-rdf-schema-20030117/.
Acesso em: 7 dez. 2020.
BYLANDER, T. The computational complexity of propositional STRIPS planning. Artificial Intelligence, v. 69,
n. 1-2, p. 165-204, 1994.
CHANG, C. L.; LEE, R. C. T. Symbolic Logic and Mechanical Theorem Proving. Orlando: Academic Press, 1997.
COOK, S. The complexity of theorem-proving procedures. STOC ‘71: Proceedings of the 3rd Annual ACM
Symposium on the Theory of Computing, p. 151-158, maio 1971.
FIKES, R; NILSSON, N. Strips: a new approach to the application of theorem proving to problem solving.
IJCAI’71: Proceedings of the 2nd international joint conference on Artificial intelligence, Londres, p. 608-
620, set. 1971.
GERSTING, J. L.; IÓRIO, V. de M. Fundamentos matemáticos para a ciência da computação: um tratamento
moderno de matemática discreta. 5. ed. Rio de Janeiro: LTC, 2012.
GUARINO, N. Formal ontology and information systems. FOIS’98: 1st International Conference on Formal
Ontologies in Information Systems, Toronto, jun. 1998.
KAUTZ, H.; SELMAN, B. Planning as satisfiability. ECAI’92: Proceedings of the Tenth European Conference
on Artificial Intelligence, Viena, p. 359-363, ago. 1992.
KAUTZ, H.; SELMAN, B. Unifying SAT-based and graph-based planning. Workshop on Logic-Based Artificial
Intelligence, Washington, jun. 1999.
LUGER, G. Inteligência artificial. 6. ed. São Paulo: Pearson Education do Brasil, 2013.
MCDERMOTT, D. et al. PDDL – The Planning Domain Definition Language. Technical Report CVCTR98003/
DCS TR1165. New Haven: Yale Center for Computational Vision and Control, 1998.
MIZOGUCHI, R. Tutorial on ontological engineering: part 3: Advanced course of ontological engineering.
New Generation Computing, v. 22, n. 2, p. 198-220, 2004.
MONTAÑO, R. A. N. R. Aplicação de fórmulas não-clausais em planejamento com redes de Petri. 2006.
Dissertação (Mestrado em Informática) – Pós-graduação em Informática, Universidade Federal do Paraná,
Curitiba. Disponível em: https://acervodigital.ufpr.br/handle/1884/11334. Acesso em: 7 dez. 2020.
RINTANEN, J. Temporal planning with clock-based SMT encodings. IJCAI-17: Proceedings of the International
Joint Conference on Artificial Intelligence, p. 743-749, 2017.
ROBINSON, J. A Machine-Oriented Logic Based on the Resolution Principle. Journal of the ACM, v. 12, n. 1,
p. 23-41, 1965.
RUSSELL, S.; NORVIG, P. Inteligência Artificial. 3. ed. Rio de Janeiro: Elsevier Brasil, 2013.
SHANAHAN, M. Solving the Frame Problem: a mathematical investigation of the common sense law of
inertia. Cambridge: The MIT Press, 1997.
SMITH, M. K.; WELTY, C.; MCGUINNESS, D. L. OWL Web Ontology Language Guide. 10 fev. 2004. Disponível
em: https://www.w3.org/TR/owl-guide/. Acesso em: 7 dez. 2020.
VITAL, L. P.; CAFE, L. M. A. Ontologias e taxonomias: diferenças. Perspectivas em Ciência da Informação, Belo
Horizonte, v. 16, n. 2, p. 115-130, jun. 2011. Disponível em: https://www.scielo.br/pdf/pci/v16n2/08.pdf.
Acesso em: 7 dez. 2020.
WELD, D. Recent advances in AI planning. AI Magazine, v. 20, n. 2, p. 93-123, 1999.
WESSEL, M. et al. OntoVPA—An Ontology-Based Dialogue Management System for Virtual Personal
Assistants. Advanced Social Interaction with Agents, p. 219-23, ago. 2018.
Aprendizado de máquina 95
4
Aprendizado de máquina
A cada dia que passa, a quantidade de informação gerada e armazenada no
mundo cresce de maneira espantosa. Claramente, só com a atuação de huma-
nos a análise de toda essa massa de dados é impossível. Assim, a inteligência
artificial (IA) desenvolveu métodos de análise de massas de dados para que um
algoritmo possa aprender e posteriormente predizer resultados ou até mesmo
para encontrar padrões desconhecidos escondidos em meio à enorme quanti-
dade de informação. Esse é o aprendizado de máquina.
Este capítulo está organizado como descrito a seguir. Inicialmente, na Seção
3.1, são apresentadas as bases do aprendizado de máquina. O aprendizado su-
pervisionado e as tarefas preditivas são abordados na Seção 3.2, apresentando
redes neurais, máquinas de vetores de suporte e árvores de decisão. Na Seção
3.3, são abordados o aprendizado não supervisionado e as tarefas descritivas,
como o agrupamento e as regras de associação.
4.1 Introdução ao aprendizado de máquina
Vídeo Ao se analisar o comportamento inteligente, percebe-se que a capacidade de
aprendizado é uma característica muito importante. Nos primórdios da IA, o pro-
cesso de aprendizagem muitas vezes era feito por meio de entrevistas com espe-
cialistas da área, com o objetivo de que fossem escritas regras usadas por sistemas
especialistas para a tomada de decisão (FACELI et al., 2011). Porém, com o grande
aumento da captura de dados em diversos setores, como redes sociais, sistemas
de vendas, sensoriamento, entre outros, deu-se a
necessidade de analisar e aprender padrões
com base nessas informações de maneira
mais autônoma devido ao seu volume e
à sua complexidade.
Nesse contexto, segundo Mitchell
(1997), o aprendizado de máquina
(AM) é a capacidade de melhorar o
desempenho na realização de alguma
tarefa por meio da experiência. Em ou-
tras palavras, significa utilizar dados an-
teriores para aprimorar uma atividade,
como o reconhecimento de um padrão.
bu
ffa
lo
bo
y/
Sh
ut
te
rs
to
ck
96 Inteligência Artificial
Assim, usando a experiência passada, os processos de AM empregam um prin-
cípio de inferência chamado indução, que tira conclusões genéricas com base em
exemplos ou amostras particulares. Dessa forma, os algoritmos de AM usam infor-
mações observadas de um determinado problema para induzir hipóteses ou fun-
ções capazes de resolvê-lo. Esses dados observados e utilizados pelos algoritmos
são chamados de conjuntos de dados (FACELI et al., 2011).
As aplicações para AM são inúmeras, e podem-se citar algumas:
Predição de volume
de madeira em
florestas.
Diagnóstico de
doenças com base em
resultados de exames.
Detecção de fraude
em cartões de crédito.
Análise de fidelidade
de clientes em
campanhas de
marketing.
Reconhecimento
de fala, usado em
assistentes pessoais.
Aplicações
para AM
Suponha, por exemplo, um conjunto de dados formado pelas informações so-
bre os pacientes de um hospital. Cada registro desse conjunto é uma tupla de
elementos que se refere a um paciente específico e contém todas as suas
informações, como nome, idade, sexo, sintomas, resultados de exame,
diagnóstico etc. Esses elementos são chamados atributos.
Em uma tarefa de aprendizado, um desses atributos é considerado
um atributo de saída e é a informação que se quer aprender. Se nesse
exemplo o objetivo é diagnosticar o paciente com as informações dos
exames, então o atributo de saída é o diagnóstico.
Os demais atributos usados para o aprendizado do diagnóstico são os
atributos de entrada. Percebe-se, então, que a definição de qual é o atributo
de saída e quais são os atributos de entrada depende da tarefa e da informação a
ser aprendida. Nesse exemplo, o nome do paciente não é considerado um atributo
de entrada para aprender sobre o diagnóstico, pois não há qualquer relação entre
o nome e a doença do paciente.
Assim, o objetivo de um algoritmo de AM é aprender um modelo, ou hipótese,
com base em um conjunto observado de dados, também chamado conjunto de trei-
namento, que consegue relacionar os valores de entrada do conjunto com os valo-
res de saída. A tabela a seguir apresenta um exemplo de conjunto de treinamento
de pacientes de um hospital 1 .
Como sugestão de conteú-
do introdutório ao aprendi-
zado de máquina, sugere-
-se o vídeo Aprendizado de
Máquina: sua importância e
aplicações, publicado pelo
canal IGTI.
Disponível em: https://youtu.be/
pdQKyJ0N3jg. Acesso em: 18 dez.
2020.
Vídeo
LeoWolfert/Shutterstock
Convém ressaltar que esse
conjunto é completamente fictício
e não representa a realidade mé-
dica de diagnóstico baseado em
resultados de exames, servindo
somente como massa de dados
didática para a apresentação dos
conceitos.
1
https://youtu.be/pdQKyJ0N3jg
https://youtu.be/pdQKyJ0N3jg
Aprendizado de máquina 97
Tabela 1
Conjunto de treinamento de pacientes
Nome Idade Sexo Eritrócitos Hemoglobina Glicemia Diagnóstico
Paciente1 25 F 4,3 15,3 82 Tendinite
Paciente2 19 M 8,2 14,0 93 Rinite
Paciente3 33 F 3,7 19,7 158 Gastrite
Paciente4 58 M 4,6 10,6 230 Diabetes
Fonte: Elaborada pelo autor.
Com base no conjunto de treinamento apresentado, usa-se um subconjunto
de atributos de entrada para aplicar um algoritmo que aprende a diagnosticar os
pacientes. No exemplo, o nome do paciente não é relevante, então pode-se usar
idade, sexo, eritrócitos, hemoglobina e glicemia para treinar um modelo que dê o
diagnóstico.
Esse aprendizado é consolidado em um modelo e pode ser aplicado a outros pa-
cientes para os quais ainda não se tem um diagnóstico. Após o treinamento do mo-
delo com o conjunto de dados, é possível apresentar outros pacientes ao modelo e
este fará o diagnóstico baseando-se nos dados anteriores. Assim, ao se apresenta-
rem os dados da Tabela 2 a ele, pode-se obter um diagnóstico para cada paciente.
Tabela 2
Novo conjunto de dados de pacientes
Nome Idade Sexo Eritrócitos Hemoglobina Glicemia Diagnóstico
PacienteX 44 F 4,1 15,9 95 ?
PacienteY 15 M 8,9 13,1 214 ?
PacienteZ 28 F 2,6 18,4 110 ?
Fonte: Elaborada pelo autor.
Essa propriedade de aprender a diagnosticar novos pacientes além dos que es-
tão no conjunto de treinamento é a capacidade de generalização.
Quando um modelotreinado apresenta uma baixa capacidade de generalização
(o que no exemplo pode ser traduzido como o fato de o modelo só conseguir diag-
nosticar com precisão os dados do conjunto de treinamento), diz-se que o modelo
está sobreajustado aos dados de treinamento, que ocorreu overfitting. Seria como
se o modelo tivesse decorado os dados de treinamento, mas, quando aplicado a
outros, os resultados fossem ruins, pois ele não consegue generalizar.
Já quando o modelo não consegue resultados com precisão aceitável nem no
conjunto de treinamento, diz-se que está subajustado, que ocorreu underfitting.
Isso acontece quando há dados de treinamento pouco representativos ou o
modelo treinado é muito simples para haver uma generalização satisfatória
( REZENDE, 2003).
Várias tarefas de aprendizado são implementadas por algoritmos de AM e po-
dem ser classificas com base no tipo de realimentação dada ao algoritmo para
aprender. O aprendizado indutivo pode ser classificado em aprendizado super-
visionado, aprendizado não supervisionado e aprendizado por reforço 2 (RUSSELL;
NORVIG, 2013). A figura a seguir representa essa hierarquia.
Nesta obra, serão discutidos ape-
nas o aprendizado supervisionado
e o não supervisionado.
2
98 Inteligência Artificial
Figura 1
Hierarquia de aprendizado
Classificação Agrupamento Regressão Associação
Aprendizado indutivo
Por reforço Não supervisionado
(descritivas)
Supervisionado
(preditivas)
Fonte: Adaptada de Faceli et al., 2011.
No aprendizado supervisionado o algoritmo recebe um conjunto de dados
observados que já possuem um resultado de saída (como o exemplo dos dados
hospitalares mostrados anteriormente). Os dados de saída já apresentados for-
necem a realimentação necessária para direcionar o aprendizado. Dessa forma, o
objetivo é aprender uma função que mapeia os dados de entrada com o resultado,
de modo que quaisquer novos dados de entrada fornecidos possam ser mapeados
para uma saída, gerando o aprendizado.
O aprendizado supervisionado é composto de duas tarefas preditivas de apren-
dizado: classificação e regressão. A classificação se dá quando o dado de saída,
isto é, a informação que se quer aprender, faz parte de um conjunto finito de va-
lores, ou categorias, como as doenças que podem ser diagnosticadas (por exem-
plo: rinite, gastrite, tendinite, diabetes). Já a regressão ocorre quando o dado a ser
aprendido é um número ou valor real, como a temperatura de amanhã, o valor de
venda de um automóvel, entre outros.
No aprendizado não supervisionado os dados fornecidos não possuem reali-
mentação e, em geral, busca-se aprender relações entre os elementos ou até mesmo
o agrupamento de elementos que possuem características semelhantes. Esse apren-
dizado é composto, ainda, de duas tarefas descritivas de aprendizado: agrupamento
e associação. O agrupamento tem como objetivo analisar um conjunto de dados
e, sem qualquer informação adicional além das fornecidas, agrupar as informações
que possuem as mesmas características. A associação, por sua vez, tem como obje-
tivo analisar um conjunto de dados e encontrar relações entre objetos do conjunto.
No aprendizado por reforço não há informação previamente indicada para que
um algoritmo aprenda. Em vez disso, a cada tarefa executada, um elemento externo
fornece uma informação de recompensa ou punição, que direciona o algoritmo a
aprender quais ações são válidas e quais não. Ao final de várias interações com o am-
biente, espera-se que a tarefa seja executada de maneira satisfatória. Por exemplo,
um agente que aprende um jogo de computador fará várias interações com ele, sen-
do recompensado positivamente se fizer um movimento correto e negativamente se
fizer um movimento errado. Assim, espera-se que ele aprenda a jogar.
Aprendizado de máquina 99
Percebe-se que cada tipo de aprendizado tem um objetivo diferente. Na im-
plementação de agentes que aprendem, deve-se analisar o problema e levar em
consideração os objetivos a serem atingidos. Além disso, cada tarefa de aprendi-
zado possui uma gama de algoritmos que implementam técnicas diferentes para a
abordagem do problema, que também devem ser analisadas e comparadas para
se obter um resultado satisfatório.
4.2 Aprendizado supervisionado
Vídeo O aprendizado supervisionado é efetuado por meio de algoritmos preditivos em
dados rotulados. Um conjunto de dados é dito rotulado quando cada registro pos-
sui um rótulo ou etiqueta, que pode ser um valor discreto ou numérico. Se o rótulo
for um valor discreto, não ordenado, também chamado de categórico, então a tare-
fa de predição é chamada classificação. Se o rótulo for um valor numé-
rico, ordenado, então a tarefa é chamada regressão. Um preditor 3 é
também uma função que, dado um exemplo não rotulado, atribui
uma classe (no caso do classificador) ou um valor numérico (no caso
do regressor).
Assim, seja um conjunto de observações D = {(xi, f(xi)), i = 1, ...n}, em que xi são
os dados e f(xi) é uma função desconhecida que atribui um rótulo a xi. Um preditor,
obtido por um algoritmo de predição de AM, observa o conjunto D e aprende uma
função f, que aproxima o comportamento de f para novas observações.
Nesse sentido, uma classificação é quando yi = f(xi ) ∈ {c1,…,cn}, isto é, f(xi)
assume valores de um conjunto discreto e não ordenado. Uma regressão é quan-
do yi = f(xi) ∈ ℝ, ou seja, f(xi) assume valores de um conjunto infinito e ordenado.
A Figura 2 ilustra as tarefas preditivas. Do lado esquerdo, está a tarefa de classi-
ficação, dados os valores observados e rotulados contendo dois atributos (exame
de hemoglobina e de glicemia) e o rótulo (saudável ou doente), um classificador
precisa encontrar uma fronteira de decisão que separa os elementos conforme sua
classificação. Do lado direito, tem-se a tarefa de regressão; por exemplo, dado um
conjunto de vendas por ano, um regressor visa encontrar uma função que aproxi-
ma os valores de venda considerando o ano.
Figura 2
Tarefas preditivas
Fonte: Adaptada de Faceli et al., 2011.
H
em
og
lo
bi
na
Ve
nd
a
Glicemia Ano
Função aproximada
Saudável
Doente
Fronteira de decisão
3
Um preditor pode ser um classifi-
cador ou um regressor.
100 Inteligência Artificial
Com o classificador e o regressor encontrados, a Figura 3 mostra como seria
sua aplicação em outra observação. Do lado esquerdo, dados os novos valores de
exame de hemoglobina e glicemia, essa nova observação, representada pela es-
trela, situa-se em um lado da fronteira de decisão encontrada pelo classificador,
nesse caso, saudável. Do lado direito, com um novo valor de ano, aplica-se a função
encontrada pela regressão e esta retorna o valor estimado de venda, representado
pela estrela.
Figura 3
Aplicação do classificador e regressor
Fonte: Elaborada pelo autor.
H
em
og
lo
bi
na
Ve
nd
a
Glicemia Ano
Função aproximada
Saudável
Doente
Fronteira de decisão
Como exemplo de dados para classificação, observe a Tabela 3. Esses dados são
de um conjunto famoso em AM chamado Iris, que contém 150 exemplos da planta
íris, sendo 50 de cada espécie: setosa, versicolor e virginica (FISCHER, 1936). Os da-
dos contêm a medição do tamanho e da largura da sépala e da pétala.
Tabela 3
Fragmento da base de dados Iris
Tam. Sépala (cm) Larg. Sépala
(cm)
Tam. Pétala
(cm)
Larg. Pétala
(cm) Espécie
6,2 2,9 4,3 1,3 Versicolor
5,1 2,5 3,0 1,1 Versicolor
6,3 3,3 6,0 2,5 Virginica
5,8 2,7 5,1 1,9 Virginica
4,6 3,1 1,5 0,2 Setosa
5,0 3,6 1,4 0,2 Setosa
Fonte: Adaptado de Fischer, 1936.
Para a base de dados Iris (Tabela 3), as quatro primeiras colunas são os atribu-
tos de entrada, também conhecidos com variáveis independentes. A coluna Espécie
é a classe de cada observação, também conhecida como variável dependente, ou
objetivo.
A Tabela 4 apresenta um fragmento da base de dados Swiss, que contém os
dados de fertilidade de 47 províncias da Suíça em 1888. Nos dados encontram-se
a província, a medida de fertilidade, a porcentagemde pensar racionalmen-
te, pois são estabelecidos critérios que definem o raciocínio correto por meio de
regras bem definidas. Elas são somente um dos mecanismos envolvidos na racio-
nalidade, visto que há a necessidade de agir em caso de informações incompletas,
por exemplo.
Outro caso é um ato reflexo, como afastar-se de um objeto em chamas, que não
é resultado de uma análise da situação e uma deliberação da ação a ser tomada,
e mesmo assim também é um comportamento racional que deve ser adicionado
ao agente. A maneira de implementar um ato reflexo pode não ser por meio de
processos complicados e demorados, mas usando mecanismos parecidos com os
humanos. Como exemplo se tem o caso de um robô aspirador, o qual contém um
Radachynskyi Serhii/Shutterstock
14 Inteligência Artificial
sensor antiqueda: assim que ele detecta uma escada, para de seguir adiante e muda
de direção.
Outra vantagem é que essa abordagem é mais receptiva ao desenvolvimento
científico do que aquelas baseadas tanto no comportamento quanto no pensa-
mento humano. Isso se dá porque o padrão de racionalidade deve ser geral e ma-
tematicamente bem definido para que possa ser implementado em agentes. Já o
comportamento humano deve ser analisado em um ambiente específico, sendo a
soma de tudo o que os indivíduos fazem.
Convém ressaltar que é inviável se conseguir a racionalidade perfeita em am-
bientes complexos, pois a demanda de recursos computacionais facilmente ex-
trapola as capacidades disponíveis. Ademais, cenários com informações parciais,
incompletas e aleatórias podem ser um problema para os métodos racionais.
Depois da análise das quatro abordagens apresentadas, destaca-se que a inte-
ligência artificial está relacionada com o desenvolvimento de agentes inteligentes,
que percebem seu ambiente e tomam ações racionais sobre ele com base em seus
objetivos.
1.2 História da inteligência artificial
Vídeo A tecnologia bélica sempre impulsionou os avanços da ciência, e com a inteligên-
cia artificial não foi diferente. Na década de 1940, no período da Segunda Guerra
Mundial, começou o desenvolvimento do que hoje se conhece como computadores.
O objetivo inicial era realizar cálculos balísticos, projetos de armas e quebra de
Como sugestão de conteúdo adicional,
recomenda-se a leitura do artigo A história da
inteligência artificial, do Instituto de Engenharia.
Disponível em: https://www.institutodeengenharia.org.br/
site/2018/10/29/a-historia-da-inteligencia-artificial/. Acesso
em: 2 dez. 2020.
Leitura
códigos (LIMA; SANTOS; PINHEIRO, 2014). Com o término da guerra,
o uso dos computadores não se limitou mais aos militares, e empre-
sas, indústrias e universidades foram algumas das organizações que
estimularam o desenvolvimento de aplicações e hardwares.
Esse entusiasmo, primeiro militar, mas depois comercial, com o
uso dos computadores alavancou investimentos e pesquisas, desde
computadores à válvula, como o Colossus em 1943 (Inglaterra) e o
Eniac em 1946 (Estados Unidos), até o que se conhece hoje em dia,
passando pelo desenvolvimento dos circuitos integrados, na década
de 1950.
Warren McCulloch (1898-1969) e Walter Pitts (1923-1969) são co-
nhecidos como os precursores da IA, sendo deles o primeiro trabalho
reconhecido da área de inteligência artificial (MCCULLOCH; PITTS, 1943).
Em seu estudo, os autores propuseram uma arquitetura para uma rede
neural, que se baseou no conhecimento básico de fisiologia e da função
dos neurônios no cérebro, de lógica proposicional e da teoria da com-
putação de Turing. Basicamente eles projetaram um modelo de neurô-
nio artificial que possuía dois estados: ligado e desligado. Um neurônio
passa para o estado ligado se houver estímulo suficiente em neurônios
próximos aos quais está ligado.
TexasDex/Wikimedia Commons
Figura 2
Computador Eniac, desenvolvido em 1946
https://www.institutodeengenharia.org.br/site/2018/10/29/a-historia-da-inteligencia-artificial/
https://www.institutodeengenharia.org.br/site/2018/10/29/a-historia-da-inteligencia-artificial/
Fundamentos de inteligência artificial 15
McCulloch e Pitts demonstraram que funções computáveis poderiam
ser calculadas por um tipo de rede neural e que conectivos lógicos (conjun-
ção, disjunção, negação etc.) podiam ser implementados por redes muito
simples (RUSSELL; NORVIG, 2013). Outro aspecto apresentado foi a capacidade de
aprendizado, mas foi só em 1949 que o neuropsicólogo Donald Hebb (1904-1985)
propôs um esquema de aprendizado simples, que atualizava a intensidade das co-
nexões entre os neurônios. Esse esquema foi denominado aprendizado de Hebb.
Allan Turing apresentou um dos mais influentes trabalhos da área em 1950,
com seu Teste de Turing. Ele mostrou os conceitos de aprendizado de máquina,
aprendizado por reforço e algoritmos genéticos (TURING, 1950).
Em 1951, Marvin Lee Minsky (1927-2016) e Dean Edmonds construíram o Snarc
(Calculadora Neural-Analógica Estocástica de Reforço – do inglês Stochastic Neural
Analog Reinforcement Calculator), que era um computador com três mil válvulas e
o mecanismo de piloto automático de um bombardeiro B-24. Essa máquina im-
plementava 40 neurônios com aprendizado de Hebb e simulava um rato saindo
de um labirinto.
O termo inteligência artificial foi criado em 1956 por John McCarthy (1927-2011),
em um seminário que durou dois meses, na Faculdade de Dartmouth (Estados
Unidos). A proposta era um estudo de dois meses e com dez homens sobre IA. Vá-
rios pesquisadores importantes se encontraram nesse seminário e, apesar de não
haver nenhuma novidade, apresentaram as personagens que iriam dominar a área
de IA pelos próximos 20 anos (RUSSELL; NORVIG, 2013).
Nesse seminário, os pesquisadores Allen Newell (1927-1992) e Herbert Simon
(1916-2001) apresentaram um programa de raciocínio chamado Logic Theorist (LT),
que foi programado por John Clifford Shaw (1922-1991), programador da empresa
RAND Corporation. Ele foi feito para imitar a capacidade dos humanos de resolver pro-
blemas e foi capaz de provar a maioria dos teoremas do Capítulo 2 do livro Principia
mathematica (Princípios matemáticos), de Bertrand Russell (1872-1970) e Alfred North
Whitehead (1861-1947) (RUSSELL; NORVIG, 2013).
Em 1957, Newell e Simon (1961) apresentaram o resolvedor geral de proble-
mas (GPS – do inglês General Problem Solver), que tinha como objetivo imitar a ma-
neira humana de resolver problemas, isto é, seguir a abordagem de pensar como
humanos 1 . Levando em consideração as limitações da época, observou-se que a
maneira pela qual o GPS dividia os problemas e calculava as ações possíveis de se-
rem aplicadas era parecida com a forma humana (RUSSELL; NORVIG, 2013).
Em 1958, no Massachusetts Institute of Technology (MIT), John McCarthy de-
finiu a linguagem Lisp de alto nível de programação, que se tornou dominante
na área de IA por muitos anos. Nesse ano, também descreveu o programa hipo-
tético advice taker, o primeiro a usar lógica para representar informação em
um computador, com o objetivo de encontrar soluções para problemas. Esse
trabalho é considerado o primeiro da área da IA chamada de raciocínio de senso
comum (MCCARTHY, 1958).
O Logic Theorist conseguiu
provar 38 dos 52 teoremas
iniciais do Capítulo 2 do
livro Principia mathematica.
Sugere-se a consulta ao
livro para se vislumbrar
os tipos de teoremas
provados.
WHITEHEAD, A. N.; RUSSELL, B.
Cambridge: The University Press, 1925.
Livro
Para saber mais do mecanismo de
raciocínio do GPS, assista ao vídeo
General Problem Solver (GPS) –
Parte 1, disponível em: https://
youtu.be/T3m0qLT56JA. Acesso
em: 2 dez. 2020.
1
O raciocínio de senso comum
é uma subárea da IA preocupada
em simular a habilidade humana
de presumir propósito, intenção,
propriedades físicas etc. com base
em situações comuns do dia a dia.
Além de poder fazer predições, os
modelos devem ser responsá-
veis por entender contextos e
relações causais de situações do
mundo real e raciocinar sobre
eles. Esse estudode homens que se ocupam de
agricultura, dos respondentes que obtiveram altas notas em exames do exército,
de pessoas com educação além do primário, de católicos (em oposição aos protes-
tantes) e a taxa de mortalidade 4 .
Figura 4
Iris setosa
AngieC333/Shutterstock
Porcentagem de nascidos vivos
que morrem em menos de um
ano.
4
Aprendizado de máquina 101
Tabela 4
Fragmento da base de dados Swiss
Província Medida de
fertilidade
% Homens
na
agricultura
% Altas
notas no
exame de
exército
% Educação
além do
primário
% Católicos Taxa de
mortalidade
Courtelary 80,2 17,0 15 12 9,96 22,2
Delemont 83,1 45,1 6 9 84,84 22,2
Franches-Mnt 92,5 39,7 5 5 93,40 20,2
Moutier 85,8 36,5 12 7 33,77 20,3
Neuveville 76,9 43,5 17 15 5,16 20,6
Porrentruy 76,1 35,3 9 7 90,57 26,6
Fonte: Elaborada pelo autor.
A coluna da taxa de mortalidade é a variável dependente e, por isso, um regressor
precisa relacionar os dados de entrada com essa variável, gerando, assim, uma fun-
ção aproximada f(x) em que, dada uma nova observação, retorna a mortalidade
estimada.
Para que se gere o preditor, seja ele classificação ou regressão, várias técnicas e
algoritmos estão disponíveis. Aqui serão trabalhadas as redes neurais artificiais, as
árvores de decisão e o método Random Forest.
4.2.1 Redes neurais artificiais
As redes neurais artificiais (RNAs) são modelos matemáticos baseados no com-
portamento e na estrutura de neurônios biológicos, sendo esta representada de
maneira simplificada na Figura 5. Seus principais componentes são os dendritos, o
corpo celular e o axônio (FACELI et al., 2011).
Figura 5
Simplificação de um neurônio biológico
Sinapse
Ve
ct
or
M
in
e/
Sh
ut
te
rs
to
ck
Dendritos
Sinapse
Sinapse
Sinapse
Núcleo Núcleo Axônio Axônio
Dendritos
Impulso nervoso
Corpo celular Corpo celular
Impulso nervoso
Dendritos
Neurônio Neurônio
Os dendritos são responsáveis por receber estímulos de outros neurônios ou
do ambiente, transmitindo para o corpo celular, ou soma, o qual recebe essas infor-
mações e depois as combina e processa. Dependendo da intensidade dos estímu-
los, o corpo celular pode gerar um novo impulso que, nesse caso, é enviado para o
axônio. Este é um prolongamento do neurônio que tem como objetivo conduzir os
impulsos do corpo celular até um local mais distante, em geral para outros neurô-
nios. O contato entre a terminação de um axônio e o dendrito de outro neurônio é
chamado sinapse, que pode ser excitatória ou inibitória (HAYKIN, 2009).
Para uma introdução
superficial de redes
neurais, recomenda-se
o vídeo Redes Neurais e
Machine Learning, do canal
Nerdologia.
Disponível em: https://youtu.
be/1_c_MA1F-vU. Acesso em: 21
dez. 2020.
Vídeo
https://youtu.be/1_c_MA1F-vU
https://youtu.be/1_c_MA1F-vU
102 Inteligência Artificial
As RNAs se baseiam nesse modelo por meio de unidades simples de proces-
samento altamente conectadas, conhecidas como neurônios artificiais. Esses
neurônios efetuam funções matemáticas usando dados recebidos e propagam
seu resultado para outros neurônios, em geral de modo unidirecional. As ligações
entre neurônios, que simulam as sinapses, em geral possuem pesos associados,
responsáveis por ponderar a entrada recebida pelos neurônios. Esse conjunto de
neurônios interligados é denominado rede neural artificial.
Os pesos das conexões podem assumir valores tanto positivos como negativos,
dependendo do tipo de conexão (excitatória ou inibitória). O processo de aprendi-
zado modifica os valores desses pesos, gerando o conhecimento da rede.
A Figura 6 apresenta a estrutura básica de um neurônio artificial. As entradas,
geralmente referenciadas por x1, x2, …, xn, são aplicadas ao neurônio e sofrem ação
dos pesos w1, w2, …, wn por meio da multiplicação de cada entrada por seu peso
respectivo.
Figura 6
Neurônio artificial
Entrada 1
Entrada 2
Entrada n
Direção do Sinal
Σ
...
w1
w2
u
fa(u)
Saída
wn
Fonte: Adaptada de Faceli et al., 2011.
Ao final, é feita uma somatória para gerar a entrada total do neurônio. Assumindo
X como o vetor de entrada X = [x1,x2,…xn] e W o vetor de pesos W = [w1, w2, …wn], a
entrada do neurônio é dada por:
u =
n
i=1
(xiwi)
Para definir a saída do neurônio, aplica-se uma função de ativação à sua entra-
da. Várias funções estão disponíveis e cada uma dá uma característica específica à
rede. A figura a seguir mostra algumas delas.
Figura 7
Funções de ativação
fa(u)
u
fa(u)
u
fa(u)
u
fa(u)
u
1 1 1
1
Função linear Função limiar Função logística Função
tangente-hiperbólica
Fonte: Adaptada de Faceli et al., 2011.
Estima-se que haja 86 bilhões
de neurônios, dispostos em
redes especializadas, no cérebro
humano.
Curiosidade
Aprendizado de máquina 103
A função linear retorna exatamente o valor de u, isto é, fa(u) = u. A função limiar
retorna 0 se u for menor que um valor preestabelecido (chamado de limiar) ou
1, caso contrário. A função logística retorna valores entre 0 e 1 e sua fórmula é:
fa(u) = 1
(1+e-u) . A tangente-hiperbólica, por sua vez, retorna valores entre –1 e 1, e sua
fórmula é: fa(u) = (eu - e-u)
(eu + e-u)
.
O tipo de conexões entre os neurônios define algumas formas de redes neu-
rais. As mais comuns são as redes cujas conexões seguem o fluxo entrada para
saída, sem retroalimentação, conhecidas como feed-forward. Já redes com retroali-
mentação são conhecidas como redes neurais recorrentes (RNN). Elas permitem que
um neurônio receba como entrada uma saída gerada na mesma camada ou em
camadas posteriores. Essas redes são comumente usadas em processamento de
linguagem natural.
Para entender o aprendizado de uma rede neural, primeiro deve-se apontar
na rede os elementos a serem treinados, que são os pesos das conexões entre
os neurônios (entrada e saída). Inicialmente, considere a Figura 8, que mostra
um neurônio simples, conhecido como perceptron, ou perceptron de Rosemblatt
( ROSEMBLATT, 1958). Nesse neurônio foi adicionado um elemento chamado bias,
ou viés, que possui sempre o valor 1, bem como sua indicação de peso (w0 = b). A
função de ativação utilizada é a liminar.
Figura 8
Perceptron de Rosemblatt
Fonte: Elaborada pelo autor.
Bias
Entradas
...
w2
Neurônio
Saída
wn
xn
x2
x1
+1
w1
w0 = b
Esse neurônio pode ser usado para classificar um conjunto de dados em duas
classes. Como usa a função de ativação limiar, seu resultado de saída é 0 ou 1,
dependendo da classe à qual a entrada pertence. Assim, a saída desse neurônio é
dada pela seguinte fórmula:
n
Saída =
0, se
1, se
n
i=1
i=1
(xiwi) + ba saída do neurônio é 1 (aplicação da função de
ativação limiar). Como se esperava um resultado zero, esse neurônio precisa ter
seus pesos ajustados, ou seja, de um treinamento do neurônio. Para isso, deve-se
calcular o erro gerado pela predição quando se entra com os dados xi do conjunto
de treinamento, que é dado por:
erroi = yi -f(xi)
Aprendizado de máquina 105
Nesse cálculo, yi é o valor observado da classificação da entrada xi (Tabela 5) e
f(xi) é o valor predito pela rede, isto é, calculado quando se apresenta a entrada xi.
Perceba que, se forem dadas dez entradas diferentes para a rede, são obtidos dez
erros gerados, um para cada entrada.
Esse tipo de rede tem seus pesos ajustados, simplificadamente, conforme a
equação seguinte:
wj
t+1 = wj
t + η * xi
j * erroi
Nesse cálculo, wi
t é o peso wi no tempo t; yi é o rótulo esperado (observado) do
dado de entrada; xi
j é o atributo j do dado de entrada xi , f(xi) é o resultado predito
pelo neurônio quando se entra com o dado xi no instante t; e η 5 é um valor conhe-
cido como taxa de aprendizado.
O valor da taxa de aprendizado é um parâmetro de entrada da rede, que define
a magnitude do ajuste feito em cada peso da rede. Assumindo uma taxa de 0,3,
cada peso é ajustado da seguinte forma:
w0
2 = 0,5 + 0,3 * 1* (0 – 1) = 0,2
w1
2 = 0,5 + 0,3 * 6 * (0 – 1) = –1,3
w2
2 = 0,5 + 0,3 * 5 * (0 – 1) = –1
Assim, após essa rodada de ajustes, a rede fica como a figura a seguir.
Figura 11
Perceptron com pesos ajustados
Bias
Entradas
w2= –1 Neurônio
Saída
Saída 0
Como –12,6em especial na maneira com a qual os
ajustes são feitos. Por exemplo, em modo batch, as atualizações são feitas uma vez
a cada ciclo, isto é, após todos os dados serem apresentados à rede, baseando-se
no erro médio encontrado.
4.2.2 Árvores de decisão e Random Forest
Outra abordagem ao problema de aprendizado de
máquina se dá por meio da busca em um espaço de so-
luções. Aqui será abordada a estratégia de representação
por árvores de decisão e regressão.
Árvore de decisão é uma estratégia que divide um
problema em problemas menores e, recursivamente,
vichie81/Shutterstock
Inteligência Artificial Inteligência Artificial108108
Aprendizado de máquina 109
aplica o mesmo processo. Ao final, os subproblemas são combinados para formar
a árvore e dar a solução do problema maior. O termo árvore de decisão é usado
para resolver problemas de classificação; para problemas de regressão, é usada a
árvore de regressão. As estratégias são muito parecidas, com diferença nos valo-
res que os nós folha mantêm e em como são calculados.
Uma árvore de decisão é um grafo acíclico direcionado em que cada nó é ou
um nó de decisão, contendo dois ou mais sucessores, ou um nó folha, que repre-
senta um resultado. Os nós de decisão possuem um teste condicional baseado
em valores dos atributos de entrada. Por exemplo: Idade 5
>5
>5>5 >5
>5
>5
5
>5
>5>5 >5
>5
>5
diminui a variância.
A entropia de uma variável
aleatória A que pode receber
valores {a
1
, ..., a
n
}, de tal forma
que a probabilidade de que cada
um desses valores aparecer em A
seja {p
1
, ..., p
n
}, e é dada por:
Entropia (A) = -
n
i=1
(p
i
log
2
p
i
)
Saiba mais
Outro método de aprendizado
supervisionado disponível são os
k-Vizinhos Mais Próximos (KNN,
do inglês, k-nearest neighbors).
Curiosidade
Uma explicação mais
aprofundada sobre árvore
de decisão pode ser vista
no vídeo Árvore de decisão
– Como funciona (Machine
Learning), publicado pelo
canal Didática Tech.
Disponível em: https://youtu.be/
W7MfsE5av0c. Acesso em: 18 dez.
2020.
Vídeo
https://youtu.be/W7MfsE5av0c
https://youtu.be/W7MfsE5av0c
112 Inteligência Artificial
4.3 Aprendizado não supervisionado
Vídeo O aprendizado não supervisionado é composto de tarefas descritivas, que vi-
sam encontrar informações em uma base de dados sem que haja qualquer rótulo
ou elemento externo que direcione o processo (FACELI et al., 2011). O principal
objetivo é encontrar padrões ou tendências em dados não rotulados, segundo al-
gum critério de qualidade. Duas tarefas são as mais importantes: agrupamento e
associação.
O agrupamento busca analisar os dados e encontrar objetos similares por
meio de alguma métrica, sem que haja qualquer conhecimento prévio sobre suas
classes ou categorias (MITCHEL, 1997). Por exemplo, se um engenheiro florestal
recebe uma massa de dados de várias árvores sem qualquer informação sobre
suas espécies, ele pode tentar inferir quais são similares com base em algoritmos
de agrupamento.
Já a associação tem como objetivo encontrar padrões frequentes de associação
entre elementos da base. Um exemplo clássico é uma base de dados de vendas
feitas por um supermercado. Para direcionar suas campanhas de marketing, a di-
reção do estabelecimento precisa saber quais produtos são mais frequentemente
comprados juntos. Isso é feito por meio da mineração de regras de associação en-
tre os elementos.
4.3.1 Agrupamento
Agrupamento (ou clustering) é uma técnica que visa encontrar grupos (ou
clusters) em uma base de dados de modo que elementos que participam do mes-
mo grupo compartilhem características semelhantes (FACELI et al., 2011).
As
tib
ua
g/
Sh
ut
te
rs
to
ck
Existem várias técnicas para agrupar os dados de uma base, mas o algoritmo
mais simples para isso é o K-Means. Essa técnica se baseia em fixar k pontos de
maneira aleatória, sendo k um parâmetro passado ao algoritmo. Para cada um dos
Aprendizado de máquina 113
objetos da base de dados, calcula-se qual desses k pontos está mais próximo usan-
do alguma métrica de proximidade, e esse será seu grupo inicial.
Esses k elementos serão posteriormente recalculados e serão os centroides do
grupo. Um centroide é o ponto central de um conjunto de dados, calculado pela
média entre todos os dados desse conjunto. Após todos os objetos serem agrupa-
dos, cada um dos k centroides é recalculado e pode ser alterado.
Sejam os pontos (1, 1), (1, 3), (2, 3) e (3, 1) como exemplo e a Figura 17 com o
gráfico da esquerda apresentando os pontos no espaço cartesiano. Para calcular o
centroide (cx, cy), usa-se a mediana na seguinte forma:
cx=
1
n
n
i=1
xi
Nessa fórmula, n é o número de pontos e xi, a abscissa do ponto i. O mesmo
cálculo é feito para a ordenada. Assim, tem-se:
cx=
1
4
1
4
n
i = 1
xi = (1 + 1 + 2 + 3) = 1,75
cy=
1
4
1
4
4
i = 1
yi = (1 + 3 + 3 + 1) = 2
Portanto, o centroide dos quatro pontos de exemplo é (1,75, 2) e está represen-
tado do lado direito da figura a seguir.
Figura 17
Exemplo de cálculo do centroide de quatro pontos
y
x
3
2
1
1 2 3
y
x
3
2
1
1 2 3
Fonte: Elaborada pelo autor.
Após a fixação dos k centroides, cada objeto da base é associado ao centroide
mais próximo, calculando a sua distância até todos os centroides e escolhendo a
menor. Quando todos os dados forem atribuídos, os centroides são recalculados e
o processo recomeça com uma nova classificação dos indivíduos. O processo termi-
na quando os centroides não mais se alterarem na etapa de rearranjo.
Para visualizar o K-Means
em uma aplicação com
Python, recomenda-se o
vídeo K-Means com Python
Parte 1/2 Exemplo Visual, do
Canal Sandeco.
Disponível em: https://youtu.be/
piDlrtfz58s. Acesso em: 18 dez. 2020.
Vídeo
https://youtu.be/piDlrtfz58s
https://youtu.be/piDlrtfz58s
114 Inteligência Artificial
Considere como exemplo a Figura 18, que contém uma base de dados.
Figura 18
Dados a serem agrupados
x
y
Fonte: Elaborada pelo autor.
Assumindo que se quer três grupos, então k tem valor 3 e o processo se inicia
atribuindo três centroides de maneira aleatória. Agora suponha a atribuição apre-
sentada na Figura 19, cujos centroides estão representados pelos símbolos vaza-
dos (quadrado, estrela e losango).
Figura 19
Atribuição inicial de centroides
x
y
Fonte: Elaborada pelo autor.
Para cada elemento da base, calcula-se sua distância para todos os centroides.
A menor distância indica de qual centroide o elemento faz parte. Na Figura 20, os
dados foram transformados em seus símbolos (quadrado, estrela e losango) para
indicar a qual grupo foi adicionado.
Figura 20
Agrupamento dos quatro primeiros elementos
Fonte: Elaborada pelo autor.
x
y
x
y
x
y
x
y
x
y
(a) (b) (c)
(d) (e)
Aprendizado de máquina 115
Na Figura 20a, a distância do elemento até os centroides é calculada para todos
eles e, como está mais próximo do quadrado, o elemento é atribuído ao centroide
quadrado, como pode ser observado na Figura 20b. O processo é repetido em 20c
e 20d, até que, na Figura 20e, os quatro primeiros elementos são associados a um
centroide.
Na Figura 21, mais quatro elementos são agrupados. O primeiro, na Figura 21a,
é atribuído à classe losango; na Figura 21b, o segundo é atribuído à classe estrela;
e assim sucessivamente em 21c, 21d até a Figura 21e.
Figura 21
Agrupamento dos próximos quatro elementos
Fonte: Elaborada pelo autor.
(a) (b) (c)
x
y
x
y
x
y
x
y
x
y
(e)(d)
A Figura 22 mostra o resultado das atribuições na primeira rodada do algoritmo,
quando todos os elementos foram agrupados.
x
y
Figura 22
Resultado da primeira rodada
Fonte: Elaborada pelo autor.
O próximo passo é recalcular os centroides com base nos elementos recém-
-agrupados. Se nenhum centroide mudar de posição, o algoritmo termina; caso
contrário, é feita mais uma rodada de agrupamento. A Figura 23 mostra os cen-
troides recalculados.
116 Inteligência Artificial
x
y
Figura 23
Recálculo dos centroides
Fonte: Elaborada pelo autor.
Uma nova rodada do algoritmo pode alterar as associações. Após o término de
todas as rodadas, tem-se um exemplo de agrupamento na Figura 24.
Figura 24
Agrupamento final
Fonte: Elaborada pelo autor.
x
y
Para calcular a distância entre dois pontos, existem várias métricas. Aqui des-
tacam-se duas métricas muito conhecidas: distância euclidiana e distância de
Manhattan.
Dados dois pontos em um espaço d-dimensional, x e y, em que cada um deles
possui d atributos, a distância euclidiana é calculada pela seguinte equação:
d (x, y) =
d
k = 1
(xk – yk)
2
Já a distância de Manhattan é dada da seguinte forma:
d (x, y) =
d
k = 1
|xk – yk|
Para medir a distância entre atributos categóricos, pode-se usar ainda a dis-
tância de Hamming, que conta o número de atributos com valores diferentes nos
dois objetos (FACELI et al., 2011). A escolha de qual métrica de distância será usada
faz parte da parametrização do algoritmo, bem como da quantidade k de grupos a
serem descobertos.
Uma fase importante na aplicação do K-Means é a interpretação dos grupos
encontrados. Cabe ao profissional ou pesquisador analisar os grupos encontrados
e interpretá-los, buscando as similaridades obtidas em seus elementos.
Existem outros algoritmos, como
o Basic Sequential Algorithmic
Scheme (BSAS), no qual não há
necessidade de se conhecer a
quantidadede grupos que são
criados enquanto o algoritmo
evolui.
Curiosidade
Aprendizado de máquina 117
4.3.2 Associação
Associação é a tarefa de encontrar (ou minerar) um
conjunto de itens frequentes, também conhecido como
itemset, e, com base neles, encontrar regras de associa-
ção entre itens, considerando parâmetros como a confian-
ça da regra (FACELI et al., 2011). O termo k-itemset é usado
para designar um itemset de tamanho k.
Uma regra de associação é uma regra da forma A → B, em
que A e B são itemsets e têm o significado de: SE A ocorre ENTÃO B tam-
bém ocorre. O objetivo é encontra regras de associação significativas com base nos
itemsets observados no conjunto de transações. Tome como exemplo um conjunto
de transações de vendas de um supermercado, como apresentado na Tabela 6.
Tabela 6
Transações de venda de um supermercado
Transação Vendas
1 { leite, café, queijo }
2 { pão, manteiga, café }
3 { leite, manteiga, queijo }
4 { leite, manteiga, café, queijo }
5 { leite, queijo }
6 { leite, manteiga, café }
7 { pão, manteiga }
8 { leite, manteiga, café, queijo }
9 { pão, manteiga, queijo }
10 { leite, café, queijo }
Fonte: Adaptada de Faceli et al., 2011.
Nesse conjunto de transações, deve-se encontrar os itemsets frequentes e, para
tal, usa-se uma métrica de suporte. O suporte de um itemset é a quantidade de
transações que possui esse itemset de produtos; sua medida é feita de maneira re-
lativa, em porcentagem, e o cálculo é feito pela contagem das vezes que o itemset
aparece nas transações dividido pela quantidade de transações. Na busca pelos
itemsets frequentes, o suporte mínimo é um parâmetro de entrada informado
pelo usuário quando está analisando a base em busca das regras de associação,
indicando ao algoritmo para considerar somente os itemsets que possuem uma
frequência mínima no conjunto de transações.
Os itemsets podem ser de qualquer tamanho. Na Tabela 7 são apresentados
itemsets de tamanhos 1, 2 e 3, com seus valores de suporte. São apresentados so-
mente os itemsets que possuem suporte maior ou igual a 0,3, isto é, que aparecem
em mais de 30% das transações (suporte mínimo de 0,3). Por exemplo, o itemset
{pão, queijo} não está listado pois aparece em somente uma transação, tendo, por-
tanto,
1
10
= 0,1 de valor de suporte.
fizkes/Shutterstock
118 Inteligência Artificial
Tabela 7
Itemsets frequentes com suporte mínimo de 0,3
1-itemset 2-itemset 3-itemset
{leite}: 0,7 {manteiga, pão}: 0,3 {café, leite, manteiga}: 0,3
{pão}: 0,3 {café, leite}: 0,5 {café, leite, queijo}: 0,4
{manteiga}: 0,7 {café, queijo}: 0,4 {leite, manteiga, queijo}: 0,3
{café}: 0,6 {café, manteiga}: 0,4
{queijo}: 0,7 {leite, manteiga}: 0,4
{manteiga, queijo}: 0,4
{leite, queijo}: 0,6
Fonte: Adaptada de Faceli et al., 2011.
A partir do momento em que todos os itemsets foram gerados, para cada
k-itemset, são geradas 2k regras possíveis. Uma regra é da forma A → B, tal que
A ∪ B é o próprio itemset. Por exemplo, para o 3-itemset {café, leite, queijo}, geram-
-se as possíveis regras:
• {café} → {leite, queijo}
• {leite} → {café, queijo}
• {queijo} → {café, leite}
• {café, leite} → {queijo}
• {café, queijo} → {leite}
• {leite, queijo} → {café}
• {} → {café, queijo, leite}
• {café, queijo, leite} → {}
Para facilitar o entendimento, aqui serão ignoradas as regras que geram um
conjunto vazio do lado esquerdo ou direito. A escolha de qual regra fará parte das
regras de associações encontradas depende de um parâmetro de utilidade, conhe-
cido como confiança. Dada uma regra A → B, sua confiança é dada pela fórmula:
confiança (A → B) = =
P (A ∪ B)
P (A)
suporte (A ∪ B)
suporte (A)
Nessa fórmula, P (A ∪ B) é a probabilidade de ocorrer o itemset A ∪ B no con-
junto de transações original e P(A) é a probabilidade de ocorrer o itemset A nesse
conjunto. Esse cálculo da probabilidade é feito pela contagem do itemset dividido
pelo tamanho do conjunto total de transações, que é exatamente igual ao suporte.
Assim, a confiança mede a probabilidade do conjunto A ∪ B ocorrer, dado que A
ocorre.
Por exemplo, para o 3-itemset analisado e para a regra possível que foi gerada
anteriormente, {café, queijo} → {leite}, a confiança é dada por:
confiança ({café, queijo}→ {leite}) =
= = = 1,0
P ({café, leite, queijo})
P ({café, queijo})
0,4
0,4
suporte ({café, leite, queijo})
suporte ({café, queijo})
Aprendizado de máquina 119
Dessa forma, para essa regra, há uma confiança de 100% de que toda vez que
alguém compra café e queijo também compra leite.
Para selecionar quais regras são relevantes, o usuário informa um valor de con-
fiança mínima; assim, o algoritmo só seleciona regras que possuem uma confian-
ça maior ou igual a esse parâmetro. Suponha uma confiança mínima de 80% (0,8),
cujas regras extraídas podem ser vistas na Tabela 8. Com essas regras, consegue-se
inferir que quem compra pão sempre compra manteiga (100% dos casos).
Tabela 8
Regras extraídas com confiança mínima de 0,8
Regra Confiança
{pão} → {manteiga} 1,0
{café, queijo} → {leite} 1,0
{queijo} → {leite} 0,857
{leite} → {queijo} 0,857
{café} → {leite} 0,833
{leite, café} → {queijo} 0,8
Fonte: Adaptada de Faceli et al., 2011.
O algoritmo Apriori foi um dos primeiros usados para minerar itemsets e regras
de associação (AGRAWAL; IMIELINSKI; SWAMI, 1993; AGRAWAL; SRIKANT, 1994). Ele
parte do princípio de que os subconjuntos de um itemset frequente também é um
itemset frequente. Por exemplo, se o 3-itemset {café, leite, queijo} tem um suporte de
0,4, então seus subconjuntos ({café, leite}, {café, queijo} e {leite, queijo}) possuem
um suporte de, no mínimo, 0,4. Na Tabela 7, pode-se analisar que os suportes dos
subconjuntos são 0,5, 0,4 e 0,6, respectivamente. Assim, o algoritmo Apriori efetua
uma busca em largura gerando, em cada nível, os itemsets possíveis por meio dos
itemsets frequentes gerados nos níveis anteriores (FACELI et al., 2011).
O aprendizado de regras de associação tem uma aplicação muito grande, prin-
cipalmente em análise de transações para direcionar atividades de marketing, pro-
moção de preços, sistemas de recomendação, bioinformática, entre outros.
Atividade 1
Descreva as diferenças entre aprendizado supervisionado e não supervisionado.
Atividade 2
Qual é a diferença entre classificação e regressão?
Para ver um exemplo de
aplicação das regras de
associação usando Python,
você pode assistir ao vídeo
Mineração de Regras de As-
sociação com Python, Apriori
e SQL, publicado pelo canal
IA Expert Academy.
Disponível em: https://youtu.be/
uhWUkmdAuVI. Acesso em: 21 dez.
2020.
Vídeo
Outras medidas de qualidade
das regras também podem ser
aplicadas, como o coeficiente de
interesse (conhecido como lift) e
a convicção.
Curiosidade
https://youtu.be/uhWUkmdAuVI
https://youtu.be/uhWUkmdAuVI
120 Inteligência Artificial
Atividade 3
Observe a rede neural apresentada a seguir:
Considere que os neurônios N
1
, N
2
e N
3
possuem função de ativação linear. Assumindo que são entrados x
1
= 8 e
x
2
= 1, qual é o valor da saída da rede?
Bias
Bias
Bias
Entradas N3
N1
N2
Saída
+1
+1
b1 = 0,3
w1 = 0,5
w3 = 0,2
w2 = 0,7
w4 = 0,1
b2 = 0,2
+1
b3= 0,1
w6= 0,2
w5= 0,4x1
x2
Atividade 4
Considere a árvore de decisão do exemplo a seguir, montada a partir da base de dados de Câncer de
Mama:
Como seria classificado um novo indivíduo com as seguintes entradas: Cell.size = 5,2, Cl.Thickness = 4,8 e
Cell.shape = 5?
Cl.thickness
Cell.size
Cell.shape
Benign Benign Benign BenignMalignant Malignant Malignant Malignant
Cell.shapeCell.shape Cell.shape
Cell.size
5
>5
>5>5 >5
>5
>5
{leite}: 0,7 {manteiga, pão}: 0,3 {café, leite, manteiga}: 0,3
{pão}: 0,3 {café, leite}: 0,5 {café, leite, queijo}: 0,4
{manteiga}: 0,7 {café, queijo}: 0,4 {leite, manteiga, queijo}: 0,3
{café}: 0,6 {café, manteiga}: 0,4
{queijo}: 0,7 {leite, manteiga}: 0,4
{manteiga, queijo}: 0,4
{leite, queijo}: 0,6
Aprendizado de máquina 121
CONSIDERAÇÕES FINAIS
Este capítulo apresentou os conceitos básicos de aprendizado de máquina, desta-
cando duas de suas três formas: aprendizado supervisionado e não supervisionado.
Ao longo do texto, foram abordadas as tarefas de predição com base em redes neurais
artificiais, árvores de decisão e sua combinação, Random Forest.
Também foram apresentados o aprendizado não supervisionado e as tarefas des-
critivas de agrupamento e associação. Para o agrupamento, abordou-se o algoritmo
K-Means, e, para associação, o algoritmo Apriori foi comentado.
REFERÊNCIAS
AGRAWAL, R.; IMIELINSKI, T.; SWAMI, A. Mining association rules between sets of items in large databases.
Proceedings of the ACM SIGMOD International Conference on Management of Data, Washington, v. 2, n. 22,
p. 207-216, jun. 1993.
AGRAWAL, R.; SRIKANT, R. Fast algorithms for mining association rules in large databases. Proceedings of
the 20th International Conference on Very Large Data Bases, Santiago, p. 478-499, set. 1994.
BREIMAN, L. et al. Classification and regression trees. Monterey: Wadsworth and Brooks, 1984.
CESTNIK, B.; KONONENKO, I.; BRATKO, I. ASSISTANT 86: a knowledge-elicitation tool for sophisticated
users. EWSL’87: Proceedings of the 2nd European Conference on European Working Session on Learning,
p. 31-45, maio 1987.
CYBENKO, G. Approximation by superpositions of a sigmoidal function. Mathematics of Control, Signals and
Systems, n. 2, p. 303-314, 1989.
FACELI, K. et al. Inteligência Artificial: uma abordagem de aprendizado de máquina. Rio de Janeiro: LTC,
2011.
FISCHER, R. The use of multiple measurements in taxonomic problems. Annual Eugenics, v. 7, n. 2, p.
179-188, 1936.
HAYKIN, S. Neural networks and learning machines. 3. ed. New Jersey: Pearson, 2009.
MITCHELL, T. Machine learning. Nova York: McGraw-Hill, 1997.
QUINLAN, J. discovering rules by induction from large collections of examples. Expert Systems in the
Micro-Electronic Age, Edinburgh, p. 168-201, 1979.
QUINLAN, J. C4.5: Programs for machine learning. San Francisco: Morgan Kaufmann Publishers Inc., 1993.
REZENDE, S. Sistemas inteligentes: fundamentos e aplicações. Barueri: Manole, 2003.
RIVEST, R. Learning decision lists. Mach Learn, n. 2, p. 229-246, 1987.
ROSEMBLATT, F. The Perceptron: a probabilistic model for information storage and organization in the
brain. Psycological Reviews, n. 65, p. 53-65, 1958.
RUMELHART, D.; HINTON, G.; WILLIAMNS, R. Learning representations by back-propagating errors. Nature,
v. 323, p. 533-536, 1986.
RUSSELL, S.; NORVIG, P. Inteligência Artificial. 3. ed. Rio de Janeiro: Elsevier Brasil, 2013.
WOLBERG, W. H. Breast Cancer Wisconsin (Original) Data Set. UCI Machine Learning Repository, 1992.
Disponível em: https://archive.ics.uci.edu/ml/datasets/breast+cancer+wisconsin+(original). Acesso em:
21 dez. 2020.
WIDROW, B.; HOFF, M. Adaptive switching circuits. IRE WESCON Convention Record, p. 96-104, 1960.
122 Inteligência Artificial
5
Computação evolucionária
A computação evolucionária, ou computação evolutiva, é um ramo
da computação fundamentado nos processos evolutivos observados na
natureza. É formada por algoritmos genéticos, estratégias de evolução e
programação evolucionária.
Este capítulo tem como objetivo apresentar de maneira clara e con-
cisa os algoritmos genéticos, mostrando sua estrutura básica de fun-
cionamento e aspectos que os tornam tão poderosos na resolução de
problemas. Assim, na Seção 5.1 são apresentadas as bases dos algo-
ritmos genéticos. A Seção 5.2 é dedicada à descrição dos métodos de
seleção de indivíduos para reprodução. Já a Seção 5.3 apresenta alguns
operadores genéticos usuais.
5.1 Algoritmos genéticos
Vídeo Os algoritmos genéticos (AG) surgiram em meados dos anos 1950, quando cien-
tistas começaram a se inspirar na natureza para criar processos computacionais,
que mais tarde ficaram conhecidos como inteligência artificial. Na primeira metade
dos anos 1960, Rechenberg (1965) desenvolveu as estratégias evolucionárias, que
eram usadas para otimizar parâmetros para dispositivos como aerofólios. Em se-
guida, Fogel, Owens e Walsh (1966) desenvolveram a programação evolucionária,
uma técnica na qual as soluções candidatas eram representadas por máquinas de
estados finitas, desenvolvidas aleatoriamente por meio de mutações. O trabalho
de Holland a partir dos anos 1960, em especial, apresenta os AG como uma metá-
fora para os processos evolutivos (MITCHELL, 1996).
Os AG podem ser entendidos como algoritmos de busca. Para entender suas
diferenças, mostra-se o exemplo a seguir.
Considere o problema de encontrar o máximo da seguinte função:
f(x) = x sin (15x) + 1; -1 ≤ x ≤ 2
Isto é, deseja-se encontrar o valor x que possui o maior resultado f(x) para
essa função. A Figura 1 apresenta um gráfico da função para melhor visualiza-
ção do processo.
Computação evolucionária 123
Figura 1
Gráfico da função f(x)
f(x
) =
x
s
in
(1
5x
) +
1
-0,5 00 0,5
x
1,0 1,5 2,0
-1,0
-1,0
-0,5
00
0,5
1,0
1,5
2,0
2,5
3,0
Fonte: Elaborada pelo autor.
Esse caso é um problema de otimização, pois o objetivo é encontrar o melhor
estado (x) de acordo com a função dada (f(x)). Para resolver um problema dessa for-
ma, pode-se usar algoritmos diferentes das buscas clássicas, pois não há interesse
em saber os estados analisados até se chegar ao resultado ótimo 1 .
Um algoritmo clássico para resolver esse tipo de problema é o algoritmo de subida
de encosta (ou hill climbing), que é um tipo de busca gulosa local, isto é, ele procura
um estado vizinho melhor que o estado atual sem decidir antecipadamente as demais
movimentações (RUSSELL; NORVIG, 2013). A ideia central desse algoritmo é: dado um
ponto inicial x aleatório, o algoritmo busca nas redondezas pontos vizinhos x’ que pos-
suem valores f(x’) maiores de f(x); quando encontrados, ele substitui x por x’ e efetua o
mesmo processo, sempre caminhando para valores f(x’) maiores que os atuais.
A Figura 2 mostra o processo do algoritmo de subida de encosta. Partindo de um
ponto inicial, o algoritmo procura na vizinhança pontos que gerem resultando da fun-
ção f(x) melhores até que não seja mais possível, ou seja, até encontrar o ponto máximo.
Figura 2
Subida de encosta
f(x
) =
x
s
in
(1
5x
) +
1
-0,5 00 0,5
x
1,0 1,5 2,0
-1,0
-1,0
-0,5
00
0,5
1,0
1,5
2,0
2,5
3,0
Direção da busca
Ponto inicial
Solução
(ponto máximo)
Fonte: Elaborada pelo autor.
Outro problema que possui essas
mesmas características é o pro-
blema das oito rainhas (RUSSELL;
NORVIG, 2013).
1
124 Inteligência Artificial
Apesar de o algoritmo ser muito eficiente em termos de tempo de execução
e ocupação de memória, fácil de implementar e muito intuitivo, ele sofre do
problema de máximos locais. Por exemplo, a Figura 3 apresenta os máximos
locais e o máximo global de f(x), sendo que o objetivo no exemplo é encontrar
o máximo global.
Figura 3
Função f(x) com máximos locais e máximo global
f(x
) =
x
s
in
(1
5x
) +
1
-0,5 00 0,5
x
1,0 1,5 2,0
-1,0
-1,0
-0,5
00
0,5
1,0
1,5
2,0
2,5
3,0
Máximos locais Máximo global
Fonte: Elaborada pelo autor.
Se o ponto inicial for escolhido perto de um máximo local, o algoritmo, ao en-
contrá-lo, considera-o como sendo a resposta do problema, mas é uma resposta
errada. A Figura 4 apresenta a escolha de um ponto inicial que leva o algoritmo a
uma solução incorreta.
Figura 4
Algoritmo de subida de encosta que fica preso em um máximo local
f(x
) =
x
s
in
(1
5x
) +
1
-0,5 00 0,5
x
1,0 1,5 2,0
-1,0
-1,0
-0,5
00
0,5
1,0
1,5
2,0
2,5
3,0
Direção da busca
Ponto inicial
Solução(ponto máximo)
Máximo
local (não é
solução)
Fonte: Elaborada pelo autor.
Computação evolucionária 125
Dessa forma, outras maneiras de se buscar pelas so-
luções são apresentadas e os algoritmos genéticos, em
especial, fornecem um procedimento alternativo com um
bom resultado.
Os AG são processos computacionais embasados
em modelos biológicos, como a genética e a teoria da
evolução de Darwin (ARTERO, 2009). Um dos primeiros
trabalhos a usar a metáfora biológica aplicada à compu-
tação foi o de Holland (1975), que tratou do mapeamento
do processo biológico de adaptação para áreas como econo-
mia, jogos e inteligência artificial.
O funcionamento dos AG se baseia em apontar uma população de possíveis
soluções para um problema, aplicar uma função de aptidão para avaliá-las e decidir
quais têm capacidade de contribuir para novas gerações de soluções. Então, por
meio de operações que simulam transferências de genes na reprodução sexuada e
na seleção natural, os candidatos mais aptos são combinados para criar uma nova
geração de soluções candidatas (LUGER, 2013).
Já se consegue perceber algumas diferenças entre a busca com hill climbing
apresentada e os AG. Enquanto o hill climbing assume um estado como atual e
tenta encontrar um estado próximo que seja melhor, os AG trabalham com vários
estados e não obtêm um estado vizinho como próximo a ser analisado, mas sim
aplicam operações para obter novos estados.
Com esse processo, espera-se que as características que tornam soluções mais
aptas sejam transferidas para a próxima geração e aquelas que as tornam me-
nos aptas sejam perdidas. Dessa forma, espera-se que novas gerações de soluções
sejam criadas, fortalecendo características que as tornam mais aptas e, portanto,
aproximando-as mais da perfeição (ARTERO, 2009).
No caso dos AG, busca-se resolver problemas para os quais uma solução algorít-
mica é difícil ou desconhecida. Então, gera-se um conjunto de valores aleatórios ini-
ciais, os indivíduos, que são prontamente avaliados para determinar se algum deles
corresponde à solução do problema. Caso não corresponda, é criada uma nova ge-
ração de indivíduos por meio da combinação dos mais aptos, e o processo se repete.
Como os AG fazem uso de uma metáfora biológica baseada em seleção natural
e genética, deve-se introduzir os termos utilizados que são emprestados da bio-
logia. Um gene é a representação de alguma característica de interesse ou uma
parte de um número, dependendo de como os indivíduos estão sendo mapeados.
Os genes podem ser representados por meio de letras, números inteiros, números
decimais e até mesmo bits.
Um cromossomo é uma cadeia de genes que representa um indivíduo da
população. Portanto, um cromossomo, ou indivíduo, é representado por uma
cadeia de letras, números inteiros, números decimais, bits etc., dependendo de
como é feita a representação dos genes no problema em questão. Já uma popu-
lação é um conjunto de indivíduos que competem pela sobrevivência e repro-
dução, cujo objetivo é perpetuar suas características em novas gerações. Uma
Para uma introdução
simplificada aos algoritmos
genéticos, recomenda-se
o vídeo História, conceito e
aplicações dos algoritmos
genéticos, publicado pelo
canal Johann Hemmer.
Disponível em: https://youtu.be/
x7oHgs52BAI. Acesso em: 28 dez.
2020.
Vídeo
agic pictures/Shutterstock
https://youtu.be/x7oHgs52BAI
https://youtu.be/x7oHgs52BAI
126 Inteligência Artificial
geração é uma população em um determinado período
no tempo, o que, em algoritmos genéticos, corresponde
a cada iteração do algoritmo.
A medida de habilidade que é aplicada aos indivíduos
para estimar a sua capacidade de sobreviver e se repro-
duzir é feita por uma função de aptidão (ou fitness).
Em AG são usadas funções matemáticas que devem ser
minimizadas ou maximizadas, dependendo do problema
tratado. Por exemplo, no caso da maximização de uma fun-
ção, como apresentado na Figura 1, a função de aptidão pode
ser a própria função f(x). Caso o problema seja encontrar o melhor caminho entre
duas cidades, ela pode ser uma função de avaliação com componente heurística.
Como os AG são inspirados no processo de evolução, o conceito de seleção é
aplicado em cada iteração. Isso deve ser feito de modo que os indivíduos mais ap-
tos possam ser selecionados mais frequentemente, propagando assim suas carac-
terísticas. Mesmo assim, os indivíduos menos aptos não podem ser simplesmente
descartados da população, pois isso causaria a convergência genética prematura.
Convergência genética é quando uma população possui baixa diversidade
(isto é, muitos indivíduos similares ou uniformes) e, portanto, não consegue evoluir
para uma população muito diferente. A convergência para uma solução ótima é
o que se espera de um AG; o problema ocorre quando há convergência genética
prematura, ou seja, a população converge para indivíduos que possuem uma ap-
tidão relativamente boa e que dominam a população, mas o algoritmo leva a um
máximo local.
O Algoritmo 1 apresenta o procedimento genérico de execução de um AG.
Algoritmo: Algoritmo Genético Genérico
tempo 0
Inicializar a população P(tempo)
ENQUANTO Condição de parada não satisfeita FAÇA
Avaliar aptidão de cada membro de P(tempo)
Selecionar membros mais aptos de P(tempo)
Produzir descendentes usando operadores genéticos
Avaliar aptidão de cada descendente
Gerar nova população
tempo tempo + 1
FIM ENQUANTO
1
2
3
4
5
6
7
8
9
10
Algoritmo 1
Procedimento de um algoritmo genético genérico
Fonte: Adaptado de Luger, 2013.
Na Linha 2, é gerada uma população aleatória com soluções candidatas. O ta-
manho da população é um parâmetro do AG e tem um papel importante, pois se
o número de indivíduos for baixo, não há espaço para diversidade genética, o que
faz com que o AG não encontre boas soluções. Se for grande demais, o AG pode
Rawpixel.com/Shutterstock
Computação evolucionária 127
demorar muito para encontrar uma solução e, dependendo do caso, pode se apro-
ximar da busca exaustiva.
Na Linha 3, define-se que o AG executará até que uma condição de parada seja
satisfeita. Essa condição pode ser, por exemplo, a existência de uma ou mais solu-
ções candidatas com aptidões que ultrapassam um limiar definido, um número de
iterações a ser alcançado ou a melhora ou não na aptidão média nas últimas gera-
ções. Cada iteração do processo é uma geração, e um AG é executado tipicamente
entre 50 e 500 gerações, podendo ocorrer mais vezes (MITCHELL, 1996).
Na Linha 4, todos os indivíduos da população são avaliados conforme sua apti-
dão, que é uma função f(x, t) indicando o valor de aptidão do candidato x no tempo
t. Quanto maior sua aptidão, maior sua capacidade de sobrevivência e reprodução.
Após a avaliação de todos os indivíduos, na Linha 5 ocorre o passo da seleção,
no qual são escolhidos pares de candidatos para serem usados em operadores
genéticos, levando assim a novas soluções. São selecionados pares de candidatos
baseados em seus valores de aptidão, mas alguns candidatos menos aptos podem
também ser mantidos, pois podem conter elementos essenciais para a solução.
Para simplificar o entendimento do algoritmo, aqui serão selecionados dois indi-
víduos de maneira aleatória, sem a preocupação sobre a sua aptidão. Uma vez que
os pares de indivíduos forem selecionados, na Linha 6 são aplicados os operadores
genéticos para que uma nova população seja gerada. Espera-se que esse novo con-
junto de indivíduos seja mais apto que o anterior para que possa se perpetuar para
a próxima geração.
Um operador genético é uma operação na qual são tomados dois indivíduos
para uma recombinação que gera um terceiro elemento, simulando a reprodução
sexuada. Esses operadores têm a função de criar novos indivíduos preservando
genes bons, isto é, que chegam mais perto da solução ótima.
Duas operações serão vistas: crossover, ou recombinação, e mutação.
O crossover é feito com dois indivíduos pais que são cortados em um pontoalea-
tório, gerando outros dois filhos por meio da recombinação de genes. Já na muta-
ção, genes são sorteados para terem seu valor alterado de alguma forma. Ambas
as operações possuem uma probabilidade de acontecer, isto é, podem não ocorrer
em todas as gerações.
Os indivíduos obtidos por meio das operações genéticas também são avaliados
pela sua aptidão, conforme a Linha 7. Na Linha 8, é gerada uma nova população
com os novos indivíduos, e esse processo é chamado de evolução. A evolução ocor-
re para escolher quais indivíduos serão mantidos na próxima geração e pode ser
feita usando-se várias técnicas de substituição.
Dada uma população de tamanho n, a maneira mais simples de determinar a
próxima geração é efetuar o crossover entre n indivíduos, gerando n filhos que
substituirão completamente a população original. Essa técnica é a substituição
geracional.
Percebe-se que, substituindo todos os indivíduos de uma população, pode-se
perder bons indivíduos, com alta aptidão. Uma maneira de melhorar esse com-
128 Inteligência Artificial
portamento é implementar o elitismo, ou substituição geracional com elitismo,
que mantém os k melhores indivíduos de uma geração (em geral um), os quais
não devem ser descartados de uma geração para outra. Com isso, garante-se que
o melhor indivíduo da geração t estará presente na geração t + 1 e que o melhor
indivíduo dessa geração é pelo menos tão bom quanto o da geração t. Com isso,
a avaliação do melhor indivíduo em cada geração é crescente (LINDEN, 2012).
O valor de k (quantidade de indivíduos a serem mantidos) em geral é um, pois
aumentando k, cresce a pressão de seleção, isto é, o risco de convergência genética
prematura. Outra maneira de substituir a população na próxima geração é usando
a substituição steady state, na qual um ou dois filhos substituem os piores indi-
víduos da população. Assim, nessa técnica somente os indivíduos menos aptos são
substituídos e, a cada iteração, pelo menos um indivíduo é trocado, garantindo que
os menos aptos sejam eliminados.
A Linha 9 incrementa o contador de geração e o processo reinicia. Apesar de o
algoritmo ser muito simples, seu poder de resolução de problemas está nas confi-
gurações das estratégias utilizadas, tanto na seleção dos indivíduos para reprodu-
ção como nos operadores genéticos a serem utilizados e nas estratégias evolutivas.
Considere como exemplo o problema de encontrar o máximo da seguinte função,
que será chamada de função mérito, ou função objetivo, usando algoritmos genéticos:
f(x, y) =
3
2
e
(1 + (x - 1)2 + (y - 1)2)
1 5
2
- e 1
(1 + 1
4
(x + )21
2
+ 1
36
(y - 1)2
+ 2 e
(1 + (x - 2)2 + (y - 2)2)
1
+ 2 e
(1 + (x - 1)2 + (y + 1)2)
1 ; -8 ≤ x ≤ 8 e -8 ≤ y ≤ 8
A Figura 5 apresenta a função no plano de três dimensões em três ângulos
diferentes.
Figura 5
Função f(x, y) no espaço tridimensional visível em três ângulos diferentes
Fonte: Elaborada pelo autor.
O ponto ótimo dessa função pode ser visto na Figura 6 e é aproximadamente
em x = 2,01 e y = 1,95, com valor máximo aproximado de f(x, y) = 6,06.
Figura 6
Ponto máximo de f(x, y)
Fonte: Elaborada pelo autor.
Para ver um exemplo
de uso de algoritmos
genéticos, assista ao vídeo
Algoritmo genético aplicado
ao problema da mochila,
publicado pelo canal
Ponto Ótimo, que mostra a
aplicação de um AG em um
problema.
Disponível em: https://youtu.be/
FYF6lS_BHKA. Acesso em: 28 dez.
2020.
Vídeo
https://youtu.be/FYF6lS_BHKA
https://youtu.be/FYF6lS_BHKA
Computação evolucionária 129
Seguindo o Algoritmo 1, os primeiros passos são inicializar o tempo em zero
e a população com a qual o algoritmo começará o processamento. Dessa forma,
é necessário que seja decidido qual formato dos cromossomos dos indivíduos será
usado, para que os genes possam ser usados nas operações genéticas.
Como a função objetivo recebe os valores x e y, o indivíduo será representado
pela concatenação de valores x e y transformados em números binários. Para sim-
plificação, só serão usados valores inteiros. Assim, um indivíduo pode ser repre-
sentado por um vetor de números binários, em que a primeira metade representa
o valor de x e a segunda metade, o valor de y. Como os números são pequenos,
pode-se usar quatro bits para cada coordenada.
Assim, a Linha 2 gera um conjunto inicial aleatório de indivíduos, isto é, vetores
de números binários. Com base nesses indivíduos iniciais é que o algoritmo inicia
o processamento. Por exemplo, suponha que dentro da população gerada têm-se
os seguintes indivíduos (x, y):
• (1, 0)
• (4, 5)
• (-5, -2)
• (-3, 3)
Assinalados no gráfico da função f(x, y), esses indivíduos podem ser vistos na
Figura 7.
Figura 7
População inicial assinalada no gráfico de f(x,y)
Fonte: Elaborada pelo autor.
Assumindo uma representação de cada número com quatro bits, têm-se os se-
guintes indivíduos:
• 0001 0000
• 0100 0101
• 1001 1110
• 1101 0011
Na Linha 3, o critério de parada é estabelecido e assume-se que ocorrerá uma
determinada quantidade de iterações; por exemplo: dez iterações. Na Linha 4,
calcula-se a aptidão de cada elemento da população, que nesse caso é o valor de
f(x, y), a saber:
Acessando o site de Carlos
Rafael Gimenes das Neves,
você pode obter a codifica-
ção dos números usando
quatro bits.
Disponível em: https://carlosrafaelgn.
com.br/Aula/Binario.html. Acesso em:
28 dez. 2020.
Site
https://carlosrafaelgn.com.br/Aula/Binario.html
https://carlosrafaelgn.com.br/Aula/Binario.html
130 Inteligência Artificial
• Aptidão de 0001 0000 = f(1, 0) = 3,4448
• Aptidão de 0100 0101 = f(4, 5) = 2,8356
• Aptidão de 1001 1110 = f(-5, -2) = 2,6877
• Aptidão de 1101 0011 = f(-3, 3) = 2,1969
A Linha 5, responsável pelo método de seleção, escolhe os indivíduos mais ap-
tos (nesse caso, aqueles que possuem o maior valor de f(x, y)) para serem usados
na reprodução. Para simplificar o exemplo, pode-se selecionar dois indivíduos alea-
toriamente, a saber:
• 1101 0011
• 0100 0101
Após a seleção, a Linha 6 aplica operadores genéticos para encontrar os descen-
dentes, perpetuando as melhores características de cada indivíduo. Nesse exemplo
será usado o crossover em um ponto. A Figura 8 ilustra esse processo. O ponto de
corte é escolhido aleatoriamente; aqui será apresentado o exemplo de escolha do
Ponto 3.
Figura 8
Crossover de dois indivíduos com ponto de corte no terceiro gene
1 1 0 1 0 0 1 1
0 1 0 0 0 1 0 1
Ponto de corte Crossover Novos indivíduos
Indivíduo 1
1 1 0 1 0 0 1 1
Indivíduo 2
0 1 0 0 0 1 0 1
1 1 0 1 0 0 1 1
0 1 0 0 0 1 0 1
0 1 0 1 0 0 1 1
1 1 0 0 0 1 0 1
Fonte: Elaborada pelo autor.
Os operadores genéticos podem ser aplicados várias vezes, dependendo da
estratégia implementada no algoritmo. Vamos supor aqui, com essa população
de quatro indivíduos, que seja feita mais uma rodada de seleção dos pais e ope-
ração genética. Suponha também que os indivíduos 1001 1110 e 0001 0000 sejam
selecionados. Aplicando-se o crossover no mesmo ponto, obtém-se: 1000 0000 e
0001 1110.
Após essa etapa, deve-se avaliar os novos indivíduos obtidos, no caso:
• Aptidão de 0101 0011 = f(5, 3) = 3,0195
• Aptidão de 1100 0101 = f(-4, 5) = 2,4916
• Aptidão de 1000 0000 = f(-8, 0) = 2,8903
• Aptidão de 0001 1110 = f(1, -2) = 2,7288
Para a escolha da próxima geração, assume-se aqui que os filhos substituem os
pais, mas outras técnicas podem ser aplicadas, inclusive levando em consideração
a aptidão de todos os indivíduos recém-obtidos. A Figura 9 apresenta os novos in-
divíduos no gráfico de f(x, y).
Computação evolucionária 131
Figura 9
Nova população assinalada no gráfico de f(x, y)
Fonte: Elaborada pelo autor.
O processo é feito para todos os indivíduos, levando em consideração os parâ-
metros do AG que controlam as probabilidades nas quais as operações genéticas
ocorrem. Com base nisso, espera-se que a população siga convergindo para a solu-
ção ótima. A Figura 10 mostra uma população, assinalada no gráfico, mais próxima
do ponto ótimo.Figura 10
População em uma geração mais avançada
Fonte: Elaborada pelo autor.
Esse processo continua até que o critério de parada seja atingido. Então, esco-
lhe-se o indivíduo da população que possuir a maior aptidão; ele será a solução
para o problema.
5.2 Métodos de seleção
Vídeo O Algoritmo 1 apresenta pontos em que se pode escolher opções de processa-
mento. Na Linha 5, é feita a seleção dos elementos que serão alvo de operações
genéticas e têm-se várias formas de seleção. Além disso, na Linha 6 são feitas as
operações genéticas, que também possuem algumas variantes. A seleção pode ser
feita de quatro formas: seleção aleatória, por torneio, por roleta e amostragem
universal estocástica.
132 Inteligência Artificial
Na seleção aleatória, são tomados dois indivíduos de maneira aleatória para
aplicação de operadores genéticos (ou reprodução). Como não leva em conside-
ração a aptidão dos candidatos, pode-se gerar filhos piores do que seus pais, com
uma solução mais longe da ótima.
Na seleção por torneio, para selecionar k indivíduos para reprodução, são fei-
tas k disputas. Em cada uma dessas disputas são tomados n indivíduos ao acaso,
e o melhor deles, segundo sua aptidão, é escolhido para reprodução. Geralmente,
toma-se n com valor três. A Figura 11 ilustra o mecanismo para a escolha de qua-
tro indivíduos (k = 4) usando-se três indivíduos tomados aleatoriamente (n = 3).
Perceba que para selecionar quatro indivíduos foram feitos quatro torneios e que
cada torneio no exemplo é composto de três indivíduos aleatórios, para os quais é
calculada sua função de aptidão. O indivíduo que tiver o maior valor é o escolhido
naquele torneio.
Figura 11
Exemplo de seleção por torneio para k = 4 e n = 3 Escolhas
Disputa 1: Indivíduo 1 Indivíduo 2 Indivíduo 4 Aptidão Indivíduo 2
Disputa 2: Indivíduo 3 Indivíduo 1 Indivíduo 7 Aptidão Indivíduo 1
Disputa 3: Indivíduo 4 Indivíduo 5 Indivíduo 6 Aptidão Indivíduo 4
Disputa 4: Indivíduo 7 Indivíduo 6 Indivíduo 5 Aptidão Indivíduo 5
Fonte: Elaborada pelo autor.
Apesar de não haver um limite para o valor de n, o seu valor mínimo deve ser 2,
pois caso contrário não há disputa. Além disso, se n for igual ao tamanho da popu-
lação, em todas as disputas todos os indivíduos participarão, e o resultado sempre
será o mesmo. Se for escolhido um valor muito alto, próximo ao tamanho na po-
pulação, alguns indivíduos dominarão as disputas, pois aparecerão em várias delas
(LINDEN, 2012).
Como a escolha dos indivíduos para os torneios é aleatória, pode ocorrer de al-
gum ser selecionado várias vezes no mesmo torneio. A probabilidade de ocorrência
é baixa, mas não é nula, e não há qualquer impedimento para tal fenômeno. Isso
gera um problema de diversidade, pois o pior indivíduo (o que possui menor apti-
dão) só tem chance de ser selecionado para reprodução se aparecer como único
competidor em algum torneio.
Na seleção por roleta, calculam-se os valores de aptidão para todos os indiví-
duos da população. Os valores são então tomados de modo proporcional, como
setores de uma roleta, na qual os maiores setores possuem mais chances de serem
escolhidos. Então, gira-se a roleta (toma-se um número aleatório) para que seja
escolhido o primeiro elemento. O processo se repete para a seleção do segundo
indivíduo. A probabilidade de um indivíduo i ser escolhido, p(i), é dada por:
p(i) =
f(i)
∑ k=1 f(k)n
Computação evolucionária 133
Nessa equação, f(i) é a aptidão do indivíduo i, e n é o número de indivíduos na
população. O valor de p(i) pode então ser usado para construir a roleta, na qual
indivíduos que possuem maior f(i) terão uma parcela maior da roleta e, por conse-
guinte, mais chances de serem escolhidos.
A Figura 12 mostra um exemplo de roleta depois do cálculo proporcional das
aptidões de todos os indivíduos. Percebe-se que o Indivíduo 4 e o Indivíduo 6 pos-
suem setores maiores da roleta e, portanto, mais chances de serem selecionados
para reprodução.
Figura 12
Exemplo de roleta
Indivíduo 1
Indivíduo 2
Indivíduo 3
Indivíduo 4
Indivíduo 5
Indivíduo 6
Cursor
Fonte: Adaptada de Artero, 2009.
Como o sorteio é aleatório, não há qualquer comprometimento de que os in-
divíduos sorteados apareçam somente uma vez. Há casos, inclusive, em que um
mesmo indivíduo pode ser selecionado duas vezes no mesmo crossover, gerando
filhos iguais aos pais e diminuindo a diversidade.
Um problema que ocorre no uso da roleta é quando a população possui um
superindivíduo, o qual possui um valor de aptidão muito maior que os demais. Por
exemplo, seja a Tabela 1 com cinco indivíduos e suas aptidões. O Indivíduo 4 possui
uma aptidão muito maior e, portanto, é um superindivíduo.
Tabela 1
Tabela de população com um superindivíduo
Indivíduo i Aptidão (f(i))
Indivíduo 1 5
Indivíduo 2 8
Indivíduo 3 3
Indivíduo 4 7860
Indivíduo 5 9
Fonte: Elaborada pelo autor.
Efetuando-se o cálculo das probabilidades, o Indivíduo 4 tem 99,78% de proba-
bilidade de ser escolhido. Dessa forma, é muito possível que uma geração inteira
de seleções seja feita com a escolha somente desse indivíduo, o que acaba com a
diversidade da população.
134 Inteligência Artificial
Até então, pode não parecer que a presença de um superindivíduo traga proble-
mas para o algoritmo; pelo contrário, parece que a solução ótima foi encontrada ou
está muito próxima. O problema é que em geral os superindivíduos estão próximos
de um máximo local, fazendo com que toda a população siga para esse máximo e
causando convergência genética prematura. Uma maneira de resolver esse proble-
ma é modificar a função de ativação por meio do escalonamento sigma, baseado
no desvio padrão das aptidões (LINDEN, 2012).
Na amostragem universal estocástica, tem-se um processo semelhante à ro-
leta. Para selecionar k indivíduos, são utilizados k cursores igualmente espaçados
em uma roleta, como ilustra a Figura 13. A roleta é girada e todos os cursores são
afetados igualmente. Os indivíduos também podem ser dispostos na roleta de ma-
neira aleatória.
Figura 13
Exemplo de roleta para amostragem universal estocástica com k = 4
Indivíduo 1
Indivíduo 2
Indivíduo 3
Indivíduo 4
Indivíduo 5
Indivíduo 6
Cursor 4
Cursor 3
Cursor 2
Cursor 1
Fonte: Elaborada pelo autor.
A vantagem desse método em relação à roleta é que os resultados são menos
variantes, ou seja, como a cada rodada da roleta os indivíduos com mais aptidão
têm mais chances de serem escolhidos, com k cursores até mesmo indivíduos me-
nos aptos têm chance de serem usados.
Infelizmente, o efeito de dominância do superindivíduo, se este existir, é garan-
tido por essa técnica, pois vários cursores apontarão para ele. Ademais, o méto-
do tende a ser mais cruel com indivíduos que possuem baixa aptidão, pois estes
tendem a desaparecer mais rapidamente da população, levando à convergência
genética muito rapidamente.
Computação evolucionária 135
5.3 Operadores genéticos
Vídeo Dado que os indivíduos foram selecionados com base em algum método de
seleção apresentado, deve-se aplicar as operações genéticas para que uma nova
população seja gerada. Vários operadores genéticos estão disponíveis para uso em
AG, todos baseados na metáfora biológica da combinação e mutação genética.
O operador mais comum é a recom-
binação ou crossover, o qual é aplicado
sobre duas soluções candidatas, divi-
dindo-as e trocando seus elementos
para gerar dois novos candidatos. No
crossover de um ponto, um ponto de
corte é escolhido aleatoriamente e usa-
do para dividir os indivíduos (LINDEN,
2012). Assumindo que os indivíduos
são representados por uma cadeia de
oito genes, em que cada gene é um bit, o ponto de corte define quais bits serão
passados para os filhos na recombinação. A Figura 14 apresenta um exemplo de
ponto de corte para o indivíduo 1100 1011 com ponto de corte 4.
Figura 14
Exemplo de ponto de corte
Genes numerados Ponto decorte
Indivíduo
1 1 0 0 1 0 1 1 1 1 0 0 1 0 1 1
1 2 3 4 5 6 7 8
1 1 0 0 1 0 1 1
1 2 3 4 5 6 7 8
Ponto de corte 4
4
Fonte: Elaborada pelo autor.
Assumindo como exemplo a seleção do Indivíduo 1 (1100 1011) e do Indivíduo 2
(0110 0010) para o crossover, a Figura 15 apresenta o processo para o ponto de
corte 4. Depois que as partes dos indivíduos são identificadas, são gerados dois
novos indivíduos, cada um com uma parte de um dos pais, a saber: 0110 1011 e
1100 0010.
Figura 15
Exemplo de crossover
1 1 0 0 1 0 1 1
0 1 1 0 0 0 1 0
Ponto de corte Crossover Novos indivíduos
Indivíduo 1
1 1 0 0 1 0 1 1
Indivíduo 2
0 1 1 0 0 0 1 0
1 1 0 0 1 0 1 1
0 1 1 0 0 0 1 0
0 1 1 0 1 0 1 1
1 1 0 0 0 0 1 0
Fonte: Elaborada pelo autor.
Soleil Nordic/Shutterstock
136 Inteligência Artificial
No exemplo apresentado, foi usada a variação do crossover contendo somente
um ponto de corte. A cada crossover sendo feito, ainda que na mesma iteração
do algoritmo de AG, pode-se usar um ponto de corte diferente, aleatório. Efetuan-
do-se o ponto de corte em somente um ponto, têm-se várias condições genéticas
que não podem ser preservadas. Por exemplo, imagine que o indivíduo 1000 1001
possui os genes inicial (1) e final (1) como sendo importantes e fazendo parte da
solução. Efetuando-se cortes de um ponto, as chances de perpetuação desses dois
genes são pequenas.
Nesse caso, sugere-se o uso do crossover de dois pontos, que é uma variação
na qual são usados dois pontos de corte para recombinação. Assim, sorteiam-se
dois pontos de corte i e j que separam os genes do indivíduo em três partes, de tal
forma que a primeira parte do indivíduo vai até o i-ésimo bit, a segunda parte vai
até o j-ésimo bit e o restante é a terceira parte (LINDEN, 2012).
Para entender exatamente como funcionam os pontos de corte, numeram-se os
genes do indivíduo e aplicam-se os cortes como mencionado. A Figura 16 apresenta
um exemplo para o indivíduo 1100 1011 com pontos de corte 2 e 5.
Figura 16
Exemplo de pontos de corte
Genes numerados Ponto de corte
Indivíduo
1 1 0 0 1 0 1 1 1 1 0 0 1 0 1 1
1 2 3 4 5 6 7 8
1 1 0 0 1 0 1 1
1 2 3 4 5 6 7 8
Ponto de corte 5
2 e 5
Ponto de corte 2
Fonte: Elaborada pelo autor.
A Figura 17 apresenta um exemplo com dois indivíduos escolhidos para
crossover (1100 1011 e 0110 0010), em que são sorteados os pontos de corte 2 e 5.
Figura 17
Exemplo de crossover de dois pontos: 2 e 5
1 1 0 0 1 0 1 1
0 1 1 0 0 0 1 0
Ponto de corte Crossover Novos indivíduos
Indivíduo 1
1 1 0 0 1 0 1 1
Indivíduo 2
0 1 1 0 0 0 1 0
1 1 0 0 1 0 1 1
0 1 1 0 0 0 1 0
1 1 1 0 0 0 1 1
0 1 0 0 1 0 1 0
Fonte: Elaborada pelo autor.
Para aumentar os pontos de corte, há o crossover uniforme, que consegue
combinar várias partes dos indivíduos em seus filhos. Seu funcionamento é assim:
a cada reprodução, sorteia-se um número 0 ou 1 para cada gene, que será o padrão
de combinação (LINDEN, 2012).
Assumem-se dois pais, chamados Pai 1 e Pai 2, que geram dois filhos denomina-
dos Filho 1 e Filho 2. Quando o sorteio do valor de um gene for 1, o Filho 1 recebe
aquele gene do Pai 1; quando o sorteio de um gene for 0, o Filho 1 recebe aquele
gene do Pai 2. Já para o Filho 2 é o contrário: se o sorteio do gene for 0, ele recebe
o gene do Pai 1; se for 1, ele recebe o gene do Pai 2.
A Figura 18 mostra um exemplo de crossover uniforme. Os dois indivíduos
1100 1011 e 0110 0010 são combinados usando o padrão aleatório 1001 1001. Perceba
que nas posições em que o padrão é 1, o primeiro filho recebe o gene do Indivíduo 1;
nas posições em que o padrão é 0, ele recebe do Indivíduo 2. Já o segundo filho recebe
o gene do Indivíduo 2 quando o padrão for 1 e do Indivíduo 1 quando o padrão for 0.
Figura 18
Exemplo de crossover uniforme
Novos indivíduos
Indivíduo 1
1 1 0 0 1 0 1 1
Indivíduo 2
0 1 1 0 0 0 1 0
Padrão de combinação:
1 1 0 0 1 0 1 1
0 1 1 0 0 0 1 0
1 1 0 0 1 0 1 1
1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1
0 1 1 0 0 0 1 0 0 1 0 0 0 0 1 0
1 1 1 0 1 0 1 1
Fonte: Elaborada pelo autor.
A probabilidade, ou taxa de crossover, é um parâmetro do AG sendo imple-
mentado. Como no crossover é considerada a operação genética predominante,
sua probabilidade de ocorrer deve ser maior que a da mutação, por exemplo, 50%.
Como é um parâmetro, não há valor correto, e avaliações empíricas devem ser
efetuadas para o seu ajuste correto.
Percebe-se que a operação genética de crossover, independentemente da
modalidade, tende a preservar a igualdade dos indivíduos, propagando os genes
em sua prole. Contudo, deve-se considerar alguma operação que possa injetar
diversidade na população, inserindo novos cromossomos nela. Essa é a mutação
(LINDEN, 2012).
A operação genética da mutação toma um indivíduo e troca aleatoriamente
um de seus genes por um valor também aleatório. É uma operação de
extrema importância em um AG, pois pode eliminar alguma carac-
terística indesejável e até mesmo fazer com que soluções fora do
Irzhanova Asel/Shutterstock
Computação evolucionáriaComputação evolucionária 137137
138 Inteligência Artificial
limite da população sejam exploradas. A Figura 19 mostra um exemplo de mutação
em um indivíduo.
Figura 19
Exemplo de mutação
Indivíduo
1 1 0 0 1 0 1 1
Escolha do gene
1 1 0 0 1 0 1 1
Mutação
1 0 0 0 1 0 1 1
Novo indivíduo
1 0 0 0 1 0 1 1
Fonte: Elaborada pelo autor.
No exemplo da Figura 19, o Gene 2 foi trocado de 1 para 0. No entanto, deve-se
perceber que na técnica de mutação simples o bit 1 também tem chance de ser
sorteado e essa mutação poderia ser inócua, isto é, não gerar um novo indivíduo.
Em uma população, a mutação ocorre de maneira aleatória, com uma probabili-
dade baixa, conhecida como taxa de mutação (por exemplo, 0,5%). Dado um indiví-
duo selecionado para mutação, cada um de seus genes possui essa probabilidade
de sofrer a mutação. O operador de mutação então age sobre os genes que forem
selecionados, alterando-os de maneira aleatória.
Existem outras variantes da mutação, como a inversão, que quando aplicada a
um gene, em vez de sortear qual valor será substituído, inverte o valor de seu bit,
no caso de uma codificação binária. Assim, ao contrário da técnica apresentada
anteriormente, se a mutação ocorrer, um novo indivíduo será gerado.
A troca também é uma operação de mutação que pode ser aplicada. Basica-
mente, dois genes são escolhidos de maneira aleatória e trocados de posição, ge-
rando um novo indivíduo. A Figura 20 mostra um exemplo de mutação por troca.
Figura 20
Mutação por troca
Indivíduo
1 1 0 0 1 0 1 1
Novo indivíduo
1 0 0 0 1 1 1 1
Escolha dos
genes
1 1 0 0 1 0 1 1
Troca
1 0 0 0 1 1 1 1
Fonte: Elaborada pelo autor.
Outras técnicas de mutação estão disponíveis e podem ser implementadas, mas
as citadas aqui são as mais comuns. A discussão sobre a probabilidade de aplicação
da mutação é bastante importante, visto que não é aplicada em toda iteração do AG.
Assim como na natureza, há uma probabilidade de que a mutação ocorra, e em
geral não é alta. Mas se a probabilidade de ocorrer for muito baixa, o AG não conse-
guirá evoluir a população muito rapidamente e, depois de certo tempo, não haverá
uma grande diversidade genética (LINDEN, 2012). Já se a probabilidade de a mu-
tação ocorrer for muito alta, o AG se comportará de modo similar a um algoritmo
aleatório, perdendo suas características de manutenção de bons genes.
Esse dilema não tem uma solução direta, sendo que para cada problema o valor
mais adequado pode ser diferente. Uma maneira de contorná-lo é usar uma taxa
de mutação variável, ou seja, que se altera conforme o algoritmo execute. Essa
variação pode ser feita de maneira determinística ou adaptativa (LINDEN, 2012):
Computação evolucionária 139
Na variação adaptativa, há algum tipo de
feedback, ou retroalimentação, que direciona o valor da
taxa de mutação na próxima geração. Por exemplo, a
regra 1/5 de Rechenberg diz que se mais de 1/5 das
mutaçõesé muito usado
em processamento de linguagem
natural (RAJANI et al., 2019).
Saiba mais
16 Inteligência Artificial
Ao contrário de outras iniciativas, o programa de McCarthy tentava incorporar
o conhecimento geral do mundo; por exemplo, dado um conjunto de axiomas, era
possível obter um plano para se chegar ao aeroporto e embarcar em um avião. Ou-
tra característica interessante era que a sua base de axiomas podia ser aumentada
sem ser reprogramado. Em suma, o advice taker seria capaz de representar conhe-
cimento e raciocinar sobre ele, manipulando essa representação com processos
dedutivos bem definidos (RUSSELL; NORVIG, 2013).
Também em 1958, Marvin Lee Minsky (1927-2016), que era grande colabora-
dor de McCarthy, foi para o MIT e juntos fundaram o Laboratório de Inteligência
Artificial, hoje Laboratório de Ciência da Computação e Inteligência Artificial
do MIT (MIT, 2020). Porém, a parceria desses dois cientistas começou a se desfazer,
pois Minsky se preocupava em fazer os programas funcionarem e McCarthy dava
mais ênfase à representação lógica e ao raciocínio formal.
Ainda em 1958, Richard Friedberg (1935-) apresentou estudos de evo-
lução automática, o que hoje é conhecido como algoritmos genéticos
(FRIEDBERG, 1958; FRIEDBERG; DUNHAM; NORTH, 1959). A ideia era efetuar muta-
ções em programas em código de máquina, objetivando que o resultado fosse um
programa com melhor desempenho. O conceito de seleção também era aplicado, de
modo que somente as mutações úteis fossem preservadas. Infelizmente os resulta-
dos na época não foram promissores. Hoje, depois de estudos e melhoramentos na
área, os algoritmos genéticos são ferramentas muito usadas para busca e otimiza-
ção, obtendo resultados satisfatórios (RUSSELL; NORVIG, 2013).
Além disso, ainda nesse ano, Frank Rosenblatt (1928-1972) elaborou um
algoritmo de aprendizado para uma rede neural de única camada, que foi chamado
de perceptron (LUGER, 2013; ROSENBLATT, 1958; ROSENBLATT, 1962).
Robert Gelernter (1929-2015) construiu em 1959 um provador de teoremas
chamado de Provador de Teoremas de Geometria (do inglês Geometry Theorem
Prover), capaz de encontrar a solução de muitos problemas matemáticos em nível
de ensino médio (RUSSELL; NORVIG, 2013).
Arthur Lee Samuel (1901-1990) popularizou o termo aprendizado
de máquina e trabalhou em várias frentes na área, sendo mais co-
nhecido pelo seu jogador de damas. Esse estudo se iniciou em 1952, e
Samuel conseguiu escrever um programa que jogava damas e apren-
dia como melhorar sua estratégia. Seu programa foi treinado jogando
consigo mesmo milhares de vezes; em alguns dias, adquiriu um nível
de jogo suficiente para ganhar do próprio Samuel. O programa foi de-
monstrado na televisão em fevereiro de 1952. Já em 1962, usando um
computador IBM 704, derrotou Robert Nealy, jogador que se autopro-
clamava campeão (RUSSELL; NORVIG, 2013; SAMUEL, 1959).
Desde 1945 com Konrad Zuse (1910-1995), Norbert Wiener
(1894-1064), conhecido como o fundador da cibernética, e mesmo
Alan Turing em 1950, o xadrez sempre despertou muito interes-
se da área de inteligência artificial, por ser um jogo para o qual
se deve pensar em uma jogada. Mas foi Claude Shannon (1916-
2001), considerado o pai da era da informação, em seu artigo de
axioma: afirmação, também
chamada de premissa, considerada
necessariamente verdadeira.
Glossário
Para entender melhor os
algoritmos genéticos, acesse o site
a seguir: https://sites.icmc.usp.br/
andre/research/genetic/. Acesso
em: 2 dez. 2020.
Site
O IBM 704 foi anunciado em 1954
e era construído com válvulas. O
tamanho da palavra era de 36 bits
e continha o equivalente a 18 kb
de memória principal. Era capaz de
executar aproximadamente 12.000
operações de ponto flutuante por
segundo, isto é, 12 kflops, sendo
seu processador de aproximada-
mente 0,000001 GHz (IBM, 2020a).
Saiba mais
Federico Leva/Wikimedia Commons
Figura 3
Computador IBM 704
https://sites.icmc.usp.br/andre/research/genetic/
https://sites.icmc.usp.br/andre/research/genetic/
Fundamentos de inteligência artificial 17
1950, que apresentou ideias robustas sobre o jogo, como a representação do
tabuleiro, as estratégias de jogo e a busca de uma jogada (RUSSELL; NORVIG,
2013). Os estudos com base em matemática continuaram e, em 1962, Thomas G.
Evans (1934-) apresentou o Analogy, programa que resolvia problemas de analo-
gia em geometria, parecido com os apresentados em testes de QI (EVANS, 1964).
Em 1963, McCarthy fundou um laboratório de inteligência artificial em Stanford,
cujo objetivo era usar lógica para construir o advice taker. Nesse mesmo ano, John
Alan Robinson (1930-2016) apresentou o princípio da resolução, uma regra de infe-
rência única, que gerava um algoritmo de inferência completo, o qual foi um grande
avanço nos procedimentos automáticos de prova de teoremas (ROBINSON, 1965).
Esse princípio é o coração do funcionamento da linguagem de programação lógica
Prolog (BRATKO, 2011).
Os trabalhos sobre redes neurais que se iniciaram em 1943 com McCulloch e
Pitts tiveram avanços consideráveis. Em especial, o aprendizado de Hebb foi me-
lhorado por Bernard Widrow (1929-) e Marcian Hoff (1937-) em suas redes chama-
das de adalines (WIDROW; HOFF, 1960).
Em 1965 surgiu a Eliza, primeiro programa de processamento de linguagem
natural usado para simulação de diálogo, comumente conhecido hoje em dia como
chatbot (WEIZENBAUM, 1966). Com base nela, os programas de diálogo evoluíram
muito, e atualmente qualquer celular contém um assistente que, além de conseguir
responder, pode reconhecer as palavras com base na voz do interlocutor.
Marvin Minsky (1927-2016) e Seymour Papert (1928-2016) publicaram em 1969
o livro Perceptrons, no qual apresentaram várias limitações dos modelos de redes
neurais com base no perceptron, em especial a classificação de dados que não são
linearmente separáveis. Isso levou a um desaquecimento dos estudos na área, e os
recursos foram redirecionados a outras pesquisas (LIMA; SANTOS; PINHEIRO, 2014).
Até 1969, os financiamentos em pesquisas nos Estados Unidos podiam ser
conduzidos sem um objetivo final, o que favoreceu o desenvolvimento da IA. Po-
rém, a partir de 1969, a Mansfield Emenda iniciou cortes em orçamentos de proje-
tos que não tinham um objetivo claro, sem a produção de algum resultado militar
(Lei Pública 91-121, Estatuto 83, Seção 203) (US, 1969). Em 1974 os financiamentos
de pesquisas em IA se tornaram escassos.
Em meados de 1973, James Lighthill (1924-1998) apresentou um relatório ao go-
verno do Reino Unido, mostrando os fracassos da IA no atingimento dos seus obje-
tivos. O relatório afirmava que tudo o que a IA se propunha a fazer poderia ser feito
por meio de outras ciências e mencionava problemas como a explosão combinatória
(intratabilidade) de problemas reais, já que a IA se apresentou adequada para resol-
ver versões muito simplificadas desses problemas (LIGHTHILL, 1973).
Esses vários acontecimentos levaram ao que se conhece como Inverno da IA,
que durou até meados de 1980. Nesse período houve pouco interesse e reduzido
financiamento de pesquisas em IA.
O interesse na área reapareceu com a publicação de alguns resultados
importantes, como o algoritmo de retropropagação (backpropagation)
Você ainda pode conversar com
a Eliza acessando o link a seguir:
https://www.masswerk.at/eliza-
bot/. Acesso em: 2 dez. 2020.
Site
Você pode ler o relatório
de Lighthill, denominado
Artificial intelligence: a
general survey, no link a
seguir. O texto está em
inglês, mas você pode usar
a ferramenta de tradução
do seu navegador.
Disponível em: http://www.chilton-
-computing.org.uk/inf/literature/
reports/lighthill_report/p001.htm.
Acesso em: 2 dez. 2020.
Leitura
https://www.masswerk.at/elizabot/
https://www.masswerk.at/elizabot/
http://www.chilton-computing.org.uk/inf/literature/reports/lighthill_report/p001.htm
http://www.chilton-computing.org.uk/inf/literature/reports/lighthill_report/p001.htm
http://www.chilton-computing.org.uk/inf/literature/reports/lighthill_report/p001.htmforem bem sucedidas, isto é, apresentarem
filhos mais adaptados que seus pais, deve-se aumentar
a taxa de mutação, pois o algoritmo está sendo conser-
vador demais. Já se menos de 1/5 das mutações forem
bem sucedidas, deve-se diminuir a taxa de mutação,
pois o algoritmo está sendo agressivo demais.
Na variação determinística, usa-se
um parâmetro para calcular a taxa de
mutação, como o número de gerações de-
corridas. Pode-se usar uma fórmula linear,
quadrática ou exponencial, e cada uma
possui características diferentes.
Assumindo cada indivíduo como uma solução candidata ao problema subjacen-
te, as operações genéticas tentam criar novas soluções. Assim, as operações gené-
ticas são o ponto central dos AG, pois é por meio delas que a população consegue
evoluir, gerando novos indivíduos.
Atividade 1
Seja o problema de encontrar o ponto máximo da função f(x) = x2 e sejam dois
indivíduos codificados em números binários de oito bits (com sinal) e selecionados
para reprodução:
Indivíduo 1: 0001 0000
Indivíduo 2: 1100 0101
Faça o crossover de um ponto desses dois indivíduos com ponto de corte no bit 5.
Apresente os filhos e indique qual é o mais adaptado. Dica: use o site de Carlos Rafael
Gimenes das Neves (https://carlosrafaelgn.com.br/Aula/Binario.html) para fazer
conversões de números binários.
Atividade 2
Considere o indivíduo 0100 0110 e que seu gene número 3 foi selecionado para
mutação do tipo inversão. Qual é o indivíduo resultante?
Atividade 3
O que é um superindivíduo e quais são as suas implicações em um algoritmo
genético?
CONSIDERAÇÕES FINAIS
Este capítulo apresentou conceitos de algoritmos genéticos, os quais são uma al-
ternativa à busca clássica na procura pela solução de um problema. Eles têm como
uma vantagem não serem sensíveis a máximos locais, desde que parametrizados de
maneira adequada.
Apesar de possuírem vários aspectos estocásticos, como pontos para operações
genéticas e população inicial, os AG não são algoritmos totalmente aleatórios, pois
usam informações da população atual para determinar a próxima, usando a função
de adaptação.
Há muitas parametrizações disponíveis, como tamanho da população, taxa de
aplicação de operações genéticas etc. Isso faz com que os AG sejam uma boa
alternativa para o tratamento de problemas cujo espaço de estados é intratavel-
mente grande.
https://carlosrafaelgn.com.br/Aula/Binario.html
140 Inteligência Artificial
REFERÊNCIAS
ARTERO, A. Inteligência artificial: teórica e prática. São Paulo: Livraria da Física, 2009.
FOGEL, L.; OWENS, A.; WALSH, M. Artificial intelligence through simulated evolution. Nova York: Wiley, 1966.
HOLLAND, J. Adaptation in natural and artificial systems. Ann Arbor: University of Michigan Press, 1975.
LINDEN, R. Algoritmos genéticos. 3. ed. Rio de Janeiro: Ciência Moderna Ltda., 2012.
LUGER, G. Inteligência artificial. 6. ed. São Paulo: Pearson Education do Brasil, 2013.
MITCHELL, M. An introduction to genetic algorithms. Cambridge: The MIT Press, 1996.
RECHENBERG, I. Cybernetic solution path of an experimental problem. Farnborough: Ministry of Aviation,
Royal Aircraft Establishment, 1965.
RUSSELL, S.; NORVIG, P. Inteligência artificial. 3. ed. Rio de Janeiro: Elsevier Brasil, 2013.Nos aliquam quo
bea suntoritat exera nimaionsecum voloreste nem. Itat doluptatia sernatatur?
Gabarito 141
GABARITO
1 Fundamentos de inteligência artificial
1.
a) Agindo racionalmente. Pela definição de Nilsson, um artefato é inteligente se
possui um desempenho inteligente, isto é, age de modo inteligente, racional.
b) Agindo como um humano. Pela definição de Kurzweil, máquinas executam
funções que exigem inteligência da mesma forma que os humanos.
c) Pensando racionalmente. Pela explicação de Winston, a IA é a definição dos
procedimentos de raciocinar a serem implementados em uma máquina.
d) Pensando como um humano. Pela explicação de Bellman, a IA é o estudo
introspectivo, no humano, de como o pensamento funciona, de suas
atividades etc., de modo a se tornar possível a sua implementação em uma
máquina.
2. Como exemplo, tem-se: carros autônomos, detector de spam, jogadores de xadrez,
tratores autônomos, verificadores de hardware, filtros do Instagram.
3. Princípio da resolução.
2 Resolução de problemas
1.
Lugoj
Mehadia
Dobreta
Craiova
Pitesti
Timisoara
Lugoj
Mehadia
Dobreta
Rimnicu
Vilcea Craiova Bucareste
Rimnicu
Vilcea
244
241
242
329
244
241
242
193 160 0
193
1ª Expansão
2ª Expansão
3ª Expansão
4ª Expansão
5ª Expansão
160
100
142 Inteligência Artificial
2.
Lugoj
Bucareste
Pitesti
Mehadia
Craiova
Dobreta
Timisoara
Lugoj
Mehadia
Lugoj Arad
Timisoara
Timisoara
Lugoj
Craiova Rimnicu
Vilcea
Lugoj Dobreta
Mehadia
Dobreta Dobreta Rimnicu
Vilcea
Mehadia
244 = 0 + 244
504 = 504 + 0
503 = 403 + 100
311 = 70 + 241
425 = 265 + 160
387 = 145 + 242
461 = 220 + 241
384 = 140 + 244
440 = 111 + 329
466 = 111 + 329
451 = 210 + 241
595 = 229 + 366
580 = 251 + 329
622 = 333 + 329
524 = 280 + 244
701 = 541 + 160693 = 500 + 193
534 = 290 + 244 627 = 385 + 242
533 = 292 + 241
527 = 285 + 242 537 = 295 + 242 604 = 411 + 193
1ª Expansão
10ª Expansão
2ª Expansão
5ª Expansão
6ª Expansão
4ª Expansão
8ª Expansão
3ª Expansão
9ª Expansão
7ª Expansão
3.
• Estados: qualquer versão do mapa com ou sem cores.
• Estado inicial: mapa sem qualquer cor.
• Ações: colocar em um estado no mapa uma cor diferente das cores dos
estados adjacentes.
• Modelo de transição: devolve uma cor colocada em um estado.
• Teste de objetivo: verifica se todos os estados estão coloridos, de modo que
os adjacentes tenham cores diferentes.
• Custo do caminho: irrelevante, o interesse é nas cores finais.
3 Raciocínio lógico e conhecimento
1. Os agentes baseados em conhecimento são capazes de manter representações
internas de conhecimento e operá-las como formas de raciocínio.
2.
1: p → q
2: p ∧ r
3: p (Elim. Conjunção, 2)
4: q (Modus Ponens, 1, 3)
3.
1: p → ¬q
2: r → q
3: r
4: ¬q → ¬r (Contrapositiva, 2)
5: p → ¬r (Silog. Hipotético, 1, 4)
6: ¬¬r → ¬p (Contrapositiva, 5)
7: r → ¬p (Dupla negação, 6)
8: ¬p (Modus Ponens, 3, 7)
Gabarito 143
4.
INÍCIO(Sobre(A, Mesa) ∧ Sobre(C, A) ∧ Sobre(B, C) ∧ Bloco(A) ∧ Bloco(B) ∧ Bloco(C)
∧ Livre(B))
OBJETIVO(Sobre(A, B), Sobre(B, C))
AÇÃO(Mover(b, x, y),
PRECOND: Sobre(b, x) ∧ Livre(b) ∧ Livre(y) ∧ Bloco(b) ∧ Bloco(y) ∧ (b≠x) ∧ (b≠y)
∧ (x≠y),
EFEITO: Sobre(b, y) ∧ Livre(x) ∧ ¬Sobre(b, x) ∧ ¬Livre(y))
AÇÃO(MoverParaMesa(b, x),
PRECOND: Sobre(b, x) ∧ Livre(b) ∧ Bloco(b) ∧ (b≠x),
EFEITO: Sobre(b, Mesa) ∧ Livre(x) ∧ ¬Sobre(b, x))
Sequência de ações:
• MoverParaMesa(B, C)
• MoverParaMesa(C, A)
• Mover(B, Mesa, C)
• Mover(A, Mesa, B)
5. Porque as lógicas monotônicas (lógicas clássicas) não permitem que afirmações
que são dedutíveis deixem de ser, isto é, se tornem falsas, à medida que novas
afirmações são aprendidas. Esse é um aspecto do aprendizado e percepção
humanos, que, com novas observações, pode falsificar afirmativas que antes eram
conhecidas.
4 Aprendizado de máquina
1. Aprendizado supervisionado se dá quando o conjunto de dados observados já está
rotulado, isto é, já possui um resultado de saída. São efetuadas as tarefas preditivas
classificação e regressão e são utilizadas as técnicas redes neurais, árvores de decisão
e Random Forest. Já no aprendizado não supervisionado, o conjunto de dados
observados não está rotulado. São efetuadas as tarefas descritivas agrupamento e
associação e são utilizadas as técnicas K-Means e Apriori.
2. Ambas são tarefas preditivas do aprendizado supervisionado. A classificação
tem como objetivo aprender a categorizar dados, predizer um valor categórico
com base em uma categorização apresentada (dados rotulados), enquanto a
regressão visa aprender uma função que aproxima o resultado apresentado
nos dados rotulados, ou seja, predizer um valornumérico.
3. Analisando a rede, o neurônio N1 tem sua saída dada pela seguinte equação:
N1 = fa (x1 * w1 + x2 * w2 + b1)
N1 = fa (8 * 0,5 + 1 * 0,7 + 0,3)
N1 = fa (5) = 5
O neurônio N2 tem sua saída dada pela equação:
N2 = fa (x1 * w3 + x2 * w4 + b2)
N2 = fa (8 * 0,2 + 1 * 0,1 + 0,2)
N2 = fa (1,9) = 1,9
144 Inteligência Artificial
E o neurônio N3 tem sua saída dada pela equação:
N3 = fa (N1 * w5 + N2 * w6 + b3)
N3 = fa (5 * 0,4 + 1,9 * 0,2 + 0,1)
N3 = fa (2,48) = 2,48
4. Caminhando pela árvore com os dados informados, descobre-se que é benigno
(benign) e a figura a seguir mostra o caminho percorrido:
Cl.thickness
Cell.size
Cell.shape
Benign Benign Benign BenignMalignant Malignant Malignant Malignant
Cell.shape Cell.shape
5
>5
>5>5 >5
>5
>5
18 Inteligência Artificial
em redes perceptrons de múltiplas camadas (LIMA; SANTOS; PINHEIRO,
2014). Apesar de o algoritmo ter sido descoberto na década de 1960, na
área da engenharia, seu uso em redes neurais foi difundido por David
Rumelhart (1942-2011), Geoffrey Hinton (1947-) e Ronald Williams (1949-) ape-
nas em 1986 (RUMELHART; HINTON; WILLIAMS, 1986).
Convém ressaltar que os avanços da tecnologia microeletrônica também im-
pulsionaram as pesquisas. Em 1981 a IBM lança o primeiro PC (personal compu-
ter), o que disseminou a computação ainda mais (IBM, 2020b). Outro aspecto que
reacendeu o interesse pelas redes neurais foi uma publicação de John Hopfield
(1933-) em 1982, a qual apresentou redes neurais recorrentes com propriedades
associativas (HOPFIELD, 1982).
Resultados importantes em sistemas especialistas também tiveram sua parte na
ascensão da IA. Edward Hance Shortliffe (1947-) apresentou em 1975 o Mycin, um sis-
tema especialista com base em regras, usado para identificar infecções sanguíneas
(SHORTLIFFE, 1976). O Mycin conseguia um desempenho tão bom quanto o de espe-
cialistas e era mais eficaz que médicos em início de carreira (RUSSELL; NORVIG, 2013).
Ao mesmo tempo, a IA começou a ser aplicada na indústria, por meio dos
sistemas especialistas. O primeiro sistema especialista bem-sucedido foi o R1
da DEC (Digital Equipment Corporation) em 1982. Em 1986 o R1 gerava uma
economia de 40 milhões de dólares por ano, configurando pedidos de novos
sistemas e computadores. Em 1988 a DEC já tinha quarenta sistemas especia-
listas em operação. A empresa DuPont possuía aproximadamente 100 sistemas
especialistas em operação, gerando uma economia de 10 milhões de dólares
por ano (RUSSELL; NORVIG, 2013). Em 1980 o sistema especialista prospector
descobriu um depósito de molibdênio nos Estados Unidos, analisando dados
geológicos (HART; DUDA, 1977).
Com resultados impressionantes com os sistemas especialistas, a indústria de
IA expandiu-se muito. Grande parte das corporações tinha um grupo de IA usan-
do ou pesquisando sistemas especialistas. Porém, as promessas que esses grupos
propunham muitas vezes eram ambiciosas demais. Assim, a área passou por mais
um período de desaquecimento, conhecido como o Segundo Inverno da IA, que se
iniciou aproximadamente no final dos anos 1980 até início dos anos 1990.
Essa segunda estagnação foi logo superada. Na metade dos anos 1990 hou-
ve a explosão da internet comercial, e as redes começaram a usar IA para inde-
xação de conteúdo, sistemas de navegação etc. Trabalhos como os de Allen
Newell (1927-1992), John Laird (1954-) e Paul Rosenbloom (1920-2005) com agentes
inteligentes foram potencializados com a internet de tal forma que os bots (robôs
de software) hoje em dia são amplamente usados (RUSSELL; NORVIG, 2013).
Retornando ao desenvolvimento de jogos, em 1990, o programa jogador de da-
mas Chinook, de Jonathan Schaeffer (1957-), ficou em segundo lugar em um cam-
peonato aberto de damas nos Estados Unidos e se classificou para o campeonato
mundial. Em 1994 o Chinook se tornou oficialmente o campeão mundial, vencendo
Marion Tinsley, que tinha sido campeão por 40 anos e perdido apenas três jogos.
molibdênio: metal usado
principalmente para formar ligas
resistentes de aço, aço inoxidável,
carbono etc.
Glossário
Em 2007 Schaeffer et al. (2007) resolveram o jogo de
damas, mostrando que jogadas perfeitas de ambos os
jogadores levam ao empate.
Um grande marco no desenvolvimento da IA em jo-
gos foi a vitória do Deep Blue da IBM sobre o campeão
mundial de xadrez Garry Kasparov, em 1997. Foram
dois encontros de seis partidas. No primeiro encontro,
em 1996, Kasparov ganhou por 4 a 2. No segundo, em
1997, em um confronto de seis partidas, o Deep Blue ga-
nhou duas, foi derrotado em uma e houve três empates 2
(GOODMAN; KEENE, 1997).
Após essa vitória da máquina sobre um campeão mundial de xadrez, o jogo de
Go passou a ser considerado o exemplo de jogo em que humanos superam as má-
quinas. Isso ocorreu até 2015, quando o AlphaGo, do grupo DeepMind, da Google,
venceu Lee Sedol, 18 vezes campeão mundial (BYFORD, 2016).
Em 1997 a Administração Nacional da Aeronáutica e Espaço (NASA) lan-
çou um veículo em Marte chamado Soujorner, cuja operação era manual. Já o
Remote Agent, que era um software de planejamento, foi lançado em 1999 a
bordo da espaçonave Deep Space 1, para planejar e controlar operações de
maneira autônoma (NASA, 2020). Anos depois foi criado o Mapgen, considerado
o primeiro software de inteligência artificial a planejar o trabalho de robôs fora
do planeta Terra. Ele foi empregado para ajudar na operação dos veículos Spirit
e Opportunity, em Marte (BRESINA et al., 2005).
Em 1998 surgiram as redes neurais convolucionais com a conhecida LeNet-5
(LECUN et al., 1998), mas elas só tiveram destaque em 2012, quando a rede
AlexNet ganhou uma competição de reconhecimento de imagens da ImageNet
usando placas gráficas (GPUs) para sua implementação (KRIZHEVSKY; SUTSKEVER;
HINTON, 2012; IMAGENET, 2012).
Com relação à aplicação da IA, já em 2002 uma empresa lança o primeiro
robô de limpeza autônomo, que é muito comum hoje em dia. Isso demonstra
como a IA começou a se aproximar ainda mais das pessoas e a ajudar em tare-
fas cotidianas.
Ao longo dos anos 2000 a disponibilidade de dados acabou levando alguns pes-
quisadores a se interessarem mais pela quantidade de informação do que pela
aplicação dos algoritmos em si. Hoje em dia termos como big data são bastante co-
nhecidos e dizem respeito à estruturação e à análise de uma quantidade
enorme de dados.
Hays e Efros (2007) apresentaram um algoritmo para preen-
chimento de fundos de fotos; por exemplo, quando se usa uma
aplicação gráfica para remover uma pessoa indesejada, mas
fica com uma área que precisa corresponder ao fundo. Ao usa-
rem uma base de dados com 10 mil fotos, obtiveram um pés-
simo desempenho, mas, ao usarem um banco de dados com 2
milhões de fotos, o resultado foi excelente.
LightField Studios/Shutterstock
Cada partida conta 1 ponto e cada
empate 0,5 pontos, portanto o
resultado foi de 3,5 a 2,5 para o
Deep Blue.
2
Para entender melhor as re-
des neurais convolucionais,
assista ao vídeo Introdução a
redes neurais convolucionais,
da IA Expert Academy.
Disponível em: https://youtu.be/7ds-
DHb6qKYI. Acesso em: 2 dez. 2020.
Vídeo
Yuriy Maksymiv/Shutterstock
Fundamentos de inteligência artificialFundamentos de inteligência artificial 1919
https://youtu.be/7dsDHb6qKYI
https://youtu.be/7dsDHb6qKYI
20 Inteligência Artificial
Em 2007 Fei Fei Li (1976-) liderou a iniciativa ImageNet, que se refere à criação
de um grande banco de dados de imagens para suprir pesquisadores da área (IMA-
GENET, 2016). Em 2009 a Google começou a testar um carro sem motorista em
seu projeto de carro autônomo, agora conhecido como empresa Waymo (WAYMO,
2020). Nesse mesmo ano surgiu o StatsMonkey, um sistema capaz de redigir auto-
maticamente uma notícia sobre esportes, em especial beisebol, contendo narrati-
va, estatísticas e resultados (ALLEN et al., 2010).
Em 2011 surgiu o Google Brain, um grupo de pesquisadores de IA e aprendiza-
gem profunda. Em 2012 um simulador conseguiu aprender sozinho a reconhecer
um gato por meio de vídeos do YouTube. Em 2016 o grupo implementou duas inte-
ligências artificiais que criaram seu próprio algoritmo de criptografia, sem qualquer
informação inicial (THE MOONSHOT FACTORY, 2019).
Com a tecnologia de processamento e reconhecimento de imagens sendo mais di-
fundida e com recursos computacionais mais disponíveis, outras tecnologias também
se proliferaram, como é o caso do deepfake. Apesar dos estudos sobre essa tecnolo-
gia terem surgido há algum tempo, só em 2017 se tornaram amplamente populares.
O deepfake é um vídeo criado por técnicas de IA que reproduzem a aparência, as
expressões e a voz de uma pessoa real (NGUYEN et al., 2020; TOLOSANA et al., 2020).
Sua popularidade veio porque um usuário da redesocial Reddit criou um software
que trocava o rosto de atrizes em filmes adultos pelo de qualquer celebridade.
Claramente o mau uso dessa tecnologia pode levar a notícias falsas, inci-
tar violência, fraudar eleições etc., por isso houve grande movimentação contra
ela (RIDGWAY, 2019). Mesmo assim, a indústria cinematográfica tem usado o deep-
fake na produção de filmes, em especial Projeto Gemini (2019) e O Irlandês (2019),
que usaram o rejuvenescimento artificial dos atores.
Em 2018 o centro aeroespacial alemão (DLR) lançou um assistente controlado
por voz e com base em IA para ajudar astronautas, chamado de Cimon. As pesqui-
sas para uso de IA no espaço estão em pleno desenvolvimento (ESA, 2020).
O GPT-2 da OpenAI é uma plataforma de geração automática de texto lançada
em 2019. Foi treinado com 40 gb de textos retirados da rede social Reddit, assim
sendo capaz de gerar parágrafos de texto estruturados e encaixados com um tex-
to passado como ponto de partida (RADFORD et al., 2019). Como a qualidade dos
textos gerados era sem precedentes, a OpenAI decidiu não revelar suas pesquisas,
com medo do uso inapropriado para a geração de notícias falsas (conhecidas como
fake news). Desde seu lançamento, partes foram publicadas e, no final de 2019, uma
versão completa se tornou disponível (VINCENT, 2019).
Nos dias de hoje a IA passou a fazer parte de muitas aplicações, como siste-
mas de recomendação de produtos ou de filmes e séries, mecanismos de pesquisa,
agregadores de conteúdo, filtros de imagens e vídeos em redes sociais, automóveis
autônomos, assistentes pessoais etc.
Muitos pesquisadores defendem que a IA deveria retornar às raízes, isto é, em
vez de criar versões melhores para as aplicações em tarefas específicas, retomar
estudos para se conseguir máquinas que pensam, aprendem e criam. Segundo
Russell e Norvig (2013), isso é chamado de IA de nível humano (HLAI).
Para saber mais sobre o
que é o deep fake e a sua
influência no dia a dia, veja
o vídeo Deep Fake, publica-
do pelo canal Nerdologia.
Disponível em: https://youtu.be/GBea-
vecUwB8. Acesso em: 2 dez. 2020.
Vídeo
No filme Projeto Gemini, o
assassino Herny Brogan é
perseguido por um agente que
consegue até mesmo prever seus
movimentos. No decorrer da trama
ele descobre que esse agente é um
clone seu. Para desenvolver essa
cópia, o ator contracenou sozinho
e com dublês. Nas cenas em que
interpretou seu clone jovem,
marcações foram usadas no
rosto para que depois fosse feito o
mapeamento correto da pele.
Saiba mais
Para saber mais sobre o
GPT-3, leia o artigo Por que
o programa de inteligência
artificial GPT-3 é incrível,
mas superestimado.
Disponível em: https://forbes.
com.br/forbes-insider/2020/07/
por-que-o-programa-de-inteligencia-
-artificial-gpt-3-e-incrivel-mas-supe-
restimado/. Acesso em: 2 dez. 2020.
Leitura
https://youtu.be/GBeavecUwB8
https://youtu.be/GBeavecUwB8
https://forbes.com.br/forbes-insider/2020/07/por-que-o-programa-de-inteligencia-artificial-gpt-3-e-incrivel-mas-superestimado/
https://forbes.com.br/forbes-insider/2020/07/por-que-o-programa-de-inteligencia-artificial-gpt-3-e-incrivel-mas-superestimado/
https://forbes.com.br/forbes-insider/2020/07/por-que-o-programa-de-inteligencia-artificial-gpt-3-e-incrivel-mas-superestimado/
https://forbes.com.br/forbes-insider/2020/07/por-que-o-programa-de-inteligencia-artificial-gpt-3-e-incrivel-mas-superestimado/
https://forbes.com.br/forbes-insider/2020/07/por-que-o-programa-de-inteligencia-artificial-gpt-3-e-incrivel-mas-superestimado/
Fundamentos de inteligência artificial 21
1.3 Aplicações da inteligência artificial
Vídeo Atualmente a inteligência artificial tem um grande
papel em todo tipo de tecnologia. Aplicações na
robótica vêm crescendo cada vez mais, des-
de parafusadeiras robóticas usadas em
montadoras de automóveis até robôs utili-
zados na área militar e nas cirurgias robóti-
cas. Na tecnologia aeroespacial a robótica já
vem sendo empregada há muito tempo;
braços robóticos programados para execu-
ção de tarefas são um dos exemplos. Na in-
dústria em geral, como fábricas de
automóveis, os robôs também desempenham
um papel importante, pois evitam que humanos
se exponham a produtos tóxicos ou a esforços
extremos.
Outro exemplo de uso da IA é a visão computacional, um
processo de modelagem da visão humana com base em imagens
usando recursos computacionais. Ela envolve não somente a
captação das imagens feita por câmeras, mas também a interpreta-
ção e a análise dos aspectos presentes. Para um humano, esse pro-
cesso é simples – desde cedo crianças identificam objetos de maneira
rápida e precisa –, mas para um computador, interpretar uma cena
gera dificuldades grandes.
Uma das grandes áreas de aplicação da visão computacional é
a médica, como no diagnóstico de doenças analisando imagens de
radiografia, tomografia etc. Outra grande utilização ocorre nos
veículos autônomos, que devem ser capazes de reconhecer
sinalizações de vias, outros automóveis, detectar pistas,
distância entre objetos e outros automóveis etc.
Já a área de processamento de linguagem natural
(NLP – do inglês Natural Language Processing) se preocu-
pa em gerar e compreender de maneira automática a
linguagem humana. As aplicações se dão em análise de
discursos, sumarização automática, tradução automática
etc. Além de entender o que um humano diz em lingua-
gem natural (português, por exemplo), a NLP se ocupa de
dar respostas ao usuário, seja por meio de texto ou áudio.
Exemplos clássicos são os assistentes virtuais dos smartphones
(Siri, Bixby, Google etc.) ou de aparelhos dedicados, como a Alexa,
da Amazon.
Outros exemplos que têm se tornado muito comuns são os
chatbots 3 , presentes em aplicativos de mensagens e atendimento
Jenson/Shutterstock
Vídeo
O vídeo O que é visão
computacional? Conceito
e Aplicações, publicado
pelo canal Programação
Dinâmica, explica um pouco
mais a visão computacional
e suas aplicações.
Disponível em: https://youtu.be/
RSkbjZZb-1c. Acesso em: 2 dez. 2020.
Yaran/Shu
tte
rst
oc
k
3
Para conhecer um pouco mais dessa
tecnologia, assista ao vídeo Chatbots,
do canal Nerdologia, disponível em:
https://youtu.be/VhC_wAsw2-c.
Acesso em: 2 dez. 2020.
https://youtu.be/RSkbjZZb-1c
https://youtu.be/RSkbjZZb-1c
22 Inteligência Artificial
ao cliente. Hoje em dia é possível ser atendido quase que completamente sem a
intervenção de um humano. Convém ressaltar que a complexidade desses assis-
tentes deve levar em consideração não somente o significado de algo que foi dito
ou escrito, mas também o contexto e até os sentimentos.
A tradução automática também é uma área relacionada ao processamento de
linguagem natural. Para traduzir um texto de uma língua para outra, deve-se enten-
der o contexto e interpretar a frase, isto é, não é só transpor a sintaxe e os termos
de uma língua para outra; isso sem contar as questões culturais.
Os sistemas especialistas (SE) são outro ramo em que a inteligência artificial é
utilizada. Trata-se de aplicações construídas com base no conhecimento de um ou
mais profissionais da área em que o sistema irá atuar. Um SE é composto de regras
e sentenças que possibilitam o raciocínio para inferência do resultado esperado.
Também possui um motor de inferência, responsável pelo raciocínio propriamente
dito (REZENDE, 2003).
Dessa forma, é possível usar um SE em qualquer área em que se possa
representar o conhecimento e traduzir as consultas necessárias como in-
ferência desse conhecimento. Como exemplo, tem-se um SE para auxiliar
no diagnóstico da depressão, com conhecimentos da área de psicologia e
psiquiatria (PERUZZO et al., 2019). Outro exemplo é o SE lançado pela Embrapa
para diagnosticar pragas, doenças e distúrbios fisiológicos no cultivo de maçã,
morango e pêssego (ZANELLA, 2020).
Na indústria a IA é muito usada e dá ótimos resultados, por meio da redução de
erros em processos repetitivos, da automação desses processos, da redução de
custos e doaumento de lucros. Em especial, consegue-se direcionar a IA para a
resolução de tarefas operacionais, como linhas de produção, permitindo o uso do
ser humano em tarefas mais importantes.
Além disso, na agricultura tem-se cada vez mais a adoção
da IA na previsão de ganhos, nas colheitas inteligentes, na
previsão meteorológica e no monitoramento de lavoura.
Há também o desenvolvimento de veículos ou tratores
autônomos, que conseguem efetuar tarefas automati-
camente, como é o caso do trator sem cabine da empre-
sa Case IH, que é programado via tablet (TRATOR, 2017).
Todas as aplicações atuais da IA usam várias
tecnologias, algoritmos e técnicas. Uma delas é o
reconhecimento de padrões, usado, por exem-
plo, por meio de uma câmera que precisa reconhe-
cer uma pessoa para saber se um local está sendo
invadido, em um veículo autônomo que precisa reco-
nhecer obstáculos para poder parar ou desviar, ou apli-
cado na área da saúde para analisar imagens e reconhecer um
melanoma (FRUTUOSO et al., 2013). A identificação de padrões pode ser aplica-
da não só a imagens, mas também para detectar e-mails spam, por exemplo, ao
aprender um padrão de e-mail e aplicá-lo em e-mails novos (DADA et al., 2019).
No artigo How Google is
using emerging AI techniques
to improve language trans-
lation quality, Kyle Wiggers
discorre sobre como a
Google incorpora tecnolo-
gias emergentes de IA em
seu tradutor. Vale a pena
conferir! O texto está em
inglês, mas você pode usar
a ferramenta de tradução
do seu navegador.
Disponível em: https://venturebeat.
com/2020/06/03/how-googleis-u-
sing-emerging-ai-techniques-to-im-
prove-language-translation-quality/.
Acesso em: 2 dez. 2020.
Leitura
Suwin/Shutterstock
melanoma: tipo de câncer de pele.
Glossário
https://venturebeat.com/2020/06/03/how-googleis-using-emerging-ai-techniques-to-improve-language-tra
https://venturebeat.com/2020/06/03/how-googleis-using-emerging-ai-techniques-to-improve-language-tra
https://venturebeat.com/2020/06/03/how-googleis-using-emerging-ai-techniques-to-improve-language-tra
https://venturebeat.com/2020/06/03/how-googleis-using-emerging-ai-techniques-to-improve-language-tra
A área de jogos, em especial os de tabuleiro, por possuírem aspectos estratégi-
cos e de raciocínio, sempre foi um grande laboratório para o desenvolvimento de
técnicas de IA. A inteligência artificial já conseguiu superar jogadores humanos em
vários jogos, como visto na seção anterior, no caso do jogo de xadrez (Deep Blue) e
do jogo de Go (Alpha Go).
As áreas de provas automáticas de teoremas e lógica, apesar de parecerem
pertinentes somente à matemática, são as grandes bases para o desenvolvimento
de técnicas da IA, já que envolvem raciocínio lógico, representação do conhecimen-
to, planejamento etc. Um provador automático de teoremas é um programa que
decide se determinada afirmação é válida ou não, isto é, se é um teorema. Basi-
camente, tem-se um problema representado por meio de uma linguagem formal,
como a lógica clássica, sobre o qual são aplicados algoritmos que executam regras
de dedução, ou regras de inferência.
Muitas das descobertas em prova de teoremas e lógica são usadas em outras áreas,
desde sistemas especialistas até verificação de hardware. O caso mais conhecido foi o
erro de divisão dos computadores Pentium FDIV. Em 1994 foi descoberto que a divisão
de números em ponto flutuante (instrução FDIV) retornava um valor errado em alguns
casos. A partir daí, tanto Intel quanto AMD e IBM começaram a aplicar prova automáti-
ca de teoremas na verificação de circuitos (HARRISON, 2006).
As técnicas de IA vêm sendo aplicadas com sucesso na área de planejamento
autônomo e escalonamento, como foi visto no caso da espaçonave Deep Space 1
e do software Mapgen.
Os veículos autônomos atualmente têm estado em bastante evidência, tanto
pela tecnologia envolvida quanto pelos problemas encontrados. São seis níveis de
automação, desde o nível 0, sem qualquer tipo de automação ou assistência, até o
nível 5, em que não há qualquer interação do ser humano em qualquer condição
de clima e estrada (SAE INTERNATIONAL, 2018).
Sensores externos, câmeras estéreas com capacidade de detecção de profundi-
dade, radar, sonar e uma grande variedade de dispositivos são usados para captu-
rar dados do ambiente. A quantidade de dados gerada é imensa, de 5 TB a 20 TB
por dia, por veículo, e deve ser processada instantaneamente, pois um atraso pode
significar um acidente (PASTOR, 2019).
Com relação aos problemas, vários acidentes são mostrados na mídia envolven-
do carros autônomos e geram discussão sobre a viabilidade da tecnologia. Cons-
tantemente as empresas envolvidas precisam rever suas implementações
e estratégias (TRINDADE, 2019).
Vale ressaltar que atualmente, com a tecnologia
disponível em termos de recursos computacionais,
a internet e a miniaturização de dispositivos, cada
vez mais a inteligência artificial vem sendo aplica-
da no cotidiano, pois seu uso se tornou viável. A
tendência é que isso aumente à medida que as so-
luções vão se consolidando e novas necessidades
são observadas.
Zapp2Photo/Shutterstock
Fundamentos de inteligência artificialFundamentos de inteligência artificial 2323
24 Inteligência Artificial
1.4 Questões éticas referentes à inteligência artificial
Vídeo Levando em consideração o que foi apresentado até agora, percebe-se que há
mais efeitos positivos do que negativos no desenvolvimento da IA. Mesmo assim,
se houver uma grande probabilidade de os efeitos negativos sobrepujarem os posi-
tivos, os pesquisadores precisarão tomar decisões morais sobre o direcionamento
das pesquisas.
A ciência está repleta de exemplos de tecnologias com efeitos colaterais nega-
tivos não intencionais. Para citar um: a fissão nuclear, que abastece muitos países,
mas que pode ser usada para a criação de armamento atômico.
Assim, questões éticas sobre a IA, cedo ou tarde, precisarão ser discutidas além
da fronteira da computação. Alguns questionamentos são:
As pessoas
poderiam
perder seus
empregos para IA/
computação?
A IA poderia
ser usada
para fins
indesejados?
A IA poderia
levar à perda de
responsabilidade em
tarefas delicadas?
O sucesso da IA
poderia levar ao fim
da raça humana?
tu
lp
ah
n/
s
hu
tte
rs
to
ck
Cada uma dessas questões será abordada a seguir.
1.4.1 Perda dos empregos
Essa discussão sempre ocorre quando uma tecnologia disruptiva é criada. Isso
aconteceu recentemente, na informática em si, com a “uberização” de vários servi-
ços, e com o desenvolvimento da IA não é diferente.
Vale ressaltar que muitas tarefas desempenhadas por IA não existiriam ou
seriam tão trabalhosas que o custo de se manter os seres humanos responsá-
veis faria com que o trabalho deixasse de existir. Também se deve considerar
a explosão da quantidade de dados gerados pelos humanos. Estima-se que são
Para se aprofundar em
questões éticas do uso
da IA, assista às seguintes
palestras TEDx Talks:
• O viés humano e a ética por trás da
inteligência artificial. Disponível em:
https://youtu.be/PVs9jg1XRU8.
• Questões éticas da inteligência
artificial. Disponível em: https://
youtu.be/pk5T1sLhO5U.
• Riscos e benefícios da inteligência
artificial. Disponível em: https://
youtu.be/6kTrYWXI3f8.
Acessos em: 2 dez. 2020.
Vídeo
uberização: termo usado para
designar modelos de negócio de
economia compartilhada, em
que a empresa faz o intermédio
entre os trabalhadores, na maioria
das vezes informais, com os
demandantes do serviço.
Glossário
Fundamentos de inteligência artificial 25
gerados 1,7 mb de dados por segundo por cada pessoa na Terra, o que equi-
vale a 2,5 quintilhões de bytes a cada dia. Em 2018 o volume de dados era de
aproximadamente 33 zettabytes, e até 2025 poderia chegar aos impressionantes
175 zettabytes (SEAGATE, 2020).
São exemplos de trabalhos feitos por máquinas e que não seriam viáveis por
humanos: análises detalhadas de dados financeiros; detecção de fraudes; tarefasrepetitivas em fábricas; manipulação de elementos perigosos; e tarefas em Marte
(pelo menos por enquanto).
Outro aspecto importante é que, se por um lado a IA se coloca no lugar do humano
em algumas tarefas, outras posições de trabalho mais bem remuneradas são criadas.
Arquitetos de soluções, cientistas de dados, especialistas em machine learning são
exemplos do que o mercado oferece hoje para profissionais capacitados.
Precisa-se levar em consideração que as soluções de IA hoje em dia estão mais
posicionadas para ajudar o humano, com uma pequena perda ou substituição de
empregos, ao contrário do que se imaginava anos atrás por alguns profissionais, de
que a IA poderia substituir o humano.
1.4.2 Uso para fins indesejados
Essa é uma preocupação constante no desenvolvimento das ciências, em espe-
cial na IA. Sistemas autônomos cada vez mais têm sido usados na área militar, em
aeronaves e veículos. Os Estados Unidos, potência militar, testa, inclusive, o com-
portamento da IA implementada em seus Vants (Veículos Aéreos não Tripulados)
contra aviões de guerra tripulados (NOGUEIRA, 2020). O Brasil também possui al-
guns drones em operação e tem tecnologia para a construção de Vants, como é o
caso do Atobá, desenvolvido pela Stella Tecnologia (VINHOLES, 2020).
Uma questão inerente à aplicação da IA na área militar é a possibilidade de o
software tomar uma decisão que leve à matança de civis inocentes, gerando um
risco adicional. Isso precisa ser mitigado por meio de salvaguardas, verificações,
interações humanas etc. Outro ponto é que uma nação que contém um grande
poder bélico pode se sentir mais confiante para entrar em guerra de maneira
mais imprudente do que outras nações. Uma IA eficiente nessa área pode gerar
mais desequilíbrio.
Saindo da questão armamentista, um dos grandes problemas nos dias de hoje é
a proliferação de fake news. Além do fator humano na geração dessas notícias, os
avanços na tecnologia de deepfake e a elaboração automática de textos levaram a
formação de boatos, calúnias e notícias mentirosas a outro patamar.
Os bots estão muito populares. Eles podem criar discussões fictícias, levantar
hashtags nas redes sociais, disseminar e até criar notícias falsas (VELASCO; DO-
MINGOS, 2017). Esses comportamentos influenciam a opinião pública e podem até
mudar o rumo de uma disputa política (CADWALLADR; GRAHAM-HARRISON, 2018).
Em termos de comparação,
1 zettabyte (zb) é igual a
270 bytes, o mesmo que
1.099.511.627.776 gigabytes (gb).
Imagine que um filme em definição
muito boa (Full HD, dependendo do
formato que é armazenado) possui
em torno de 4 gb. Assim, 175 zb é o
mesmo que aproximadamente 48
trilhões de filmes. Seriam necessários
94 bilhões de HDs externos de 2 tb
para armazenar todos esses filmes
(MORIMOTO, 2005).
Saiba mais
machine learning: ou
aprendizado de máquina, área da
IA que estuda o reconhecimento
de padrões e a construção de
agentes que aprendem sem serem
explicitamente programados.
Glossário
26 Inteligência Artificial
Mas se a IA pode ser usada para causar
prejuízos, também pode ser empregada
no auxílio da detecção e prevenção de no-
tícias falsas. Esse é o caso da pesquisa fei-
ta na Universidade de São Paulo (USP) e na
Universidade Federal de São Carlos (Ufscar),
na qual foi desenvolvido um aplicativo para
WhatsApp com 90% de precisão na detecção
de notícias falsas (MONTEIRO et al., 2018).
Outro problema crescente, que se acentua
com ameaças terroristas e criminalidade, é a perda
das liberdades civis. A tendência é que a IA possa facilitar a
vigilância em massa da população, visto que as técnicas de reconhecimento de
voz e de pessoas estão cada vez mais precisas e acessíveis. Ademais, aplicações
baseadas em IA podem ser capazes de analisar a imensa quantidade de dados
gerada ao redor do mundo, seja em e-mails, ligações telefônicas, transações em
sites, aplicativos de mensagens ou qualquer outro meio. A perda da privacidade é
uma preocupação constante e não é recente. Scott McNealy (1954-), CEO da antiga
Sun Microsystems, disse já em 1999: “Você tem zero privacidade de qualquer for-
ma, acostume-se com isso” (SPRENGER, 1999, p. 1).
1.4.3 Perda de responsabilidade
A perda de responsabilidade tem uma conotação legal. Suponha um sistema
especialista que auxilia um médico na tomada de decisão relativa a um diagnóstico.
A discussão ocorre quando o diagnóstico estiver errado: como o médico seria res-
ponsabilizado se foi orientado de maneira equivocada pelo sistema especialista?
Nenhum software tem 100% de acerto, até porque a dinâmica de treinamento não
leva em conta casos desconhecidos e situações que estão por vir.
Apesar de ser uma situação delicada, o médico ainda tem o controle e pode
tomar uma decisão divergente da IA. Os softwares de IA são considerados ferra-
mentas auxiliares. Por outro lado, se os sistemas especialistas se tornarem mais
confiáveis e precisos do que diagnósticos humanos, no futuro o médico poderá ser
responsabilizado por não usar a recomendação de uma IA (RUSSELL; NORVIG, 2013).
No caso dos robôs médicos, cada vez mais autônomos, as autoridades têm tomado
providências, como uma resolução do parlamento europeu, de 16 de fevereiro de
2017, que apresenta recomendações sobre disposições de direito civil sobre robó-
tica, e o Guia Ético de 2019 (NOGAROLI, 2019; UNIÃO EUROPEIA, 2016, 2017).
Também um robô se tornar completamente autônomo e ser considerado uma
pessoa é uma questão apenas filosófica por enquanto, pois não há utilidade prá-
tica ou viabilidade para isso. Os robôs são considerados produtos, pois seus fabri-
cantes determinam os algoritmos implementados (NOGAROLI, 2019).
Convém ressaltar que muitas implicações jurídicas ainda estão sendo analisa-
das e desenvolvidas. Por enquanto, a lei humana corre atrás do desenvolvimento
tecnológico.
STEKLO/Shutterstock
Fundamentos de inteligência artificial 27
1.4.4 Fim da raça humana
Talvez a principal questão, de um modo geral, é se a IA irá um dia subjugar e
acabar com a raça humana. Fazendo uma análise das tecnologias disponíveis, qual-
quer uma teria capacidade de causar danos graves aos humanos, caindo em mãos
erradas. A própria IA poderia se tornar consciente (RUSSELL; NORVIG, 2013). Essas
considerações são muito alimentadas pela ficção científica, pois desde livros como
Frankenstein (1818) até filmes como O Exterminador do Futuro (1984) e Matrix (1999)
trazem a tecnologia conquistando o mundo.
Na realidade, um dos riscos grandes que um sistema de IA pode gerar é a
propagação de erros. Por exemplo, se um sistema de defesa autônomo contra
mísseis detecta um ataque ou uma ameaça erroneamente, ele poderia lançar um
contra-ataque e iniciar uma guerra, ou até mesmo exterminar a raça humana.
Implementar a IA pode ser uma tarefa difícil. Imagine um sistema que age para
diminuir algum aspecto, como minimizar o sofrimento humano. Se for considerado
que o indivíduo pode sempre encontrar uma maneira de sofrer, mesmo nas me-
lhores condições, o sistema pode decidir exterminar a raça humana
imediatamente, pois se não houver seres humanos não haverá
sofrimento (RUSSELL; NORVIG, 2013). Dessa forma, projetistas
precisam ter cuidado, pois sistemas são literais nas instruções,
já seres humanos podem raciocinar sobre as nuances do que
“minimizar o sofrimento humano” significa.
Além do risco da literalidade, um sistema de aprendiza-
gem pode evoluir e adquirir um comportamento inadequado.
Se uma máquina ultrainteligente evoluir e superar a inteligên-
cia humana em todos os aspectos, ela poderia projetar me-
lhores máquinas e sistemas, e assim sucessivamente, levando
a uma explosão de inteligência. Vernor Vinge (1944-) chamou esse
ponto de singularidade tecnológica (VINGE, 1993).
Levando em consideração predições de especialistas e não especialistas da
área, Armstrong e Sotala (2012) encontraram diversas divergências, mas também
um consenso de que a singularidade tecnológica poderia surgir em meados de2040. Mesmo assim, terminaram seu artigo com a seguinte afirmação: “Há, portan-
to, fortes motivos para aumentar drasticamente a incerteza sobre qualquer previ-
são de linha do tempo de IA” (ARMSTRONG; SOTALA, 2012, p. 19).
Convém ressaltar que desde que Cook (1971) apresentou um dos maiores re-
sultados da complexidade computacional (o problema da satisfatibilidade é um
problema NP-completo), sabe-se que muitos problemas possuem uso de espa-
ço de armazenamento e tempo de execução inviáveis para sua resolução com a
tecnologia atual. Da mesma forma, a velocidade da luz é um limitante em termos
de velocidade e distância em que uma informação pode trafegar. Se a proprieda-
de da inteligência só puder ser reproduzida por algoritmos que estão fora desses
limites, mesmo um progresso exponencial de tecnologia não será suficiente para
implementá-la (RUSSELL; NORVIG, 2013).
Isso de fato ocorreu em 1983,
quando o tenente-coronel
Stanislav Petrov era responsável
por monitorar o sistema de
alertas contra mísseis em plena
Guerra Fria. O sistema de alertas
em um bunker, pouco depois da
meia-noite, começou a indicar que
um míssil dos Estados Unidos es-
tava em direção à União Soviética.
Petrov ponderou que se os estadu-
nidenses atacassem os soviéticos,
não seria com somente um míssil,
portanto considerou o alarme
como falso (SALVADOR, 2018).
Saiba mais
Phonlamai Photo/Shutterstock
Para entender um pouco
mais da singularidade
tecnológica, assista ao
vídeo Ultron e a revolução
da inteligência artificial, do
canal Nerdologia.
Disponível em: https://youtu.be/CRy-
2g_-SqKY. Acesso em: 2 dez. 2020.
Vídeo
https://youtu.be/CRy2g_-SqKY
https://youtu.be/CRy2g_-SqKY
28 Inteligência Artificial
Mesmo assim, se essa ultrainteligência puder mesmo ser alcançada, os humanos
precisam projetar as máquinas e os sistemas de IA de modo que, quando forem pro-
jetar as novas gerações, tratem-os bem. Isaac Asimov (1920-1992), escritor de ficção
científica, descreve três leis da robótica em seu conto Runaround (ASIMOV, 1942):
Um robô não pode ferir um ser
humano ou, por inação, permitir
que sofra algum mal.
Um robô deve obedecer às
ordens que lhe sejam dadas
por seres humanos, exceto
nos casos em que tais ordens
entrem em conflito com a
Primeira Lei.
Um robô deve proteger sua
própria existência desde que tal
proteção não entre em conflito
com a Primeira ou a Segunda
Leis.
Go
od
_S
to
ck
/S
hu
tte
rs
to
ck
Mais tarde, Asimov (1985, p. 203) ainda adicionou a Lei Zero: “Um robô não
pode causar mal à humanidade ou, por omissão, permitir que a humanidade so-
fra algum mal”.
Apesar de terem sido escritas para a ficção científica, essa foi a primeira vez que
a questão de os robôs fazerem algum mal à humanidade foi abordada. Essas leis,
ou algo parecido, não são lógicas absolutas, mas deve haver algum tipo de ponde-
ração entre elas, inclusive com o meio. Por exemplo, não é útil que um robô não
permita que um humano atravesse a rua porque calculou um alto risco de atrope-
lamento (RUSSELL; NORVIG, 2013).
A grande questão é desenvolver uma IA com um sistema de pesos e contra-
pesos em seu processo de aprendizagem, que possa ser ponderado de modo
a evoluir e continuar sendo amigável (não prejudicar os seres humanos). Esses
pesos e contrapesos também precisam evoluir, pois a moral muda ao longo do
tempo.
Outro aspecto importante é que um sistema de pesos evolutivo também pode
levar a um comportamento indesejado. Por exemplo, se a IA identificar que os
humanos podem matar insetos porque são seres primitivos, ela poderia chegar à
conclusão de que os humanos não são tão evoluídos quanto ela, ou seja, são primi-
tivos, então é moral matar seres humanos (RUSSELL; NORVIG, 2013).
Assim, mesmo que seja escrito um sistema para apenas jogar xadrez ou de-
monstrar teoremas, se ele tiver capacidade de aprender e alterar a si mesmo,
devem ser implementadas salvaguardas desde o começo. A questão de se con-
ceber a IA amigável deve ser considerada desde o início dos projetos, pois as
falhas podem não ter a ver com o algoritmo em si, mas sim com a forma que
os softwares evoluem ao longo do tempo e como resultado da interação com
outros softwares e outras pessoas.
O filme Eu, Robô, cujo
roteiro se baseia na obra
de Isaac Asimov, retrata
o detetive Del Spooner
em 2035, responsável por
uma investigação quando
se depara com Sonny, um
robô que aparentemente
pode violar as três leis da
robótica.
Direção: Alex Proyas. EUA: 20th
Century Fox, 2004.
Filme
Fundamentos de inteligência artificial 29
Um caso interessante é o do chatbot Tay, da Microsoft, liberado em 2016 para
conversar com as pessoas na rede social Twitter. Essa IA foi programada para
evoluir e aprender enquanto interagia com as pessoas. Em menos de 24 horas,
usuários do Twitter conseguiram fazer a Tay se transformar em racista, xenofóbica,
transfóbica e defender ideias questionáveis (VINCENT, 2016). A Microsoft retirou a
IA do ar e apagou as publicações feitas.
Da mesma forma, se os robôs se tornarem conscientes, deverão ser toma-
das medidas para que tenham em seus programas o conceito de moralidade,
certo e errado. Isso porque pode ser imoral considerá-los somente máquinas e
segregá-los.
Atividade 1
Considere as seguintes definições de inteligência artificial:
a. “Está relacionada a um desempenho inteligente de artefatos” (NILSSON, 1998,
p. 1).
b. “A arte de criar máquinas que executam funções que exigem inteligência
quando executadas por pessoas” (KURZWEIL, 1990, p. 117).
c. “O estudo das computações que tornam possível perceber, raciocinar e agir”
(WINSTON, 1992, p. 5).
d. “Automatização de atividades que associamos ao pensamento humano, ativi-
dades como a tomada de decisões, a resolução de problemas, o aprendizado”
(BELLMAN, 1978, p. 12).
Agora combine cada definição com uma abordagem apresentada: pensando como um
humano, agindo como um humano, pensando racionalmente, agindo racionalmente.
Atividade 2
Cite cinco aplicações em que há o emprego da inteligência artificial.
Atividade 2
Qual é o nome da regra de inferência utilizada na linguagem de programação
Prolog?
CONSIDERAÇÕES FINAIS
Este capítulo apresentou uma introdução à inteligência artificial, mostrando como
abordar o conceito do que é uma máquina inteligente. Foram dadas quatro aborda-
gens: agir como humanos, pensar como humanos, pensar racionalmente e agir racio-
nalmente. Destacou-se que a abordagem de agir racionalmente é a mais geral e que
engloba aspectos das demais.
Também foi apresentado um histórico da IA até os dias atuais, com as principais
tecnologias e os avanços da ciência na área. As aplicações mais interessantes da IA
também foram mostradas. Como foi possível observar, a IA está presente em todo
tipo de aplicação, desde as mais simples, como um filtro em uma rede social, até em
espaçonaves explorando Marte.
30 Inteligência Artificial
Ao final foi apresentada uma discussão ética sobre a IA, analisando questões perti-
nentes sobre o mercado de trabalho, a utilização indevida da IA, a perda de responsa-
bilidade dos humanos e se um dia a raça humana será subjugada.
REFERÊNCIAS
ALLEN, N. D. et al. StatsMonkey: a data-driven sports narrative writer. AAAI Fall Symposium Series, nov. 2010.
ARMSTRONG, S.; SOTALA, K. How we’re predicting AI – or failing to. Beyond AI: Artificial Dreams, Pilsen,
p. 56-75, 2012. Disponível em: https://intelligence.org/files/PredictingAI.pdf. Acesso em: 2 dez. 2020.
ASIMOV, I. Robots and empire. Nova Iorque: Doubleday Books, 1985.
ASIMOV, I. Runaround. Norwalk: Astounding Science Fiction, 1942.
BELLMAN, R. An introduction to artificial intelligence: can computers think? São Francisco: Boyd & Fraser
Publishing Company, 1978.
BLANCHÉ, R.; DUBUCS, J. História da lógica. Lisboa: Edições 70, 1996.
BRATKO, I. Prolog programming for artificial intelligence. 4. ed. Ontário: Pearson Education Canada, 2011.
BRESINA, J. et al. Mixed-initiative activity planning for mars rovers.