05 - Algoritmos Genéticos

Propaganda
05#–#Algoritmos#Genéticos#
5
#
Algoritmos*Genéticos*
#
#
“Alguns#chamam#de#evolução,#outros#chamam#de#Deus.”#
(William#Herbet#Carruth,#Each%in%His%Own%Tongue)#
#
5.1#
INTRODUÇÃO#
Da#mesma#forma#que#a#natureza#evolui#criaturas#que#são#mais#capacitadas#para#ajustarUse#ao#ambiente#deU
las,#pela#seleção#de#características#que#funcionam,#métodos#de#busca#local#promovem#pequenas#alterações#em#
soluções#potenciais#para#um#problema#até#que#uma#solução#ótima#seja#identificada.#
Algoritmos# genéticos# são# uma# forma# de# busca# local# que# usa# métodos# baseados# em# evolução# para# fazer#
pequenas#alterações#em#uma#população#de#cromossomos,#na#tentativa#de#identificar#uma#solução#ótima.#
#
5.2#
REPRESENTAÇÕES#
A#mais#simples#representação#para#algoritmos#genéticos#é#aquela#que#foi#usada#por#John#Holland:#uma#caU
deia#de#bits#é#conhecida#como#um#cromossomo#e#cada#bits#é#conhecido#como#um#gene#.#Esses#dois#termos#são#
apropriados# diretamente# da# genética# e# ilustram# a# proximidade# com# que# algoritmos# genéticos# espelham# proU
cessos#biológicos.#
#Discutiremos#algoritmos#genéticos#usando#esta#representação,#mas#vale#lembrar#que#muitas#outras#repreU
sentações#são#possíveis#e,#para#problemas#específicos,#representações#diferentes#serão#mais#apropriadas.##
A#população#consiste#em#um#conjunto#de#cromossomos.#Cada#um#dos#quais,#composto#de#genes.#Um#croU
mossomo#é#geralmente#tomado#para#representar#um#“indivíduo”#completo#dentro#da#população#—#em#outras#
palavras,# uma# representação# completa# de# uma# solução# ou# uma# classificação.# Também# é# possível# combinar#
cromossomos#para#formar#criaturas,#o#que#espelha#mais#proximamente#a#genética#real,#já#que#cada#indivíduo#
no#mundo#real#tem#diversos#cromossomos.##
Cada# gene# no# cromossomo# representa# alguma# faceta# da# composição# genética# daquele# individuo.# Por#
exemplo,#os#genes#poderiam#ser#inteiramente#independentes#e#representar#a#presença#ou#não#de#certas#partes#
de#corpo#em#um#animal.#Mais#comumente,#os#genes#são#combinados#de#uma#forma#menos#transparente.#Por#
exemplo,#veremos#como#algoritmos#genéticos#podem#ser#usados#pata#resolver#problemas#de#matemática,#onde#
os#bits#de#um#cromossomo#são#geralmente#tratados#como#os#bits#de#um#número#binário#que#represente#uma#
solução#para#o#problema.##
#
5.3#O#ALGORITMO#
#
O# processo# de# execução# de# um# algoritmo# genéticos# ocorre# como# a# seguir.# Observe# que# este# processo# é#
bem#independente#da#representação#que#estiver#sendo#usada.#
1.#Gere#uma#população#aleatória#de#cromossomos#(esta#será#a#primeira#geração).#
2.#Se#o#critério#de#terminação#for#satisfeito,#pare.#Caso#contrário#siga#para#a#etapa#3.##
3.#Determine#a#aptidão#de#cada#cromossomo.##
4.#Aplique#cruzamento#e#mutação#a#cromossomos#selecionados,#a#partir#da#geração#atual,#para#gerar#uma#
nova#população#de#cromossomos:##a#próxima#geração.##
5.#Retorne#à#etapa#2.##
O#tamanho#da#população#deve#ser#determinado#antecipadamente.#Geralmente,#o#tamanho#de#uma#popuU
lação#permanece#constante#de#ou#geração#para#outra.#Em#algumas#situações,#pode#ser#útil#ter#uma#população#
que#mude#de#tamanho.##
O#tamanho#de#cada#cromossomo#deve#permanecer#o#mesmo#para#que#o#cruzamento#seja#aplicado.#É#posU
sível#executar#um#algoritmo#genético,#com#tamanhos#variáveis#de#cromossomo,#mas#não#é#comum.##
Inteligência#Artificial#–#Lucilia#Ribeiro#
1
05#–#Algoritmos#Genéticos#
Tipicamente,#os#cromossomos#mais#aptos#são#selecionados#a#cada#geração#para#se#unirem#um#ao#outro#e#
cada#par#de#cromossomos#pode#produzir#duas#proles.#Então,#o#conjunto#resultante#de#cromossomos#da#prole#
substituirá#a#geração#anterior.##
Também#é#possível#permitir#que#pais#especialmente#aptos#produzam#relativamente#mais#proles#e#que#cerU
tos#membros#de#uma#geração#sobrevivam#para#a#próxima#geração.#Assumiremos#que#cada#par#de#pais#produza#
duas#proles#e#que#essas#proles#substituam#os#pais.##
#
5.4#
APTIDÃO#
Com#algoritmos#genéticos#mais#tradicionais,#é#necessária#uma#métrica#pela#qual#a#aptidão#de#um#cromosU
somo#possa#ser#determinada#objetivamente.#Por#exemplo,#ao#usar#algoritmos#genéticos#para#classificar#númeU
ros,#uma#medida#de#aptidão#adequada#seria#determinada#executando#o#algoritmo#e#contando#quantos#númeU
ros#ele#posiciona#no#local#correto.#Uma#medida#mais#sofisticada#de#aptidão#poderia#ser#obtida#calculando#quanU
to#cada#número#localizado#incorretamente#está#distante#de#seu#local#correto.##
Karl#Sims#desenvolveu#"criaturas"#que#foram#geradas#de#acordo#com#suas#habilidades#para#realizar#tarefas#
simples,#tais#como#andar,#pular,#nadar#(Sims,#1994.#).#Sims#usou#uma#representação#e#um#conjunto#de#regras#
que#determinavam#como#as#diferentes#partes#de#corpo#de#suas#criaturas#interagiam#umas#com#as#outras#e#com#
o#ambiente#delas.#Neste#caso,#então,#a#medida#de#aptidão#era#baseada#no#quanto#sua#forma#física#(fenótipo),#
representada#pela#informação#genética#(genótipo),#atendia#a#certos#critérios.##
#
5.5#
CRUZAMENTO#
O#operador#de#cruzamento#é#aplicado#a#dois#cromossomos#de#mesmo#comprimento,#como#a#seguir:##
1.#Selecione#um#ponto#aleatório#para#o#cruzamento.##
2.#Separe#cada#cromossomo#em#duas#partes,#dividindoUo#no#ponto#de#cruzamento.##
3.#Recombine#os#cromossomos#separados,#combinando#a#parte#inicial#de#um#com#a#parte#final#do#outro#e#
viceUversa,#para#produzir#dois#novos#cromossomos.##
Por#exemplo,#leve#em#consideração#os#dois#cromossomos#a#seguir:##
110100110001001#
010101000111101#
PodeUse#escolher#como#ponto#de#cruzamento#o#espaço#entre#o#sexto#e#o#sétimo#genes:##
110100#|#110001001##
010101#|#000111101##
Agora,#as#partes#do#cromossomo#são#recombinadas,#como#se#segue:##
110100#|#110001001#=>#110100000111101##
010101#|#000111101#=>#010101110001001##
Este#processo#é#baseado#no#modo#como#as#cadeias#de#DNA#recombinam#umas#com#as#outras#na#reproduU
ção#humana#para#combinar#características#de#cada#pai#em#um#filho.##
Cruzamento#de#ponto#único#é#a#forma#mais#comumente#usada,#mas#também#é#possível#ter#duas#ou#mais#
posições#de#cruzamento.##
Em#um#cruzamento#de#dois#pontos,#dois#pontos#são#escolhidos#para#dividir#os#cromossomos#em#duas#seU
ções,# com# as# seções# externas# se# juntando# para# transformar# o# cromossomo# em# um# anel.# As# duas# seções# são#
trocadas,#como#mostrado#a#seguir:#
Inteligência#Artificial#–#Lucilia#Ribeiro#
2
05#–#Algoritmos#Genéticos#
#
Outra#forma#de#cruzamento#é#cruzamento#uniforme.#Aqui#uma#probabilidade,#p,#é#usada#para#determinar#
se#um#dado#bit#do#pai#a#do#ou#se#será#do#pai#2.#Em#outras#palavras,#um#filho#pode#receber#quaisquer#bits#aleaU
tórios#de#cada#um#de#seus#pais.#Por#exemplo,#vamos#assumir#que#tenhamos#os#seguintes#dois#pais:###
Pai#1:#10001101##
Pai#2:#00110110##
A#prole#destes#dois#cromossomos#pode#ser#determinada#como#mostrado:#
#
O#primeiro#bit#do#primeiro#filho#é#escolhido#como#sendo#a#partir#do#pai#1#com#probabilidade#p#e#a#partir#do#
pai#2#com#probabilidade#1#—#p.#Se#um#bit#do#pai#1#for#escolhido#para#o#filho#1,#então#o#bit#correspondente#do#
pai#2#será#escolhido#para#o#filho#2#e#viceUversa.#Cruzamento#uniforme#também#é#usado#frequentemente#para#
produzir#apenas#uma#prole#a#partir#de#cada#par#de#pais,#diferentemente#do#cruzamento#tradicional,#de#um#ou#
dois#pontos,#que#geralmente#produz#duas#proles#a#partir#de#cada#par#de#pais.#
Cruzamento# uniforme# mistura# substancialmente# os# genes# de# cada# banco# de# genes# e# em# alguns# casos# é#
possível#que#se#tenha#um#valor#muito#alto#(ou#muito#baixo)#de#p#para#garantir#que#a#maioria#dos#genes#venha#
de#um#pai#ou#de#outro.##
Em#alguns#casos,#clonagem#pode#ser#aplicada#e,#então,#cruzamento#não#é#aplicado#de#forma#alguma#e#é#
produzida#uma#nova#prole#que#será#idêntica#a#seu#único#pai.#O#sistema#de#biomorfos#de#Dawkins#pode#ser#conU
siderado#como#um#algoritmo#genético#que#sofreu#clonagem#e#mutação#onde#a#aptidão#é#determinada#subjetiU
vamente.##
#
5.6#
MUTAÇÃO#
Você#pode#reconhecer#algoritmos#genéticos#como#sendo#bastante#semelhantes#aos#métodos#de#subida#de#
colina.#Subida#de#colina#envolve#gerar#uma#possível#solução#para#um#problema#e#se#deslocar#em#direção#a#uma#
solução#melhor#que#a#atual,#até#chegar#a#uma##solução#a#partir#da#qual#não#se#consiga#outra#melhor.#Subida#de#
colina# não# apresenta# bom# desempenho# diante# de# problemas# que# possuam# máximos# locais.# O# operador# de#
mutação#foi#introduzido#para#fazer#com#que#os#algoritmos#genéticos#evitem#este#problema.##
Mutação#é#um#operador#unário#(i.e.,#é#aplicado#a#apenas#um#argumento#—#um#único#gene)#que#é#geralU
mente#aplicado#com#uma#probabilidade#baixa,#tal#como#0,01#ou#0,001.#Mutação#envolve#simplesmente#a#reverU
são#do#valor#de#um#bit#em#um#cromossomo.#Por#exemplo,#com#uma#taxa#de#mutação#de#0,01,#seria#esperado#
que#um#gene#em#um#cromossomo#com#100#genes#fosse#revertido.#Aqui,#vemos#mutação#aplicada#a#uma#das#
proles,#extraída#do#nosso#exemplo#anterior:##
010101110001001##
#
#
010101110101001##
Inteligência#Artificial#–#Lucilia#Ribeiro#
3
05#–#Algoritmos#Genéticos#
#
5.7#
CRITÉRIO#DE#TERMINAÇÃO#
Há#tipicamente#dois#meios#pelos#quais#uma#execução#de#um#algoritmo#genético#é#terminada.#Geralmente,#
impõeUse#um#limite#ao#número#de#gerações#depois#do#qual#cada#execução#é#considerada#terminada.##
Em# alguns# problemas,# a# execução# pode# parar# quando# uma# solução# particular# tiver# sido# alcançada# ou#
quando#o#nível#mais#alto#de#aptidão#na#população#tiver#alcançado#um#valor#específico.#Por#exemplo,#veremos##
como#um#algoritmo#genético#pode#ser#usado#para#solucionar#uma#função#matemática.#Neste#caso,#está#claro#
que#a#execução#poderá#ser#interrompida#quando#a#solução#correta#tiver#sido#alcançada,#o#que#poderá#ser#facilU
mente#testado.##
Esta#é#uma#distinção#importante.#Em#muitos#casos,#algoritmos#genéticos#são#usados#para#solucionar#proU
blemas#que#tenham#uma#solução#objetiva#e,#neste#caso,#o#algoritmo#poderá#parar#quando#encontrar#tal#soluU
ção.#Em#outros#casos,#eles#são#usados#para#propósitos#mais#abstratos,#tal#como#gerar#imagens#interessantes.#
Nestes#casos,#julgamento#humano#deve#ser#usado#para#determinar#quando#parar.##
#
5.8#
OTIMIZAÇÃO#DE#UMA#FUNÇÃO#MATEMÁTICA#
Veremos# como# um# algoritmo# genético# pode# ser# usado# para# encontrar# um# valor# máximo# de# uma# função#
matemática.#Tentaremos#maximizar#a#seguinte#função:##
f(x)#=#sen(x)##
Com#x#na#faixa#de#1#a#15,#sendo#x#em#radianos.#
Cada#cromossomo#representa#um#valor#possível#de#bits.##
A#figura#abaixo#mostra#o#gráfico#descontínuo#para#esta#função.##
#
#
Usaremos,#como#tamanho#de#população,#quatro#cromossomos.#O#primeiro#passo#é#gerar#uma#população#
aleatória,#que#será#a#nossa#primeira#geração.##
c1#=#1001##
c2#=#0011##
c3#=#1010##
c4#=#0101##
Para#calcular#a#aptidão#de#um#cromossomo,#precisamos#primeiramente#convertêUlo#em#um#inteiro#decimal#
e,#então,#calcular#f(x)#para#esse#inteiro.##
Atribuiremos#aptidão#como#um#valor#numérico#entre#0#e#100,#onde#0#será#o#menos#apto#e#100#será#o#mais#
apto.#f(x)#gera#números#reais#entre#U1#e#1.#Atribuiremos#uma#aptidão#de#100#para#f(x)#=#1#e#uma#aptidão#de#0#
para#f(x)#=#U1.#Uma#aptidão#de#50#será#atribuída#para#f(x)#=#0.#Assim,#a#aptidão#de#x,#f(x)#é#definida#do#seguinte#
modo:##
f'(x)#=#50#(fx)#+#1)#=#50(sen#(x)#+#1)##
Inteligência#Artificial#–#Lucilia#Ribeiro#
4
05#–#Algoritmos#Genéticos#
A#taxa#de#aptidão#de#um#cromossomo#é#a#aptidão#de#um#cromossomo#como#uma#porcentagem#da#aptidão#
total#da#população.#Mais#adiante,#veremos#porque#este#é#um#cálculo#útil.#
A#tabela#a#seguir#mostra#os#cálculos#que#são#empregados#para#chegar#aos#valores#de#aptidão#para#a#nossa#
primeira#geração.##
#
Cromossomos#
c1#
c2#
c3#
c4#
Genes#
1001#
0011#
1010#
0101#
Valor#Inteiro#
9#
3#
10#
5#
f(x)#
0,41#
0,14#
U0,54#
U0,96#
Aptidão#de#f’(x)# Taxa#de#Aptidão#
70,61#
46,3%#
57,06#
37,4%#
22,80#
14,9%#
2,05#
1,34%#
#
Agora,#precisamos#executar#uma#única#etapa#do#nosso#algoritmo#genético#para#produzir#a#próxima#geraU
ção.# A# primeira# etapa# de# selecionar# quais# cromossomos# reproduzirão.# Seleção* por* roleta* russa# envolve# usar#
taxa#de#aptidão#para#selecionar#aletoriamente#cromossomos#para#reproduzir.#Isto#é#feito#do#seguinte#modo:#
A#faixa#de#números#reais#de#0#a#100#é#dividida#entre#os#cromossomos#proporcionalmente#à#aptidão#de#cada#
um.#Assim,#na#nossa#primeira#geração,#c1#terá#46,3%#da#faixa(i.e.,#de#0#a#46,3),#c2#terá#37,4%#da#faixa(i.e.,#de#
46,3#a#83,7)#e#assim#em#diante.#
Agora,#um#número#aleatório#é#gerado#entre#O#e#100.#Este#número#estava#dentro#da#faixa#de#um#dos#croU
mossomos#e#este#cromossomo#será#selecionado#para#reprodução.#O#próximo#número#aleatório#será#usado#para#
selecionar#o#parceiro#deste#cromossomo.#Assim,#cromossomos#mais#aptos#tenderão#a#produzir#mais#proles#do#
que#os#cromossomos#menos#aptos.##
Entretanto,#é#importante#que#este#método#não#impeça#por#completo#que#cromossomos#menos#aptos#reU
produzam,#porque#isto#ajudará#a#assegurar#que#populações#não#estagnem,#por#serem#constantemente#geradas#
a#partir#dos#mesmos#pais.##
Porém,# no# nosso# exemplo,# o# cromossomo# c4# terá# pouquíssimas# chances# de# se# reproduzir,# já# que# isto# só#
aconteceria#se#o#numero#aleatório#encontrasse#na#estreita#faixa#entre#98,6#e#100.##
Precisaremos#gerar#quatro#números#aleatórios#para#achar#quatro#pais#que#produzirão#a#próxima#geração.#
Nosso#primeiro#número#aleatório#é#56,7,#o#que#significa#que#c2#foi#escolhido#como#o#primeiro#pai.#Em#seguida,#
38,2#é#escolhido,#então#seu#par#será#c1.##
Agora#precisamos#combinar#c1#e#c2#para#produzir#duas#novas#proles.#Primeiro,#precisamos#selecionar#aleaU
toriamente#um#ponto#de#cruzamento.#Escolheremos#o#ponto#entre#o#segundo#e#o#terceiro#bits#(genes):##
10#|#01##
00#|#11##
Cruzamento#é#então#aplicado#para#produzir#a#prole,#c5#e#c6:#
c5#=#1011##
c6#=#0001##
De#maneira#semelhante,#c1#e#c3#serão#escolhidos#para#produzir#as#proles#c7#e#c8,#usando#um#ponto#de#cruU
zamento#entre#o#terceiro#e#o#quarto##
c7#=#1000##
c8#=#1011##
A#População#c1#a#c4#será#agora#substituída#pela#segunda#geração,#c5#a#c8.#c4#não#teve#chance#de#se#reproU
duzir#e#seus#genes#serão#perdidos.#c1,#que#era#o#cromossomo#mais#apto#na#primeira#geração,#foi#capaz#de#reU
produzir#duas#vezes,#passando#adiante#seus#genes#altamente#aptos#para#todos#os#membros#da#próxima#geraU
ção.##
Os#valores#de#aptidão#para#a#segunda#geração#são#mostrados#na#tabela#a#seguir:#
#
Inteligência#Artificial#–#Lucilia#Ribeiro#
5
05#–#Algoritmos#Genéticos#
Cromossomos#
c5#
c6#
c7#
c8#
Genes#
1011#
0001#
1000#
1011#
Valor#Inteiro#
11#
1#
8#
11#
f(x)#
U1#
0,84#
0,99#
U1#
Aptidão#de#f’(x)# Taxa#de#Aptidão#
0#
0%#
92,07#
48,1%#
99,47#
51,9%#
0#
0%#
#
Esta#geração#produziu#dois#cromossomos#extremamente#aptos#e#dois#cromossomos#bastante#inaptos.#Na#
verdade,# um# dos# cromossomos,c7,# é# a# solução# ótima.# Neste# ponto,# o# critério# de# terminação# provavelmente#
determinaria#que#a#execução#parasse.#Caso#contrário,#o#algoritmo#continuará#a#executar,#mas#não#encontrará#
qualquer#solução#melhor.#Foi#necessária#apenas#uma#etapa#para#que#se#chegasse#à#solução#ótima,#a#partir#de#
uma#configuração#aleatória.##
Evidentemente,#este#foi#um#exemplo#muito#simplista.#Problemas#reais#são,#provavelmente,#bem#mais#difíU
ceis#de#solucionar.#Eles#também,#provavelmente,#envolverão#tamanhos#de#população#bem#maiores#(tipicamenU
te,#são#usados#tamanhos#de#população#que#variam#entre#100#e#500)#e#cromossomos#tendem#a#possuir#um#núU
mero#bem#maior#de#bits.#
#Em# muitos# casos,# algoritmos# genéticos# produzem# rapidamente# soluções# ótimas# ou# quase# ótimas# para#
problemas# combinatoriais# que,# de# outra# forma,# seriam# impossíveis# de# se# resolver.# Isto# levanta# uma# questão#
interessante.#Por#que#algoritmos#genéticos#funcionam?#Abordaremos#agora#esta#questão.#
#
5.9#
POR#QUE#ALGORITMOS#GENÉTICOS#FUNCIONAM##
Algoritmos#genéticos#são#um#método#de#busca#local,#de#certo#modo#semelhante#a#métodos#de#simulação#
de#têmpera#e#subida#de#colina.#
#É# possível# explicar# algoritmos# genéticos# por# comparação# natural:# pequenas# alterações# que# ocorrem# em#
uma# base# seletiva,# combinadas# com# reprodução,# tenderão# a# aprimorar# a# aptidão# da# população# ao# longo# do#
tempo.# Este# argumento# não# é# muito# convincente# e# John# Holland# (1975)# criou# o# conceito# de# esquemas# para#
oferecer#uma#explicação#mais#rigorosa#para#algoritmos#genéticos.##
#
5.9.1#
ESQUEMAS#
Cadeias#de#números#são#usadas#para#representar#padrões#de#entrada#em#sistemas#classificadores.#Nesses#
padrões#é#usado#para#representar#"qualquer#valor"#ou#"não#importa”,#tal#que#a#seguinte#cadeia:#
1011*001*0##
casa#com#as#quatro#cadeias#seguintes:##
1011000100##
1011000110##
1011100100##
1011100110##
(Os#bits#que#casaram#com#*#foram#indicados#em#negrito).#
Um#esquema#é#uma#cadeia#de#bits#que#representa#cromossomo,#usando#*#para#representar#"qualquer#vaU
lor".#DizUse#um#esquema#casará#com#um#cromossomo,#se#a#cadeia#de#bits#que#representa#o#cromossomo#casar#
com#o#esquema#do#modo#mostrado#anteriormente.#Por#exemplo,#o#seguinte#esquema:##*#11#*#casará#com#os#
quatro#cromossomos#que#se#seguem:#
0110##
0111##
1110##
1111##
Inteligência#Artificial#–#Lucilia#Ribeiro#
6
05#–#Algoritmos#Genéticos#
n
Observe#que#um#esquema#com#n#*’s#casará#com#um#total#de#2 #cromossomos.##
r
Cada#cromossomo#de#r#bits#casará#com#2 #diferentes#esquemas.#Por#exemplo,#o#seguinte#cromossomo:##
101##
Casará#com#os#oito#esquemas#seguintes:##
101##
10*##
1*1##
1**##
*01#
*#0#*#
**1#
***##
m
Como#esquemas#são#compostos#de#três#valores#diferentes#(0,#1#e#*)#há#3 #esquemas#diferentes#de#comU
primento#m.#Por#exemplo,#há#nove#possíveis#esquemas#de#apenas#dois#bits.##
00#
01#
0*#
10#
*0#
11#
*1#
1*#
**#
O#comprimento*de*definição#de#um#esquema#é#definido#como#a#distância#entre#o#primeiro#e#o#último#bits#
definidos#(bits#que#não#sejam#*).#Por#exemplo,#o#comprimento#de#definição#de#cada#um#dos#esquemas#seguir#é#
4:#
**0111*#
1*0*1**#
11111##
1***1##
***********10**1***************##
Observe#que#um#comprimento#de#definição#de#um#esquema#não#depende#do#número#de#bits#que#ele#teU
nha,#salvo#se#o#comprimento#de#definição#dele#seja#menor#ou#igual#ao#seu#comprimento.##
A#ordem*de*um*esquema#é#determinada#pelo#número#de#bits#definidos#(i.e.,#o#número#de#bits#que#não#seU
jam#*)#no#esquema.#Assim,#todos#os#esquemas,#a#seguir,#tem#ordem#de#4:##
**10*11*##
1*0*1**1##
1111##
1***1***1***1##
1***********10**1***************##
A#ordem#de#um#esquema#nos#diz#quão#específico#ele#é.#Um#esquema#com#uma#ordem#maior#será#mais#esU
pecífico#do#que#um#com#uma#ordem#menor.##
#
#
Inteligência#Artificial#–#Lucilia#Ribeiro#
#
7
Download