View
2.359
Download
16
Category
Tags:
Preview:
DESCRIPTION
Conjunto completo de slides usado na disciplina Computação Natural do Programa de Pós-Graduação em Engenharia Elétrica da Universidade Mackenzie. Fonte de referência: L. N. de Castro, "Fundamentals of Natural Computing: Basic Concepts, Algorithms, and Applications", CRC Press, 2006.
Citation preview
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 1
Fundamentos de Computação Natural
Slides do Curso Completo
Copyright© 2012 by Leandro Nunes de Castro
Este material foi desenvolvido com base na seguinte referência bibliográfica: DE CASTRO, L. N. Fundamentals of Natural Computing: Basic Concepts, Algorithms, and Applications. CRC Press, 2006. A primeira versão destes slides foi gerada em 2003 ainda durante a escrita da referência básica do curso, quando a disciplina “Computação Natural” foi introduzida no Programa de Pós-Graduação em Engenharia Elétrica da Unicamp. Partes deste material foram desenvolvidas em conjunto com o Prof. Fernando José Von Zuben da Unicamp, a quem atribuo os devidos créditos e agradecimentos. Versões mais atuais do material são utilizadas em disciplinas de pós-graduação de vários programas nacionais, incluindo o Programa de Pós-Graduação em Engenharia Elétrica (PPGEE) da Universidade Presbiteriana Mackenzie, instituição sede do autor principal. O uso deste material para fins acadêmicos é livre e gratuito, desde que sejam mantidas as informações originais de autoria. As referências citadas e não listadas podem ser encontradas no livro texto da disciplina. O Tópico 6 (Sistemas Imunológicos Artificiais) pode ser ministrado usando um ou mais dos outros conjuntos de slides disponíveis no Slideshare do autor: http://www.slideshare.net/lndecastro. Mais informações sobre o tema podem ser encontradas no site do Laboratório de Computação Natural (LCoN): http://www.mackenzie.br/lcon.html.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 2
Sumário do Curso Tópico 1: Fundamentos de Computação Natural ........................................................................ 11
1. Introdução............................................................................................................................ 11
1.1. Motivação ................................................................................................................... 12
2. Filosofia da Computação Natural e suas Subáreas ............................................................. 18
2.1. Computação Inspirada na Biologia ............................................................................ 20
2.2. Simulação e Emulação de Fenômenos Naturais ........................................................ 21
2.3. Computação com Matéria-Prima Natural .................................................................. 21
3. Quando Usar a Computação Natural .................................................................................. 22
Tópico 2: Conceitualização .......................................................................................................... 24
1. A Dificuldade da Conceitualização .................................................................................... 24
2. Fenômenos Naturais, Modelos e Metáforas ....................................................................... 24
3. Da Natureza à Computação................................................................................................. 30
4. Conceitos Gerais ................................................................................................................. 32
4.1. Indivíduos, Entidades e Agentes ................................................................................ 32
4.2. Paralelismo e Distributividade ................................................................................... 35
4.3. Interatividade.............................................................................................................. 36
4.4. Adaptação ................................................................................................................... 40
4.5. Realimentação (Feedback) ......................................................................................... 43
4.6. Auto-Organização ...................................................................................................... 46
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 3
4.7. Complexidade ............................................................................................................ 48
4.8. Vitalismo e Reducionismo ......................................................................................... 51
4.9. Abordagens Bottom-Up e Top-Down ....................................................................... 55
4.10. Determinismo, Caos e Fractais .................................................................................. 56
Tópico 3: Computação Evolutiva ................................................................................................ 60
1. A Origem das Espécies ....................................................................................................... 60
2. A Ideia Perigosa de Darwin ................................................................................................ 63
2.1. A Seleção Natural como um Processo Algorítmico .................................................. 66
2.2. Espaço de Buscas (Design Space) ............................................................................. 68
2.3. Biologia é Engenharia ................................................................................................ 69
3. Base Biológica .................................................................................................................... 71
3.1. Hereditariedade .......................................................................................................... 71
3.2. Do Darwinismo ao Neodarwinismo .......................................................................... 75
3.3. Terminologia biológica .............................................................................................. 76
3.4. Fenótipo x Genótipo................................................................................................... 80
3.5. Adaptação evolutiva ................................................................................................... 82
3.6. Reprodução assexuada e sexuada .............................................................................. 82
3.7. Mutação ...................................................................................................................... 86
4. Resolução de Problemas via Métodos de Busca................................................................. 89
5. Algoritmos Genéticos ......................................................................................................... 94
5.1. Representação (Estrutura de Dados) .......................................................................... 95
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 4
5.2. Mecanismo de Seleção ............................................................................................... 96
5.3. Operador de Recombinação (Crossover Simples) ..................................................... 98
5.4. Operador de Mutação ............................................................................................... 100
6. Algoritmo Genético Modificado ....................................................................................... 102
7. Da Biologia para a Computação Evolutiva ...................................................................... 104
8. Escopo da Computação Evolutiva .................................................................................... 105
8.1. Aplicações em Planejamento ................................................................................... 105
8.2. Aplicações em Projeto ............................................................................................. 107
8.3. Aplicações em Simulação e Identificação ............................................................... 108
8.4. Aplicações em Controle ........................................................................................... 109
8.5. Aplicações em Classificação ................................................................................... 110
Tópico 4: Redes Neurais Artificiais ........................................................................................... 111
1. Base Biológica .................................................................................................................. 111
1.1. O Sistema Nervoso................................................................................................... 112
1.2. Base Biológica e Física da Aprendizagem e Memória ............................................ 122
2. Redes Neurais Artificiais .................................................................................................. 123
2.1. O Neurônio Genérico em RNAs .............................................................................. 128
2.2. Arquiteturas de Rede ................................................................................................ 135
2.3. Paradigmas de Aprendizagem ................................................................................. 142
3. Alguns Algoritmos de Aprendizado Supervisionado ....................................................... 153
3.1. Perceptron ................................................................................................................ 153
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 5
Tópico 5: Inteligência de Enxame ............................................................................................. 166
1. Introdução.......................................................................................................................... 166
2. Algumas Ideias sobre Insetos Sociais ............................................................................... 169
2.1. Curiosidades sobre as formigas ............................................................................... 173
3. Colônias de Formigas ........................................................................................................ 174
3.1. Coleta de Alimento pelas Formigas ......................................................................... 176
3.2. Otimização por Colônias de Formigas .................................................................... 180
3.3. Uma Simulação de Vida Artificial .......................................................................... 182
3.4. Algoritmo Simples de Otimização por Colônias de Formigas ................................ 185
3.5. Algoritmo Genérico de Otimização por Colônias de Formigas .............................. 188
3.6. Exemplo de Aplicação ............................................................................................. 191
3.7. Clusterização de Corpos e Organização de Larvas ................................................. 197
3.8. Clusterização por Colônias de Formigas ................................................................. 199
3.9. Algoritmo Simples de Clusterização (ACA) ........................................................... 200
3.10. Exemplos de Aplicação ............................................................................................ 207
4. Robótica de Enxame ......................................................................................................... 214
4.1. Coleta de Alimento pelas Formigas ......................................................................... 218
4.2. Clusterização de Objetos .......................................................................................... 222
4.3. Transporte Coletivo de Presas ................................................................................. 226
5. Adaptação Social do Conhecimento ................................................................................. 236
5.1. Algoritmo de Otimização por Partículas ................................................................. 238
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 6
5.2. Escopo de Aplicação ................................................................................................ 244
5.3. De Sistemas Sociais a Enxames de Partículas ......................................................... 245
Tópico 7: Geometria Fractal da Natureza .................................................................................. 246
1. Introdução.......................................................................................................................... 248
2. A Geometria Fractal da Natureza ..................................................................................... 249
2.1. Autossimilaridade .................................................................................................... 251
2.2. Alguns Fractais Pioneiros ........................................................................................ 253
2.3. Dimensão e Dimensão Fractal ................................................................................. 259
3. Autômatos Celulares ......................................................................................................... 266
3.1. O Exemplo Mais Simples ........................................................................................ 268
3.2. Definição Formal ..................................................................................................... 269
3.3. Escopo de Aplicação ................................................................................................ 271
4. Sistemas L (L-Systems) .................................................................................................... 272
4.1. Conceitos sobre Sistemas de Produção e Gramáticas ............................................. 272
4.2. Sistemas DOL .......................................................................................................... 274
4.3. Gráfico Tartaruga (Turtle Graphics) ........................................................................ 277
4.4. Modelos de Arquiteturas de Plantas ........................................................................ 280
4.5. Escopo dos Sistemas L ............................................................................................. 284
5. Sistemas de Funções Iterativas ......................................................................................... 284
5.1. Fundamentos Teóricos ............................................................................................. 285
5.2. Sistemas de Funções Iterativas (IFS) ....................................................................... 288
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 7
5.3. Autosimilaridade e Autoafinidade Revisitadas ....................................................... 293
6. Movimento Browniano ..................................................................................................... 294
6.1. Fractais Aleatórios na Natureza e Movimento Browniano ..................................... 295
6.2. Movimento Browniano Fracionário ........................................................................ 303
6.3. Escopo do MBF ....................................................................................................... 308
7. Sistemas de Partículas ....................................................................................................... 310
7.1. Conceitos Básicos .................................................................................................... 311
7.2. Modelo Básico ......................................................................................................... 313
7.3. Simulando Fogos de Artifício .................................................................................. 315
7.4. Escopo dos Sistemas de Partículas .......................................................................... 317
8. Da Geometria Natural à Geometria Fractal ...................................................................... 317
9. Escopo da Geometria Fractal ............................................................................................ 319
Tópico 8: Vida Artificial ............................................................................................................ 322
1. Introdução.......................................................................................................................... 322
1.1. Algumas Definições ................................................................................................. 322
1.2. Weak ALife × Strong ALife .................................................................................... 325
2. Conceitos e Características da ALife ................................................................................ 326
2.1. ALife e Computação Inspirada na Natureza ............................................................ 326
2.2. Vida e Organismos Artificiais ................................................................................. 327
2.3. Vida Artificial e Biologia ......................................................................................... 330
2.4. Modelos e Características da Vida Artificial Computacional ................................. 333
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 8
2.5. Vida Artificial como Sistemas Complexos Adaptativos ......................................... 334
3. Exemplos de Projetos de Vida Artificial .......................................................................... 335
3.1. Coletivos: Revoadas, Grupos e Cardumes .............................................................. 335
3.2. Biomorphs (Bioformas) ........................................................................................... 338
3.3. Vírus Computacionais .............................................................................................. 343
3.4. Síntese de Comportamentos Emocionais................................................................. 346
3.5. O Robô Cachorro AIBO da Sony® .......................................................................... 350
3.6. Construção de Ninhos de Abelhas e Vespas ........................................................... 352
3.7. Criaturas ................................................................................................................... 357
3.8. Peixes Artificiais ...................................................................................................... 359
3.9. Tartarugas, Cupins e Engarrafamentos de Trânsito ................................................ 362
3.10. Simulações com Autômatos Celulares .................................................................... 363
3.11. Framsticks ................................................................................................................ 371
4. Escopo da Vida Artificial .................................................................................................. 372
Tópico 9: Computação de DNA ................................................................................................ 373
1. Introdução.......................................................................................................................... 373
1.1. Computação de DNA x Computadores Tradicionais .............................................. 374
2. Conceitos Básicos de Biologia Molecular ........................................................................ 375
2.1. A Molécula de DNA ................................................................................................ 375
2.2. Manipulando o DNA ................................................................................................ 381
3. Modelos Baseados em Filtragem ...................................................................................... 387
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 9
3.1. O Experimento de Adleman .................................................................................... 387
3.2. A Solução de Lipton para o Problema SAT ............................................................ 396
3.3. Linguagem de Programação de Tubos de Ensaio .................................................... 403
4. Um Breve Resumo dos Modelos Formais ........................................................................ 411
5. Computadores Universais de DNA ................................................................................... 414
6. Escopo da Computação de DNA ...................................................................................... 419
7. Discussão ........................................................................................................................... 421
Tópico 10: Computação Quântica ............................................................................................. 424
1. Princípios de Mecânica Quântica...................................................................................... 424
1.1. A Notação de Dirac .................................................................................................. 424
1.2. Superposição Quântica ............................................................................................. 426
1.3. Produtos Tensores .................................................................................................... 426
1.4. Emaranhamento (Entanglement) ............................................................................. 428
1.5. Evolução (Dinâmica) ............................................................................................... 430
1.6. Medição .................................................................................................................... 432
1.7. Teorema ‘No-Cloning’ ............................................................................................. 433
2. Informação Quântica ......................................................................................................... 435
2.1. Bits e Bits Quânticos ................................................................................................ 435
2.2. Múltiplos Bits e Qubits ............................................................................................ 437
2.3. Portas Lógicas e Portas Quânticas ........................................................................... 440
2.4. Circuitos Quânticos .................................................................................................. 446
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 10
3. Exemplos de Aplicação ..................................................................................................... 448
3.1. Codificação Densa ................................................................................................... 449
3.2. Teletransporte Quântico ........................................................................................... 452
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 11
Tópico 1: Fundamentos de Computação Natural
1. Introdução
• Durante os primeiros anos da humanidade os recursos naturais eram usados para
alimentação e proteção.
• Após algum tempo aprendemos a modificar e controlar a natureza, produzindo
alimentos, criando animais, construindo artefatos, controlando o fogo, etc.
• Mais recentemente passamos a observar e estudar fenômenos físicos, químicos e
biológicos com o objetivo de compreender melhor o funcionamento da natureza.
o Exemplo: estudos sobre as leis do movimento e gravidade nos permitiram
projetar aviões.
• Apesar de todos os avanços anteriores, foi o desenvolvimento tecnológico que
alterou drasticamente nossa interação com a natureza.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 12
• Ela permitiu o uso da natureza como fonte de inspiração (metáfora) para o
desenvolvimento de técnicas de solução de problemas; simular e emular
fenômenos e mecanismos naturais em computador; e utilizarmos novos materiais
para computar.
1.1. Motivação
• A computação natural é constituída por novas abordagens de computação
caracterizadas por uma maior proximidade com a natureza.
• Seus resultados e transformações já afetam nossas vidas, mesmo sem percebermos,
e podem vir a ser ainda mais marcantes:
o A computação natural já se encontra em máquinas de lavar roupas, trens,
brinquedos, aparelhos de ar-condicionado, filmes, jogos eletrônicos, etc.
• Existem várias razões para se estudar a computação natural:
o Possibilidade de desenvolver novas ferramentas computacionais para a solução
de problemas complexos (de engenharia);
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 13
o A possibilidade de projetar dispositivos (computacionais) que simulam, emulam,
modelam e descrevem sistemas naturais;
o A possibilidade de sintetizar novas formas de vida; e
o A possibilidade de utilizar materiais e mecanismos naturais, como cadeias de
DNA e dispositivos quânticos, como novos paradigmas de computação em
substituição aos computadores atuais baseados em silício.
• Exemplos de objetos inspirados na natureza:
o Velcro (plantas); Coletes a prova de bala (teias de aranha); Sonares (morcegos);
Aviões (pássaros); Submarinos (peixes); etc.
• Além disso, a observação da natureza permitiu o desenvolvimento de diversas leis
e teorias sobre como a natureza opera. Por exemplo, as leis da física:
o Leis da termodinâmica (conservação, entropia, e zero absoluto); leis do
movimento (leis de Newton); leis do eletromagnetismo (leis de Maxwell); etc.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 14
• A computação natural pode ser vista como uma versão computacional do processo
de extração de ideias da natureza para o desenvolvimento de sistemas
“artificiais”, ou então a utilização de materiais e mecanismos naturais para
realizar computação.
• É importante salientar que a palavra “artificial” neste contexto significa apenas que
os sistemas são desenvolvidos por seres humanos ao invés de serem resultantes de
processos naturais.
• A computação natural pode ser dividida em três grandes partes:
o Computação inspirada na natureza: utiliza a natureza como fonte de inspiração
para o desenvolvimento de novas técnicas de solução de problemas;
o Simulação e emulação da natureza utilizando a computação: trata-se
basicamente de um processo de síntese que objetiva criar formas, padrões e
comportamentos similares àqueles conhecidos na natureza. Além disso, algumas
áreas visam o desenvolvimento de organismos artificiais; e
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 15
o Computação com materiais naturais: corresponde ao uso de um novo tipo de
matéria prima para computar. Trata-se de um novo paradigma de computação
que vem com o objetivo principal de substituir a tecnologia de silício empregada
atualmente.
Computação Natural
PARTE I Computação Inspirada
na Natureza
PARTE II Simulação e Emulação
da Natureza
PARTE III Computação com Novos Materiais Naturais
Figura 1: Três principais vertentes da computação natural.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 16
• Sendo assim, é possível definir a computação natural como sendo a linha de
pesquisa que, baseada ou inspirada na natureza: 1) permite o desenvolvimento de
novas ferramentas de computação (em software e/ou hardware) para a solução de
problemas; 2) resulta em processos de síntese de padrões, formas,
comportamentos e organismos; e 3) que utiliza matéria-prima natural para o
desenvolvimento de novos tipos de computadores.
• Portanto, a computação natural é uma linha de pesquisa que depõe contra a
especialização de disciplinas.
• Ela mostra, com suas três principais áreas de atuação, que o conhecimento em
diversas linhas de pesquisa é necessário para uma maior compreensão da natureza,
para o estudo e simulação de sistemas e processos naturais, e para o
desenvolvimento de novos paradigmas de computação.
• Físicos, químicos, engenheiros, matemáticos, biólogos, etc., todos contribuem e
trocam ideias para o desenvolvimento da computação natural.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 17
• É importante salientar que o desenvolvimento da computação natural também
resulta em benefícios para as ciências naturais (biologia, química e física).
o Diversas ferramentas, algoritmos e sistemas computacionais desenvolvidos em
computação natural são empregadas para solucionar problemas em áreas como
biologia, bioinformática, imunologia, etc., e também podem ser empregados
como modelos abstratos de fenômenos naturais, podendo resultar assim em um
melhor entendimento da natureza.
• Este curso visa fornecer uma visão geral dos fundamentos da ampla área de
computação natural, apresentando conceitos básicos, pseudocódigos para
algoritmos, discussões teóricas e filosóficas sobre temas específicos, guiando os
alunos para a literatura relevante e sites na Internet onde procurar informações
de qualidade sobre os tópicos abordados, e propondo uma série de atividades
teóricas, filosóficas e computacionais para garantir uma maior fixação dos
conceitos abordados.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 18
• Este curso não trata os conceitos mais avançados das áreas de computação
natural estudadas.
2. Filosofia da Computação Natural e suas Subáreas
• Como é possível descobrir regras e mecanismos naturais que podem ser úteis sob
uma perspectiva computacional?
• As explicações científicas têm sido dominadas pela formulação de princípios e
regras que governam o comportamento de um dado sistema (fenômeno).
• A computação natural geralmente enfatiza modelos altamente simplificados e
abstratos da natureza. (A lâmina de Occam – Occam’s razor)
• As razões para um tratamento simplificado são várias:
o Muitas simplificações são necessárias para tornar a computação tratável;
o Pode ser vantajoso destacar as características mínimas de um sistema que
permitem o uso de algum de seus aspectos particulares;
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 19
o O uso de ‘modelos’ simplificados é suficiente para atingir os objetivos
esperados; e
o Nem sempre são conhecidos os detalhes do fenômeno/sistema natural
observado/estudado.
• Foco do curso:
o Extração de ideias e abstrações;
o Aspectos de projeto da computação natural; e
o Desenvolvimento e uso de ferramentas computacionais inspiradas na natureza.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 20
Estu
dos
experim
enta
is
Estu
dos
teó
ricos
Observações empíricas
Outras linhas de pesquisa
Computação natural
Novas formas de resolver problemas
Síntese de fenômenos
Novos paradigmas de
computação
Figura 2: Integração de linhas de pesquisa para o desenvolvimento da computação natural.
2.1. Computação Inspirada na Biologia
• Este curso irá abordar quatro tópicos da computação inspirada na biologia:
o Computação evolutiva
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 21
o Inteligência de Enxame
o Neurocomputação
o Sistemas Imunológicos Artificiais
2.2. Simulação e Emulação de Fenômenos Naturais
• Tópicos a serem abordados:
o Vida artificial
o Geometria fractal
2.3. Computação com Matéria-Prima Natural
• Tópicos a serem abordados:
o Computação de DNA
o Computação quântica
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 22
3. Quando Usar a Computação Natural
• As técnicas que compõem a computação natural correspondem, quase
invariavelmente, a técnicas alternativas.
• Isso significa que, em muitos casos, há outras formas de resolver o mesmo
problema, sintetizar o mesmo fenômeno e realizar a mesma computação.
• Portanto, é necessário investigar com cuidado se há ou não a necessidade de
aplicar uma técnica de computação natural a um dado problema.
• Algumas dicas. A computação natural pode ser usada quando:
o O problema a ser resolvido é complexo; ou seja, envolve um grande número de
variáveis, uma grande quantidade de possíveis soluções, é dinâmico, etc.
o Não é possível garantir que uma solução potencial encontrada é ótima, mas é
possível criar medidas de comparação entre soluções candidatas;
o O problema a ser resolvido não pode ser (apropriadamente) modelado, assim
como problemas de reconhecimento e classificação de padrões. Em alguns
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 23
casos, embora não seja possível modelar o problema é possível empregar
exemplos (amostras) para ‘ensinar’ o sistema a resolver o problema;
o Uma única solução não é suficiente, ou seja, quando diversidade é importante;
o Sistemas físicos, químicos e biológicos precisam ser modelados ou emulados
com realismo. Nem sempre a geometria Euclidiana é suficiente;
o Comportamentos e padrões naturais precisam ser reproduzidos com realismo;
o Os limites da tecnologia computacional atual forem atingidos.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 24
Tópico 2: Conceitualização
1. A Dificuldade da Conceitualização
• Existe uma grande quantidade de conceitos envolvidos em computação natural.
• Muitos destes conceitos são conhecidos em outras linhas de pesquisa e podem ter
significados diferentes.
• Um dos aspectos que deve ficar claro ao estudar este tópico é a necessidade de
sermos cuidadosos com a terminologia empregada em trabalhos técnicos, como
textos de tese, artigos, etc.
2. Fenômenos Naturais, Modelos e Metáforas
• O enfoque deste curso está na utilização da natureza como fonte de inspiração para
a computação natural.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 25
• O termo modelo é geralmente utilizado para se referir a uma descrição
(esquemática) de um sistema, uma teoria, ou um fenômeno, levando em
consideração suas propriedades conhecidas ou inferidas, e que pode ser utilizado
para um estudo mais aprofundado sobre suas características.
• Nas ciências naturais (biologia, química e física), modelos geralmente são
utilizados com vários propósitos:
o Através da modelagem e identificação de um sistema é possível oferecer uma
melhor descrição quantitativa dele e seus resultados experimentais;
o Modelos podem ajudar na análise crítica de hipóteses e na compreensão dos
mecanismos naturais envolvidos;
o Modelos também podem ajudar na predição de comportamentos e no projeto de
experimentos;
o Modelos podem ser utilizados para simular e estimular novas abordagens para o
estudo de sistemas naturais; e
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 26
o Modelos podem permitir recuperar informações obtidas em experimentos.
• A palavra metáfora se origina do grego e significa “transferência”. Uma metáfora
corresponde ao uso de uma linguagem referente a um objeto A para designar outro
objeto B, de forma a utilizar B para caracterizar A. Metáforas geralmente são vistas
como comparações implícitas.
o Exemplo 1: ela é uma flor → significando, p. ex.: ela é bela como uma flor.
o Exemplo 2: “sistemas imunológicos computacionais”.
• Embora metáforas possam sugerir comparações, elas são geralmente atribuições de
propriedades entre entidades.
o Exemplo: “redes neurais artificiais” possuem características inspiradas no
sistema neural humano.
• Em termos computacionais, existe uma diferença importante entre um modelo e
uma metáfora.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 27
o Enquanto os modelos visam descrições quantitativas de algum fenômeno,
metáforas constituem geralmente abstrações e simplificações de um sistema ou
processo com o objetivo de desenvolver outro sistema ou processo.
• Um experimento pode ser considerado como um procedimento realizado em um
ambiente controlado, com o objetivo de coletar observações, dados, ou fatos, que
demonstrem fatos conhecidos ou teorias, ou que permitam e elaboração e/ou teste
de teorias e hipóteses.
• Exemplo de um experimento biológico: utilização de ratos para verificação da
potencialidade de algumas drogas na redução da pressão arterial.
• Tradicionalmente, experimentos biológicos podem ser realizados in vitro ou in
vivo.
o Atualmente eles também podem ser realizados in silico utilizando modelos.
• Há importantes diferenças conceituais entre os termos experimento, simulação,
emulação e realização (realization).
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 28
• Uma simulação tem como principal objetivo predizer aspectos comportamentais de
um fenômeno através da criação de um modelo aproximado deste fenômeno.
• Isso pode ser feito através da criação de um modelo físico, escrevendo-se um
programa computacional, utilizando-se um pacote de simulação específico, etc.
o Exemplo: simulação de acidente de automóveis.
• Todos os passos de uma simulação devem ser cuidadosamente verificados de
forma a garantir uma fiel reprodução do fenômeno simulado.
• A realização de um sistema ou organismo corresponde ao desenvolvimento de um
modelo material literal que implementa certas funções do sistema ou organismo
original.
• Uma realização é avaliada, primariamente, pela sua fidelidade como uma
implementação de uma especificação de projeto.
o Um sistema ou função é usado para realizar um outro quando ele se comporta
exatamente como o outro.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 29
• Emular um sistema é imitar ou reproduzir suas funções usando outro sistema ou
meio.
o Exemplo: emular um computador através de um programa executado em outro
computador.
• Emulamos um sistema como uma forma de substituí-lo, enquanto simulamos um
sistema se o objetivo é, por exemplo, analisá-lo ou estudá-lo.
• Devido às diferenças de objetivo e níveis de detalhes incorporados, a maioria dos
“modelos” propostos em computação natural é denominada metáfora, simulação,
emulação, ou simplesmente abstração da natureza.
• Além disso, a computação natural geralmente emprega abordagens distintas
daquelas comuns nas ciências naturais.
• A biologia teórica costuma desenvolver modelos baseados em equações
diferencias ordinárias (EDO) e/ou simulações de Monte Carlo.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 30
o Exemplo de EDO: modelo de uma colônia de formigas seguindo uma trilha de
feromônio. Quanto mais feromônio uma formiga encontra, mais rápido ela anda:
dx/dt = kP,
onde dx/dt corresponde a velocidade (dx: espaço, dt: tempo), k é uma constante
de proporcionalidade, e P é o nível de feromônio.
3. Da Natureza à Computação
• Na maioria dos casos, o primeiro passo para se desenvolver uma ferramenta de
computação natural é observar a natureza e seus modelos teóricos objetivando
encontrar algum mecanismo passível de simulação, emulação, ou implementação
computacional.
o Exemplo: objetivando criar um cachorro “artificial” que se comporte de forma
similar a um cachorro doméstico, podemos observar comportamentos básicos e
instintivos de um cachorro real.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 31
• Entretanto, uma das dificuldades em se criar novas abordagens de computação
natural reside no fato de que geralmente é difícil compreender de forma direta
como a natureza funciona.
o Exemplo: embora já conheçamos alguns mecanismos básicos de processamento
e transmissão de sinais no cérebro humano, está muito longe do nosso alcance
desvendar todos seus mistérios, principalmente algumas características
cognitivas como amar e sentir ódio.
• A utilização da natureza como fonte de inspiração gera questões importantes de
ordem prática:
o Será que imitar a natureza é a melhor abordagem?
o Até que ponto o sistema desenvolvido deve ser fiel à sua fonte de inspiração
(natureza)?
• Projetar um mecanismo de computação natural não deixa de ser uma tarefa de
engenharia.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 32
o Propriedades e dispositivos físicos, mecânicos, estruturais e comportamentais da
natureza são utilizados para desenvolver ferramentas de solução de problemas,
novas formas de vida, e novos paradigmas de computação.
• Embora seja muito difícil fornecer uma estrutura formal e genérica para o
desenvolvimento de ferramentas de computação natural, boa parte de suas diversas
linhas de pesquisa permite a especificação de um conjunto de características e
procedimentos básicos de projeto.
4. Conceitos Gerais
4.1. Indivíduos, Entidades e Agentes
• Existe uma vasta literatura sobre agentes e teoria de agentes.
• Uma das principais características da computação natural está na coletividade:
populações de indivíduos, colônias de insetos, revoadas de pássaros, genomas,
repertórios de células, redes de neurônios, etc.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 33
• Todos estes fenômenos, processos, sistemas, etc., são compostos por diversas
entidades ou componentes.
• Neste curso, a palavra agente será utilizada, juntamente com as palavras entidade e
componente para descrever os vários elementos que compõem um determinado
sistema.
• Atualmente, o termo agente é utilizado para referenciar qualquer coisa entre uma
mera sub-rotina de um programa computacional até um organismo inteligente.
• Intuitivamente, para algo ser considerado um agente ele deve apresentar algum
grau de autonomia ou identidade, ou seja, ele deve ser distinguível do seu ambiente
por alguma barreira física, química ou temporal.
• É interessante perceber que num sistema baseado em agentes simples, interagindo
localmente, é possível observar um comportamento sinergético que resulta em
comportamentos globais muito mais complexos do que aqueles observados nos
agentes individuais.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 34
• A teoria de agentes apresenta uma série de definições sobre o que é um agente:
o “Um agente é qualquer coisa que pode perceber o ambiente através de seus
sensores e atuar neste ambiente através de seus atuadores.” (Russel & Norvig,
1995)
o “Um agente deve apresentar as seguintes características: autonomia, habilidade
social, reatividade, pró-atividade.” (Wooldridge & Jennings, 1995)
o “Um agente autônomo é um sistema situado dentro e que faz parte de um
ambiente, que é capaz de sentir e atuar neste ambiente, ao longo do tempo, em
busca da realização de seus próprios objetivos.” (Franklin & Graesser, 1997)
• Tipos de agentes: biológicos (formigas, neurônios, etc.), físicos (robôs, etc.),
virtuais (Tamagotchi, etc.), etc.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 35
Figura 3: (a) Agentes naturais. (b) Agente artificial.
4.2. Paralelismo e Distributividade
• Existem vários exemplos conhecidos envolvendo o processamento de mais de um
evento ou processo ao mesmo tempo e de forma distribuída. O processamento
paralelo e distribuído compõe boa parte da natureza.
o Exemplos: organismos sociais, genomas, evolução das espécies, etc.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 36
4.3. Interatividade
• Os componentes da maioria dos sistemas naturais possuem a capacidade de
interagir com outros componentes e com o ambiente.
• Podem existir diversas formas de interação entre indivíduos: reprodutiva,
simbiótica, competitiva, cooperativa, parasítica, etc.
• Em um nível macroscópico, um resultado desta interatividade é a disputa por uma
quantidade limitada de recursos naturais, ou seja, a luta pela sobrevivência.
o Indivíduos mais bem adaptados ao seu ambiente local possuem maior chances
de sobrevivência e reprodução, propagando assim seu material genético.
• Sistemas, organismos e comportamentos complexos são resultados da interação
(dentre outros processos) entre elementos.
• A interação entre elementos e partes de um sistema também permite a
redistribuição de tarefas.
o Exemplo: recuperação de pacientes com cérebros danificados.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 37
• Existem alguns tipos particulares de interação entre elementos que são importantes
para a computação natural: reprodução, sinalização molecular, interação via
conexões e estigmergia.
Conectividade
• Sistemas conexionistas empregam um tipo de representação onde a informação é
codificada através de nós e conexões de uma rede de elementos básicos, também
denominados de unidades.
• O termo conexionismo surgiu em meados dos anos 1980 para descrever modelos
cognitivos em forma de rede, baseados nos padrões de ativação de numerosas
unidades simples de processamento de informação.
• Entretanto, qualquer sistema estruturado sob a forma de um grafo pode ser
considerado um sistema conexionista.
o Exemplos: redes neurais e redes imunológicas.
• Os sistemas conexionistas possuem uma série de peculiaridades:
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 38
o As conexões estabelecem caminhos para a interação entre unidades: duas
unidades só podem interagir através da conexão que as liga;
o A conexão é geralmente um elemento ativo da interação, ou seja, ela não apenas
especifica quem interage com quem, mas ela também quantifica esta interação;
o A interação direta via conexão também fornece uma estrutura ou arquitetura
para o sistema. Esta estrutura pode, por exemplo, refletir a estrutura do ambiente
no qual a rede está inserida.
Estigmergia
• Grassé (1959) introduziu o conceito de estigmergia para se referir à forma
coordenada de construção do ninho dos cupins do gênero Macrotermes.
• Ele percebeu como os cupins atuam de forma independente em uma estrutura sem
se comunicar diretamente uns com os outros.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 39
• O conceito de estigmergia fornece um mecanismo geral que relaciona
comportamentos individuais e globais: um comportamento individual modifica o
ambiente que resulta em um novo comportamento individual modificado.
• Sendo assim, o ambiente media a comunicação ou interação entre os indivíduos, ou
seja, existe uma forma de interação indireta entre os indivíduos.
• Meios diretos de interação entre os cupins são antenação, trofalaxia (troca de
comida e/ou líquidos), contato mandibular, contato visual, etc.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 40
Figura 4: Construção do ninho por cupins. Quando a quantidade de material atinge um nível crítico, o próprio processo de construção estimula o trabalho de outros cupins.
4.4. Adaptação
• Adaptação pode ser definida como a habilidade de um sistema ajustar sua resposta
a estímulos ambientais. Adaptação é um sinônimo de mudança, variação. Um
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 41
agente que sofre modificação, de forma a se tornar melhor preparado para uma
situação ou aplicação, torna-se mais adaptado a este novo cenário.
• Existem muitas palavras que podem ser interpretadas como sinônimos da palavra
adaptação, por exemplo, evolução, aprendizagem e auto-organização.
• Entretanto, estes conceitos também podem ser vistos como sendo resultantes de um
processo adaptativo.
Aprendizagem
• A aprendizagem corresponde ao ato, processo ou experiência de adquirir
conhecimento, compreensão, capacidade ou abilidade, através de experiência,
estudo, ou interações.
• Sistemas que sofrem aprendizagem são geralmente aqueles capazes de se adaptar
ou mudar seu comportamento baseado em exemplos, de forma a manipular
informações.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 42
• Uma virtude importante da aprendizagem baseada em adaptação é a possibilidade
de resolver tarefas de processamento de informação e a capacidade de operar em
ambientes dinâmicos.
• A maioria dos processos de aprendizagem é gradativa, ou seja, eles não ocorrem de
uma hora para outra.
• Quando um sistema aprende alguma coisa, ele altera seu padrão comportamental
ou alguma outra de suas características.
• Existem formas de aprendizagem que não são gradativas, por exemplo, a
memorização.
• É importante salientar que a aprendizagem não requer consciência e nem
inteligência. Animais e insetos aprendem os caminhos que devem seguir para obter
comida, se reproduzir, etc.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 43
Evolução
• Em sua forma mais simples, a teoria da evolução simplesmente afirma que a vida
muda ao longo do tempo, com formas mais jovens descendendo de formas mais
antigas.
• Diferentemente da aprendizagem, a evolução requer a ocorrência de processos
específicos bem definidos. Primeiramente a evolução requer uma população de
indivíduos capazes de se reproduzir, sofrer variações genéticas, e seleção natural.
• Na falta de qualquer uma destas características não existe evolução.
4.5. Realimentação (Feedback)
• Essencialmente, uma realimentação ocorre quando a resposta a um estímulo
possui algum tipo de efeito sobre o próprio estímulo.
• A realimentação pode ser entendida como o retorno (de uma parte) da saída de um
processo ou sistema para a sua entrada, especialmente quando utilizada para
manter o desempenho ou controle do sistema ou processo.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 44
• A natureza da resposta determina como a realimentação é chamada:
o Realimentação positiva: a resposta aumenta o estímulo original
o Realimentação negativa: a resposta diminui o estímulo original
Realimentação positiva
• É um tipo de processo de auto-reforço (ou crescimento) no qual quanto mais um
evento ocorre, mais ele tende a ocorrer.
o Exemplos: agrupamento de corpos em colônias de formigas, construção de
ninhos de cupins, resposta imunológica, reprodução humana, avalanche, etc.
More termites
More pheromone
Figura 5: Realimentação positiva no processo de construção do ninho por cupins.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 45
Realimentação negativa
• A realimentação negativa opera como um regulador para a realimentação positiva
de forma a manter um equilíbrio (dinâmico) do meio.
• A ausência de mecanismos de realimentação negativa resultaria em sistemas
instáveis ou na extinção de recursos.
o Exemplos: ecossistemas, homeostase, metabolismo, termostato, etc.
Too hot
Pleasant temperature
More cold air
More hot air
Too cold
Figura 6: Realimentação negativa no funcionamento de um aquecedor/ar-condicionado.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 46
4.6. Auto-Organização
• Uma questão importante nas ciências naturais é “De onde vem a ordem que
observamos na natureza?”
• O mundo está cheio de sistemas, organismos, processos e fenômenos que mantêm
uma grande quantidade de energia e organização interna desafiando as leis da
física.
o Exemplos de sistemas auto-organizados: partículas suspensas de água formando
nuvens, desenvolvimento embrionário, organizações sociais, etc.
• Um aspecto importante desta auto-organização é que os processos observados não
estão apenas sujeitos às leis da física e à composição genética, a auto-organização
é um fenômeno que emerge espontaneamente.
• A auto-organização se refere a um amplo processo de formação de padrões em
sistemas físicos e biológicos.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 47
o Exemplos: formas em dunas de areia, ondas produzidas por uma torcida de
futebol, reações químicas formando espirais, etc.
• A formação de padrões em sistemas auto-organizados ocorre através de interações
internas ao sistema, sem nenhuma intervenção externa direta.
• No sentido adotado aqui, um padrão corresponde a um arranjo espacial e/ou
temporal organizado de objetos.
• O conceito de auto-organização também pode ser entendido fornecendo-se
contraexemplos.
o Contraexemplos: soldados marchando, homens trabalhando em uma construção,
etc.
• Fato interessante: abelha rainha.
Características da Auto-Organização
• Coletividade e interatividade, dinâmica, emergência, não linearidades,
complexidade, baseada em regras, retroalimentação.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 48
Alternativas a Auto-Organização
• Liderança. Ex.: um capitão em um campo de batalha.
• Modelo. Ex.: partitura musical.
• Receita. Ex.: receita de bolo.
• Fôrma ou molde. Ex.: moldes para fabricar peças de automóveis.
4.7. Complexidade
• Um sistema complexo pode ser definido como aquele cujas propriedades não
podem ser completamente compreendidas e nem explicadas estudando-se as partes
que o compõe.
• De uma forma menos genérica, um sistema complexo é aquele que possui uma
grande quantidade de componentes que interagem entre si e com o meio ambiente
e cujo comportamento global é não linear e geralmente apresenta processos auto-
organizados.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 49
o Exemplos: sistema imunológico, uma célula individual, uma formiga, um
relógio, etc.
• A nova linha de pesquisa denominada de complexidade sugere que a organização
interna de um sistema não é condição suficiente para a compreensão de como o
sistema funciona. É também preciso investigar como o sistema interage com o
meio ambiente e como as diversas partes componentes do sistema interagem entre
si e com o meio ambiente.
o Exemplo: pleiotropia e poligenia genética.
• Uma das contribuições importantes da complexidade para a ciência está na
sugestão e descoberta de que vários comportamentos complexos podem ser
reproduzidos e/ou descritos por uma quantidade finita e, geralmente, pequena de
regras simples.
o Exemplo: as leis da física.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 50
• Já foram discutidas as quatro principais formas de se estudar sistemas complexos:
experimentação, modelagem, simulação e emulação. A computação natural utiliza
todas as quatro abordagens, com maior ou menor grau de aprofundamento.
• Apesar da grande simplicidade da maioria das técnicas de computação natural, elas
ainda devem ser capazes de capturar características essenciais dos processos
naturais envolvidos.
Sistemas Complexos Adaptativos
• A diferença básica entre um sistema complexo e um sistema complexo adaptativo
está na capacidade de se adaptar dos sistemas adaptativos.
• Embora conceitualmente esta pareça uma pequena diferença, os sistemas
complexos adaptativos (chamados de CAS – complex adaptive systems) possuem
maiores capacidades de extrair e processar informações, podendo, portanto, se
tornar melhores adaptados ao ambiente onde estão inseridos e realizar diversas
tarefas.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 51
Emergência
• O conceito de emergência está intimamente relacionado com o conceito de auto-
organização.
• Existem diversas propriedades de um sistema ou organismo que não estão
presentes e nem são diretamente deriváveis de seus componentes. Estas
propriedades são ditas emergentes.
o Exemplos: uma gota d’água não é uma nuvem, um neurônio não é consciente.
• Praticamente todos os sistemas complexos adaptativos apresentam
comportamentos emergentes.
• Uma característica importante dos sistemas emergentes é o fato deles serem
governados por regras.
4.8. Vitalismo e Reducionismo
• As doutrinas vitalistas clássicas do século 18 eram baseadas na ideia de que a vida
era devida a espíritos imateriais.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 52
• Por outro lado, a visão reducionista da vida sugeria que ela poderia ser descrita por
processos químicos e físicos.
• Por muito tempo os cientistas acreditavam e se empolgavam com a ideia de que a
vida poderia ser totalmente explicada pelo reducionismo, ou seja, através do estudo
dos componentes orgânicos mais fundamentais da matéria. Exemplos:
o Os físicos buscavam as partículas básicas da matéria e as forças que atuam sobre
estas partículas;
o Os químicos tentavam entender as ligações químicas entre os diversos elementos
básicos; e
o Os biólogos destrinchavam as sequências de DNA e outras estruturas
moleculares com o objetivo de compreender o organismo.
• Com o avanço das ciências fica cada vez mais claro que muitas das propriedades,
fenômenos e comportamentos observados na natureza não podem ser
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 53
apropriadamente e nem completamente explicados via reducionismo. Processos
auto-organizados e emergentes são ubíquos na natureza.
• Os pesquisadores verificaram que o reducionismo é apenas uma das ferramentas
necessárias para a compreensão da vida.
• (Talvez a nova “ciência” denominada de complexidade ajude-nos a compreender
melhor como a estrutura básica da matéria, juntamente com os fenômenos
emergentes e auto-organizados, levam a vida).
Século 19
Vitalismo Reducionismo
Deus é responsável por tudo Deus é responsável por tudo
Alma = espíritos da vida = imaterial Alma imaterial ≠ espíritos da vida ≠ matéria
Fenômenos mentais e da vida são resultado da alma, que não pode ser descrita cientificamente
A maioria dos fenômenos pode ser descrita por espíritos materiais de vida
A vida pode ser teleologicamente formada e conduzida
Grande parte da vida é determinada de forma causal e passível de descrições físicas e químicas
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 54
Meados do século 20
Vitalismo Reducionismo
Deus com uma pequena significância Nenhum Deus
Alma ≠ (espíritos da vida = energia
nervosa)
Nenhuma alma
Alguns fenômenos não podem ser descritos
cientificamente
Todos os fenômenos podem ser descritos
cientificamete
A vida é teleologicamente conduzida Determinismo causal
Matéria inorgânica ≠ material orgânica Matéria inorgânica = material orgânica
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 55
4.9. Abordagens Bottom-Up e Top-Down
• Uma abordagem reducionista é, de alguma forma, uma abordagem bottom-up.
Abordagens bottom-up são aquelas voltadas ao estudo das partes constituintes de
um determinado fenômeno, processo ou sistema.
• Entretanto, as abordagens bottom-up não sugerem, como no caso do reducionismo,
que o fenômeno em estudo pode ser completamente compreendido e descrito por
meio da análise de seus componentes fundamentais.
• Em contraste com as técnicas clássicas de inteligência artificial, a computação
natural é, em sua grande maioria, baseada em abordagens bottom-up.
• O termo bottom-up também pode ser utilizado para descrever princípios de
projetos de sistemas. Por exemplo, um projeto do tipo bottom-up é aquele no qual
as partes do sistema vão sendo adicionadas gradativamente.
o Exemplos: redes neurais, castelo de areia, evolução da vida (processo gradativo
de adaptação ao ambiente).
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 56
• As abordagens top-down, por outro lado, são baseadas na ideia de que é possível
olhar para o sistema como um todo e desvendar a forma com que ele opera.
o Exemplo: as técnicas clássicas de IA tentavam modelar comportamentos
inteligentes através da definição de regras específicas seguidas de mecanismos
genéricos de inferência.
• Assim como no caso das abordagens bottom-up, também é possível utilizar a
terminologia top-down para descrever princípios de projetos.
o Exemplos: redes neurais, castelo de areia, etc.
4.10. Determinismo, Caos e Fractais
• Originalmente considerava-se que um sistema determinístico era aquele cuja
evolução temporal podia ser medida precisamente; todos os eventos são
consequências inevitáveis de causas antecedentes suficientes.
• Atualmente, este tipo de sistema determinístico é dito ser previsível.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 57
• Quando é possível prever o desenvolvimento ou evolução temporal de um sistema
para algumas condições específicas, ele é dito ser determinístico e previsível.
• Sistemas com estas características inviabilizam comportamentos emergentes e,
portanto, são pouco estudados em computação natural.
• Por outro lado, comportamentos emergentes são geralmente imprevisíveis e,
portanto, difíceis de terem seus aspectos formais estudados.
o Este fato pode se tornar uma dificuldade para a aceitação destas novas técnicas
por parte da comunidade em geral, principalmente quando o objetivo principal
envolve a resolução de problemas e descrição de aspectos formais de sistemas.
• Um dos resultados mais interessantes e excitantes do desenvolvimento científico
atual, principalmente na física, está na remodelagem da relação entre determinismo
e capacidade de predição.
• Atualmente é de consenso que muitos sistemas determinísticos são imprevisíveis.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 58
• Uma das dificuldades em se prever o comportamento de alguns sistemas
determinísticos se deve à sensibilidade que estes apresentam às condições iniciais.
• Juntamente com o tratamento dado por Poincaré para o “problema dos três corpos”
(ele verificou um comportamento irregular na dinâmica de corpos celestes), o
estudo feito por Hadamard sobre a sensibilidade a condições iniciais levou ao
surgimento da “Teoria do Caos”.
• Uma das consequências teóricas importantes da teoria do caos foi o divórcio entre
determinismo e previsibilidade.
• Exemplos de diversos sistemas caóticos:
o Clima, mar, batimentos cardíacos, etc.
• Existe todo um lado irregular da natureza (p.ex. a forma das nuvens, montanhas,
etc.) cujas características têm sido mais fácil de serem entendidas a partir da teoria
do caos.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 59
• A teoria do caos criou novas técnicas de utilização dos computadores e diversos
tipos de imagens gráficas capazes de descrever estruturas naturais.
• A palavra fractal refere-se a uma nova forma de descrever, calcular, e raciocinar
sobre formas irregulares, fragmentadas, quebradas, etc.
• Um fractal pode ser definido como uma forma ou padrão geométrico que se repete
indefinidamente (auto-similaridade) desenvolvido para representar formas e
superfícies que não podem ser representadas pela geometria clássica.
o Eles são usados especialmente na modelagem computacional de padrões e
estruturas irregulares da natureza.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 60
Tópico 3: Computação Evolutiva
1. A Origem das Espécies
• Darwin apresentou uma teoria para explicar o porque da existência de uma
variedade (diversidade) tão grande de seres vivos (organismos) na natureza. Sua
teoria apresenta a “seleção natural” como o principal mecanismo para a
manutenção das variações favoráveis à sobrevivência e reprodução de um
organismo em seu ambiente. O acúmulo destas variações favoráveis através da
seleção natural permite, ao longo de um grande intervalo de tempo, o
aparecimento de novos organismos tão distintos de seus antecedentes a ponto de
poderem ser caracterizados como uma nova espécie.
• Ao contrário do que muitos pensam, Darwin não apresentou uma teoria para a
evolução do homem. Isso ele fez muitos anos depois (C. Darwin, The Descent of
Man, and Selection in Relation to Sex, John Murray, London, 1871). Darwin
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 61
também não propôs uma teoria para a origem da primeira espécie, mas sim para o
surgimento de novas espécies partindo de outras.
• Darwin descreve
o “uma lei geral, resultando na melhoria de todos os seres orgânicos:
multiplique, varie, deixe os mais fortes sobreviverem e os mais fracos
morrerem.”
• Em resumo, a teoria Darwiniana propõe que a evolução é o resultado de uma (ou
mais) população de indivíduos sujeita aos seguintes processos:
o Reprodução com herança
o Variação
o Seleção natural
• Darwin resume os seguintes argumentos em defesa da teoria da seleção natural:
o Graduações na perfeição de qualquer órgão ou instinto existem ou poderiam
ter existido;
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 62
o Todos os órgãos e instintos são variáveis;
o Existe uma luta pela sobrevivência que leva a preservação das variações
favoráveis à vida e reprodução de um organismo;
o Os registros geológicos são imperfeitos.
• Uma das capacidades marcantes de Darwin foi a de apresentar uma gama de
argumentos que poderiam ser (certamente foram e ainda são) utilizados contra sua
própria teoria:
1. É possível que animais com estruturas e hábitos completamente distintos
sejam descendentes de um mesmo organismo?
2. Como órgãos apresentando extrema perfeição e complexidade (p. ex. os
olhos) podem ser gerados por seleção natural?
3. Porque existem órgãos que, aparentemente, possuem pouca importância?
4. Instintos podem ser adquiridos e modificados por seleção natural?
5. Porque espécies quando cruzadas são estéreis, enquanto variedades não são?
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 63
6. Se as espécies são descendentes de outras espécies por meio de inúmeras
pequenas variações, por que não encontramos formas transicionais em
registros geológicos?
2. A Ideia Perigosa de Darwin
• O filósofo Daniel Dennett é um ardente defensor da teoria Darwiniana, e seu livro
Darwin’s Dangerous Idea: Evolution and the Meanings of Life é considerado um
dos textos de ciência popular mais influentes da atualidade sobre o assunto.
• Dennett apresentou, dentre outras coisas, uma visão de engenharia (computação)
para a teoria da evolução proposta por Darwin que serve aos nossos propósitos.
• Dennett inicia seu livro descrevendo alguns dos diversos pontos de vista sobre o
mundo e suas origens antes da teoria Darwiniana. Por exemplo:
o Ele cita a hipótese GAIA para o universo – o universo como um (super-)
organismo;
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 64
o Ele também discute o filósofo Hume e sua teoria de que somente um Criador
Inteligente seria capaz de produzir toda a vida que observamos.
• Sob o ponto de vista de Dennett, Darwin provou através de sua teoria da seleção
natural, como um Criador Não-Inteligente é capaz de produzir vida.
• Sendo assim, a ideia de Darwin torna-se perigosa, pois ela vem confrontar não
apenas as visões filosóficas e científicas sobre a vida, mas também as crenças de
praticamente todo o mundo baseadas em uma entidade (p. ex. Deus) criador da
terra e criaturas.
• É importante ressaltar, entretanto, que não se trata de um livro que faz uma disputa
entre ciência e religião. Pelo contrário, ele trás uma discussão bastante rica sobre
como as duas podem caminhar juntas, sem uma ofuscar a outra e traçando limites
entre o que é mais adequadamente explicado por cada uma delas:
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 65
o “Nem todos os cientistas e filósofos são ateus, e muitos que possuem suas
crenças declaram que sua ideia de Deus pode viver em harmonia com, ou até
encontrar suporte, na estrutura de ideias de Darwin. Sob o ponto de vista
deles, Deus não é um criador antropomórfico, mas ainda assim um Deus que
vale a pena ser adorado, capaz de dar consolo e significado a vida. Outros
embasam sua preocupação em filosofias seculares, visões sobre o significado
da vida que mantêm o autocontrole sem precisar do conceito de um Ser
Supremo – que não seja o próprio Universo. Algo é sagrado para estes
pensadores, mas eles não chamam isso de Deus; eles chamam de, talvez,
Vida, ou Amor, ou Bondade, ou Inteligência, ou Beleza, ou Humanidade. O
que ambos os grupos compartilham, apesar das diferenças em suas mais
profundas crenças, é uma convicção de que a vida possui significado, que a
bondade importa.”
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 66
• Dennett apresenta, dentre outras coisas, uma visão algorítmica (sob uma
perspectiva de engenharia) para a teoria da evolução.
• Dennett dividiu a ideia de Darwin em duas partes principais:
o Uma que prova que as espécies atuais são descendentes “revisados” de
espécies anteriores, ou seja, as espécies evoluem;
o Outra que mostra como este processo evolutivo ocorre.
2.1. A Seleção Natural como um Processo Algorítmico
• Dennett define um algoritmo como um tipo de processo formal que pode ser
utilizado na obtenção de um resultado sempre que executado ou instanciado.
• A proposta de Darwin é dedutível a partir de um processo formal:
o Se um conjunto de condições é atendido, então um certo resultado pode ser
esperado.
• Dennett argumenta que uma visão algorítmica de diversos processos expande seu
escopo e fortalece ideias.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 67
• Como exemplo, ele cita o caso do algoritmo de “simulated annealing” ou
“recozimento simulado”, máquinas de Boltzmann e redes neurais de Hopfield.
• Sob uma perspectiva de engenharia, um dos aspectos importantes enfatizados por
Dennett é que, embora um bom conhecimento dos mecanismos detalhados de
funcionamento de diversos processos naturais seja importante, as ideias básicas
podem ser apresentadas de uma forma simples através de um processo abstrato e
uma terminologia comum, ou seja, um algoritmo.
• Para o caso da teoria da evolução através da seleção natural, os principais
processos algorítmicos envolvidos são:
o Reprodução com herança genética
o Variação genética
o Seleção natural
• Antes da teoria Darwiniana, a visão da vida era, em essência, vitalista:
o Deus, Mente, Projeto, Ordem, Caos, Nada.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 68
• Após Darwin, esta visão deixou de ser do tipo top-down (partindo de um criador
inteligente para os elementos mais simples), para uma visão bottom-up (partindo
de estruturas muito simples que evoluíram até os seres “superiores” de hoje).
• No intuito de justificar os processos vitais e reconciliar crença e ciência, muitos
pensadores e cientistas propuseram então uma visão de um “Deus” criador de leis
e processos que levam à origem e desenvolvimento da vida, ao invés de um
“Deus” responsável pela criação direta da vida.
2.2. Espaço de Buscas (Design Space)
• Dennett utiliza a terminologia espaço de projeto ou espaço de buscas para denotar
o espaço de todos os possíveis fenótipos que podem resultar a partir dos genótipos.
• De acordo com a teoria de Darwin, quando a seleção natural é imposta sobre as
variações ocorre uma movimentação mensurável no espaço de buscas. Esta
movimentação pode ser vista como um processo de pesquisa e desenvolvimento
(P&D) que pode resultar em uma busca ou acúmulo de projeto (otimização).
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 69
• Temos a intuição de que um trabalho de projeto é, de alguma forma, um trabalho
inteligente. Darwin propôs que esta inteligência pode ser quebrada em partes tão
pequenas e “estúpidas” de forma que elas não são reconhecidas como inteligentes,
mas que distribuídas no espaço e tempo sob uma forma algorítmica podem resultar
em estruturas extremamente complexas e perfeitas.
2.3. Biologia é Engenharia
• “O trabalho feito pela seleção natural é P&D, então biologia é fundamentalmente
engenharia, uma conclusão que...esclarece alguns de nossos mais profundos
enigmas. Ao adotarmos a perspectiva de engenharia, o conceito central em
biologia de função e o conceito central em filosofia de significado podem ser
explicados e unidos. Como nossa própria capacidade de responder e criar
significado – nossa inteligência – está embasada no nosso status de produtos
avançados de processos Darwinianos, a distinção entre inteligência artificial e
natural desaparece. Há diferenças importantes, entretanto, entre os produtos da
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 70
engenharia humana e os produtos da evolução devido a diferenças nos processos
que as geram. Apenas agora estamos começando a entender os grandiosos
processos da evolução, e isso porque estamos direcionando os produtos de nossa
própria tecnologia, computadores, para o entendimento das questões mais
relevantes.”
• Sendo assim, enxergar biologia como engenharia permite-nos relacionar função
com projeto. O funcionamento de toda estrutura carrega implicitamente
informações sobre o ambiente. Por exemplo:
o A posição dos órgãos no corpo de uma serpente (distribuição e locomoção);
o As asas de uma ave (aerodinâmica).
• Como vimos, a teoria da seleção natural permite uma movimentação no espaço de
buscas, mas em que direção (com qual objetivo)?
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 71
• Dennett, assim como Darwin, argumenta que a seleção natural atua de forma a
privilegiar organismos cujas variações resultam num maior grau de adaptabili-
dade ao ambiente.
• Sendo assim, a evolução pode ser comparada a um processo de busca que visa
otimizar (através dos processos de reprodução com herança genética, variação e
seleção natural) a estrutura orgânica dos seres vivos a seus ambientes.
3. Base Biológica
3.1. Hereditariedade
• A história da genética é fascinante, principalmente pela velocidade com que se
evoluiu de observações a demonstrações experimentais dos mecanismos
fundamentais envolvidos. Ideias de hereditariedade: datam de 6000 anos atrás.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 72
• Por volta de 500 a.C. (tempo de Aristóteles), filósofos gregos, propuseram que
“vapores” derivados de vários órgãos se uniam sob a ação vitalizadora do sêmen,
interpretado como sangue altamente purificado. Esta ideia influiu sobre a cultura
da humanidade por cerca de 2000 anos.
• Neste período, defendia-se a ideia de que o sexo era determinado pela procedência
do líquido seminal no homem: se do testículo direito ⇒ sexo masculino; se do
testículo esquerdo ⇒ sexo feminino.
• A mulher era vista apenas como uma “incubadeira” neste processo.
• 1672: descoberta do óvulo pelo holandês Graaf → as fêmeas de mamíferos
também apresentam ovulação!
• 1675: descoberta do espermatozóide pelo holandês Von Leeuwenhoeck.
• Homúnculo: ovistas e espermistas.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 73
• Epigênese: teoria atual segundo a qual a constituição dos seres se inicia a partir de
célula sem estrutura e se faz mediante sucessiva formação e adição de novas partes
que, previamente, não existem no ovo fecundado.
• 1866: ideias efetivas acerca da hereditariedade → monge agostiniano Gregor
Mendel (República Tcheca). Ele atacou o problema de modo simples e lógico,
escolheu material adequado, concentrou-se em poucas características contrastantes,
desenvolveu um programa de cruzamentos controlados, tratou os resultados de
forma eficiente e sugeriu fatores causais (hoje chamados de genes) como os
responsáveis pelos fenômenos observados.
• Ninguém havia chegado tão perto da compreensão real da hereditariedade (ficou
faltando apenas elucidar os mecanismos celulares envolvidos), mas foram
necessários mais de 30 anos para que a comunidade científica se desse conta da
importância e eficácia destes resultados.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 74
• É curioso constatar que um dos fatores que dificultou a assimilação dos resultados
de Mendel foi justamente o intenso debate reinante nos meios científicos após a
divulgação teoria de seleção natural de
Darwin.
• 1900: redescoberta das ideias de Mendel
(após sua morte), feitas de forma
independente por três pesquisadores.
• 1a lei de Mendel: Cada caráter é
condicionado por dois fatores. Eles
separam-se na formação dos gametas,
passando apenas um fator por gameta.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 75
3.2. Do Darwinismo ao Neodarwinismo
• Darwin sugeriu que para haver evolução é necessário que exista uma população de
indivíduos sujeita a:
1. Reprodução com herança;
2. Variação; e
3. Seleção Natural.
• Embora Darwin tenha considerado estas hipóteses como suficientes para explicar
a origem das espécies, hoje elas são aceitas apenas como suficientes para explicar
os processos ecológicos.
• Na época de Darwin (meados de 1800), entretanto, sabia-se muito pouco sobre os
processos de reprodução e, praticamente nada sobre genética. Além disso, não
havia um bom entendimento sobre como operam os mecanismos de seleção
natural.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 76
• A união da genética com diversos conceitos e teorias sobre seleção natural leva ao
que hoje é chamado de neodarwinismo.
Sobre a Seleção Natural
• O princípio da seleção natural indica que os indivíduos cujas variações se adaptam
melhor ao ambiente terão maior probabilidade de sobreviver e se reproduzir.
• A seleção natural é probabilística, e seu alvo primário é o indivíduo, embora seu
efeito resultante vai se manifestar na espécie como um todo. A espécie é o
beneficiário final do processo evolutivo.
3.3. Terminologia biológica
• A terminologia biológica a ser empregada representa uma analogia às entidades
biológicas reais, em que as entidades computacionais corresponderão
invariavelmente a estruturas bem mais simples que seus equivalentes biológicos.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 77
Célula
Órgão
Sistema
Organismo
Nível fisiológico
População
Comunidade
Ecossistema
Nível ecológico
Figura 7: Divisão hierárquica dos sistemas biológicos.
• Célula: unidade estrutural básica dos seres vivos, que se compõe de numerosas
partes, sendo as fundamentais a parede ou membrana, o protoplasma e o núcleo. A
célula é a menor unidade de matéria viva que pode existir de maneira
independente, e ser capaz de se reproduzir. Toda célula de um mesmo organismo
contém o mesmo conjunto de um ou mais cromossomos. Nos seres humanos, cada
célula somática (não germinativa) contém 23 pares de cromossomos.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 78
• Cromossomo: estrutura nucleoprotéica formada por uma cadeia de DNA, sendo a
base física dos genes nucleares, os quais estão dispostos linearmente. Cada espécie
apresenta um número característico de cromossomos. Quando os cromossomos são
arranjados em pares (cada cromossomo proveniente de um dos pais, embora haja
exceções), os respectivos organismos são chamados diploides. Organismos cujos
cromossomos não se apresentam aos pares são chamados haploides.
gene gene
gene
Figura 8: Ampliação de um organismo para enfocar o material genético. Organismo → célula → cromossomo → gene → DNA.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 79
• Genes: blocos funcionais de DNA, os quais codificam uma proteína específica. É a
denominação que damos hoje ao fator mendeliano. Cada gene está localizado em
uma posição (locus) particular do cromossomo. Quando dois genes se comportam
segundo a 1a lei de Mendel, são ditos alelos, e se encontram no mesmo locus de
dois cromossomos homólogos. Para exemplificar, é possível pensar um gene como
o responsável pela definição de uma característica do indivíduo, como a cor dos
olhos. As diferentes colorações (azul, castanho, etc.) correspondem a alelos.
• Como muitos organismos apresentam células com mais de um cromossomo, o
conjunto de todos os cromossomos compõe o material genético do organismo,
denominado genoma.
A B A A B A B B A B
Cromosomo diagramático Locus
Alelos: {A, B}
Gene
Figura 9: Ilustração pictórica de um cromossomo salientando o locus, os genes e os alelos.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 80
3.4. Fenótipo x Genótipo
• 1909: introdução dos conceitos de genótipo e fenótipo.
• Genótipo: representa o conjunto específico de genes do genoma. Neste caso,
indivíduos com o mesmo genoma são ditos terem o mesmo genótipo.
• Fenótipo: é a manifestação do genótipo no comportamento, fisiologia e morfologia
do indivíduo, como um produto de sua interação com o ambiente.
• A seleção natural opera somente na expressão fenotípica do genótipo.
• Para modelar este fenômeno, foi estendido um resultado da literatura baseado no
emprego de dois espaços de estados:
1. G: espaço genotípico (representa a informação);
2. P: espaço fenotípico (representa o comportamento).
• que permitem a definição de quatro funções, onde I representa um conjunto de
efeitos do ambiente (entrada), na forma:
• f1: I × G → P (epigênese);
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 81
• f2: P → P (seleção); • f3: P → G (sobrevivência genotípica); • f4: G → G (variação genética). • A adaptação evolutiva ocorre a partir da aplicação iterativa dessas funções.
Espaço genotípico G
Espaço fenotípico F
g 1
f 1
p 1
f 2
p 2
f 3
g 2 f 4 1 g ′
Figura 10: Evolução explicada através de mapeamentos entre os espaços genotípico e
fenotípico.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 82
3.5. Adaptação evolutiva
• Sob um processo de competição por recursos limitados e seleção natural,
indivíduos mais bem adaptados têm uma maior probabilidade de sobreviver e
propagar seu material genético. A adaptação (fitness) pode ser definida como a
probabilidade de sobrevivência e reprodução (viabilidade), ou então como uma
função do número de descendentes que o organismo produziu (fertilidade).
3.6. Reprodução assexuada e sexuada
• Embora os detalhes da evolução biológica ainda não estejam completamente
compreendidos, existem alguns aspectos fundamentados em fortes evidências
experimentais:
1. A evolução é um processo que opera sobre cromossomos e não sobre
organismos;
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 83
2. A seleção natural é o mecanismo que relaciona cromossomos com a eficiência
da entidade que eles representam, permitindo assim que organismos mais bem
adaptados ao meio ambiente tenham uma taxa maior de reprodução;
3. O processo evolutivo se dá durante o estágio reprodutivo. Dentre os fenômenos
que podem ocorrer neste estágio é possível citar a mutação e a recombinação
genética (crossover);
4. O processo evolutivo não possui memória direta.
• Reprodução assexuada: na natureza, a codificação da informação genética é
realizada de modo a admitir reprodução assexuada. Neste caso, os filhos
apresentam quase sempre a mesma informação genética do pai. Um número muito
grande de organismos naturais se reproduz de forma assexuada, incluindo a maior
parte das bactérias.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 84
Rep licação
Hap ló ide
D ivisão
M itose
Figura 11: Reprodução assexuada em cromossomos haploides.
• Reprodução sexuada: neste caso, os filhos apresentam uma informação genética
que corresponde a uma combinação da informação genética de seus pais. Na
reprodução sexuada diplóide, cada pai fornece uma célula haploide denominada
gameta, formada por cromossomos resultantes da recombinação dos pares de
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 85
cromossomos existentes nos respectivos pais. Os cromossomos presentes nos
gametas fornecidos pelos pais se emparelham para gerar uma nova célula diploide.
Replicação
Diplóide
Separação dos homólogos
Meiose
Ovo
Esperma
Zigoto diplóide
Gametas haplóides
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 86
• Durante a reprodução sexuada, os cromossomos estão sujeitos à recombinação.
• Recombinação ou crossover: consiste na troca aleatória de material genético entre
dois cromossomos.
Figura 12: Recombinação genética (crossover) entre dois cromossomos.
3.7. Mutação
• Tanto na reprodução assexuada como na sexuada, o processo de cópia do material
genético dos pais está sujeito a erros, denominados mutações. Uma mutação
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 87
corresponde então à troca aleatória, no processo de cópia do material genético, de
um nucleotídeo por outro.
• Nucleotídeo: unidade elementar do DNA.
A B A C B A B C A B
Mutação pontual
A B A B B A B C A B
A B A C B A B C A B
Deleção perdido
A B A B B A B C A + B
A B A C B A B C A B
Inversão
A C A B B A B B A B
Figura 13: Ilustração de diferentes tipos de mutação.
• A mutação é uma consequência inescapável da existência de sistemas que se
reproduzem continuamente em um universo com diferencial de entropia positivo,
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 88
sendo um mecanismo importante de implantação da diversidade entre os
indivíduos.
• Em estágios iniciais do processo evolutivo natural, as taxas de mutação podem ter
sido muito maiores. O fato de que as taxas de mutação atuais nos organismos vivos
são muito baixas na maioria dos casos observados pode ser devido a estes
organismos, como espécie, terem atingido um estado de estacionariedade em
relação às condições ambientais atuais. Neste caso, o nível de evolução orgânica
atual não deve servir de referência para qualquer tipo de implementação
computacional de algoritmo evolutivo.
• Teoricamente, as taxas ótimas de mutação são inversamente proporcionais ao
número de variáveis de decisão envolvidas e diretamente proporcionais à distância
do ótimo. A probabilidade de ocorrência de mutação deve ser inversamente
proporcional ao tamanho da população (De Jong, 1975). Existem estratégias que
incorporam a definição da taxa de mutação ao próprio genótipo.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 89
4. Resolução de Problemas via Métodos de Busca
• Sob a perspectiva de computação evolutiva a ser abordada neste curso, um
problema pode ser entendido como uma coleção de informações a partir das quais
algo deverá ser extraído ou inferido.
• Exemplos:
o Função numérica a ser otimizada: f(x) = x3 + x + 1
o Sequenciamento de tarefas: dado um conjunto de máquinas, operadores,
jornadas de trabalho, etc., qual configuração leva a uma melhor distribuição
tarefa/operador?
• O processo de resolução do problema corresponderá a tomada de ações (passos),
ou sequências de ações (passos), que levam a um desempenho desejado, ou
melhoram o desempenho relativo de soluções candidatas.
• Este processo de procura por um desempenho desejado ou um melhor
desempenho é denominado de busca.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 90
• Um algoritmo de busca terá como entrada um problema e retornará como saída
uma solução.
• Neste caso, uma ou mais soluções candidatas podem ser utilizadas no processo de
busca. Os métodos que utilizam mais de um indivíduo no processo de busca são
denominados de métodos populacionais (p.ex., algoritmos evolutivos).
• O primeiro passo na resolução de um problema é a formulação do problema, que
irá depender das informações disponíveis.
• Três conceitos são fundamentais na resolução de problemas: representação,
especificação de um objetivo, e definição de uma função de avaliação.
• Escolha de uma representação
o Corresponde a codificação de soluções candidatas, que por sua vez sofrerão
algum tido de manipulação. Sua interpretação irá implicar no espaço de
busca e sua dimensão. O espaço de busca é definido pela sua configuração
(estado) inicial e pelo conjunto de possíves configurações (estados).
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 91
• Especificação de um objetivo
o Descrição de uma meta. Trata-se de uma expressão (e não uma função)
matemática que descreve o problema.
• Definição de uma função de avaliação
o Função que retorna um valor específico indicando a qualidade (relativa) de
uma solução candidata particular, dada a representação adotada. Trata-se
geralmente de um mapeamento do espaço de soluções candidatas, dada a
representação adotada, para um conjuto de números, onde cada elemento do
espaço de soluções candidatas possui um valor numérico indicativo de sua
qualidade. Geralmente o objetivo sugere uma função de avaliação particular.
• Exemplo: Suponha que seu objetivo seja maximizar a seguinte função de uma
única variável: 6)9.0/)1.0((2 )5(sen2)(
2
xxg x π−−= , x ∈ [0,1].
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 92
o Representação: suponha também que você irá representar a variável x
utilizando uma cadeia binária de comprimento l. Sendo assim, o espaço de
busca corresponde a todas as cadeias binárias de comprimento l, e portanto
possui dimensão 2l.
o Objetivo: max g(x), x ∈ [0,1].
o Função de avaliação: a avaliação da própria função serve para indicar a
qualidade relativa dos candidatos a solução.
1.1 Definição de um Problema de Busca
• Dado um espaço de busca S e uma região F factível deste espaço, F ⊆ S, encontre
x ∈ F tal que
eval(x*) ≤ eval(x), ∀x ∈ F
• Trata-se assim, de um problema de minimização, onde valores menores de x são
considerados de qualidade superior.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 93
• O ponto x* que satisfaz a condição acima é dito ser o ótimo global ou mínimo
global do problema.
• Ao contrário do ótimo global, uma solução x ∈ F é dita ser um ótimo local em
relação a uma vizinhança N de um ponto y, se e somente se
eval(x) ≤ eval(y), ∀ y ∈ N(x),
onde N(x) = {y ∈ S : dist(x,y) ≤ ε}, dist é uma função que determina a distância
entre x e y, e ε é uma constante positiva.
• A função de avaliação define uma superfície de resposta, que será posteriormente
denominada de superfície de fitness (ou adaptação), semelhante a uma topografia
de vales e picos.
• Sendo assim, a determinação de soluções ótimas para um problema corresponde
a uma busca por picos (assumindo maximização) em uma superfície de adaptação
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 94
• É importante ter em mente que esta superfície pode apresentar uma grande
quantidade de picos, platôs, vales, etc., o que dificulta o processo de busca e a
determinação de ótimos locais e globais.
• Métodos de busca eficientes devem ser capazes de fornecer um equilíbrio entre
dois objetivos aparentemente conflitantes: busca local (exploitation) e exploração
do espaço de busca (exploration).
5. Algoritmos Genéticos
• Os algoritmos genéticos (AG’s) foram formalizados por J. Holland em 1975, da
Universidade de Michigan.
• Metas:
o Abstrair e rigorosamente explicar os processos adaptativos em sistemas naturais
o Desenvolver simulações em computador que retenham os mecanismos originais
encontrados em sistemas naturais
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 95
• Características principais:
o existência de 2 espaços de trabalho: espaço genotípico e espaço fenotípico
o AG’s fazem busca sobre uma população de pontos e não sobre um único ponto
o AG’s fazem uso de descrições genéricas do que se quer ver presente na solução,
através de funções de fitness (funções de avaliação)
o AG’s utilizam regras de transição probabilísticas, e não regras determinísticas
• Algoritmo Genético Clássico:
o população de tamanho fixo e estrutura de dados do tipo cadeias binárias
o seleção natural proporcional ao fitness via algoritmo Roulette Wheel
o crossover simples (crossover de um ponto)
o mutação pontual
5.1. Representação (Estrutura de Dados)
• Cadeias binárias de comprimento fixo.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 96
1 0 0 0 1 1 0 0 1 0
Cromossomo em um GA clássico Locus
Alelos: {0,1}
Gene
Figura 14: Cadeia binária de comprimento l = 10 correspondente à estrutura de dados de um GA clássico.
• O problema a ser resolvido é capturado em uma função objetivo que indica o
fitness (adaptabilidade) de cada candidato a solução.
5.2. Mecanismo de Seleção
• A seleção no GA clássico é proporcional ao fitness e é geralmente implementada
utilizando um algoritmo denominado de Roulette Wheel.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 97
• Exemplo:
N Cromossomo Fitness Graus 1 0001100101010 6.0 180 2 0101001010101 3.0 90 3 1011110100101 1.5 45 4 1010010101001 1.5 45
0
1
0.25
0.75
0.5
1
2
3
4
• Implementação: gerador de números pseudo-aleatórios com distribuição uniforme.
• Note que este procedimento permite a perda (“morte”) do melhor indivíduo e
também permite que um indivíduo seja selecionado mais do que uma vez.
• As probabilidades de reprodução de cada indivíduo irão resultar na geração de
uma nova população composta por indivíduos probabilisticamente selecionados a
partir da população atual.
• Os indivíduos selecionados irão gerar probabilisticamente filhos (descendentes)
através de operadores genéticos específicos, particularmente, crossover e mutação.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 98
5.3. Operador de Recombinação (Crossover Simples)
• Nos sistemas biológicos o crossover pode ocorrer durante a reprodução sexuada
permitindo a troca de material genético entre dois indivíduos.
• Este processo pode ser abstraído como um operador geral para as estruturas de
dados do tipo cadeia binária utilizada no GA clássico:
o Duas cadeias x = x1x2…xl e y = y1y2…yl de comprimento l são selecionadas com
probabilidade de crossover pc.
o Um número r ∈ {1,2,…,l−1} indicando o ponto de cruzamento (crossover) é
selecionado.
o Duas novas cadeias são formadas a partir de x e y através da troca de um
conjunto de atributos à direita da posição r, resultando em x’ = x1…xiyi+1…yl e
y’ = y1…yixi+1…xl.
• Os dois novos cromosomos gerados x’ e y’ são os filhos (offspring) de x e y.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 99
1 0 0 0 1 1 1 0
1 1 0 1 0 0 1 1
Cromossomo pai 1
Cromossomo pai 2
Cromossomo filho 1
Cromossomo filho 2
Ponto de crossover, (r = 5)
1 0 0 0 0 0 1 1
1 1 0 1 1 1 1 0
Crossover de ponto único
Figura 15: Crossover de um único ponto para cadeias de comprimento l = 8.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 100
5.4. Operador de Mutação
• Em genética a mutação pontual é um processo no qual um alelo de um gene é
aleatoriamente substituído (ou modificado) por outro, resultando em um novo
cromossomo.
• Geralmente existe uma baixa probabilidade de mutar cada gene de um
cromossomo.
• Isso significa que cada bit na população P é operado da seguinte forma:
o Os números r,…,u indicando as posições que irão sofrer mutação são
determinados aleatoriamente de forma que cada posição possui uma pequena
probabilidade pm de sofrer mutação independente das outras posições.
o Uma nova cadeia x’ = x1…xr…xu…xl é gerada onde xr…xu são determinadas
aleatoriamente partindo do conjunto de alelos para cada gene. No caso de
cadeias binárias, se uma posição possui alelo ‘0’, então ela se torna ‘1’ e vice-
versa.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 101
GERAÇÃOATUAL
011001010100001110011010010010010100100100100101000101001001010010100101001001001000101000101101010101001001010010111010101011111010101001010100010100
001010010111010110011010010010
010100100100100011001010100001
010010100101001001001000101000
011001010100001001010010111010
101011111010101001010100010100
00101 001011101011001 1010010010
0101001001 001000110010101 00001
010 010100101001001 001000101000
01100101 010000100101001 0111010
10 101111101010100 1010100010100
00101 101001001011001 0010111010
0101001001 000010110010101 00100
010 001000101000001 010100101001
01100101 011101000101001 0100001
10 101010001010000 1011111010101
001011010010010110010010111010010100100100001011001010100100010001000101000001010100101001011001010111010001010010100001101010100010100001011111010101
001011010010010110000010111010010100100100001011001010101100010001000101000001010100101001011001010111010001110010100001101010100010100001011111010001
PRÓXIMAGERAÇÃO
Seleção depares viaRouletteWheel
Crossover
Mutação
Determinaçãodos pontos de
Crossover
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 102
• Problemas com o algoritmo clássico:
o política de reprodução/seleção permite a perda do melhor indivíduo
o posição dos genes no cromossomo influi na probabilidade de permanecerem no
mesmo cromossomo após crossover
o dificuldades na codificação binária de números reais e outros tipos de
problemas
• Algumas estratégias de solução:
o mecanismos alternativos de seleção
o crossover uniforme
o codificação em arranjos de números reais ou uma estrutura de dados adequada
ao problema em questão
6. Algoritmo Genético Modificado
o geração de sub-populações por meio da aplicação de operadores genéticos e
outros operadores sobre membros da geração atual
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 103
o avaliação (cálculo do fitness) e ordenação da população intermediária
o seleção para nova geração
AV
AL
IAÇ
ÃO
E
O
RD
EN
AÇ
ÃO
GERAÇÃOATUAL
SUB-POPULAÇÕES
SE
LE
ÇÃ
O
PRÓXIMAGERAÇÃO
POPULAÇÃOINTERMEDIÁRIA
MELHOR INDIVÍDUO
OP
ER
AÇ
ÕE
S
(fitness jádeterminado)
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 104
7. Da Biologia para a Computação Evolutiva
Biologia (Genética) Algoritmos Genéticos
Cromossomo Estrutura de dados
Gene Elemento ocupando uma dada posição da estrutura de dados
Lócus Posição ocupada por um gene em uma estrutura de dados
Alelo Variações de um elemento que podem ocupar um lócus
Crossover Troca de partes entre estruturas de dados
Mutação Substituição de um ou mais genes
Fitness Valor que indica a qualidade de um indivíduo em relação ao problema a ser resolvido
Seleção Processo que permite a sobrevivência e reprodução de indivíduos
Genótipo Codificação de um candidato a solução
Fenótipo Valor decodificado do cromossomo
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 105
8. Escopo da Computação Evolutiva
• Aplicações de computação evolutiva podem ser encontradas em diversas áreas.
Por conveniência, elas serão divididas aqui em cinco grandes áreas não exaustivas
e não mutuamente exclusivas:
o Planejamento
o Projeto (Design)
o Simulação e identificação
o Controle
o Classificação
8.1. Aplicações em Planejamento
• Roteamento:
o Caixeiro viajante: qual a melhor ordem de cidades a serem visitadas dado o
custo entre as cidades?
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 106
o Roteamento de veículos: generalização do caixeiro viajante para mais de um
veículo (caixeiro).
o Problema de transporte: um único material deve ser distribuído para um
número de clientes partindo de mais de um depósito.
o Robótica: um caminho factível, seguro e sem colisões deve ser percorrido por
um robô.
• Sequenciamento de tarefas (scheduling): desenvolver um plano para executar uma
determinada quantidade de tarefas em um período de tempo, onde os recursos são
limitados, existem restrições e pode haver mais do que um objetivo a ser
otimizado.
o Job shop scheduling: são dadas uma planta de manufatura e (diferentes tipos de)
máquinas. Existe uma quantidade de trabalhos a serem executados, cada um
composto por um conjunto de tarefas. Cada tarefa requer um tipo específico de
máquina durante um intervalo de tempo, e as tarefas devem ser executadas em
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 107
uma determinada ordem. Qual sequência (scheduling) permite que todas as
tarefas sejam executadas com custo mínimo?
o Tabelas de horários – agenda (Timetabling): desenvolver uma agenda de
provas, aulas, organização de horários de trabalho, etc.
o Processamento computacional: alocação de processos computacionais em
diferentes estações ou processadores, políticas de substituição de memória, etc.
o Empacotamento (Knapsack): dado um pacote (p.ex. mochila, caixa, etc.) com
uma determinada capacidade e um conjunto de itens cada um com seu tamanho,
peso, etc., encontre o conjunto máximo de itens que pode ser acomodado no
pacote.
8.2. Aplicações em Projeto
• Filtros: projeto de sistemas eletrônicos ou digitais que implementam uma
determinada resposta em frequência, tanto resposta ao impulso finito (FIR) quanto
ao impulso infinito (IIR).
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 108
• Processamento de sinais: otimização do projeto de sistemas de processamento de
sinais e desenho de circuitos integrados.
• Sistemas inteligentes: definição de arquitetura e/ou parâmetros de redes neurais
artificiais, sistemas nebulosos, autômatos celulares, e sistemas imunológicos
artificiais, dentre outros.
• Aplicações em engenharia: redes de telecomunicações, projetos estruturais,
projeto de aeronaves, projeto de estruturas espaciais, projeto de reatores químicos,
teste e diagnóstico de falhas, etc.
8.3. Aplicações em Simulação e Identificação
• A simulação envolve a determinação de como o sistema irá se comportar baseado
em um modelo ou projeto deste sistema.
o Determinação de equilíbrio de sistemas químicos.
o Determinação de estruturas de proteínas, etc.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 109
• A identificação envolve a determinação do projeto de um sistema dado seu
comportamento.
o Determinação de polos e zeros de um sistema, etc.
8.4. Aplicações em Controle
• Duas abordagens distintas: controle on-line e off-line.
o Off-line: um algoritmo evolutivo é utilizado para projetar um controlador que é
depois utilizado para controlar um sistema.
o On-line: um algoritmo evolutivo é utilizado como uma parte ativa do
controlador.
• Uma vantagem de um controlador evolutivo é que ele pode ser utilizado em
ambientes dinâmicos.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 110
8.5. Aplicações em Classificação
• Sistemas classificadores têm sido utilizados como partes de outros sistemas como,
por exemplo, sistemas de controle.
• Algoritmos evolutivos também têm sido aplicados a problemas de jogos (game
playing).
• Muitas outras aplicações de AEs existem em classificação como, por exemplo:
o Economia, biologia, processamento de imagens, mineração de dados, etc.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 111
Tópico 4: Redes Neurais Artificiais
1. Base Biológica
• Como o cérebro processa informações? Como ele é organizado? Quais são os
mecanismos envolvidos no funcionamento cerebral?
• Estas são apenas algumas das perguntas mais desafiadoras para a ciência.
• O cérebro é especialista em desempenhar funções como reconhecimento de
padrões, controle motor, percepção, inferência, intuição, adivinhações, etc.
Entretanto, o cérebro também é “preconceituoso”, lento, impreciso, realiza
generalizações incorretas e, acima de tudo, é geralmente incapaz de explicar suas
próprias ações (embora este seja um requisito cultural e não funcional).
• Os neurônios são considerados como as unidades básicas de processamento do
cérebro.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 112
• De modo análogo, modelos simplificados dos neurônios biológicos constituem as
unidades básicas de processamento das redes neurais artificiais (RNAs).
• Os neurônios biológicos estão conectados uns aos outros através de conexões
sinápticas. Acredita-se que a capacidade das sinapses serem moduladas é a
principal base para todos os processos cognitivos, como percepção, raciocínio e
memória.
• Sendo assim, algumas informações essenciais sobre neurônios, sinapses e
organização estrutural são importantes para o projeto de RNAs.
1.1. O Sistema Nervoso
• Todos os organismos multicelulares possuem algum tipo de sistema nervoso, cuja
complexidade e organização varia de acordo com o tipo de animal.
• Mesmo os vermes, lesmas e insetos são capazes de adaptar seu comportamento e
armazenar informações em seus sistemas nervosos.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 113
• O sistema nervoso é responsável por dotar o organismo, através de entradas
sensoriais, de informações sobre o estado do ambiente no qual ele vive e se move.
A informação de entrada é processada, comparada com as experiências passadas, e
transformada em ações apropriadas ou absorvidas sob a forma de conhecimento.
• O sistema nervoso pode ser organizado em diferentes níveis: moléculas, sinapses,
neurônios, camadas, mapas e sistemas.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 114
h
Brain
Network of neurons
Neuron
Synapse
Figura 16: Níveis organizacionais do sistema nervoso.
• O processo de transmissão de sinais entre neurônios é central para a capacidade de
processamento de informação do cérebro.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 115
• Uma das descobertas mais empolgantes em neurociência foi a de que a efetividade
da transmissão de sinais pode ser modulada, permitindo o cérebro se adaptar a
diferentes situações.
• A plasticidade sináptica, ou seja, a capacidade das sinapses sofrerem
modificações, é o ingrediente chave para o aprendizado da maioria das RNAs.
• Os neurônios podem receber e enviar sinais a vários outros neurônios.
• Os neurônios que enviam sinais, chamados de neurônios pré-sinápticos ou
“enviadores”, fazem contato com os neurônios receptores ou pós-sinápticos em
regiões especializadas denominadas de sinapses.
• A sinapse é, portanto, a junção entre o axônio de um neurônio pré-sináptico e o
dendrito ou corpo celular de um neurônio pós-sináptico (ver figura).
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 116
Cell body (som a)
Axon
Synaptic c lefts
Dendrites
Axon hillock
M ielin sheath
Figura 17: Representação pictórica do neurônio biológico.
• A capacidade de processamento de informação das sinapses permite que elas
alterem o estado de um neurônio pós-sináptico, eventualmente gerando um pulso
elétrico, denominado potencial de ação, no neurônio pós-sináptico.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 117
• A ativação de um neurônio ocorre apenas quando seu potencial de membrana é
maior do que um dado limiar (threshold).
• Portanto, um neurônio pode ser visto como um dispositivo capaz de receber
estímulos (de entrada) de diversos outros neurônios e propagar sua única saída,
função dos estímulos recebidos e do estado interno, a vários outros neurônios.
• Os neurônios podem ter conexões de sentido positivo (feedforward) e/ou de
sentido negativo (feedback) com outros neurônios, ou seja, as conexões podem ter
um único sentido ou serem recíprocas.
• Diversos neurônios interconectados geram uma estrutura em rede conhecida como
rede neural.
• Um agrupamento de neurônios interconectados pode exibir comportamentos
complexos e uma capacidade de processamento de informação que não pode ser
predita tomando-se cada neurônio individualmente.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 118
• Uma característica marcante das redes neurais é a representação distribuída de
informação e seu processamento paralelo.
• Muitas áreas do cérebro apresentam uma organização laminar de neurônios.
Lâminas são camadas de neurônios em contato com outras camadas.
• Um dos arranjos mais comuns de neurônios é uma estrutura bidimensional em
camadas organizada através de um arranjo topográfico das respostas de saída. O
exemplo mais conhecido deste tipo de estrutura é o córtex humano.
• O córtex corresponde à superfície externa do cérebro; uma estrutura bidimensional
com vários dobramentos, fissuras e elevações.
• Diferentes partes do córtex possuem diferentes funções (ver figura).
• Em geral os neurônios do córtex estão organizados em camadas distintas, que são
subdivididas em camada de entrada, camadas intermediárias ou escondidas e
camada de saída.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 119
Figura 18: Estrutura em camadas do córtex.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 120
• A camada de entrada recebe os sinais sensoriais ou de entrada, a camada de saída
envia sinais para outras partes do cérebro e as camadas intermediárias recebem
(enviam) sinais de (para) outras camadas do córtex. Isso significa que as camadas
intermediárias nem recebem entradas diretamente e nem produzem uma saída do
tipo motora, por exemplo.
• Um princípio organizacional importante em vários sistemas sensoriais e motores é
o mapa topográfico.
o Por exemplo, neurônios em áreas visuais do córtex estão arranjados
topograficamente, no sentido de que neurônios adjacentes possuem campos de
recepção visual adjacentes e, coletivamente, eles constituem um mapa da retina.
o Obs: Como neurônios vizinhos ocupam-se de representações similares, mapas
topográficos constituem uma forma parcimoniosa de organização do cérebro (há
economia de conexões, por exemplo).
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 121
Figura 19: Córtex e suas partes.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 122
• A organização estrutural em redes, mapas topográficos e camadas são todos casos
especiais de um princípio mais geral: a exploração das propriedades estruturais e
espaços-temporais para o processamento e armazenagem de informação.
1.2. Base Biológica e Física da Aprendizagem e Memória
• O sistema nervoso está continuamente sofrendo modificações e atualizações.
Virtualmente todas as suas funções, incluindo percepção, controle motor,
regulação térmica e raciocínio, são modificadas por estímulos.
• Observações comportamentais permitiram verificar graus de plasticidade do
sistema nervoso: existem mudanças rápidas e fáceis, mudanças lentas e profundas,
e mudanças mais permanentes (porém ainda modificáveis).
• Em geral, a aprendizagem global é resultado de alterações locais nos neurônios.
• Existem diversas formas de modificações possíveis em um neurônio: o Dendritos podem nascer, assim como também podem ser removidos
o Alguns dendritos podem se esticar ou ser encolhidos permitindo ou eliminando, respectivamente, a conexão com outras células
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 123
o Novas sinapses podem ser criadas ou sofrerem alterações
o Sinapses também podem ser removidas o Todo neurônio pode morrer e também se regenerar.
• Toda esta vasta gama de adaptação estrutural pode ser convenientemente
condensada simplesmente referindo-se às sinapses, pois estas modificações
envolvem a modificação sináptica de forma direta ou indireta.
• Sendo assim, a aprendizagem via modulação sináptica é o mecanismo mais
importante para as redes neurais, sejam elas biológicas ou artificiais.
• A modulação sináptica poderá depender de mecanismos de adaptação de neurônios
individuais e de redes neurais como um todo.
2. Redes Neurais Artificiais
• Uma RNA pode ser definida como sendo uma estrutura de processamento (rede),
passível de implementação em dispositivos eletrônicos, composta por um número
de unidades interconectadas (neurônios artificiais), sendo que cada unidade
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 124
apresenta um comportamento específico de entrada/saída (computação local),
determinado pela sua função de transferência, pelas interconexões com outras
unidades, dentro de um raio de vizinhança, e possivelmente pelas entradas
externas.
• Uma rede neural artificial é um circuito composto por uma grande quantidade de
unidades simples de processamento inspiradas no sistema neural.
• Uma RNA é um sistema massivamente paralelo e distribuído, composto por
unidades de processamento simples que possuem uma capacidade natural de
armazenar e utilizar conhecimento.
• As RNAs apresentam diversas características em comum com o sistema nervoso:
o O processamento básico de informação ocorre em diversas unidades simples
denominadas de neurônios artificiais ou simplesmente neurônios (ou nós);
o Os neurônios estão interconectados gerando redes de neurônios, ou redes
neurais;
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 125
o A informação (sinais) é transmitida entre neurônios através de conexões ou
sinapses;
o A eficiência de uma sinapse, representada por um peso associado, corresponde
à informação armazenada pelo neurônio e, portanto, pela rede neural; e
o O conhecimento é adquirido do ambiente através de um processo de
aprendizagem que é, basicamente, responsável por adaptar os pesos das
conexões aos estímulos recebidos do ambiente.
• Uma característica importante das RNAs é o local onde o conhecimento está
armazenado. Nos casos mais simples, este conhecimento é armazenado nos pesos
das conexões entre neurônios.
• Esta característica tem grandes implicações para a capacidade de processamento e
aprendizagem da rede.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 126
• A representação de conhecimento é feita de forma que o conhecimento
necessariamente influencie a forma de processamento da rede, ou seja, o seu
comportamento de entrada-saída.
• Se o conhecimento está armazenado nos pesos das conexões, então o processo de
aprendizagem corresponde a identificar um conjunto apropriado de pesos de
forma que a rede se comporte como desejado.
• Esta característica possui duas implicações importantes para as RNAs: a
possibilidade de desenvolvimento de técnicas de aprendizagem, e a representação
distribuída de conhecimento.
• Existem tipos de redes neurais cujo treinamento (ou projeto) é mais complicado do
que a simples determinação de conjuntos apropriados de pesos sinápticos.
• Uma rede neural artificial pode ser projetada através de:
1. Uma definição ou escolha de um conjunto de neurônios artificiais;
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 127
2. A definição ou escolha de um padrão de conectividade entre os neurônios, ou
seja, de uma arquitetura para a rede; e
3. A definição de um método de determinação dos parâmetros livres da rede,
denominado de algoritmo de aprendizagem ou treinamento.
• Embora seja possível projetar uma rede neural a partir da definição do papel
(computação global) que ela deve desempenhar, combinando-se os efeitos
individuais de todos os neurônios, uma rede neural usualmente se adapta para
atingir a funcionalidade desejada a partir de uma ou mais estratégias de
aprendizado, as quais vão atuar junto a parâmetros configuráveis da rede neural.
• É fundamental, portanto, que a rede neural possua meios de interagir com o
ambiente.
• Cada rede neural artificial representa uma arquitetura de processamento
específica, havendo uma família de arquiteturas, cada qual adequada para
funcionalidades específicas.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 128
• A diversidade de arquiteturas tem aumentado muito, sendo que as últimas
gerações de redes neurais já não podem ser caracterizadas por apresentarem um
grande número de unidades e conexões, com funções de transferência simples e
idênticas para todas as unidades.
2.1. O Neurônio Genérico em RNAs
• No neurônio biológico, os sinais de entrada chegam através de canais localizados
nas sinapses, permitindo a entrada e saída de íons. Um potencial de membrana
aparece como resultado da integração dos sinais de entrada, que irão determinar se
o neurônio irá produzir um sinal de saída (spike, pulso, ou potencial de ação) ou
não. O potencial de ação resulta na liberação de neurotransmissores na sinapse
sempre que o potencial de membrana for superior a um determinado limiar
(threshold).
• O efeito líquido de todos estes processos biológicos que ocorrem nas sinapses é
representado por um peso associado.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 129
• O elemento computacional básico empregado na maioria das RNAs é um
integrador. Trata-se de um elemento processador de informações que é
fundamental para a operação das RNAs.
• As principais partes do neurônio artificial genérico são:
o as sinapses, caracterizadas pelos seus pesos associados;
o a junção somadora; e
o a função de ativação.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 130
uk yk
Σ
x1
x2
xm
f(uk)
Junção somadora
Função de ativação
Saída
…
wk1 wk2
wkm
bk Limiar(bias)
Pesos das conexões
Entradas
Figura 20: Neurônio artificial genérico.
• Nesta representação, o primeiro subscrito k do peso sináptico wkj corresponde ao
neurônio pós-sináptico, e o segundo subscrito corresponde à sinapse ligada a ele.
• A junção somadora soma todos os sinais de entrada ponderados pelos pesos das
conexões.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 131
• Assumindo os vetores de entrada e de pesos como sendo vetores coluna, esta
operação corresponde ao produto interno do vetor de entradas x pelo vetor de
pesos wk, mais o limiar bk. Genericamente, trata-se de uma combinação linear das
entradas pelos pesos associados, mais o limiar bk.
• A função de ativação é geralmente utilizada com dois propósitos: limitar a saída do
neurônio e introduzir não linearidade no modelo.
• O limiar bk tem o papel de aumentar ou diminuir a influência do valor da entrada
líquida para a ativação do neurônio k.
• Matematicamente, a saída do neurônio k pode ser descrita por:
+== ∑
=k
m
jjkjkk bxwfufy
1
)( ou
== ∑
=
m
jjkjkk xwfufy
0
)(,
onde x0 é um sinal de entrada de valor 1 e peso associado wk0 = bk:
• Exemplos de função de ativação:
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 132
( )
≤
<<
≥
=
0p se 0
1p0 se
1p se 1
k
kk
k
k pf
u
uu
u
u com p constante e positivo.
0
0.2
0.4
0.6
0.8
1
a)1/p0
b)1/p0
p
0
Função semi-linear (a) e sua derivada em relação à entrada interna (b)
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 133
kk
k
pp
p
kee
efy
uu
u
u−+
=+
==1
1
1)( ( ) 01 >−= kk
k
py
uuu∂∂
0
0.2
0.4
0.6
0.8
1
-5 0 50
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
-5 0 5
a) b)
p=0.8
p=1.5
p=3
p=0.8
p=1.5
p=3
Função logística (a) e sua derivada em relação à entrada interna (b)
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 134
kk
kk
pp
pp
kkee
eepfy
uu
uu
uu−
−
+
−=== )tanh()(
( ) 01 2 >−= k
k
py
uu∂∂
-1
-0.5
0
0.5
1
-5 0 50
0.5
1
1.5
2
2.5
-5 0 5
a) b)
p=1
p=0.6
p=2.2
p=0.6
p=1
p=2.2
Função tangente hiperbólica (a) e sua derivada em relação à entrada interna (b)
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 135
2.2. Arquiteturas de Rede
• Muito pouco é sabido sobre os padrões de conexão entre os neurônios biológicos.
• Entretanto, a maioria das RNAs utilizam arquiteturas padronizadas, projetadas
especialmente para resolver algumas classes de problemas.
• O processo de conexão entre neurônios artificiais leva à geração de sinapses e à
construção de redes neurais artificiais.
w
gu
wij
w
xij
i yi
gyj
1 wi0
Figura 21: Conectando neurônios.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 136
• Existem basicamente três camadas em uma rede neural artificial: uma camada de
entrada, uma camada intermediária, e uma camada de saída. Entretanto, nem
todas as RNAs possuem camadas intermediárias.
• A forma pela qual os neurônios estão interconectados está intimamente relacionada
ao algoritmo a ser utilizado no seu treinamento.
• Existem, basicamente, três tipos principais de arquitetura em RNAs: redes
feedforward de uma única camada, redes feedforward de múltiplas camadas, e
redes recorrentes.
Rede Feedforward com Uma Única Camada
• Este caso mais simples de rede em camadas consiste em uma camada de entrada e
uma camada de saída.
• Geralmente os neurônios de entrada são lineares, ou seja, eles simplesmente
propagam o sinal de entrada para a próxima camada. São também denominados de
neurônios sensoriais.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 137
…
Camada de entrada
Camada de saída
Neurônio sensorial Neurônio de processamento
…
…
y1 y2 y3
yo
x0
x1 x2
xm
w10 w21 . .
. .
wom
Figura 22: Rede feedforward com uma única camada.
• Esta rede é denominada feedforward porque a propagação do sinal ocorre apenas
da entrada para a saída, ou seja, é apenas no sentido positivo.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 138
=
omoo
m
www
www
L
MOMM
L
10
11110
W
yi = f(wi.x) = f(Σj wij.xj) , j = 1,…,m.
Note que a primeira coluna de W corresponde ao vetor de bias.
• Em forma matricial:
y = f(W.x),
onde W ∈ ℜo×m, wi ∈ ℜ1×m, i = 1,…,o, x ∈ ℜm×1, e y ∈ ℜo×1.
Rede Feedforward de Múltiplas Camadas
• As redes de múltiplas camadas possuem uma ou mais camadas intermediárias ou
escondidas. Adicionando-se camadas intermediárias não-lineares é possível
aumentar a capacidade de processamento de uma rede feedforward.
• A saída de cada camada intermediária é utilizada como entrada para a próxima
camada.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 139
• Em geral o algoritmo de treinamento para este tipo de rede envolve a
retropropagação do erro entre a saída da rede e uma saída desejada conhecida.
Input layer First hidden layer
Output layer Second hidden layer
…
…
y1 y2 yo
+1
x1 x2 x3
xm
+1 +1
… …
Figura 23: Rede feedforward de múltiplas camadas.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 140
• Seja Wk a matriz de pesos da camada k, contadas da esquerda para a direita.
• kijw corresponde ao peso ligando o neurônio pós-sináptico i ao neurônio pré-
sináptico j na camada k.
• Em notação matricial, a saída da rede é dada por:
y = f3(W3 f2(W2 f1(W1x + b1) + b2) + b3)
• Note que fk, k = 1,..., M (M = número de camadas da rede) é uma matriz quadrada
fk ∈ ℜl×l, onde l é o número de neurônios na camada k.
• O que acontece se as funções de ativação das unidades intermediárias forem
lineares?
Redes Recorrentes
• O terceiro principal tipo de arquitetura de RNAs são as denominadas redes
recorrentes, pois elas possuem, pelo menos, um laço realimentando a saída de
neurônios para outros neurônios da rede.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 141
Z−1
Z−1
Z−1
Figura 24: Rede neural recorrente.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 142
2.3. Paradigmas de Aprendizagem
• A capacidade de “aprender” associada a uma rede neural é uma das mais
importantes qualidades destas estruturas.
• Trata-se da habilidade de adaptar-se, de acordo com regras pré-existentes, ao seu
ambiente, alterando seu desempenho ao longo do tempo.
• Sendo assim, considera-se “aprendizado” o processo que adapta o comportamento
e conduz a uma melhoria de desempenho.
• No contexto de redes neurais artificiais, aprendizagem ou treinamento corresponde
ao processo de ajuste dos parâmetros livres da rede através de um mecanismo de
apresentação de estímulos ambientais, conhecidos como padrões (ou dados) de
entrada ou de treinamento:
estímulo → adaptação → novo comportamento da rede
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 143
• Nas RNAs mais simples e tradicionais, os parâmetros livres da rede correspondem
apenas aos pesos sinápticos. Toda a estrutura da rede, incluindo os tipos de
neurônios e suas funções de ativação, é pré-definida.
• O objetivo do aprendizado em redes neurais é a obtenção de um modelo implícito
do sistema em estudo, por ajuste dos parâmetros da rede.
• Dada uma rede neural artificial, seja w(t) um peso sináptico de um dado neurônio,
no instante de tempo t. O ajuste ∆w(t) é aplicado ao peso sináptico w(t) no instante
t, gerando o valor corrigido w(t+1), na forma:
w(t+1) = w(t) + ∆w(t)
• A obtenção de ∆w(t) pode ser feita de diversas formas. O tipo de aprendizado é
determinado pela técnica empregada no processo de ajuste dos pesos sinápticos
(parâmetros da rede neural).
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 144
• Um conjunto bem definido de regras para obtê-los é denominado um algoritmo de
aprendizagem ou treinamento. Exemplos de alguns algoritmos: regra de Hebb,
algoritmo de backpropagation, estratégias de competição, máquina de Boltzmann.
• A maneira pela qual o ambiente influencia a rede em seu aprendizado define o
paradigma de aprendizagem. Exemplos de paradigmas: aprendizado
supervisionado, aprendizado por reforço e aprendizado não supervisionado (ou
auto-organizado).
• Existem basicamente três paradigmas de aprendizado: aprendizado
supervisionado, aprendizado não supervisionado e aprendizado por reforço.
Aprendizagem Supervisionada
• Este curso vai se ocupar com o desenvolvimento de técnicas para aprendizado
supervisionado e não supervisionado em redes neurais artificiais.
• Pelo fato de serem mais intuitivas, técnicas de aprendizado supervisionado serão
abordadas primeiro.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 145
• Idéia intuitiva: controle de processos (ex. pouso e decolagem de aviões)
• Exemplos de problemas de engenharia que podem ser apresentados na forma de
um problema de aprendizado supervisionado:
� classificação e reconhecimento de padrões
� predição de séries temporais
� identificação de sistemas
� controle de processos
� projeto de filtros em processamento de sinais
Formalização do processo de aprendizado supervisionado
• Seja dj(t) a resposta desejada para o neurônio j no instante t e yj(t) a resposta
observada do neurônio j no instante t, obtida através de um estímulo x(t) presente
na entrada da rede neural.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 146
• x(t) e dj(t) constituem um EXEMPLO de par estímulo-resposta apresentado ao
neurônio no instante t, possivelmente extraídos de um ambiente ruidoso, cujas
distribuições de probabilidade são desconhecidas.
• ej(t) = dj(t) − yj(t) é o sinal de erro observado na saída do neurônio j no instante t.
Observe que, em ambiente ruidoso, ej(t) é uma variável aleatória.
• O processo de aprendizado supervisionado tem por objetivo corrigir este erro
observado (em todos os neurônios), e para tanto busca minimizar um critério
(função objetivo) baseado em ej(t), j=1,2,…,o, onde o é o número de neurônios da
rede neural, de maneira que, para t suficientemente alto, yj(t), j=1,2,…,o, estejam
próximos de dj(t), j=1,2,…,o, no sentido estatístico.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 147
ej(t)
Σ
One or more layers of hidden neurons
Output neuron j
dj(t) yj(t)
− +
x(t)
Multi-layer Feedforward Network
Figura 25: Aprendizagem por correção de erro.
• Um critério muito utilizado é o de erro quadrático médio:
= ∑
=
o
jj te
oEJ
1
2 )(1
.
• Um conceito que está implícito em toda esta análise é a hipótese de
estacionariedade dos processos aleatórios presentes.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 148
• Além disso, para minimizar J é necessário conhecer as características estatísticas
do sistema.
• Uma aproximação para o critério é utilizar o valor instantâneo do erro quadrático
médio: ∑=
=≅o
jj ke
okJJ
1
2 )(1
)( .
• Nesta fase do curso, vamos considerar que a minimização de J(t) é realizada
apenas em relação aos pesos sinápticos da rede neural.
Aprendizagem Não supervisionada
• No paradigma não supervisionado ou auto-organizado não existe supervisor para
avaliar o desempenho da rede em relação aos dados de entrada.
• Nenhuma medida de erro é utilizada para realimentar a rede.
• Os dados são ditos não rotulados, no sentido de que as classes às quais eles
pertencem ou as saídas desejadas da rede são desconhecidas.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 149
• A rede se adapta a regularidades estatísticas nos dados de entrada, desenvolvendo
uma capacidade de criar representações internas que codificam as características
dos dados de entrada, tornando-se, portanto, capaz de identificar a quais classes
novos padrões pertencem.
Inputpatterns
EnvironmentNeuralNetwork
Figura 26: Aprendizagem auto-organizada.
• Geralmente as redes auto-organizadas empregam um algoritmo competitivo de
aprendizagem.
• Na aprendizagem competitiva, os neurônios de saída da rede competem entre si
para se tornarem ativos, com um único neurônio sendo o vencedor da competição.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 150
• Esta propriedade é que faz com que o algoritmo seja capaz de descobrir
regularidades estatísticas no conjunto de dados.
• Neurônios individuais aprendem a se especializar a conjuntos (grupos ou clusters)
de padrões similares. Eles se tornam detectores ou extratores de características
para diferentes classes dos dados de entrada.
• Ideia intuitiva: agrupamento de dados (ex. balões coloridos)
Formalização do processo de aprendizado competitivo
• Para que um neurônio i seja o vencedor, a distância entre este o vetor de pesos wi
deste neurônio e um determinado padrão de entrada x deve ser a menor dentre
todos os outros neurônios da rede, dada uma métrica de distância ||⋅|| (geralmente
utiliza-se a distância Euclidiana).
• A ideia é encontrar o neurônio cujo vetor de pesos seja o mais parecido ao padrão
de entrada, ou seja:
i = arg mini ||x − wi||, ∀i.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 151
• Se um neurônio não responde a um padrão de entrada, ou seja, não é o vencedor,
então nenhuma adaptação é sofrida por este neurônio.
• Entretanto, o neurônio i que ganhou a competição sofre um ajuste ∆wi no seu
vetor de pesos na direção do vetor de entrada:
−
=∆competição a perde se0
competição a ganha se)α(
i
iii
wxw
onde α indica o tamanho do passo a ser dado na direção de x. O parâmetro α é
conhecido como taxa de aprendizagem.
Aprendizagem Por Reforço
• A aprendizagem por reforço é distinta das outras abordagens, pois neste caso não
existe uma interação direta com um supervisor ou modelo explícito do ambiente.
• Geralmente, a única informação disponível é um valor escalar que indica a
qualidade do desempenho da RNA.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 152
• Na aprendizagem por reforço existe um objetivo a ser alcançado. Durante o
processo de aprendizagem, a rede “tenta” algumas ações (saídas) e recebe um sinal
de reforço (estímulo) do ambiente que permite avaliar a qualidade de sua ação.
• O sistema em aprendizagem seletivamente retém as ações que levam a uma
maximização dos sinais de reforço.
• Ideia intuitiva: ex. ensinar animais circenses.
• A cada iteração t, o sistema em aprendizagem recebe uma entrada x(t)
(representando o estado do ambiente), fornece uma saída y(t), e no próximo passo
recebe um escalar de reforço r(t+1) e um novo estado do ambiente x(t+1).
• Portanto, os dois conceitos básicos por trás da aprendizagem por reforço são:
busca por tentativa e erro e reforço retardado.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 153
Estado do ambiente(dado de entrada)
Sinal de reforço
Saída da rede
Ambiente
Rede Neural
Figura 27: Aprendizagem por reforço.
3. Alguns Algoritmos de Aprendizado Supervisionado
3.1. Perceptron
• Rosenblatt introduziu o perceptron como a arquitetura mais simples de rede neural
capaz de classificar padrões linearmente separáveis.
• O algoritmo de treinamento do perceptron foi o primeiro modelo de treinamento
supervisionado, embora alguns perceptrons fossem auto-organizados.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 154
• Basicamente, o perceptron consiste em uma única camada de neurônios com pesos
sinápticos e bias ajustáveis.
• Se os padrões de entrada forem linearmente separáveis, o algoritmo de treinamento
do perceptron possui convergência garantida, ou seja, é capaz de encontrar um
conjunto de pesos que classifica corretamente os dados.
• Os pesos dos neurônios que compõem o perceptron serão tais que as superfícies de
decisão produzidas pela rede neural estarão apropriadamente posicionadas no
espaço.
Perceptron Simples para Classificação de Padrões
• O algoritmo do perceptron funciona como a seguir.
o Para cada padrão de treinamento (dado de entrada) xi, a saída da rede yi é
calculada.
o Em seguida, é determinado o erro ei entre a saída desejada para este padrão di e a
saída da rede yi, ei = di − yi.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 155
o O vetor de pesos conectando as entradas (neurônios pré-sinápticos) a cada saída
(neurônios pós-sinápticos) e o bias do neurônio são atualizados de acordo com
as seguintes regras:
wi(t+1) = wi(t) + α ei xi,
b(t+1) = b(t) + α ei,
onde w ∈ ℜ1×m, x ∈ ℜ1×m, e b ∈ ℜ1×1.
• Considere agora o caso mais simples do perceptron com um único neurônio.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 156
u y
Σ
x1
x2
xm
f(u)
Junção somadora
Função de ativação
Saída
…
w1 w2
wm
+1
w0 = b
Entradas
Figura 28: Modelo matemático genérico do neurônio.
• O objetivo desta rede, mais especificamente deste neurônio, é classificar alguns
padrões de entrada como pertencentes ou não pertencentes a uma dada classe.
• Considere o conjunto de dados de entrada como sendo formado por N amostras
{x1,d1}, {x2,d2}, …, {xN,dN}, onde xj é o vetor j de entradas, e dj sua saída desejada
(classe) correspondente.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 157
• Seja X ∈ ℜm×N, a matriz de dados de entradas com N padrões de dimensão m cada
(colunas de X), e d ∈ ℜ1×N o vetor de saídas desejadas. O algoritmo abaixo pode
ser utilizado para treinar o perceptron de um único neurônio:
procedure [w] = perceptron(max_it,E,α,X,d) initialize w // por simplicidade, inicialize com 0 initialize b //por simplicidade, inicialize com 0
t ← 1 while t < max_it & E > 0 do, for i from 1 to N do, //para cada padrão de entrada
yi ← f(wxi + b) //determine a saída para xi
ei ← di − yi //determine o erro para xi
w ← w + α ei xi //atualize o vetor de pesos
b ← b + α ei //atualize o bias end for
E ← sum(ei)
t ← t + 1 end while
end procedure
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 158
Exemplo de Aplicação e Motivação Geométrica
• Considere o problema de utilizar o perceptron com um único neurônio para
representar a função lógica AND.
(0,1) (1,1) (0,0) (1,0)
Entradas Saídas x1 x2 x1 AND x2 0 0 0 0 1 0 1 0 0 1 1 1
[ ]10001010
1100=
= dX
• A saída yi do neurônio para o vetor de dados xi pode ser representada na forma:
yi = f(wxi + b)
• Para quaisquer valores de w e b, a função f(u) separa o espaço de entradas em duas
regiões, sendo que a curva de separação (superfície de decisão) é uma linha reta.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 159
• A equação desta reta é dada por:
w1 x1 + w2 x2 + b = 0
• Se a função de ativação do tipo sinal (degrau) possui θ = 0, então
w1 x1 + w2 x2 + b ≥ 0
resultará em uma saída positiva da rede.
• Inicializando todos os pesos e o limiar em zero w = [0 0] e b = 0, e definindo
α = 1, o algoritmo de treinamento do perceptron fornece o seguinte:
w1 = 2; w2 = 1; b = − 3, portanto 2x1 + 1x2 − 3 = 0.
• Obs.: note que os pesos do perceptron também poderiam ter sido inicializados com
valores aleatórios pequenos.
o Neste caso, a superfície de decisão obtida seria diferente.
o Considere para efeitos ilustrativos: w1 = 0.015; w2 = 0.768; b = 0.971.
o A figura a seguir mostra as duas superfícies de decisão e os pesos e bias
determinados pelo algoritmo de treinamento do perceptron.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 160
(0,1) (1,1) (0,0) (1,0)
w1 = 2; w2 = 1; b = −3
w1 = 2.015; w2 = 0.768; b = −2.029
Figura 29: Superfícies de decisão.
Perceptron com Múltiplos Neurônios
• Note que a regra de aprendizagem do perceptron é do tipo supervisionado,
empregando aprendizagem por correção de erro.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 161
• Esta regra pode ser facilmente estendida para atualizar os pesos de uma rede de
neurônios em uma única camada.
• Neste caso, para cada vetor de entrada xi haverá um vetor de saídas da rede:
yi = f(Wxi + b); W ∈ ℜo×m, xi ∈ ℜm×1, i = 1,…,N, yi ∈ ℜo×1, e b ∈ ℜo×1, D ∈ ℜo×N.
• Existe agora um vetor de erros para cada padrão de entrada: ei = di − yi.
procedure [W] = perceptron(max_it,α,X,D) initialize W //for simplicity set it to zero initialize b //for simplicity set it to zero
t ← 1 while t < max_it do, for i from 1 to N do, //para cada padrão de entrada
yi ← f(Wxi + b) //determine a saída da rede para xi
ei ← di − yi //determine o vetor de erros para xi
W ← W + α ei xiT //atualize a matriz de pesos
b ← b + α ei //atualize o vetor de bias end for
t ← t + 1 end while
end procedure
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 162
Exemplo de Aplicação: Reconhecimento de Caracteres
• Considere o problema de aplicar o perceptron com múltiplas saídas ao problema de
classificação (reconhecimento) dos seguintes caracteres binários:
Figura 30: Padrões de treinamento.
• Cada um destes oito padrões de entrada possui uma resolução de 12×10 pixels e as
classes a que eles pertencem (0,1,2,3,4,6,�,9) estão pré-definidas.
• Vamos projetar um perceptron com oito neurônios de saída, onde cada neurônio irá
corresponder a uma classe. Temos então X ∈ ℜ120×8 e D ∈ ℜ8×8 (matriz diagonal).
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 163
• O algoritmo de treinamento do perceptron será responsável então por definir uma
hipersuperfície de decisão em um espaço de dimensão 120 capaz de classificar os
dados corretamente.
Aspectos Práticos do Treinamento do Perceptron
• Condição inicial: verificou-se que diferentes conjuntos iniciais de pesos para o
perceptron podem levar a diferentes superfícies de decisão.
o Na verdade, o problema de ajuste supervisionado de pesos pode ser visto como
um processo de busca por um conjunto de pesos que otimizam uma determinada
superfície de erro.
o Sendo assim, uma escolha inadequada da condição inicial da rede pode levar o
algoritmo a uma convergência para ótimos locais desta superfície de erro.
• Critério de convergência: no caso do perceptron, é possível garantir que, dado um
conjunto de padrões linearmente separáveis, o algoritmo é capaz de encontrar uma
superfície de decisão capaz de classificar corretamente os dados.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 164
o Sendo assim, é possível utilizar como critério de convergência para o perceptron
simples (classificação binária) a determinação de erro igual a zero para todos os
padrões de entrada.
o Outro critério que pode ser utilizado é a adaptação por uma quantidade finita de
iterações, denominadas de épocas de treinamento.
• Parâmetros de treinamento: o algoritmo de treinamento do perceptron possui
basicamente o parâmetro de treinamento α que deve ser definido pelo usuário.
• Treinamento versus aplicação da rede: é importante diferenciar entre o processo
de treinamento e aplicação da rede.
o O treinamento da rede corresponde ao processo de ajuste de pesos.
o Após treinada, a rede poderá ser aplicada ao mesmo problema, de forma a
verificar a qualidade do aprendizado, ou a outro problema, de forma a verificar
sua capacidade de generalização.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 165
procedure [y] = perceptron(W,b,Z)
for i from 1 to N do, //para cada padrão de entrada xi
yi ← f(Wxi + b) //determine as saídas da rede end for
end procedure
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 166
Tópico 5: Inteligência de Enxame
1. Introdução
• Várias espécies se beneficiam da sociabilidade:
o A vida em grupos sociais aumenta a probabilidade de acasalamento, facilita a
caça e coleta de alimentos, reduz a probabilidade de ataque por predadores,
permite a divisão de trabalho, etc.
• Comportamentos sociais também inspiraram o desenvolvimento de diversas
ferramentas computacionais para a solução de problemas e estratégias de
coordenação e controle de robôs.
• O termo swarm intelligence foi proposto no fim da década de 1980 onde se referia
a sistemas robóticos compostos por uma coleção de agentes simples em um
ambiente interagindo de acordo com regras locais.
• Algumas definições de swarm intelligence:
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 167
o O termo “enxame” (ou coletivo) é utilizado de forma genérica para se referir a
qualquer coleção estruturada de agentes capazes de interagir. O exemplo
clássico de um enxame é um enxame de abelhas, entretanto a metáfora de um
enxame pode ser estendida a outros sistemas com uma arquitetura similar. Uma
colônia de formigas pode ser vista como um enxame onde os agentes são
formigas, uma revoada de pássaros é um enxame onde os agentes são pássaros,
um engarrafamento é um enxame onde os agentes são carros, uma multidão é
um enxame de pessoas, um sistema imunológico é um enxame de células e
moléculas, e uma economia é um enxame de agentes econômicos. Embora a
noção de enxame sugira um aspecto de movimento coletivo no espaço, como em
um ‘enxame de pássaros’, estamos interessados em todos os tipos de
comportamentos coletivos, não apenas movimento espacial. (FAQ do Santa Fé)
o A inteligência de enxame inclui qualquer tentativa de projetar algoritmos ou
dispositivos distribuídos de solução de problemas inspirados pelo
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 168
comportamento coletivo de insetos sociais e outras sociedades animais
(Bonabeau et al., 1999).
o A inteligência de enxame é uma propriedade de sistemas compostos por agentes
não inteligentes e com capacidade individual limitada, capazes de apresentar
comportamentos coletivos inteligentes (White & Pagurek, 1998).
• Algumas propriedades da inteligência coletiva:
o Proximidade: os agentes devem ser capazes de interagir;
o Qualidade: os agentes devem ser capazes de avaliar seus comportamentos;
o Diversidade: permite ao sistema reagir a situações inesperadas;
o Estabilidade: nem todas as variações ambientais devem afetar o comportamento
de um agente;
o Adaptabilidade: capacidade de se adequar a variações ambientais.
• Sendo assim, um sistema de enxame é aquele composto por um conjunto de
agentes capazes de interagir entre si e com o meio ambiente. A inteligência de
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 169
enxame é uma propriedade emergente de um sistema coletivo que resulta de seus
princípios de proximidade, qualidade, diversidade, estabilidade e adaptabilidade.
• Duas principais linhas de pesquisa podem ser observadas em inteligência de
enxame:
o Trabalhos inspirados por comportamentos sociais de insetos;
o Trabalhos inspirados na habilidade das sociedades humanas em processar
conhecimento.
• Embora existam diferenças entre estas abordagens, elas possuem a seguinte
característica importante em comum:
o População de indivíduos capazes de interagir entre si e com o ambiente.
2. Algumas Ideias sobre Insetos Sociais
• Insetos sociais são aqueles que vivem em comunidades ou colônias. Exemplos:
o Formigas, abelhas, vespas e cupins.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 170
• Uma colônia não é nada além de uma grande família de insetos (sem hierarquia na
maioria dos casos).
• Dentro de uma colônia existe uma sobreposição entre gerações de pais e filhos.
• Cada inseto parece ter sua própria agenda, mesmo assim, uma colônia parece
extremamente bem organizada.
• A integração de todas as atividades individuais não requer supervisão, trata-se de
um fenômeno auto-organizado.
• Exemplos de ninhos:
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 171
Formigas do tipo leafcutter cortam folhas de plantas e árvores para cultivar fungos.
Formigas trabalhadoras buscam por alimento a grandes distâncias do ninho,
criando literalmente caminhos de e para o ninho.
• Formigas do tipo weaver formam correntes com seus próprios corpos permitindo
que elas atravessem grandes buracos e carreguem alimento para o ninho.
• Durante sua fase de movimentação e busca por alimento, as formigas do tipo army
organizam frentes de batalha impressionantes.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 172
• As abelhas constroem uma série de pentes paralelos formando correntes que
induzem um aumento local de temperatura. Desta forma, fica mais fácil moldar a
colmeia.
• As fontes de alimento são exploradas de acordo com sua qualidade e distância do
ninho.
• Exemplos de problemas resolvidos por insetos sociais:
o Encontrar alimento, construir ou aumentar o ninho, dividir a mão de obra,
alimentar a colônia, responder a desafios externos (clima, predadores, etc.), soar
alarmes, encontrar um local apropriado para construir o ninho, etc.
Source A Hive Source B
12 91
1.00M 2.50M
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 173
2.1. Curiosidades sobre as formigas
• As formigas podem levantar até 20 vezes seu próprio peso.
• O cérebro de uma formiga possui aproximadamente 2,5×105 neurônios, enquanto
o cérebro humano possui aproximadamente 1,0×1010 neurônios.
o Portanto, uma colônia de 40.000 formigas possui o mesmo número de
neurônios que um cérebro humano.
• Uma formiga vive de 45-60 dias.
• As formigas utilizam suas antenas para tocar e sentir cheiro.
• As formigas possuem olhos compostos e seu abdômen possui dois estômagos. O
primeiro armazena alimento para a própria formiga e o segundo armazena
alimento a ser compartilhado.
• Existe mais do que 10.000 espécies conhecidas de formigas.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 174
3. Colônias de Formigas
• As formigas são os insetos sociais mais amplamente estudados. Exemplos da
popularidade das formigas podem ser encontrados em filmes como Formiguinha Z
e Vida de Inseto.
• Considere o seguinte trecho de Formiguinha Z, onde uma formiga trabalhadora
chamada Z entra no consultório do terapeuta reclamando de sua insignificância:
o “Eu me sinto insignificante”
o “Ah, você teve um grande progresso”.
o “Tive?”
o “Sim . . . você é insignificante!”
• Entretanto, a perspectiva que a maioria das pessoas tem da organização social dos
insetos é errônea. Os filmes acima mostram isso claramente.
• Neste filme, por exemplo, existe uma forte hierarquia social, com herdeiros de
trono, etc.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 175
• Algumas tarefas que as formigas devem desempenhar:
o Coletar e distribuir alimento, construir o ninho, cuidar do ninho, dos ovos e das
larvas, etc.
• Alocação de tarefas é o processo que resulta em alguns trabalhadores realizando
tarefas específicas, em quantidades apropriadas à situação atual.
• Trata-se de soluções encontradas para problemas dinâmicos e requer, portanto, um
processo contínuo de adaptação.
• No caso particular das formigas, este processo é auto-organizado. Nenhuma
formiga é capaz de avaliar as necessidades globais do formigueiro e nem de contar
a quantidade de trabalhadores envolvidos em cada tarefa de forma a decidir como
realocá-los.
• A capacidade de cada formiga é limitada. Cada trabalhador precisa tomar apenas
decisões locais.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 176
3.1. Coleta de Alimento pelas Formigas
• Apesar de existir uma grande variedade de formigas no mundo, boa parte delas
possui comportamentos similares de coleta de alimentos.
• Estudos de campo e experimentos de laboratório demonstraram uma grande
capacidade das formigas “explotar” ricas fontes de alimentos sem perder a
capacidade de explorar o ambiente, assim como encontrar o menor caminho entre
o ninho e a fonte de alimentos.
• Neste sentido, dois comportamentos importantes são observados: construir uma
trilha de feromônio, e seguir a trilha de feromônio.
• Recrutamento é o nome dado ao mecanismo comportamental que permite que uma
colônia de formigas reúna rapidamente uma grande quantidade de coletadoras
(foragers) em torno de uma determinada fonte de alimento.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 177
Food source
Nest
Food source
Nest
Food source
Nest
• Existem diferentes formas de recrutamento:
o Recrutamento em massa: um explorador descobre a fonte de alimento e retorna
ao ninho, liberando uma substância química denominada de feromônio e
iniciando a formação de uma trilha. Outras formigas detectam a trilha de
feromônio e seguem-na de forma a reforçá-la.
o Recrutamento de grupo: o explorador guia um grupo de formigas até a fonte de
alimento utilizando uma substância química com ação de curto alcance.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 178
o Recrutamento em linha: o explorador convida outras formigas a seguí-lo.
• O feromônio possui duas funções importantes:
o Definir a trilha a ser seguida; e
o Servir como sinal de orientação para as formigas passeando fora do ninho.
• Exemplo de experimento realizado com formigas para avaliar a importância da
trilha de feromônio na coleta de alimentos:
Food source
Nest
Food source
Nest
Food source
Nest
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 179
• Algumas observações importantes deste experimento:
o Os caminhos mais curtos são privilegiados;
o A probabilidade de um caminho mais curto ser escolhido aumenta com a
diferença de comprimento entre os caminhos (estigmergia);
o Se o caminho mais curto for apresentado (muito) depois do caminho mais longo,
ele não será selecionado, a não ser que o feromônio evapore (muito)
rapidamente;
o A quantidade de feromônio que uma formiga libera é diretamente proporcional à
qualidade da fonte de alimento (estímulo) encontrada;
o A aleatoriedade possui um papel importante neste processo. As formigas não
seguem as trilhas perfeitamente, elas possuem uma determinada probabilidade
de se perderem da trilha ao longo do percurso. Este tipo de comportamento é
importantíssimo para que seja possível a descoberta de outras fontes de
alimento.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 180
• Obs.: note aqui a presença de realimentação positiva, estigmergia, e busca baseada
em exploração e explotação.
3.2. Otimização por Colônias de Formigas
• A escolha do caminho mais curto entre a fonte de alimento e o ninho permite que
as formigas minimizem o tempo gasto nesta viagem.
• O problema de encontrar a menor rota entre o ninho e a fonte de alimento é similar
ao problema do caixeiro viajante (TSP).
• Inspirados pelos experimentos de coleta de alimentos por formigas, Dorigo et al.
(1996) estenderam este modelo para resolver o problema do caixeiro viajante.
• Esta abordagem está baseada em um grupo de “formigas artificiais” que liberam e
seguem “trilhas de feromônio artificial”.
• Neste caso, existe uma colônia de formigas (artificiais), cada uma indo de uma
cidade a outra de forma independente, favorecendo cidades próximas ou
caminhando aleatoriamente.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 181
o Enquanto uma formiga atravessa um determinado caminho entre cidades, ela
libera certa quantidade de feromônio inversamente proporcional ao
comprimento total do caminho percorrido pela formiga: quanto menor o
comprimento do caminho percorrido, maior a quantidade de feromônio liberada
e vice-versa.
o Depois que todas as formigas tiverem completado suas rotas e liberado
feromônio, as conexões pertencentes a maior quantidade de rotas mais curtas
terão mais feromônio depositado.
o Como o feromônio evapora com o tempo, quanto maior o comprimento do
caminho, mais rápido será o desaparecimento de uma trilha em um caminho
longo.
• A maior parte dos algoritmos de otimização baseados em colônias de formigas é
utilizada para resolver problemas de otimização combinatória representados por
grafos.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 182
3.3. Uma Simulação de Vida Artificial
• Ninho: lado esquerdo
• Fonte de alimento: lado direito
• N = 500 formigas
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 183
Conceitos Básicos sobre a Teoria de Grafos
• Um grafo pode ser definido como uma 2-upla G = (V,E) onde V é um conjunto de
vértices ou nós, e E é um conjunto de conexões ou pares de nós ligando estes
vértices: V = {v0,v1,…,vN}, E = {(vi,vj) : i ≠ j}.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 184
• Um caminho em um grafo consiste em uma sequência alternada de nós e conexões.
Quando não existir ambiguidade, um caminho pode ser descrito por uma sequência
de nós.
• Um grafo é dito:
o conexo se existir pelo menos uma conexão ligando cada par de nós.
o direcionado quando existe uma direção específica de percurso.
o ponderado se para cada conexão e ∈ G for especificado um número não
negativo w(e) ≥ 0 denominado peso ou comprimento de e.
A B A A C A C
C G1 B G2 B F G3 B F G4
E D C E D E D
3 2 1 2 5
4 1
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 185
3.4. Algoritmo Simples de Otimização por Colônias de
Formigas
• Algoritmos de otimização por colônias de formigas (ACO) foram inicialmente
propostos por Dorigo et al. (1991) e Dorigo (1992) como uma abordagem multi-
agente para resolver problemas de otimização combinatória.
• Obs.: um problema combinatorial é aquele para o qual existe uma grande
quantidade discreta de possíveis soluções.
• Assumindo um grafo conexo G = (V,E), o ACO simples (S-ACO) pode ser
utilizado para determinar uma solução para o problema do caminho mais curto
definido no grafo G.
• Uma solução é um caminho no grafo conectando um nó inicial s a um nó destino d,
e o comprimento do caminho é dado pelo número de conexões atravessadas.
• No S-ACA existe uma variável τij denominada de trilha artificial de feromônio
associada a cada conexão (i,j).
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 186
• Cada formiga artificial é capaz de “liberar feromônio” em uma conexão e avaliar a
quantidade de feromônio em uma determinada conexão.
• Cada formiga atravessa uma conexão a cada passo de tempo t (iteração) e, em cada
nó, a informação local sobre a quantidade (nível) de feromônio τij da conexão é
utilizada pela formiga de forma que ela selecione probabilisticamente o próximo
nó para o qual ela irá se mover, de acordo com a seguinte regra:
∈
= ∑ ∈
casos outros0
se)(τ
)(τ
)( i
Nj ij
ij
kij
Njt
t
tpi
onde )(tpkij é a probabilidade de uma formiga k localizada no nó i se mover para o
nó j, τij(t) é o nível de feromônio da conexão (i,j), todos na iteração t, e Ni é o
conjunto de vizinhos diretos do nó i.
• Quando uma formiga atravessa uma conexão (i,j) ela deposita em pouco de
feromônio nesta conexão:
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 187
τij(t) ← τij(t) + ∆τ,
onde ∆τ é uma quantidade constante de feromônio depositada pela formiga.
• Note que quando uma formiga deposita feromônio numa determinada conexão ela
está aumentando a probabilidade de que esta conexão seja selecionada por outra
formiga, reforçando uma determinada trilha.
• Para evitar uma convergência prematura do algoritmo quando aplicado a
problemas de caminho mais curto foi inserida uma equação para evaporação do
feromônio:
τij(t) ← (1−ρ)τij(t) + ∆τ,
onde ρ ∈ [0,1) é a taxa de decaimento do feromônio.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 188
3.5. Algoritmo Genérico de Otimização por Colônias de
Formigas
• Um algoritmo de otimização por colônias de formigas alterna, por uma quantidade
máxima de iterações, a aplicação de dois procedimentos básicos:
o Um procedimento paralelo de construção/modificação de trilhas no qual um
conjunto de N formigas constrói/modifica N soluções paralelas para o problema;
o Uma regra de atualização de feromônio a partir da qual a quantidade de
feromônio nas conexões é alterada.
• O processo de construir ou modificar uma solução (caminho) é feito de forma
probabilística, e a probabilidade de uma nova conexão ser adicionada à solução
sendo construída é função de uma qualidade heurística η (heuristic desirability) e
da quantidade de feromônio τ depositada por outras formigas.
• A qualidade heurística expressa a probabilidade de uma formiga se mover para
uma determinada conexão. Exemplo:
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 189
o Quando o caminho mínimo está sendo procurado, η pode ser tomado como
sendo inversamente proporcional à distância entre um par de nós.
o A regra de atualização da quantidade de feromônio deve levar em conta a taxa
de evaporação de feromônio ρ e a qualidade das soluções produzidas.
• Seja best a melhor solução encontrada até a iteração atual, max_it a quantidade
máxima de iterações que o algoritmo irá percorrer, e e a quantidade de conexões
no grafo:
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 190
procedure [best] = ACO(max_it)
initialize τij //usually every edge is initialized with the same τ0 place each ant k on a randomly selected edge
t ← 1 while t < max_it do, for i = 1 to N do, //for each ant
build a solution by applying a probabilistic transition
rule (e − 1) times. The rule is a function of τ and η //e is the number of edges on the graph G
end for eval the cost of every solution built if an improved solution is found, then update the best solution found
end if update pheromone trails
t ← t + 1 end while
end procedure
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 191
3.6. Exemplo de Aplicação
• Considere o problema do caixeiro viajante (TSP) representado sob a forma de um
grafo.
• Neste problema, as formigas constroem as soluções movendo-se de um nó para
outro do grafo.
• A cada iteração, uma formiga k, k = 1,...N, constrói um caminho (rota) aplicando
uma regra de transição probabilística (e − 1) vezes.
• A transição de uma formiga da cidade i para a cidade j na iteração t irá depender de
três fatores:
o do fato da cidade já ter sido visitada ou não;
o do inverso da distância dij entre as cidades i e j, denominado de visibilidade
ηij = 1/dij; e
o da quantidade de feromônio τij na conexão ligando as cidades i e j .
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 192
• Como no caso do TSP cada cidade não deve ser visitada mais do que uma vez, é
preciso armazenar informação sobre as cidades que já foram visitadas. Isso pode
ser feito empregando-se, por exemplo, uma lista tabu ou memória, que irá definir o
conjunto de cidades Jik que a formiga k ainda deve visitar enquanto na cidade i.
• A probabilidade de uma formiga k ir de uma cidade i para uma cidade j na iteração
t é dada pela seguinte regra de transição:
∈
= ∑ ∈
contrário caso0
se][η.)]([τ
][η.)]([τ
)(ki
Jl ilil
ijij
kij
Jjt
t
tpki
βα
βα
onde τij(t) é o nível de feromônio na conexão (i,j), e ηij é a visibilidade da cidade j
quando na cidade i. Os parâmetros α e β são definidos pelo usuário e controlam o
peso relativo da intensidade da trilha (feromônio) e da visibilidade. Por exemplo, se
α = 0 cidades mais próximas tenderão a serem escolhidas, enquanto se β = 0, apenas
amplificação na quantidade de feromônio será considerada.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 193
• De forma similar ao algoritmo simples (S-ACO), quando uma formiga atravessa
uma conexão ela libera um pouco de feromônio. Neste caso, a quantidade de
feromônio liberada em cada conexão (i,j) pela formiga k, ∆τkij(t), depende de seu
desempenho:
∈
=∆casos outros0
)(),( se)(/)(τ
tTjitLQt
kkkij
onde Lk(t) é o comprimento da rota Tk(t) percorrida pela formiga k na iteração t, e
Q é outro parâmetro definido pelo usuário.
• A regra de atualização de feromônio é a mesma do caso simples, porém leva em
consideração a quantidade diferenciada de feromônio liberada por cada formiga a
cada iteração:
τij(t) ← (1−ρ)τij(t) + ∆τij(t),
onde ρ ∈ [0,1) é a taxa de decaimento de feromônio, ∆τij(t) = ∑k ∆τkij(t), e
k = 1,…N é o índice das formigas.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 194
• Os proponentes do algoritmo sugerem a utilização de N = e, ou seja, a quantidade
de formigas igual à quantidade de cidades do grafo.
• Os autores também introduziram o conceito de “formigas elitistas”, responsáveis
por reforçar a melhor rota encontrada até o momento, adicionando b.Q/Lbest ao seu
valor de feromônio, onde b é a quantidade de formigas elitistas, e Lbest é o
comprimento da melhor rota encontrada até o momento.
• Alguns parâmetros sugeridos: α = 1, β = 5, ρ = 0.5, N = e, Q = 100, τ0 = 10−6, e
b = 5.
Escopo de aplicação
• Problemas de otimização combinatória em geral. Alguns autores sugerem que se
trata da melhor heurística para os problemas de ordenação sequencial (sequential
ordering), especificação quadrática (quadratic assignment), e está entre as
melhores alternativas para os problemas de roteamento de veículos e de rede.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 195
procedure [best] = AS-TSP(max_it)
initialize τij //usually every edge is initialized with the same τ0 place each ant k on a randomly selected city Let best be the best tour found from the beginning and Lbest its length
t ← 1 while t < max_it do, for i = 1 to N do, //for every ant
build tour Tk(t) by applying (e − 1) times the following step: At city i, choose the next city j with a given probability
end for eval the length of the tour performed by each ant if a shorter tour is found, then update best and Lbest end if for every city e do,
Update pheromone trails by applying the rule:
τij(t+1) ← (1−ρ)τij(t) + ∆τij(t) + b.∆τbij(t), where
∆τij(t) = ∑k ∆τkij(t), k = 1,…N;
∈
=∆otherwise0
)(),( if)(/)(τ
tTjitLQt
kkkij , and
∈
=∆otherwise0
),( if/)(τ
bestjiLQt bestb
ij .
end for
t ← t + 1 end while
end procedure
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 196
• Outras aplicações: coloração de grafos, scheduling, multiple knapsack, e frequency
assignment.
Da Biologia para a Computação
Biologia Algoritmos ACO
Formiga Agente usado para construir soluções para o problema
Colônia de formigas População (colônia) de indivíduos cooperativos conhecidos como formigas artificiais
Trilha de feromônio Modificação do ambiente promovida pelas formigas artificiais com o objetivo de fornecer uma comunicação indireta com outras formigas da colônia
Evaporação do feromônio Redução do nível de feromônio de um dado ramo com o passar do tempo
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 197
3.7. Clusterização de Corpos e Organização de Larvas
• Para limpar seus formigueiros, algumas espécies de formigas juntam corpos e
partes de corpos de formigas mortas em regiões específicas do formigueiro.
• O mecanismo básico por trás deste processo é uma atração entre os itens mortos
mediada pelas formigas. Pequenos amontoados se formam e vão crescendo
atraindo uma maior quantidade de corpos naquela região do espaço.
• Este comportamento pode ser modelado utilizando-se duas regras simples:
o Regra para pegar um item: se uma formiga encontra um item morto ela o pega e
passeia pelo ambiente até encontrar outro item morto. A probabilidade desta
formiga pegar o item morto é inversamente proporcional a quantidade de itens
mortos naquela região do espaço.
o Regra para largar um item: carregando um item a formiga eventualmente
encontra mais itens no caminho. A probabilidade desta formiga deixar este item
junto ao outro é proporcional à quantidade de itens mortos naquela região.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 198
• Como resultado destas simples regras comportamentais, todos os itens mortos irão,
eventualmente, ser agrupados na mesma região ou em regiões vizinhas do espaço.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 199
3.8. Clusterização por Colônias de Formigas
• A análise de cluster ou clusterização de dados pode ser definida como a
organização ou separação de um conjunto de dados ou padrões em grupos
denominados de clusters. Essa organização é feita baseada em algum critério de
similaridade.
• Os dados são geralmente representados por um vetor de medidas ou atributos que
corresponde a um ponto em um espaço multidimensional.
• Intuitivamente, dados em um mesmo cluster são mais semelhantes do que dados
que não pertencem ao mesmo cluster.
• O problema de clusterização de dados pode ser definido como a seguir:
o Seja um conjunto X de N amostras (dados), X = {x1,…,xN}, cada qual de
dimensão L, encontre um esquema de discriminação para agrupar (clusterizar)
os dados em c grupos denominados de clusters. O número de clusters e as
características de cada cluster devem ser determinados.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 200
• Para desenvolver um esquema de discriminação de forma a clusterizar os dados é
necessário definir uma métrica, geralmente uma medida de distância, que
quantifica o grau de similaridade (ou dissimilaridade) entre dois dados em um
determinado espaço métrico.
• A métrica mais comumente utilizada é a distância Euclidiana:
D2(xi,xj) = (∑k(xi,k − xj,k)2)1/2 = ||xi − xj||2.
• É importante salientar que clusterização envolve o agrupamento de dados não
rotulados, ou seja, dados cujas classes não são pré-conhecidas.
3.9. Algoritmo Simples de Clusterização (ACA)
• Neste algoritmo, uma colônia de “agentes formigas” movendo-se aleatoriamente
em um grid bidimensional tem a capacidade de pegar itens dentro do grid e movê-
los para outras posições do grid.
• A ideia geral é de que itens isolados devem ser pegos e movidos para locais do grid
onde se encontram mais itens daquele mesmo tipo.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 201
• Note, entretanto, que o grupo ao qual cada item pertence é desconhecido a priori.
• Assuma que existe um único tipo de item no ambiente, e que uma determinada
quantidade de agentes formiga cuja função é carregar itens de uma posição a outra
do grid está disponível.
• A probabilidade pp de que uma formiga “descarregada” se movendo aleatoriamente
pelo grid pegue um determinado item é:
2
1
1
+=
fk
kp p
onde f é a fração de itens percebidos na vizinhança da formiga, e k1 é uma
constante (threshold). Para f << k1, pp ≈ 1, ou seja, a probabilidade de uma formiga
pegar um item quando há poucos itens em sua vizinhança é grande.
• A probabilidade pd de uma formiga “carregada” movendo-se aleatoriamente pelo
ambiente deixar este item em uma determinada posição do grid é dada por:
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 202
2
2
+=
fk
fpd
onde f é a fração de itens percebidos na vizinhança da formiga, e k2 é outra constante
(threshold). Para f << k2, pd ≈ 0, ou seja, a probabilidade de uma formiga deixar um
item quando há poucos itens em sua vizinhança é pequena.
• Para utilizar este modelo teórico como uma ferramenta de clusterização
(engenharia), ainda é necessário definir dois aspectos importantes:
o Qual o tipo de ambiente no qual as formigas vão se movimentar?
o Como definir a função f?
Definição do Ambiente
• No algoritmo padrão, as formigas movem-se em um grid bidimensional contendo
m×m células, e possuem a capacidade de perceber o ambiente em uma vizinhança
de sua posição atual Neigh(s×s).
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 203
• Neste caso, os padrões de entrada são projetados em regiões aleatórias do grid e
devem posteriormente ser reposicionados de forma a preservar as relações de
vizinhança entre itens “vizinhos” no espaço original de atributos.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 204
Definição da Fração de Itens Percebidos f
• Note que f pode ser entendido como sendo a “visibilidade” de cada formiga.
• Assim como no caso da função de fitness em algoritmos evolutivos, f será uma
função do problema a ser tratado. Por exemplo, em um contexto de sistemas
robóticos, f foi definido como sendo o quociente entre a quantidade N de itens
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 205
encontrados nas últimas T iterações do algoritmo e a maior quantidade possível de
itens que poderia ser encontrada neste período.
• Assumindo que as formigas se movem em um grid bidimensional, o algoritmo
padrão de clusterização baseado em colônias de formigas pode ser descrito como a
seguir:
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 206
procedure [] = ACA(max_it,N,k1,k2) place every item i on a random cell of the grid place every ant k on a random cell of the grid unoccupied by ants
t ← 1 while t < max_it do, for i = 1 to N do, //for every ant
if unladen ant AND cell occupied by item xi, then compute f(xi) and pp(xi) pick up item xi with probability pp(xi)
else if ant carrying item xi AND cell empty, then compute f(xi) and pd(xi) deposit (drop) item xi with probability pd(xi)
end if move to a randomly selected neighboring and unoccupied
cell end for
t ← t + 1 end while print location of items
end procedure
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 207
3.10. Exemplos de Aplicação
• Lumer & Faieta (1994) aplicaram o algoritmo padrão ao problema de análise
exploratória de dados, onde o objetivo era encontrar clusters em dados não
rotulados.
• Os dados foram tomados em um espaço Euclidiano de dimensão L, ℜL, e foi
utilizado um grid bidimensional com vizinhança unitária.
• A função f é dada por:
>
−
= ∑×∈
casos outros0
0 seα
),(1
1)(
)(Neigh2
)(
fd
sfr
ji
issjx
xx
x
onde f(xi) é uma medida da similaridade média do item xi em relação a outro item xj
na vizinhança de xi, α é um fator que define a escala de dissimilaridade, e d(xi,xj) é a
distância Euclidiana entre os dados xi e xj em seus espaços originais.
• As probabilidades de pegar e deixar um item foram dadas por:
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 208
2
1
1
)()(
+=
i
ipfk
kp
xx
≥
<=
skf
kffp
i
ii
id
2
2
)( if1
)( if)(2)(
x
xxx
• Embora o algoritmo ACA seja capaz de agrupar os dados, ele geralmente encontra
uma quantidade de grupos maior do que a existente na base de dados original.
Além disso, o algoritmo padrão não estabiliza em uma dada solução, ele fica
construindo e reconstruindo grupos constantemente.
• Para aliviar estes problemas, Vizine et al. (2005) propuseram três modificações no
algoritmo original:
o Um decaimento para o parâmetro k1;
o Um campo de visão progressivo que permite uma visão mais abrangente para as
formigas; e
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 209
o A adição de feromônio aos itens carregados pelas formigas e possibilidade de
transferência de feromônio para o grid.
• Decaimento de k1:
o A cada ciclo (10.000 passos de formiga) k1 sofre um decaimento geométrico:
k1 ← 0.98×k1,
k1min = 0.001.
o Quando uma formiga percebe um grupo grande ela aumenta seu campo de visão:
If f(xi) > θ and s2 ≤ s2max,
then s2 ← s2 + ns
Sugestão dos autores: s2max = 7 × 7 and θ = 0.6
o Inspirados pelo processo de realimentação positiva via feromônio no processo
de construção de ninhos pelos cupins, os autores propuseram a adição de um
nível de feromônio ao grid φ(i), onde i é o índice da célula do grid:
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 210
2
1
1
)()()(
1)(
+=
ifk
k
iifiPp φ
2
2 )(
)()()()(
+=
ifk
ifiifiPd φ
• Uma aplicação investigada: yeast galactose data (bioinformática: expressão de
genes).
o 205 amostras com 20 atributos divididas em 4 grupos distintos (obs.: dados não
rotulados)
o Parâmetros do algoritmo: nants = 10, tamanho do grid 35×35, α = 1.05, θ = 0.6,
k1 = 0.20, and k2 = 0.05.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 211
0
C 3
C 1 C 1
C 2
C 4
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 212
Escopo de aplicação
• Os algoritmos de clusterização baseados em colônias de formigas são aplicáveis a
problemas de análise exploratória de dados, onde um conjunto de dados não
rotulados está disponível e alguma informação (grau de similaridade entre itens,
inferência sobre a pertinência de novos itens, etc.) deve ser extraída (inferida)
destes dados.
• Aspecto importante do algoritmo: redução da dimensionalidade e, portanto, a
capacidade de visualizar relações de vizinhança entre dados de elevada dimensão.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 213
Da Biologia para a Computação
Biologia (Ant Clustering) Algoritmo ACA
Ambiente (Arena) Grid bidimensional no qual os itens são projetados e as formigas se movem
Formiga Agente capaz de se mover no ambiente, pegar e larger items
Colônia de formigas População (colônia) de agentes cooperativos conhecidos como formigas artificiais
Corpos e larvas de formigas Itens (p.ex. dados de entrada)
Pilha (grupos) de corpos Clusters de itens
Visibilidade de uma formiga Fração de itens percebidos f
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 214
4. Robótica de Enxame
• Em robótica autônoma, a chamada robótica coletiva ou robótica de enxame é
baseada em metáforas e inspiração tomada de sistemas biológicos, em particular de
insetos sociais, para o projeto de sistemas de controle distribuído ou estratégias de
coordenação para grupos de robôs.
• Comportamentos coletivos de insetos sociais fornecem fortes evidências de que
sistemas compostos por agentes simples são capazes de realizar tarefas complexas
específicas.
• Sabe-se, entretanto, que as capacidades cognitivas destes insetos são muito
restritas.
o Sendo assim, os comportamentos complexos que surgem devem ser
propriedades emergentes resultantes das interações entre os agentes e deles com
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 215
seu ambiente, onde cada agente geralmente segue regras comportamentais
simples.
• Portanto, a robótica coletiva inspirada em insetos sociais é diferente das
abordagens de inteligência artificial clássica no sentido de que a robótica coletiva é
do tipo bottom-up: grupos de agentes simples seguindo regras comportamentais
simples (sistemas auto-organizados).
• Grupos de robôs móveis são projetados e construídos com o objetivo principal de
estudar características como arquitetura de grupo, origem de cooperação,
aprendizagem, resolução de conflitos, etc.
• O crescente interesse pela robótica coletiva nos últimos anos deve-se a vários
fatores:
o Algumas tarefas são inerentemente muito complexas (ou impossíveis) de serem
resolvidas por um único robô;
o Melhorias de desempenho podem ser conseguidas utilizando-se múltiplos robôs;
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 216
o A construção e utilização de robôs simples é geralmente muito mais barata,
flexível e tolerante a falhas do que projetar um único robô com alta capacidade
de processamento de informação e sensores complicados;
o A queda nos preços de robôs comerciais simples, como os Kheperas®;
o O progresso da robótica móvel facilitou o estudo com grupos de robôs;
o Estudos em Vida Artificial contribuíram para um maior entendimento e
formalização de processos auto-organizados e fenômenos emergentes; e
o As características construtivas e sintéticas da robótica coletiva contribuem para
uma melhor compreensão de diversos fenômenos biológicos e sociais.
• Uma das características construtivas marcantes da robótica coletiva é a utilização
de vários robôs com regras comportamentais simples e individuais.
• Sendo assim, o comportamento coletivo será uma propriedade emergente do grupo.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 217
• Essa característica gera então uma dúvida importante: como poderemos prever que
o comportamento do grupo será apropriado para a realização de uma determinada
tarefa?
• Outra dificuldade da robótica coletiva é que, devido a falta de conhecimento global
do sistema, o sistema pode estagnar em algum ponto de sua operação.
• Existe uma grande quantidade de trabalhos em robótica coletiva, e descreveremos
quatro deles inspirados nos seguintes comportamentos biológicos das formigas:
o Coleta de alimento;
o Clusterização de corpos;
o Agrupamento em torno da fonte de alimento (recrutamento); e
o Transporte coletivo de presas.
• O enfoque desta parte curso será nas regras comportamentais de robôs individuais
que levam a comportamentos emergentes. Não serão apresentadas discussões sobre
os aspectos construtivos e detalhes de implementação dos robôs.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 218
4.1. Coleta de Alimento pelas Formigas
• Krieger et al. (2000) demonstraram que um sistema de alocação de tarefas
inspirado no comportamento de formigas coletando alimento fornece um
mecanismo simples, robusto e eficiente para regular as atividades de um grupo de
robôs.
• O objetivo é coletar “itens de alimento” sem que os robôs tenham informação
alguma sobre o ambiente e a quantidade de robôs na colônia. Uma quantidade
mínima de itens de alimento deve ser mantida no ninho para que a energia da
colônia seja mantida acima de um determinado limiar.
• A escolha deste mecanismo biológico deve-se a vários fatores:
o A coleta de alimentos é um dos problemas para o qual se possui um maior grau
de conhecimento sobre como se dá a divisão de tarefas;
o A eficiência da coleta de alimentos é um fator chave para a produtividade da
colônia; e
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 219
o A coleta de alimentos é uma das tarefas que tem recebido maior atenção pela
comunidade de robótica coletiva.
• Seja um grupo de robôs em um “ninho” central e um conjunto de “itens de
alimentação”, todos dentro de uma arena finita.
• O experimento e as regras comportamentais podem ser resumidos como a seguir:
o Cada robô possui a capacidade de avaliar e alterar a energia da colônia;
o Enquanto no ninho, os robôs recebem informação sobre o nível de energia da
colônia através de mensagens de rádio;
o Os robôs saem do ninho sequencialmente apenas quando a energia da colônia
cai abaixo de um determinado limiar;
o Cada robô é programado para evitar colisões com obstáculos;
o Ao retornar ao ninho, cada robô renova sua energia decrementando a energia da
colônia, e descarrega o item de alimento coletado em uma cesta, aumentando a
energia da colônia; e
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 220
o Em alguns experimentos os robôs foram programados para recrutar outros robôs
assim que eles encontram uma região da arena rica em alimento, imitando o
recrutamento em linha observado em algumas espécies de formigas.
• Em resumo, os robôs possuem informações gerais sobre o nível de energia da
colônia, evitam colisões, e em alguns casos, podem recrutar outros robôs para
coletar alimento.
• Os experimentos realizados mostraram, dentre outras coisas, que o recrutamento
em linha é uma forma eficiente de “explotar” itens agrupados (clusterizados) no
ambiente. Além disso, o sistema também mostrou ser capaz de manter uma energia
mínima no ninho.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 221
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 222
4.2. Clusterização de Objetos
• Beckers et al. (1994) desenvolveram um sistema de robótica coletiva para juntar
itens dispersos em uma arena em um único cluster, simulando o comportamento de
clusterização de itens mortos em colônias de formigas.
• Os robôs foram projetados de forma que eles pudessem mover certa quantidade de
itens, e tal que a probabilidade de um item ser depositado em uma determinada
região da arena fosse diretamente proporcional à quantidade de itens naquela
região.
• Isso foi feito através da percepção de uma densidade local de itens utilizando um
mecanismo simples de disparo.
• Nestas simulações os robôs foram equipados com uma garra em forma de C com
um sensor capaz de detectar a presença de três ou mais itens em seu interior.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 223
• Neste caso, os robôs possuem apenas três regras comportamentais:
o Quando nenhum sensor é ativado, o robô executa seu comportamento padrão,
que corresponde a uma movimentação em linha reta até que um obstáculo seja
detectado ou um sensor (switch) seja ativado.
o Ao detectar um obstáculo, o robô executa um comportamento para evitar colisão
do tipo girar em torno do eixo com um ângulo aleatório, e o comportamento
padrão volta a ser executado. Se o robô está empurrando alguns itens quando ele
encontra um obstáculo, estes itens são retidos pela garra enquanto o robô faz a
manobra.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 224
o Quando a garra empurra três ou mais itens, um sensor é ativado resultando na
liberação dos itens, que consiste na abertura da garra seguida de uma marcha ré.
Feito isso, o robô gira com um ângulo aleatório em torno de seu eixo e volta a
seu comportamento padrão.
• Não existe nenhum tipo de comunicação explícita entre os robôs. Eles são
autônomos com todos os sensores, motores, e circuitos de controle independentes.
• Portanto, o comportamento resultante desta colônia de robôs é conseguido através
de um processo estigmérgico auto-organizado baseado na reação dos robôs à
configuração ambiental corrente.
• Os resultados apresentados mostraram que estas simples regras comportamentais
permitem o controle e coordenação de um grupo de robôs sem comunicação direta.
• Trata-se, portanto, de uma verificação de mundo real que comportamentos
estigmérgicos podem ser implementados em robôs para que eles realizem uma
determinada tarefa.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 225
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 226
4.3. Transporte Coletivo de Presas
• Várias espécies de formigas são capazes de transportar coletivamente presas tão
grandes que estas jamais poderiam ser coletadas por uma única formiga.
• Se uma única formiga encontrar uma presa e for capaz de transportá-la sozinha
para o ninho, ela o fará.
• Entretanto, se ela não for capaz, esta formiga poderá recrutar outras formigas via
recrutamento em linha (comunicação direta) ou através da criação de trilhas de
feromônio (recrutamento em massa).
• Quando mesmo um grupo grande de formigas não é capaz de mover uma presa,
formigas trabalhadoras especializadas com grandes mandíbulas poderão ser
recrutadas de forma a cortar a presa em pedaços mais facilmente transportáveis.
• Apesar de muito estudados, estes fenômenos de transporte coletivo de presas ainda
não possuem modelo formal.
• Existem várias características interessantes do transporte coletivo por formigas:
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 227
o Ele é mais eficiente do que o transporte individual, e a capacidade coletiva das
formigas cresce de forma não-linear com a quantidade de formigas envolvidas
na tarefa;
o A resistência ao transporte parece ser o fator determinante na forma como a
presa será transportada. Por exemplo: se ela será puxada ou arrastada, e se
haverá mais do que uma formiga envolvida nesta tarefa.
o Se uma única formiga tenta carregar uma presa e falha, mais formigas poderão
ser recrutadas. A formiga perde algum tempo tentando realinhar seu corpo sem
soltar a presa na esperança de quebrar a inércia e movê-lo. Caso o realinhamento
corporal não seja suficiente, a formiga também tenta se reposicionar em torno
da presa.
• Acredita-se que a quantidade de formigas envolvidas na coleta de presa é uma
função da dificuldade em movê-la, e não apenas do peso da presa.
• A resistência ao movimento estimula o recrutamento de mais formigas.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 228
• O sucesso em empurrar uma presa em uma determinada direção é seguido por
outras tentativas na mesma direção.
• O recrutamento é cessado quando as formigas envolvidas no transporte são
capazes de transportar a presa em uma direção bem definida.
• Em resumo:
o Se uma determinada presa não pode ser movida, as formigas iniciam tentando se
realinhar e se reposicionar em torno do item.
o Somente quando estas duas estratégias falham mais formigas são recrutadas.
• É importante notar que a coordenação no transporte coletivo parece ser mediada
pela presa, ou seja, o resultado da ação de uma formiga irá influenciar o estímulo
percebido pelas outras formigas.
Cooperative Box Pushing
• Inspirados por essas observações, Kube & Zang (1992) estudaram o problema de
transporte coletivo de presas visando uma implementação em robôs.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 229
• O problema por eles abordado – collective box pushing – é, em essência,
equivalente ao transporte coletivo de presas.
• Três tarefas foram estudadas:
o Empurrar uma caixa em qualquer direção;
o Empurrar a caixa em uma direção pré-especificada;
o Transportar a caixa para vários destinos pré-especificados.
• Os robôs possuem cinco comportamentos hierárquicos:
o Evitar colisões;
o Realizar a tarefa (objetivo);
o Reduzir a velocidade;
o Seguir o vizinho mais próximo;
o Encontrar a presa.
• Apenas três regras comportamentais foram implementadas:
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 230
o Um único robô se esforça para puxar ou empurrar a presa tentando diversos
realinhamentos e reposicionamentos;
o Se ele não for bem sucedido, ele recruta outros robôs;
o O grupo de robôs irá tentar de forma coletiva e cooperativa mover a presa
(objeto) tentando se realinhar e reposicionar independentemente, até que uma
configuração satisfatória dos robôs resulte em uma movimentação do objeto.
• Assim como no exemplo anterior, nenhum mecanismo de comunicação direta é
utilizado no transporte do objeto.
• Verificou-se que na ausência de realinhamento e reposicionamento o sistema sofria
estagnação.
• Este sistema é considerado o único modelo existente para o respectivo fenômeno
biológico envolvido.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 231
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 232
Recrutamento
• Um dos problemas envolvidos no transporte coletivo de presas grandes é o
recrutamento de formigas em torno da presa.
• Estudos teóricos sugerem dois tipos básicos de recrutamento baseado na emissão
de substâncias químicas: recrutamento de curto alcance via liberação de químicos
no ar (recrutamento de grupo) e recrutamento de longo alcance via trilhas de
feromônio (recrutamento em massa).
• Inspirados nestes (e outros) comportamentos, pesquisadores do MIT AI Lab
desenvolveram uma comunidade de micro-robôs para simular o que eles
denominaram de AntFarm.
• Este projeto possuía dois objetivos principais:
o Integrar diversos sensores e atuadores em micro-robôs; e
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 233
o Estudar o comportamento de uma comunidade robótica estruturada a partir das
interações de vários robôs simples cuja comunicação se dá através de sensores
infravermelhos.
• Um dos comportamentos estudados foi o recrutamento de robôs em torno de
regiões do espaço ricas em alimento.
• Os robôs eram inicialmente espalhados de forma aleatória em uma arena e um item
de alimento colocado nesta arena.
• Três simples regras comportamentais foram definidas:
o Assim que um robô detecta alimento ele emite um sinal infravermelho dizendo
“Encontrei alimento”. Qualquer robô a um raio de 12” deste recrutador detectará
o sinal;
o Quando um robô detecta o sinal ele vai em direção ao chamado e propaga outro
sinal “Recebi um chamado de alimento”;
o Quando outro robô recebe a mensagem do segundo robô, ele recruta mais robôs.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 234
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 235
Escopo da Robótica Coletiva
• Diversos pesquisadores em robótica coletiva sugerem que suas aplicações em
potencial requerem a miniaturização destes robôs.
• Micro- e nano-robôs que, por construção, possuem capacidades sensoriais e
cognitivas restritas, deverão operar em grandes grupos na realização de tarefas.
• Défago identifica quatro classes principais de aplicação para eles:
o Exploração: trabalhos em ambientes hostis, inacessíveis ou de difícil
comunicação (p. ex. superfície de outros planetas);
o Indústrias: grupos ou times de robôs deverão trabalhar em linhas de montagem;
o Medicina e cirurgia: existem diversas aplicações médicas que utilizam nano-
robôs, como micro-cirurgia e controle, e local de aplicação de drogas dentro do
organismo;
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 236
o Materiais inteligentes: são materiais feitos a partir de diversos módulos
pequenos cada qual formando uma grande estrutura capaz de alterar sua forma e
propriedades físicas dinamicamente.
5. Adaptação Social do Conhecimento
• A técnica de otimização baseada em partículas (particle swarm optimization -
PSO) possui como uma de suas principais motivações criar uma simulação do
comportamento social humano, particularmente a capacidade humana de processar
conhecimento.
• Assim como todas as outras abordagens de inteligência de enxame, ela está
baseada em uma população de indivíduos capazes de interagir entre si e com o
meio ambiente.
• Comportamentos globais serão, portanto, resultados emergentes destas interações.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 237
• Uma teoria sociocognitiva muito simples está por trás do PSO:
o Cada indivíduo de uma população possui sua própria experiência e é capaz de
avaliar a qualidade desta experiência; e
o Como os indivíduos são sociais, eles também possuem conhecimentos sobre
como seus vizinhos se comportaram (desempenharam).
• Estes dois tipos de informação correspondem à aprendizagem individual
(cognitiva) e à transmissão cultural (social), respectivamente.
• Portanto, a probabilidade de um determinado indivíduo tomar uma certa decisão
será uma função de seu desempenho no passado e do desempenho de alguns de
seus vizinhos.
• Kennedy et al. (2001) utilizaram três princípios para resumir o processo de
adaptação cultural:
o Avalie: os indivíduos possuem a capacidade de sentir o ambiente de forma a
avaliar seu próprio comportamento;
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 238
o Compare: os indivíduos usam uns aos outros como forma comparativa;
o Imite: a imitação é central em organizações sociais humanas e é importante para
a aquisição e manutenção das habilidades mentais.
5.1. Algoritmo de Otimização por Partículas
• No algoritmo PSO, os indivíduos que são candidatos a solução de um determinado
problema aprendem a partir de suas próprias experiências e da experiência de
outros.
o Eles se avaliam, comparam seus desempenhos com os de seus vizinhos e imitam
somente aqueles que são melhores do que eles.
• Os indivíduos da população são representados por pontos, denominados de
partículas, em um espaço ℜL.
• As variações nos atributos destes pontos levam a novos pontos no espaço, ou seja,
correspondem a movimentações no espaço.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 239
• Uma ideia inspirada em sistemas cognitivos é a de que estas partículas tenderão a
se mover em direção umas das outras e irão influenciar umas as outras.
• Em termos matemáticos, os principais componentes de um algoritmo PSO podem
ser representados como a seguir:
o A posição de uma partícula i é dada por xi (xi ∈ ℜL);
o Essa partícula irá se mover com uma velocidade vetorial vi;
xi(t+1) = xi(t) + vi(t+1).
• A inspiração tomada nas ciências sociais e na psicologia sugere que os indivíduos
sejam influenciados por suas próprias experiências prévias e pela experiência de
alguns de seus vizinhos.
• Entretanto, a vizinhança aqui corresponde a vizinhança topológica e não a
vizinhança no espaço de atributos de cada indivíduo (partícula).
• Sendo assim, a vizinhança de cada indivíduo é definida baseada em um arranjo
topológico.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 240
3 4 2 5 1 7 6 8
10 9
14 13 11
12
Figura 31: Possível topologia de vizinhança para o PSO.
• Existem diversas formas de se definir a vizinhança de um indivíduo.
• A maior parte dos algoritmos de PSO empregam dois princípios sociométricos:
o O primeiro, denominado de gbest (g = global), conecta conceitualmente todos os
membros de uma população entre si. Como consequência, o comportamento de
cada partícula é influenciado pelo comportamento de todas as outras partículas.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 241
o O segundo, denominado de lbest (l = local), cria uma vizinhança para cada
indivíduo composta por ele próprio e seus k-vizinhos mais próximos.
Figura 32: Vizinhança global e local.
• Uma partícula irá se mover em uma determinada direção que é função da posição
atual da partícula xi(t), de uma velocidade vi(t+1), da posição pi da partícula que
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 242
levou ao seu melhor desempenho até o momento, e do melhor desempenho global
do sistema até o momento pg:
xi(t+1) = f(xi(t), vi(t), pi, pg).
• A velocidade da partícula será dada por:
vi(t+1) = vi(t) + ϕ1(pi − xi(t)) + ϕ2(pg − xi(t)),
onde ϕ1 e ϕ2 são constantes limitadas a um intervalo finito.
Obs.: primeiro atualiza-se a velocidade e depois a posição:
xi(t+1) = xi(t) + vi(t+1).
• Em Kennedy (1997) o autor denomina o penúltimo termo da Equação (3) como
sendo o termo “cognitivo” e o último como sendo o termo “social”.
• Para limitar a velocidade de uma partícula de forma que o sistema não exploda, são
impostos limites para seus valores:
If vid > vmax, then vid = vmax,
Else if vid < − vmax then vid = − vmax
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 243
(Versão para Maximização) procedure [X] = PSO(max_it,ϕ1,ϕ2,vmax)
initialize X //usually every particle xi is initialized at random
initialize vi //at random, vi ∈ [-vmax,vmax]
t ← 1 while t < max_it do, for i = 1 to N do, //for each particle
if f(xi) > f(pi), then pi = xi, //best individual performance so far
end if for j = indexes of neighbors
if f(pj) > f(pg), then g = j, // best neighbor performance so far
end if end for
vi(t+1) = vi(t) + ϕ1(pi − xi(t)) + ϕ2(pg − xi(t)) vi ∈ [−vmax,vmax] xi(t+1) = xi(t) + vi(t+1)
end for
t ← t + 1 end while
end procedure
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 244
5.2. Escopo de Aplicação
• As primeiras aplicações do algoritmo PSO foram na determinação de pesos e
arquitetura de redes neurais artificiais.
• Além disso, esta técnica também tem sido aplicada a problemas de otimização de
funções numéricas em geral.
• Aplicações em problemas de mundo real também existem na literatura, como,
análise de tremor humano, otimização de moinhos, otimização de misturas de
ingredientes, controle de potência e tensão reativa, estimação de carregamento de
baterias, e composição de música.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 245
5.3. De Sistemas Sociais a Enxames de Partículas
Sociocognição Algoritmo PSO
Indivíduo Partícula
População de indivíduos
Enxame de partículas
Esquecimento e aprendizagem
Incremento ou decremento nos valores de alguns atributos das partículas
Experiência própria de um indivíduo
Cada partícula possui algum conhecimento de sua história (desempenho) e emprega este conhecimento para direcionar seus próximos movimentos no espaço
Interações sociais Cada partícula também possui conhecimento sobre a vida (desempenho) de outras partículas e emprega este conhecimento para direcionar seus próximos movimentos no espaço
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 246
Tópico 7: Geometria Fractal da Natureza
“Why is geometry often described as ‘cold’ and ‘dry’? One reason lies in its inability to
describe the shape of a cloud, a mountain, a coastline, or a tree. Clouds are not spheres,
mountains are not cones, coastlines are not circles, and bark is not smooth, nor does
lightning travel in a straight line. … The existence of these patterns challenges us to study
those forms that Euclid leaves aside as being ‘formless’, to investigate the morphology of
the ‘amorphous’.” (Mandelbrot, 1983, p.1)
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 247
“In the past, mathematics has been concerned largely with sets and functions to which the
methods of classical calculus can be applied. Sets or functions that are not sufficiently
smooth or regular have tended to be ignored as ‘pathological’ and not worthy of study.
Certainly, they were regarded as individual curiosities and only rarely were thought of as
a class to which a general theory might be applicable. In recent years this attitude has
changed. It has been realized that a great deal can be said, and is worth saying, about the
mathematics of non-smooth objects. Moreover, irregular sets provide a much better
representation of many natural phenomena than do the figures of classical geometry.
Fractal geometry provides a general framework for the study of such irregular sets.
(Falconer, 2003, p. xvii)
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 248
1. Introdução
• O grande avanço da computação gráfica tornou possível a visualização de diversos
modelos e estruturas de fenômenos naturais com grande realismo.
• As imagens, animações e sistemas resultantes são úteis como ferramentas
científicas, de pesquisa e educacionais em diversas áreas.
• As aplicações incluem o projeto e criação de paisagens naturais, plantas, predição
de fenômenos naturais (colheita), estudo de processos de desenvolvimento e
crescimento, modelagem e síntese de diversos padrões e formas naturais.
• Existem diversas técnicas de modelagem e síntese de padrões naturais. Por
exemplo: modelos de reação-difusão (reaction-diffusion models), modelos de
agregação de difusão limitados (diffusion-limited aggregation), autômatos
celulares, sistemas de Lindenmeyer (L-systems), sistemas de funções iterativas
(iterated function systems), sistemas de partículas (particle systems), etc.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 249
• Uma etapa marcante no processo de modelagem e síntese de padrões naturais foi o
reconhecimento de que a natureza é fractal, juntamente com o desenvolvimento da
geometria fractal.
• De forma simplificada, a geometria fractal pode ser vista como a geometria da
natureza, com toda a sua irregularidade e estruturas complexas e fragmentadas.
2. A Geometria Fractal da Natureza
• A geometria Euclidiana descreve formas ideais, como pontos, círculos, retas,
esferas, quadrados, cubos, etc.
• Entretanto, estas formas Euclidianas são geralmente encontradas apenas em
objetos produzidos por seres humanos.
• A natureza não possui formas suaves e uniformes e muitos padrões são irregulares
e fragmentados.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 250
• Qual a forma de um floco de neve? E de uma montanha? E de uma encosta,
nuvem, árvore e diversas outras formas da natureza?
• O termo fractal foi cunhado por Mandelbrot (1983) para identificar uma família de
formas que descrevem padrões irregulares e fragmentados da natureza.
• A geometria fractal é a geometria das formas irregulares encontradas na natureza.
o Genericamente, os fractais são caracterizados por detalhes infinitos,
comprimento infinito, autossimilaridade, dimensões fractais, e a ausência de
suavidade ou derivadas.
• Portanto os fractais são irregulares; eles possuem o mesmo grau de irregularidade
em todas as escalas.
• Os fractais parecem os mesmos quando observados à distância ou de muito perto
(autossimilaridade).
• Alguns exemplos de fractais na natureza:
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 251
o Arbustos, costas marítimas, montanhas, couve-flor, brócolis, pulmões, cérebro,
rins, nuvens, etc.
2.1. Autossimilaridade
• Uma interpretação intuitiva de autossimilaridade:
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 252
15cm 5.5cm
• Autossimilaridade estatística: quando as cópias (partes) menores são pequenas
variações de toda a estrutura.
• Autossimilaridade estrita × Autoafinidade (autossimilaridade estatística):
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 253
Autossimilaridade estrita Autoafinidade
2.2. Alguns Fractais Pioneiros
• O primeiro fractal foi descoberto por K. Weierstrass em 1861. Ele descobriu uma
função contínua que não é diferenciável em ponto algum, ou seja, uma curva
constituída somente por “cantos”.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 254
• Outros fractais pioneiros foram descobertos por G. Cantor, H. von Koch e W.
Siepirnski, dentre outros.
• Estes fractais foram considerados “monstros matemáticos” devido a algumas
características não intuitivas que eles apresentavam.
O Conjunto de Cantor
Step 1 Step 2 Step 3 Step 4
• Propriedades interessantes:
o Não possui comprimento algum ou interior
o Cada uma de suas partes é constituída basicamente de buracos
o É totalmente formado por pontos desconexos
o Contém a mesma quantidade de pontos que a curva da qual ele é derivado
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 255
o Cada um de seus pontos é um ponto limite, ou seja, existe uma quantidade
infinita de outros pontos do conjunto na sua vizinhança.
A Curva de Koch (Floco de neve)
• Propriedades interessantes:
o No limite a curva de Koch não possui segmento algum de reta; a curva é
inteiramente constituída por cantos.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 256
o Portanto a curva não apresenta derivada (tangente) em ponto algum.
o Embora ela se inicie a partir de uma reta de comprimento L, seu comprimento é
infinito.
o No passo t a curva possui 4t segmentos, cada qual com comprimento 1/3t.
Portanto, o comprimento total da curva é (4/3)t.
o Note que uma curva de comprimento infinito pode ser colocada em uma área
finita.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 257
• Outro fractal pioneiro: o triângulo de Sierpinski.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 258
Step 1 Step 2 Step 3
• Curvas que preenchem o espaço: a curva de Peano.
Step 0 Step 1
Step 2 Step 3
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 259
2.3. Dimensão e Dimensão Fractal
• Estruturas como a curva de Peano desafiavam o conceito de dimensão, pois curvas
eram sabidas terem dimensão 1, mas para preencher o espaço elas deveriam ser
percebidas como tendo dimensão 2.
• Pontos possuem dimensão 0, linhas e curvas possuem dimensão 1, planos e
superfícies possuem dimensão 2, sólidos possuem dimensão 3, etc.
• De forma simplificada, um conjunto possui dimensão d se d variáveis
independentes (coordenadas) são necessárias para descrever a vizinhança de cada
ponto. Esta noção de dimensão é denominada de dimensão topológica.
• No final do século 19 alguns matemáticos perceberam que um bom entendimento
da irregularidade ou fragmentação de algumas formas não pode ser alcançado
definindo-se dimensão como sendo um número de coordenadas.
• Por exemplo, a curva de Koch possui dimensão topológica 1, mas não pode ser
considerada uma curva sob a perspectiva da geometria Euclidiana: o comprimento
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 260
entre quaisquer dois pontos da curva é infinito; nenhuma de suas partes é uma
linha ou um plano. De certa forma, é possível dizer que ela é muito grande para ser
uni-dimensional e ao mesmo tempo muito pequena para ser bi-dimensional. Talvez
sua dimensão deva ser um número entre 1 e 2...
• A dificuldade em se definir a dimensão de objetos como a curva de Koch, o
conjunto de Cantor e o triângulo de Sierpinski não é apenas um problema dos
fractais exemplificados aqui.
• Um fenômeno similar foi identificado pelo meteorologista inglês L. Richardson em
1961 em sua tentativa de medir o comprimento de várias costas marítimas,
incluindo a costa da Inglaterra.
• Ele percebeu que o comprimento aparente da costa parecia crescer sempre que o
comprimento do instrumento de medida era reduzido.
• Isso ocorria, pois quanto menor o comprimento do medidor maior a amplificação
dos detalhes.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 261
• Richardson concluiu que o comprimento da costa não é bem definido, e ele
também propôs uma lei empírica relacionando este aumento no comprimento da
unidade de medida com a quantidade de detalhes percebidos.
• Ele notou que quando o logaritmo do comprimento do instrumento de medida era
plotado em função do logaritmo do comprimento total da costa, os pontos tendiam
a se encontrar em uma linha reta.
• A inclinação da reta resultante media, de alguma forma, o grau de dobramento ou
fragmentação da costa.
• Mandelbrot (1983) encontrou o trabalho de Richardson e verificou que os fractais
poderiam ser classificados de forma similar.
• Como então medir a dimensão de um objeto?
• Para o caso de formas regulares, uma forma com dimensão d é composta por N
cópias de tamanho 1/m em relação ao tamanho original, onde N = m−d.
o m é conhecido como fator de redução.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 262
o Exemplo: quadrado.
m = 1/2 ⇒ N = 4; m = 1/3 ⇒ N = 9.
• A ideia da relação entre o logaritmo do número de cópias de um objeto e o
logaritmo do tamanho de suas cópias sugeriu uma generalização do conceito de
dimensão que permite valores fracionários.
o Essa dimensão é conhecida como dimensão de autossimilaridade:
N = (1/m)d ⇒ log(N) = log((1/m)d) ⇒ log(N) = d.log(1/m) ⇒ m
Nd
/1log
log=
• Portanto, a dimensão ds de uma forma autossimilar pode então ser dada por:
m
Nd
/1log
log= ,
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 263
onde N é a quantidade de cópias do objeto e m é o fator de redução.
• Em 1919 Hausdorff estendeu a noção de dimensão de similaridade para que ela se
aplicasse a todo tipo de formas, além das formas autossimilares.
• A dimensão fractal serve para descrever a complexidade (fractal) de um objeto.
o Exemplos: a costa Britânica e a curva de Koch possuem dimensão fractal
aproximada de 1.26, enquanto uma nuvem típica possui dimensão 1.35.
• Embora o escopo da dimensão de Hausdorff seja geral, ela é difícil de ser
calculada na prática. Uma forma mais simples de medir a dimensão fractal de uma
curva é denominada de método da contagem de quadrados:
o Cubra com quadrados a forma cuja dimensão você pretende medir e verifique
como o número de quadrados varia em relação ao tamanho dos quadrados.
o No limite, para uma forma fractal, a taxa com a qual a proporção de quadrados
cheios decresce fornece a dimensão do método da contagem de quadrados.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 264
Line
m = 1, N(m) = 1 m = 1/2, N(m) = 2
m = 1/4, N(m) = 4
N(1) = 1 N(1/2) = 2 = 1/(1/2) N(1/4) = 4 = 1/(1/4) ... N(m) = 1/ m
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 265
Filled-in square
m = 1, N(m) = 1 m = 1/2, N(m) = 4 m = 1/4, N(m) = 16
N(1) = 1 N(1/2) = 4 = (1/(1/2))2 N(1/4) = 16 = (1/(1/4))2 ... N(m) = (1/m)2
• Para objetos mais complicados, como fractais, a relação entre N(m) e 1/m pode ser
uma potência: N(m) = k(1/m)d, resultando na definição da dimensão do método da
contagem de quadrados:
)/1log(
)log())(log(
m
kmNdb
−= .
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 266
• Note que a equação acima define a dimensão como sendo o coeficiente angular da
reta formada entre log(N(m)) e log(1/m) e que intercepta o eixo y no ponto log(k).
• No limite para m → 0:
)/1log(
))(log(lim 0
m
mNd mb →= .
3. Autômatos Celulares
• Autômatos celulares (CAs) correspondem a uma classe de sistemas matemáticos
determinísticos discretos no espaço e no tempo, caracterizados por interações
locais e uma evolução inerentemente paralela no tempo.
• CAs são protótipos de sistemas complexos e processos que consistem em um
grande número de componentes simples, idênticos e sujeitos a interações locais.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 267
• O estudo dos autômatos celulares atraiu um grande interesse nos últimos anos
devido a sua capacidade de gerar um amplo espectro de padrões comportamentais
complexos a partir de conjunto(s) relativamente simples de regras.
• Além disso, eles parecem capturar a essência de comportamentos auto-organizados
complexos observados em sistemas naturais.
• Algumas características genéricas de CAs:
o Grid discreto de células: uni-, bi-, ou tridimensional.
o Homogeneidade: todas as células são equivalentes.
o Estados discretos: cada célula pode assumir um dentre um conjunto finito de
estados.
o Interações locais: cada célula interage apenas com células em sua vizinhança.
o Dinâmica discreta: a cada passo de tempo cada célula atualiza seu estado de
acordo com uma regra de transição que considera seu estado atual e o estado das
células em sua vizinhança.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 268
3.1. O Exemplo Mais Simples
• Um CA binário de uma dimensão, ou seja, o grid corresponde a uma linha de
células que podem assumir apenas os estados 0 ou 1.
• O estado si de uma célula i (i é o vetor que indica a posição da célula) é atualizado
em tempos discretos de acordo com regras determinísticas que dependem da
vizinhança da célula e de seu estado atual:
si(t + 1) = f(si−1(t), si(t), si+1(t)).
i−1 i i+1
000 → 0 100 → 1 001 → 1 101 → 1 010 → 1 110 → 0 011 → 0 111 → 0
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 269
Tim e
3.2. Definição Formal
• Um autômato celular d-dimensional consiste em um grid finito de dimensão d com
células que podem assumir um entre um conjunto finito de valores (estados).
• O estado de cada célula no tempo t + 1 é função do estado de um conjunto de
células vizinhas no instante t.
• Formalmente, um CA pode ser definido como uma quíntupla:
C = (S,s0,G,d,f),
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 270
onde S é um conjunto finito de estados, s0 ∈ S são os estados iniciais, G é a
vizinhança da célula, d ∈ Z+ é a dimensão de C, e f é o conjunto de regras locais de
interação, também conhecidas como regras ou funções de transição.
• Outros conceitos:
o Vizinhança: Gi = {i, i + r1, i + r2, …,i + rn}, onde n é o tamanho da vizinhança.
o Regra de transição: f : Sn → S
o Configuração do grid: C(t) = (s0(t), s1(t),…, sN−−−−1(t)), onde si é o estado da célula i
no instante t.
o Progressão: F : C(t) → C(t + 1), t = 0,1,…
• Exemplo de aplicação: geração de formas fractais.
000 → 0 100 → 1 001 → 1 101 → 1 010 → 1 110 → 1 011 → 1 111 → 0
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 271
3.3. Escopo de Aplicação
• Computadores universais; estudo de vida artificial; modelagem de sistemas físicos,
químicos e biológicos; estudo de teoria de sistemas dinâmicos; estudos sobre
dinâmicas populacionais.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 272
4. Sistemas L (L-Systems)
• A. Lindenmayer introduziu em 1968 um formalismo para simular o
desenvolvimento de organismos multicelulares.
• Estes sistemas foram posteriormente denominados sistemas-L (L-systems) ou
algoritmos de desenvolvimento (developmental algorithms).
• O desenvolvimento multicelular consiste na geração de estruturas através da
divisão, crescimento, diferenciação e morte celular. Ele corresponde a uma série de
mudanças que os organismos sofrem durante sua passagem do estado embrionário
para a maturidade.
4.1. Conceitos sobre Sistemas de Produção e Gramáticas
• O formalismo por trás dos sistemas-L é baseado em sistemas de produção e uma
gramática específica.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 273
• Um sistema de produção, também conhecido como sistema baseado em regras,
emprega implicações como sua representação primária.
• Tipicamente seu elemento mais importante é um conjunto de regras de produção
ou simplesmente produções. Ex. se a então b.
Gramática
• Um alfabeto V é um conjunto finito de símbolos. O conjunto de todas as strings
finitas formadas pelo alfabeto V é denominado por V*.
• Uma palavra ou string w é uma sequência de elementos de V.
• A string vazia ou de comprimento zero, e, também faz parte de V*; V+ = V* − {e}.
• Uma linguagem L sobre um alfabeto V é qualquer subconjunto de V*; L ⊆ V*.
• Uma gramática é uma quádrupla G = ⟨V,T,P,S⟩, onde V é um conjunto finito
(alfabeto); T é um conjunto cujos elementos são denominados de terminais, os
elementos de N = S \ T são denominados de não-terminais (N ⊂ S); P é o conjunto
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 274
de produções, e S é um símbolo não-terminal conhecido como axioma (ponto de
partida).
4.2. Sistemas DOL
• A ideia básica de um sistema-L está contida na natureza das linguagens formais.
• As formas geométricas (fractais) a serem estudadas são palavras em uma
linguagem formal paralela.
• As gramáticas em sistemas-L são similares às gramáticas formais apresentadas
anteriormente, porém as produções são aplicadas simultaneamente (paralelamente)
e não existe distinção entre símbolos terminais e não terminais.
• Exemplo de um sistema-L:
o Seja o alfabeto G = {a,b,c}, onde c é o axioma, e as seguintes produções:
1. a → c
2. b → ac
3. c → b
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 275
o O processo de aplicação das regras é denominado de processo de derivação ou
de reescrita.
Iteration Word 0 1 2 3 4 5 6 7 8 9
10
c b ac cb bac accb cbbac bacaccb accbcbbac cbbacbacaccb bacaccbaccbcbbac
• A introdução dos sistemas-L reviveu o interesse na representação de imagens
utilizando sequências de caracteres.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 276
• Um sistema-OL é definido como sendo a tripla ordenada G = ⟨V,ω,P⟩, onde V é o
alfabeto do sistema, ω ∈ V+ é uma palavra de comprimento não-nulo denominada
de axioma, e P ⊂ V × V* é um conjunto finito de produções.
• Uma produção (a,χ) ∈ P é escrita como a → χ. A letra a e a palavra χ são
denominadas de predecessor e de sucessor da produção, respectivamente.
• É assumido que para cada letra do alfabeto existe pelo menos uma palavra do
conjunto V* tal que a → χ, ou seja, ∃ χ ∈ V* | a → χ, ∀ a ∈ V.
• Caso nenhuma produção for especificada para um determinado predecessor a,
a → a é assumido por default.
• Um sistema-OL é dito determinístico, sistema-DOL, se e somente se para cada
a ∈ V existe um único χ ∈ V* tal que a → χ.
• Seja µ = a1…am uma palavra arbitrária em V. A palavra ν = χ1…χm ∈ V* é
diretamente derivável (ou gerada a partir) de µ, µ ⇒ ν, se e somente se ai → χi,
i = 1,…,m.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 277
• Uma palavra ν é gerada por G em uma derivação de comprimento n se existe uma
sequência de desenvolvimento de palavras µ0, µ1,…, µn tais que µ0 = ω, µn = ν and
µ0 ⇒ µ1 ⇒…⇒ µn.
4.3. Gráfico Tartaruga (Turtle Graphics)
• Na descrição apresentada acima, o sistema-L foi utilizado para gerar uma
sequência de palavras.
• A interpretação geométrica destas palavras pode ser utilizada para gerar imagens
de diversos padrões naturais.
• Uma linguagem do tipo turtle graphics pode ser usada para fazer a interpretação
geométrica das palavras geradas pelo sistema-L.
• Idéia básica em 2-D:
o O estado da tartaruga é definido como sendo a tripla (x,y,α), onde as
coordenadas cartesianas (x,y) correspondem a posição da tartaruga, e o ângulo
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 278
α, denominado de direção (heading), é interpretado como sendo a direção para a
qual a tartaruga aponta.
o Dado o tamanho do passo d e o incremento do ângulo δ, a tartaruga pode
responder a diversos comandos:
F Move forward a step of length d. The state of the turtle changes to (x’,y’,α),
where x’ = x + d.cosα, and y’ = y + d.sinα. A line segment between points (x,y)
and (x’,y’) is drawn.
f Move forward a step of length d without drawing a line.
+ Turn right by angle δ. The next state of the turtle is (x,y,α+δ). The positive
orientation of angles is clockwise.
− Turn left by angle δ. The next state of the turtle is (x,y,α−δ). The negative
orientation of angles is counterclockwise.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 279
• Dado um axioma ν, o estado inicial da tartaruga (x0,y0,α0) e os parâmetros d e δ, a
turtle interpretation de ν é a figura (conjunto de linhas) desenhada pela tartaruga
em resposta a ν.
• Exemplo: seja δ = 90o, d = 1, e a seguinte palavra FF+F−F.
− +
F
x
y
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 280
4.4. Modelos de Arquiteturas de Plantas
• Em 1968, Lindenmayer estendeu os sistemas-L incluindo os colchetes {[,]} no
alfabeto dos sistemas-L, criando os bracketed L-systems.
• A motivação foi a de descrever formalmente estruturas ramificadas observadas em
plantas, algas, árvores, etc.
• Os dois novos símbolos ‘[’ e ‘]’ são interpretados pela tartaruga como a seguir:
[ Save the current state (x,y,α) of the turtle for later use onto a stack of saved
states.
] Remove the last saved state from the stack and use it to restore the turtle’s last
state. No line is drawn, although in general the position of the turtle changes.
• Exemplo: V = {F,G,[,],+,−}, axioma ω = F, δ = 45o, produções:
p1: F → G[−F]G[+F]F
p2: G → GG
p3: [ → [
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 281
p4: ] → ]
Iteration Word
0
1
2
F
G[−F]G[+F]F
GG[−G[−F]G[+F]F]GG[+G[−F]G[+F]F] G[−F]G[+F]F
• F: seta tracejada; G: seta sólida.
p2
p1
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 282
procedure [word] = DOL_turtle(max_it,ω,P,d,δ) word ← ω t ← 1 while t < max_it do,
word ← rewrite(word,P)
t ← t + 1 end while
turtle(word,d,δ); end procedure
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 283
• Exemplos de plantas geradas com sistemas L.
t = 8, δ = 22.5o ω: G G → F+[[G]−G]−F[−FG]+G F → FF
t = 5, δ = 22.5o ω: G G → FG[−F[G]−G][G+G][+F[G]+G] F → FF
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 284
4.5. Escopo dos Sistemas L
• Projeto de paisagens, ornamentações, ilustrações botânicas, desenvolvimento de
organismos, reconstrução de plantas extintas, modelos estruturais de plantas,
projeto de novas variedades de plantas, predição de colheita, descrição de
florescência, simulação de crescimento de fungos, etc.
5. Sistemas de Funções Iterativas
• Os sistemas de funções iterativas (IFS – iterated function systems) foram
desenvolvidos por J. Hutchinson, M. Barnsley e S. Demko como uma ferramenta
para a geração de fractais através do uso de um conjunto de transformações,
também denominadas de mapeamentos contrativos, de uma imagem sobre si
própria.
• Os IFS consistem basicamente da aplicação recursiva de um conjunto de
transformações afins a um conjunto de pontos iniciais (imagem).
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 285
• Após um determinado número de iterações, o conjunto final ou limite, irá definir
certa configuração geométrica.
5.1. Fundamentos Teóricos
• Um espaço X é um conjunto, e os pontos do espaço são elementos do conjunto.
• Um espaço métrico (X,d) é um espaço X juntamente com uma função real
d : X × X → ℜ que mede a distância entre pares de pontos x, y ∈ X.
• A função d, denominada de métrica, deve obedecer às seguintes propriedades:
1. d(x,y) = d(y,x) ∀ x,y ∈ X
2. 0 < d(x,y) < ∞ ∀ x,y ∈ X, x ≠ y
3. d(x,x) = 0 ∀ x ∈ X
4. d(x,y) ≤ d(x,z) + d(z,y) ∀ x,y,z ∈ X
• Seja (X,d) um espaço métrico. Uma transformação sobre X é uma função
f : X → X que especifica exatamente um ponto f(x) ∈ X a cada ponto x ∈ X.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 286
• Uma transformação w : ℜ2 → ℜ2 da forma w(x1,x2) = (ax1 + bx2 +e, cx1 + dx2 + f),
onde a, b, c, d, e, e f são números reais é denominada de transformação afim
(bidimensional).
• Em notação matricial:
tAxx +=
+
=
=
f
e
x
x
dc
ba
x
xww
2
1
2
1)(
• Estas transformações possuem propriedades algébricas e geométricas importantes.
• As quatro principais transformações afins são:
o Translação, escalonamento, reflexão e rotação.
Translation
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 287
Scaling
Reflection
Rotation
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 288
5.2. Sistemas de Funções Iterativas (IFS)
• Uma transformação f : X → X sobre um espaço métrico (X,d) é denominada
contrativa, ou mapeamento contrativo, se existe uma constante 0 ≤ s < 1 tal que:
d( f(x), f(y)) ≤ s.d(x,y), ∀x, y ∈ X,
onde s é chamado de fator de contratividade para f.
• Uma propriedade importante de contrações é que independentemente do ponto
inicial, a aplicação iterativa do mapeamento contrativo resulta sempre na
convergência para o mesmo ponto, denominado de atrator.
• Um sistema de funções iterativas consiste em um espaço métrico completo (X,d)
juntamente com um conjunto finito de mapeamentos contrativos wn : X → X (com
os respectivos fatores de contratividade sn, n = 1,2,…N).
• Vamos nos restringir ao caso de IFS da forma {ℜ2; wn : n 1,2,…,N}, onde cada
mapeamento contrativo corresponde a uma transformação linear.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 289
Sistema determinístico de funções iterativas (deterministic IFS – DIFS).
• Este algoritmo é baseado na ideia de calcular diretamente uma sequência de
conjuntos {An = Wοn(A)} a partir de um conjunto inicial A0.
• Seja {X; w1, w2,…, wN} um IFS. Escolha um conjunto compacto A0 ⊂ ℜ2 que
servirá de condição inicial para o DIFS. Em seguida calcule sucessivamente
An = Wοn(A) de acordo com:
)(11 njNjn AwA =+ ∪= , n = 1,2,…
• Assim, uma sequência {An : n = 0,1,2,...} será construída e {An} convergirá para o
atrator do IFS de acordo com o teorema do mapeamento contrativo.
• Metáfora para o DIFS: multiple reduction copy machine (MRCM).
An MRCM An+1 A0
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 290
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 291
Sistema aleatório de funções iterativas (random iterated function system – RIFS).
• Seja {X; w1, w2,…, wN} um IFS onde uma probabilidade pi > 0 é atribuída a cada
mapeamento wi, i = 1,…,N, ∑i pi = 1.
• Escolha x0 ∈ X e depois escolha recursivamente e independentemente
xn ∈ {w1(xn−1), w2(xn−1),…, wN(xn−1)}, ∀n
onde a probabilidade de um evento xn = wi(xn−1) ocorrer é pi.
• Portanto, construa uma sequência {xn : n = 0,1,2,…} ⊂ X.
procedure [] = RIFS(max_it,x0,W,p)
x ← x0;
t ← 1 while t < max_it do,
j ← select(p) //select a mapping j with probability pj
x ← wj(x) //apply mapping j to x draw(x) //plot point x on the screen
t ← t + 1 end while
end procedure
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 292
• Exemplo: Arbusto de Barnsley
w a b c d e f p
1 0 0 0 0.16 0 0 0.01 2 0.85 0.04 −0.04 0.85 0 1.6 0.85 3 0.2 −0.26 0.23 0.22 0 1.6 0.07 4 −0.15 0.28 0.26 0.24 0 0.44 0.07
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 293
5.3. Autosimilaridade e Autoafinidade Revisitadas
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 294
6. Movimento Browniano
• Para modelar regiões costeiras, montanhas, etc., são necessárias curvas que
parecem diferentes quando amplificadas, mas que ainda apresentam a mesma
impressão característica.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 295
6.1. Fractais Aleatórios na Natureza e Movimento Browniano
• Uma caminhada aleatória (random walk) é um caminho que pode ser gerado por
um processo aleatório.
x(t+1) = x(t) + ∆x
y(t+1) = y(t) + ∆y
onde ∆x e ∆y podem ser distribuições Gaussianas de média zero e desvio padrão 1.
Random Walk – First 100 Steps Random Walk – 10,000 Steps
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 296
• Este tipo de caminhada aleatória está intimamente relacionada ao movimento
Browniano, que é encontrado no movimento de partículas em líquidos e gases, e
em ruído branco, comumente usado para descrever outros fenômenos gerados por
caminhadas aleatórias.
• Depósitos eletroquímicos constituem um exemplo típico de movimento
Browniano.
o Por exemplo, colocando-se uma solução de sulfato de zinco coberta com uma
camada fina de n-butil-acetato em uma placa de Petri e aplicando-se uma
corrente contínua ao conjunto é possível investigar o crescimento de estruturas
fractais de eletro-depósitos e suas mudanças morfológicas.
o Experimentos desta natureza são importantes em ciências de polímeros, ciência
dos materiais, imunologia e várias outras áreas.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 297
• Um modelo matemático de depósito de zinco que apresenta um comportamento do
tipo movimento Browniano pode ser simulado com uma técnica denominada de
DLA (diffusion limited aggregation):
o Gere um grid quadrado de células;
o Fixe uma única célula, chamada semente, em uma dada posição do grid (p. ex.
no centro);
o Selecione uma vizinhança de interesse centrada em torno da semente (p. ex.
usando uma vizinhança de Moore) e introduza uma nova partícula em
movimento nesta vizinhança;
o Se a partícula em movimento sair da vizinhança, então ela é substituída por uma
nova aleatoriamente gerada; senão, se a partícula em movimento encontrar a
semente ou alguma partícula agregada à semente, então ela se une ao cluster
tornando-se uma partícula estática.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 298
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 299
procedure [] = DLA(seed)
C ← generate_C //generate Grid
Cr ← select_region(seed) //region around seed
p ← new_particle(Cr) //new particle within Cr
cs ← 1 //cluster size while not_stopping_criterion do,
p ← move_particle //moving particle if p meets cluster, then attach p to cluster
cs ← cs + 1
p ← new_particle(Cr) else
if p leaves Cr
p ← new_particle(Cr) end if
end if end while
end procedure
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 300
• Em uma dimensão o movimento Browniano é caracterizado por um processo
aleatório X(t), que corresponde a uma função X de uma variável real t (tempo),
cujos valores são variáveis aleatórias X(t1), X(t2), … , onde o incremento X(t2) −
X(t1) possui uma distribuição Gaussiana e os incrementos quadráticos médios têm
uma variância proporcional à diferença entre os tempos:
E[ | X(t2) − X(t2) |2 ] ∝ |t2 − t1|.
• Os incrementos de X são estatisticamente autossimilares no sentido que:
X(t0 + t) − X(t0) e ( ))()(1
00 tXrttXr
−+ ,
possuem as mesmas funções de distribuição conjuntas para quaisquer t0 e r > 0.
• Assumindo, por exemplo, t0 = 0 e X(t0) = 0, ambas as funções aleatórias
X(t) e ( ))(1
rtXr são estatisticamente indistinguíveis; a segunda sendo uma
versão apropriadamente reescalonada da primeira.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 301
• Um método popular para gerar movimento Browniano é conhecido como
algoritmo recursivo da subdivisão (recursive subdivision algorithm), também
conhecido como algoritmo do deslocamento aleatório do ponto médio (random
midpoint displacement algorithm - RMD).
• O RMD opera como a seguir:
o Se o processo X(t) deve ser computado para o tempo t ∈ [0, 1], então comece
definindo X(0) = 0 e escolhendo X(1) como uma amostra de um valor Gaussiano
de média 0 e variância σ2.
o No primeiro passo, o ponto médio entre t = 0 e t = 1 é dado pela média entre
X(0) e X(1), mais um desvio D1 de média zero e variância 21∆ :
X(½) − X(0) = ½(X(1) − X(0)) + D1.
o Como uma amostra de uma variável aleatória Gaussiana possui média 0 e
variância σ2, é esperado que:
var(X(t2) − X(t1)) = |t2 − t1|σ2.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 302
o Além disso, a cada iteração o número de fragmentos dobra, e o desvio Dn no
tempo n deve ter variância:
21
2 σ2
1+
=∆nn .
0.25 0.5 0.75 1.0 t 0.5 1.0 t
D1
D2,1
D2,2
X(t) X(t)
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 303
6.2. Movimento Browniano Fracionário
• O termo movimento Browniano fracionário (MBF) foi introduzido para se referir a
uma família de funções Gaussianas capazes de gerar modelos de séries temporais
naturais.
• Muitas extensões e variações foram propostas para modelar uma vasta gama de
fenômenos naturais, de paisagens montanhosas a nuvens.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 304
• O MBF é uma generalização do movimento Browniano definido como um
processo aleatório X(t) com incrementos Gaussianos e
var(X(t2) − X(t1)) ∝ |t2 − t1|2H,
onde 0 < H < 1.
• Neste caso genérico, os incrementos de X são estatisticamente auto-similares, com
parâmetro H, no sentido que:
X(t0 + t) − X(t0) e Hr
tXrttX )()( 00 −+
possuem as mesmas funções de distribuição conjuntas para quaisquer t0 e r > 0.
• Tomando-se, por exemplo, t0 = 0 e X(t0) = 0, ambas as funções aleatórias
X(t) e ( ))(1
rtXr H são estatisticamente indistinguíveis; a segunda sendo uma
versão apropriadamente reescalonada da primeira.
• Para aplicar o algoritmo RMD ao caso mais geral de MBF é necessário que:
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 305
var(X(t2) − X(t1)) = |t2 − t1|2H σ2.
• O deslocamento do ponto médio torna-se então
)21()2(
σ 222
22 −−=∆ H
Hnn .
• O parâmetro H, denominado coeficiente de Hurst, descreve a ‘rugosidade’ da
fração em pequenas escalas.
H = 0.1
H = 0.3
H = 0.5
H = 0.7
H = 0.9
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 306
• A extensão deste algoritmo (RMD) para três ou mais dimensões é direta e resulta
em algoritmos capazes de gerar paisagens montanhosas realistas.
• A ideia envolve aplicar o algoritmo RMD a um grid até que uma determinada
granularidade seja obtida.
• O algoritmo opera como a seguir:
o Determine os pontos centrais do grid atual;
o Perturbe verticalmente cada um dos novos vértices usando uma distribuição
Gaussiana apropriada;
o Repita para cada novo quadrado reduzindo a perturbação a cada passo.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 307
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 308
6.3. Escopo do MBF
• Virtualmente, todo processo dinâmico na natureza envolve movimento Browniano,
do movimento das borboletas ao movimento de partículas em um líquido ou meio
gasoso.
• Aplicações também são encontradas em economia (por exemplo, na simulação do
comportamento dos preços de ações e outros bens), ecologia, ciência dos materiais,
imunologia, etc.
• Em se tratando de computação gráfica, MBF pode ser usado para simular o leito de
rios, nuvens, costas marítimas, dobramento e desdobramento de materiais (p. ex.
papel), projeto de simuladores de vôo, geração de tráfego e animação
comportamental em geral.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 309
© K. Musgrave, Pandromeda.com
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 310
7. Sistemas de Partículas
• Alguns fenômenos naturais envolvem a participação de diversos elementos básicos
(partículas) como, por exemplo, o movimento de líquidos, gases, nuvens,
explosões, fogos, etc.
• Os sistemas de partículas (particle systems) podem ser usados para modelar uma
grande variedade de fenômenos desta natureza.
• Um sistema de partículas consiste basicamente em uma coleção de partículas
(objetos) com algumas propriedades fundamentais e algumas regras de
comportamento que elas devem seguir.
• A definição precisa destas propriedades e leis dependerá do fenômeno que se
deseja modelar.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 311
7.1. Conceitos Básicos
• Uma partícula é um ponto no espaço, geralmente tridimensional, que possui uma
série de atributos (propriedades) como posição, velocidade, cor, tempo de vida,
tamanho e transparência.
• Um sistema de partículas (PS) é uma coleção de partículas que em conjunto
representam um objeto.
• As partículas mudam dinamicamente com o tempo em função de forças externas
ou outros processos.
• Os sistemas de partículas foram introduzidos por Reeves em 1983 para modelar o
que ele denominou de objetos fuzzy, como nuvens, fumaça, água e fogo.
• A representação de sistemas de partículas difere em três aspectos básicos da
representação geralmente utilizada em síntese de imagens:
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 312
o Um padrão ou forma é representado por uma coleção de partículas (objetos
primitivos) que irão definir seu volume ao invés de serem representados por um
conjunto de elementos primitivos de superfície;
o As partículas são dinâmicas, ou seja, elas podem se mover, nascer e morrer;
o Um padrão representado por partículas não é determinístico, ou seja, sua forma
não é completamente pré-especificada.
• Algumas propriedades interessantes:
o Uma partícula é uma primitiva muito simples
o A definição do modelo é procedural e envolve processos estocásticos
o Os sistemas de partículas modelam padrões e formas dinâmicas, como
queimadas e nuvens em movimento.
o O nível de detalhes pode ser facilmente controlado regulando, por exemplo, a
quantidade de partículas.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 313
7.2. Modelo Básico
• Em um determinado período de tempo, partículas são geradas e inseridas no
sistema, se movem e mudam dentro do sistema, morrem e são removidas do
sistema.
• Os atributos das partículas e suas regras comportamentais dependem da aplicação.
• Na proposta original de PS, Reeves aplicou um sistema de partículas para gerar
uma parede de fogo que foi utilizada no filme Star Trek II: The Wrath of Khan.
• Neste caso, as partículas possuíam os seguintes atributos:
o Posição e Velocidade
o Cor e Transparência
o Tempo de vida ou idade
o Forma
o Tamanho
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 314
• O procedimento para computar cada frame (intervalo de tempo) em uma sequência
envolve os seguintes passos:
o Geração de partículas
o Determinação dos atributos das partículas
o Morte de partículas
o Atualização das partículas
o Renderização das partículas
procedure [] = PS(max_it,d,o) initialize X; //generate particles and assign their attributes
t ← 1 while t < max_it do,
X ← destroy(X,d) //destroy all particles older than d
X ← dynamics(X,o) //change each remaining particle render(X) //draw (render) particles X and plot initialize X’ //generate new particles
X ← insert(X,X’) //insert the new particles into X
t ← t + 1 end while
end procedure
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 315
7.3. Simulando Fogos de Artifício
• Uma partícula será lançada e explodirá após um determinado tempo de vôo.
o A explosão gera um conjunto de novas partículas.
o Todas as partículas estão sujeitas à força da gravidade.
• Atributos das partículas:
o Posição: p = (x,y).
o Velocidade: (v,θ), v = velocidade e θ = ângulo de disparo.
o Cor: a cor inicial pode ser diferente da cor após a explosão e durante a queda.
o Tempo de vida: a partícula inicial ‘vive’ até que ela exploda, momento em que
novas partículas são geradas e têm seus períodos de vida definidos.
o Forma: todas as partículas podem ter a mesma forma.
o Tamanho: após a explosão as partículas terão a metade do tamanho da partícula
antes da explosão.
o Transparência: ‘ao gosto do freguês’.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 316
v = v + a
p = p + v
onde v é a velocidade da partícula e a = (0,−a) é a força atuando sobre a partícula.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 317
7.4. Escopo dos Sistemas de Partículas
• Sistemas de partículas têm sido usados para modelar quedas d’água, ondas, fogo,
nuvens, fontes, fogos de artifício, explosões, cardumes de peixes, estrelas, arco-
íris, dinâmica de fluidos, plantas, grama, florestas, tornados, etc.
8. Da Geometria Natural à Geometria Fractal
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 318
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 319
9. Escopo da Geometria Fractal
• Já foi discutido neste curso que a natureza é cheia de “regras”, e agora verificamos
que estas regras envolvem irregularidade e autossimilaridade: a natureza possui
uma geometria fractal.
• Curvas como o conjunto de Cantor e a curva de Koch não são a exceção, mas
predominam na natureza.
• Variações do conjunto de Cantor ocorrem, por exemplo, em frequências de
palavras e letras em linguagem e em ruídos em linhas telefônicas.
• As curvas de Koch servem de modelo para nuvens, costas marítimas, etc.
• Organismos também são fractais. Nossos pulmões, sistema circulatório, cérebro,
rins e vários outros sistemas e órgãos são fractais.
• O escopo e importância dos fractais e da geometria fractal vai muito além disso:
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 320
o Incêndios em florestas possuem fronteiras fractais; fractais estão sendo
utilizados para modelar a dinâmica do HIV; fractais vêm sendo usados na
economia...
• Sistemas-L e sistemas de funções iterativas são úteis para o desenho e modelagem
de paisagens naturais, ornamentais e ilustrações botânicas.
• Outras aplicações:
o Reconstrução de espécies extintas de plantas
o Identificação de respostas de plantas a ataques
o Desenvolvimento de modelos estruturais de plantas integrados com ecosistemas
complexos
o Síntese de conchas e outros padrões naturais
o Modelagem de processos de desenvolvimento e crescimento (sistemas-L)
o Classificação de padrões de ramificação em plantas e animais
o Predição de colheitas
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 321
o Modelagem de fractais
o Descrição de inflorescências
o Aplicações rurais diversas
• Em particular, os sistemas de funções iterativas têm tido muito sucesso no
processo de compressão de dados (imagens): compressão fractal.
• Sistemas de partículas têm sido usados para modelar quedas d’água, ondas, fogo,
nuvens, fontes d’água, fogos de artifício, explosões, cardumes de peixes, estrelas,
arco-íris, dinâmica de fluidos, plantas, árvores, grama, furacões, tempestades de
areia, etc. Eles também têm sido usados como descanso de tela de computador e
em diversos filmes e desenhos animados como Tornado e o Príncipe do Egito.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 322
Tópico 8: Vida Artificial
1. Introdução
1.1. Algumas Definições
“Artificial Life is the study of man-made systems that exhibit behaviors
characteristic of natural living systems. It complements the traditional biological
sciences concerned with the analysis of living organisms by attempting to
synthesize life-like behaviors within computers and other artificial media. By
extending the empirical foundation upon which biology is based beyond the
carbon-chain life that has evolved on Earth, Artificial Life can contribute to
theoretical biology by locating life-as-we-know-it within the larger picture of
life-as-it-could-be.” (Langton, 1988; p. 1)
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 323
“Artificial Life (AL) is the enterprise of understanding biology by constructing
biological phenomena out of artificial components, rather than breaking natural
life forms down into their component parts. It is the synthetic rather than the
reductionist approach.” (Ray, 1994)
“Alife is a constructive endeavor: Some researchers aim at evolving patterns in a
computer; some seek to elicit social behaviors in real-world robots; others wish
to study life-related phenomena in a more controllable setting, while still others
are interested in the synthesis of novel lifelike systems in chemical, electronic,
mechanical, and other artificial media. Alife is an experimental discipline,
fundamentally consisting of the observation of run-time behaviors, those
complex interactions generated when populations of man-made, artificial
creatures are immersed in real or simulated environments.” (Ronald et al., 1999)
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 324
• Ideias importantes embasando a vida artificial:
o A Vida é vista como um processo dinâmico com algumas características
universais que independem da matéria. Assim, a Vida é uma propriedade
emergente da organização da matéria, e não uma propriedade da matéria
propriamente dita.
o A Vida Artificial (ALife) emprega uma abordagem sintética para o estudo e
criação da vida.
o ALife envolve o estudo de fenômenos sintetizados por humanos e não pela
natureza, independente do meio usado para esta síntese.
• A vida artificial pode ser definida como uma abordagem sintética ou virtual para
o estudo de padrões, formas, comportamentos, sistemas e organismos.
• Abordagens de vida artificial:
o Sintética: estudo da vida empregando matéria-prima natural ou artificial que
permita a criação de padrões e comportamentos similares aos naturais.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 325
o Virtual ou computacional: realização, emulação ou simulação de fenômenos
e organismos naturais em computador. Embora os organismos virtuais
possam ser sistematicamente interpretados como se estivessem vivos, eles
não são organismos reais, pois vivem em um ambiente virtual.
1.2. Weak ALife × Strong ALife
• Weak ALife: considera que as propostas representam certos aspectos de fenômenos
vivos. Ênfase em ações e comportamentos.
• Strong ALife: nesta abordagem objetiva-se e defende-se a criação de organismos
artificiais com vida própria.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 326
2. Conceitos e Características da ALife
2.1. ALife e Computação Inspirada na Natureza
• Várias técnicas de computação inspirada na natureza, como redes neurais e
algoritmos evolutivos, são usadas no desenvolvimento de projetos de vida
artificial.
• Entretanto, as duas áreas podem ser distinguidas pelo seu enfoque:
o Enquanto a computação inspirada na natureza (CIN) tem como principal
objetivo a resolução de problemas, a vida artificial busca um maior
entendimento da vida como ela é através da emulação e simulação de
fenômenos naturais.
o Portanto, a CIN tem uma ênfase mais tecnológica (de engenharia) e a ALife
enfatiza o desenvolvimento científico e a compreensão da natureza.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 327
• Uma similaridade importante: ambas envolvem sistemas complexos e
comportamentos emergentes.
2.2. Vida e Organismos Artificiais
• Uma questão central em ALife é como avaliar se um dado sistema é uma
simulação, emulação, realização ou nova forma de vida.
• Definir ‘vida’ é muito difícil e várias propostas já foram feitas, mas sem um
consenso geral.
O que é vida?
life, n., pl. lives (Dictionary.com)
a) A propriedade ou qualidade que distingue organismos vivos de organismos
mortos ou matéria inanimada, manifestada em funções como metabolismo,
crescimento, reprodução e resposta a estímulos ou adaptação interna ou
orgânica ao ambiente.
b) O estado característico ou condição de um organismo vivo.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 328
\Vida\ subst.; 1. O estado que começa com a geração, nascimento ou
germinação, e termina com a morte; o tempo durante o qual este estado
continua; aquele estado de um animal ou planta no qual alguns ou todos os seus
órgãos são capazes todas ou algumas de suas funções; -- usada para descrever
organismos animais e vegetais.
Algumas definições poéticas de vida:
“A vida é um longo processo de ficar cansado.” (Samuel Butler)
“A vida é um conto dito por um idiota, cheia de coerências e fúrias, mas que não
significa nada.” (Shakespeare, Macbeth V. v.)
• Apesar das diversas tentativas de se definir vida, existem basicamente duas
vertentes em vida artificial:
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 329
o Propor uma lista de características de seres vivos e verificar se um “candidato”
apresenta estas características; e
o Verificar relações entre um elemento artificial e um natural.
• Algumas características dos seres vivos:
o A vida é um padrão no espaço e no tempo
o A vida envolve autoreprodução
o Armazenagem de uma representação de si próprio
o Metabolismo
o Interações funcionais com o ambiente
o Interdependência de partes
o Robustez a pequenas perturbações
o Capacidade de evoluir
• Algumas possíveis relações entre um elemento artificial e um natural:
o Relação genética
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 330
o Relações funcionais
o Relações de composição
• Independentemente de considerarmos um sistema vivo ou não devido a presença
de qualquer uma destas características, ou devido a alguma relação com um
organismo natural, o que é importante é reconhecer que é possível desenvolver
instâncias não incorporadas de (propriedades específicas de) vida em sistemas ou
meios artificiais.
• Separar a(s) propriedade(s) da vida que se deseja estudar das outras
complexidades dos seres naturais facilita a manipulação e observação dos
fenômenos de interesse.
• Esta capacidade é uma ferramenta poderosa da vida artificial.
2.3. Vida Artificial e Biologia
• A biologia se concentra amplamente na base material da vida.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 331
• Ela possui um enfoque analítico na maioria de suas vertentes, embora haja
algumas biociências envolvidas em pesquisa sintética, como a engenharia
genética.
• Na maioria dos casos a biologia é reducionista, ou seja, investiga um dado
fenômeno ou organismo fragmentando-o em suas partes componentes:
o Sociedade → organismo → órgãos → tecidos → células → moléculas.
• A vida artificial, por sua vez, é uma abordagem sintética que tenta reproduzir
padrões, comportamentos e organismos a partir de suas unidades elementares.
• Várias subáreas da biologia contribuem para a pesquisa em vida artificial, como
genética, microbiologia, teoria evolutiva, ecologia, etc.
• Estudos em biologia teórica também fornecem ideias e modelos empregados em
vida artificial.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 332
• A biologia também influencia os problemas estudados em vida artificial, uma vez
que diversos modelos de vida artificial fornecem respostas a problemas intratáveis
pelos métodos tradicionais ou pela biologia teórica.
• A vida artificial estuda a natureza (vida) desde o nível químico até o nível social e
planetário.
• Os mais primitivos fenômenos estudados pela vida artificial são a auto-
organização e a emergência.
o Isso pode envolver a interação entre células, organismos, a influência do
ambiente, etc.
• A vida artificial complementa a biologia teórica através da exploração de novos
meios de estudo da vida e da síntese de novas formas de vida.
• Alguns pesquisadores consideram a vida artificial uma generalização da biologia
(Moreno, 2000).
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 333
2.4. Modelos e Características da Vida Artificial Computacional
• Diferentemente das técnicas de computação inspirada na natureza, não existe uma
estrutura de projeto para vida artificial.
• Se o objetivo é reproduzir algum fenômeno natural conhecido, o primeiro passo é
identificar os elementos, mecanismos, processos, propriedades e princípios que
fundamentam o sistema natural em estudo.
• O segundo passo envolve a incorporação de tudo isso em um sistema
computacional no qual apenas instruções de baixo nível (regras locais) são
explicitadas, de forma que novos padrões e comportamentos sejam propriedades
emergentes.
• É preciso ser cuidadoso para não incorporar no projeto aspectos comportamentais
intrínsecos ao fenômeno.
o Apenas leis físicas gerais, regras locais, princípios de seleção natural,
interações entre elementos, etc., devem ser considerados.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 334
• Algumas características essenciais de simulações de vida artificial:
o Baseadas em população: operam com agregados ou conjuntos de programas,
agentes, ou especificações.
o Distributividade: não há um único agente ou programa que direciona os
outros agentes.
o Reatividade local: cada agente reage localmente e individualmente.
o Descentralização: não há regras globais.
o Emergência: qualquer fenômeno em um nível superior ao individual deve ser
emergente.
2.5. Vida Artificial como Sistemas Complexos Adaptativos
• Grande parte dos sistemas que apresentam padrões e comportamentos naturais são
sistemas complexos compostos por vários elementos interagindo entre si e com o
meio ambiente.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 335
• A abordagem de vida artificial para o estudo destes tipos de sistemas é a
construção de um sistema complexo adaptativo do tipo bottom-up, a iteração dos
modelos e a observação dos comportamentos emergentes resultantes.
3. Exemplos de Projetos de Vida Artificial
3.1. Coletivos: Revoadas, Grupos e Cardumes
• Produzir uma animação gráfica de comportamentos sociais de uma revoada de
pássaros, grupos de animais terrestres e cardumes de peixes, não é tarefa fácil.
• Tradicionalmente, isso seria feito através de um script que especifica precisamente
o comportamento de cada animal.
• Entretanto, essa abordagem além de muito custosa computacionalmente, torna-se
infactível quando a quantidade de agentes no ambiente é muito grande.
• Reynolds (1987) demonstrou que o aparentemente intencional e centralizado
comportamento de alguns grupos de animais pode ser descrito por uma pequena
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 336
quantidade de regras que governam apenas o comportamento individual dos
agentes, atuando somente baseado em informações e percepções locais.
• O comportamento global resultante emerge das interações locais entre os agentes,
e entre eles e o ambiente.
• Reynolds verificou que pássaros em uma revoada têm, dentre outros, dois
comportamentos conflitantes: permanecer coesos e evitar colisões.
• Ele verificou que este comportamento do grupo também ocorre com outros
animais, como cardumes de peixes e grupos de animais terrestres.
• Reynolds denominou de boids os agentes utilizados em vida artificial para emular
este tipo de comportamento coletivo.
• Para criar um comportamento de revoada, Reynolds propôs o seguinte conjunto de
regras a serem aplicadas a cada boid:
o Evitar colisão e separação
o Igualar velocidade e alinhar
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 337
o Centralização com a revoada ou coesão
• Reynolds propôs uma técnica de “desviar para evitar” (steer to avoid) com o
objetivo de evitar colisões.
• Principal aplicação: computação gráfica/animação comportamental.
• Alguns filmes onde a proposta de Reynolds foi empregada:
o Batman Returns, O Rei Leão, O Corcunda de Notre Dame.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 338
3.2. Biomorphs (Bioformas)
• Com um programa chamado Blind Watchmaker, R. Dawkins (1986) propôs um
algoritmo evolutivo para gerar figuras compostas por pontos, linhas e outras
primitivas básicas.
• Os organismos artificiais criados com o blind watchmaker foram denominados de
bioformas (biomorphs).
procedure [] = evolution()
initialize; t ← 1 while not_stopping_criterion do, reproduction //insert one mutation in each offspring development //draw the biomorph selection //the user chooses the new parent
t ← t + 1 end while
end procedure
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 339
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 340
• Considere as bioformas com os seguintes 15 genes:
o Genes 1-8: controlam a forma geral da bioforma.
o Gene 9: controla a profundidade da recursão.
o Genes 10 a 12: controla a cor da bioforma.
o Gene 13: controla o número de segmentações da bioforma.
o Gene 14: controla o tamanho da separação entre os segmentos.
o Gene 15: controla a forma usada para desenhar a bioforma (p. ex. oval, linha,
retângulo, etc.)
Birds Chandelier I Eagle Beast face
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 341
Tank Chandelier II Christmas tree Dry tree
Frog Crab Gang with glasses Queen (chess)
Transformer Spider Hen (from the back) Fat face
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 342
• Depoimento do R. Dawkins:
“Quando eu escrevi o programa, eu nunca imaginava que ele iria evoluir algo
que fosse além de uma variedade de formas do tipo plantas...Nada em minha
intuição de biólogo, nada em meus 20 anos de experiência como programados
e nada em meus sonhos mais distantes, me preparou para o que realmente
surgiu na tela do computador. Não me lembro quando eu percebi que seria
possível evoluir algo que lembrasse um inseto. Com grande surpresa eu
comecei a criar, geração após geração, bioformas variadas que lembravam
diversas formas de vida conhecidas.” (Dawkins, 1986; p. 73)
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 343
3.3. Vírus Computacionais
• Um vírus biológico é um tipo de parasita submiscroscópico de planta, animais e
bactérias que geralmente causa doença, e que é constituído essencialmente por um
núcleo de DNA ou RNA envolto por uma camada de proteína.
• A palavra vírus origina-se da palavra virus em Latim, que significa veneno.
• As infecções virais se espalham pelos vírus que injetam seu conteúdo nas células
de outro organismo.
• As células infectadas se transformam em fábricas biológicas produzindo cópias do
vírus.
• O nome vírus de computador foi inspirado pelo seu análogo vírus biológico.
• O vírus computacional é um fragmento de código de computador que implanta
uma cópia de seu código em um ou mais programas hospedeiros (host programs)
quando ativado.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 344
• Sendo assim, um vírus de computador pode ser definido como um programa
(software) capaz de infectar outros programas ou modificando o programa
hospedeiro ou o ambiente que este habita. Uma versão possivelmente mutada do
vírus é adicionada ao programa hospedeiro.
• Os vírus podem atuar de várias formas:
o Destruindo dados;
o Roubando tempo de CPU;
o Reduzindo a funcionalidade dos programas infectados; e
o Adicionando novas, não necessariamente maléficas, capacidades ao programa
infectado.
• Diferentemente de um verme computacional, um vírus não é capaz de infectar
outro computador sem ajuda externa como, por exemplo, um meio de transporte
como discos flexíveis, CDs, etc.
• Existem basicamente três formas de um vírus infectar outros códigos:
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 345
o Eles podem se tornar o código original do hospedeiro (e o programa original se
torna um subrotina do código viral);
o Eles podem se adicionar ao final de um código hospedeiro; e
o Eles podem substituir parte ou todo o código original pelo código viral.
• Os vírus computacionais devem ser executados para que eles possam se proliferar
e infectar outros programas.
• Um problema encontrado pelos vírus é a repetida infecção do hospedeiro,
resultando em uma tomada total da memória do computador e a rápida detecção.
• Para evitar isso, muitos vírus implantam uma assinatura específica que sinaliza
que um arquivo está infectado.
• Levando-se em consideração as características da vida estudadas anteriormente,
verifica-se que os vírus computacionais apresentam praticamente todas elas:
o É representado por um padrão de código de computador;
o Pode se reproduzir (copiar para outros programas e computadores);
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 346
o O código que define o vírus corresponde a sua representação;
o Os vírus necessitam de energia elétrica par sobreviver;
o São capazes de sentir o hospedeiro, alterando interrupções, examinando discos e
memória, e podem se esconder para reproduzir e manter sua vida;
o Geralmente o código de um vírus não pode ser quebrado sem que o vírus seja
destruído;
o Podem ser executados em diferentes máquinas e sistemas operacionais; e
o Podem evoluir via intervenção humana.
3.4. Síntese de Comportamentos Emocionais
• D. Dörner (1999) propôs uma teoria para relacionar o comportamento humano às
emoções.
• Por exemplo, quando uma pessoa está irritada, ela se torna mais ativa (p. ex. fala
mais rápido e move o corpo mais rapidamente), fica mais extrovertida e menos
precisa e fica mais enfocada.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 347
• A teoria de Dörner identifica quatro diferentes moduladores que descrevem o
comportamento direcionado pelo objetivo:
o Ativação: energia gasta para atingir um objetivo.
o Externalidade: tempo usado em atividades externas.
o Precisão: cuidado tomado na busca de objetivo.
o Foco: atenção dispensada ao objetivo.
• Exemplos de relações entre comportamentos e emoções:
o Ansiedade: alta ativação, precisão, foco e introversão.
o Tristeza: precisão, foco, introversão, inativação.
o Medo: alta ativação, externalidade, foco e imprecisão.
o Raiva: alta ativação, externalidade, foco e imprecisão.
o Alegria: ativação, externalidade, imprecisão e pouco foco.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 348
• K. Hille (2001) projetou um agente virtual, denominado ‘Alie’, com
comportamento variável em relação aos quatro moduladores: ativação,
externalidade, precisão e foco.
• O objetivo era verificar se a animação virtual dos moduladores poderia ser
identificada como emoções.
• O Alie é um organismo virtual que consiste em um círculo com cinco pequenos
círculos em seu interior.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 349
• Seis emoções foram incorporadas ao Alie: raiva, excitação, alegria, ansiedade,
medo e tristeza:
o Alta ativação: pulsação rápida dos círculos internos.
o Alta externalidade: movimento rápido do Alie.
o Precisão: movimento lento dos círculos internos.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 350
o Foco: concentração (agrupamento) dos círculos internos.
• Para testar a teoria das emoções como moduladoras comportamentais foram feitos
experimentos com 70 alunos.
o Eles tiveram como tarefa identificar o estado emocional do Alie conhecendo
apenas seu comportamento normal e tendo algumas informações simples
sobre a estrutura do Alie.
3.5. O Robô Cachorro AIBO da Sony®
• A palavra AIBO provém de Artificial Intelligence Robot, que significa
companheiro, colega em japonês.
• Especificações:
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 351
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 352
• O AIBO responde a estímulos externos usando diversos sensores, como sensores
de toque, uma câmera CCD, microfones estéreos, etc.
3.6. Construção de Ninhos de Abelhas e Vespas
• A maioria dos ninhos de abelhas e vespas são feitos de fibras de plantas mascadas
e coladas usando secreções salivares.
• A ‘cartolina’ resultante é moldada para construir as várias partes do ninho.
• No caso das vespas, a unidade funcional de um ninho é uma célula geralmente
hexagonal, mas algumas vezes circular.
• Cada célula fornece o container para o desenvolvimento de um filho.
• Há três componentes arquiteturais principais que resultam em estruturas
sofisticadas:
o Agrupamentos de células isoladas formando pentes.
o Um pedicel, que liga os pentes a um substrato.
o Um envelope que protege os pentes.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 353
• Sob uma perspectiva de busca por alimento e arquitetônica, é mais barato e
eficiente produzir células adjacentes que estão em contato, compartilhando uma
parede comum e organizadas em pentes, do que construir células isoladas
espalhadas pela superfície.
• O pedicel e o envelope têm um papel de proteção contra predadores e regulação
térmica.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 354
• Se o objetivo é desenvolver um algoritmo para construir ninhos de abelhas e
vespas, é preciso entender o comportamento (algoritmo) de construção destes
insetos.
• Este algoritmo inclui diversos fatos, sendo o primeiro deles geralmente o uso ou
não de um pedicel.
• Aparentemente a colocação das primeiras células do ninho segue sempre a mesma
regra para uma dada espécie de vespa.
o Em seguida, as vespas iniciam o ninho construindo duas células em ambos os
lados de uma extensão linear do pedicel.
o As próximas células são adicionadas à circunferência externa dos pentes,
cada qual entre duas células previamente construídas.
o Quando mais células são adicionadas à estrutura em desenvolvimento, elas
eventualmente formam linhas paralelas empacotadas de células e o ninho
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 355
geralmente possui uma simetria radial ou bi-lateral em torno das células
iniciais.
o Um aspecto importante é que as vespas tendem a terminar uma linha antes de
começarem outra e as linhas são iniciadas pelas células centrais.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 356
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 357
3.7. Criaturas
• Creatures é um software comercial de entretenimento que fornece um ambiente
simulado com agentes virtuais, as ‘criaturas’, que o usuário pode interagir em
tempo real.
• A arquitetura interna das criaturas é inspirada em organismos naturais contendo:
o Código genético de tamanho variável: necessário para definir as
características comportamentais e químicas da criatura. Também define a
evolução das criaturas através de processos consecutivos de reprodução
sexuada.
o Uma rede neural: responsável pelo controle motor, seleção de
comportamentos e aprendizagem;
o Uma bioquímica: para modelar um metabolismo simples e um sistema
hormonal que interage com a rede neural e influencia o desenvolvimento da
criatura.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 358
• As criaturas possuem visão, audição, tato e são bípedes, embora pequenas
variações morfológicas possam ocorrer com o amadurecimento.
• O comportamento de cada criatura é um resultado de sua interação com outras
criaturas e com o ambiente, incluindo com o usuário.
• Brinquedo virtual × jogo de computador.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 359
3.8. Peixes Artificiais
• Terzopoulos et al. (1994) implementaram um ambiente virtual habitado por
diversos peixes artificiais.
“Na presença de correntes marinhas os peixes empregam seus músculos e nadadeiras
para nadarem suavemente em torno de obstáculos imóveis e entre plantas aquáticas e
outros peixes. Peixes predadores se alimentam de peixes menores no ambiente
aparentemente calmo. Os peixes presa nadam tranquilamente até avistarem um predador,
o que faz com que eles fujam. Quando um predador perigoso aparece a distância,
espécies similares de presas formam cardumes para aumentar suas chances de
sobrevivência. Assim que o predador se aproxima de um cardume, os peixes se espalham.
Uma perseguição é iniciada na qual o predador escolhe as vítimas e as consome até que
ele fique saciado. Algumas espécies de peixes parecem não atrair a atenção dos
predadores. Elas encontram nichos confortáveis e se alimentam de plânctons flutuantes
quando sentem fome. Motivados pela libido, eles fazem rituais elaborados de
acasalamento para garantir a reprodução.” (Terzopoulos et al., 1994)
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 360
• O sistema proposto por Terzopoulos et al. (1994) visava emular a aparência,
movimento e comportamento de peixes individuais, assim como comportamentos
coletivos de cardumes em ambientes aquáticos.
• Cada peixe foi modelado de maneira holística, ou seja, como um agente autônomo
situado no ambiente.
• Cada peixe possui:
o Um corpo 3D com músculos internos e barbatanas que deformam e se
movem de acordo com princípios biomecânicos e hidrodinâmicos.
o Sensores, incluindo olhos, que enxergam o ambiente.
o Um cérebro com centros motores, de percepção, comportamental e de
aprendizagem.
• Dentre os possíveis comportamentos dos peixes artificiais destacam-se:
o Locomoção, desvio de obstáculos, busca por alimento, formação de cardumes
e reprodução.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 361
• Os principais módulos do sistema nervoso dos peixes são: percepção,
comportamento e motor.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 362
3.9. Tartarugas, Cupins e Engarrafamentos de Trânsito
• M. Resnick (1994) desenvolveu uma nova ferramenta computacional denominada
StarLogo com o objetivo de permitir o estudo de sistemas e processos auto-
organizados.
• O StarLogo foi projetado como uma linguagem massivamente paralela com um
ambiente capaz de acomodar uma grande quantidade simultânea de agentes,
denominados tartarugas.
• As tartarugas possuem diversas capacidades, como atuar e sentir o ambiente.
• O ambiente no qual as tartarugas estão inseridas, denominado mundo, também é
ativo, e é dividido em células ou patches.
• Sendo assim, os patches podem armazenar informação sobre seu estado e também
executar instruções, assim como as tartarugas.
• Exemplos de projetos:
o Presa-predador
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 363
o Cupins
o Engarrafamentos de trânsito
o Slime mold
3.10. Simulações com Autômatos Celulares
O Jogo da Vida (Game of Life)
• No final da década de 1960, John Conway estendeu o trabalho de von Neumman
sobre autômatos celulares e propôs um jogo individual denominado “Jogo da
Vida”, ou simplesmente “Vida”.
• Grid bidimensional (d = 2); vizinhança n = 9, r = 1; S = {0,1}.
• Vizinhança:
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 364
• s = 1: célula “viva”
• s = 0: célula “morta”
• Regras do jogo da vida:
o Nascimento: uma célula “nasce” (0 → 1) se exatamente 3 vizinhos estão vivos
o Morte: células vivas com não mais do que um vizinho vivo morrem; células
vivas com mais do que 3 vizinhos vivos morrem
o Sobrevivência: células vivas com 2 ou 3 vizinhos vivos sobrevivem
• Destino de algumas condições iniciais:
Morte após poucas iterações
Bloco
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 365
Blinker
Beehive
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 366
Langton’s Loops
• Langton (1984) propôs uma estrutura compacta que faz um uso duplo da
informação contida na descrição do sistema para se reproduzir.
• Ele usou um autômato celular bi-dimensional com vizinhança do tipo Von
Neumann e oito estados possíveis por célula.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 367
• A estrutura consiste de um caminho fechado (loop) com um braço que se projeta
sobre si próprio.
• Os laços consistem em corredores, dentro dos quais circula a informação
necessária à construção de um novo laço (loop).
• A descrição consiste em uma sequência de máquinas de estado virtuais (VSM) que
fazem ciclos pelo laço.
• Quando um VSM encontra a junção entre o corpo de um laço e um braço ele é
replicado, com uma cópia propagando de volta em torno do laço e uma outra cópia
propagando de volta para o braço, onde ela é transformada em uma instrução ao
encontrar o final do braço.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 368
Sierpinski Gasket
• Grid unidimensional (d = 1); vizinhança n = 3, r = 1; S = {0,1}.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 369
• Regras de transição
000 → 0 100 → 1 001 → 1 101 → 1 010 → 1 110 → 1 011 → 1 111 → 0
CAFUN
• CAFUN (Cellular automata fun) é um software desenvolvido com base nos
fundamentos dos autômatos celulares.
• Uma diferença entre CAFUN e um autômato celular convencional é que no
CAFUN ao invés de um conjunto geral (global) de regras de transição, cada tipo
de célula possui um conjunto de regras próprias.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 370
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 371
3.11. Framsticks
• O objetivo inicial do projeto Framsticks é estudar a evolução de criaturas
artificiais em um ambiente simulado 3D com condições de vida similares às
encontradas na Terra.
• Os framsticks são construídos com:
o Um cérebro com neurônios artificiais com receptores, efetores e conexões
neurais; e
o Um corpo composto de partes conectadas por juntas ou articulações elásticas.
• Tanto o corpo quanto o cérebro do framstick podem ser evoluídos por um
algoritmo evolutivo.
• Várias formas de interação entre os framsticks e o ambiente são possíveis:
o Fricção estática e dinâmica, forças de ação e reação, perda de energia após
deformações, gravidade, força de empuxo (em ambientes aquáticos), etc.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 372
4. Escopo da Vida Artificial
• Os exemplos apresentados aqui ilustram aplicações de vida artificial em contextos
variados, como educação, entretenimento, estudos científicos, etc.
• A vida artificial é importante para os biólogos, pois ajuda a esclarecer diversos
fenômenos naturais. Também é relevante para cientistas da computação e
engenheiros, pois oferece novas metodologias para gerar comportamentos
complexos difíceis de serem gerados com técnicas convencionais.
• A vida artificial também envolve vários aspectos das ciências cognitivas, artes,
física, química, biologia e até ética.
• A maior ambição da vida artificial é construir novas formas de vida a partir de
partes sem vida, ou seja, desenvolver a vida artificial forte (strong artificial life).
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 373
Tópico 9: Computação de DNA
1. Introdução
• A computação de DNA é uma das subáreas de uma linha de pesquisa mais ampla
denominada de computação molecular.
• Em linhas gerais, a computação molecular emprega (bio)moléculas e operações
para a manipulação destas (bio)moléculas para resolver problemas e realizar
computação.
• Questões importantes a serem verificadas:
o Qualquer algoritmo pode ser “simulado” via computação de DNA?
o Quais as dificuldades em se projetar um computador de DNA?
• Diversos modelos de computação de DNA vêm sendo propostos para responder
estas e outras questões. Estes modelos podem ser divididos em dois grandes
grupos:
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 374
o Modelos baseados em filtragem
o Modelos formais
• De maneira simplificada a computação de DNA emprega moléculas de DNA como
estrutura de dados e manipula estas moléculas de forma a realizar computação.
1.1. Computação de DNA x Computadores Tradicionais
• A computação de DNA utiliza DNA como estrutura de dados. Alfabeto quaternário
{A,C,T,G} ao invés de binário {0,1}.
• Computadores de DNA operam de forma massivamente paralela.
• A computação de DNA opera em nível molecular, um limite que talvez jamais será
atingido pela indústria de semicondutores.
• Os computadores de DNA demandam muito pouca energia e são altamente
econômicos na armazenagem de informação.
• Os computadores de DNA são eficientes na resolução de problemas NP-completos.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 375
2. Conceitos Básicos de Biologia Molecular
2.1. A Molécula de DNA
• Toda a informação genética em organismos celulares está armezanada no DNA,
que consiste em cadeias de polímeros, usualmente conhecidas como cadeias de
DNA.
gene gene
gene
Dupla hélice de DNA
Figura 33: A molécula de DNA encontra-se no núcleo das células.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 376
• As cadeias de DNA são formadas por quatro unidades de ácidos nucleicos,
chamados de deoxyribonucleotídeos ou simplesmente nucleotídeos.
• Existem quatro nucleotídeos no DNA, e cada nucleotídeo é composto por três
partes: uma molécula base, um açúcar e um grupo fosfato.
• As quatro bases são: adenina (A), citosina (C), guanina (G), e timina (T).
• Como os nucleotídeos diferem apenas pelas bases, eles são geralmente
denominados de bases.
• Números de 1′ a 5′ são usados para denotar os cinco átomos de carbono do açúcar
do nucleotídeo. O grupo de fosfato se liga ao átomo de carbono 5′, e a base se liga
ao átomo de carbono 1′.
• Cada cadeia possui, por convenção química, um terminal 5′ e um terminal 3′.
Portanto, cada cadeia possui uma orientação.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 377
Fosfato Açúcar Base
5′ 4′ 3′
2′ 1′
Base
Fosfato P O CH2
O C C
C C H H
OH H
5′
CH3
O
HN
CH C
C
N
C
O
4′ 3′ 2′
1′
Figura 34: Estrutura química do nucleotídeo e uma de suas representações.
• Os nucleotídeos podem se ligar de duas formas distintas:
o O grupo de fosfato 5′ de um nucleotídeo se junta ao grupo de hydroxil 3′ de
outro nucleotídeo formando uma ligação covalente;
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 378
o A base de um nucleotídeo interage com a base de outro para formar uma ponte
de hidrogênio, que é uma ligação mais fraca do que uma ligação covalente.
• Uma característica importante da ligação de nucleotídeos (ligação covalente) é que
qualquer nucleotídeo pode se ligar para formar uma sequência.
• Por outro lado, as ligações entre as bases só ocorrem pela atração entre pares
específicos de bases:
o A se liga com T
o C se liga com G
• Estas ligações são denominadas de complementaridade de Watson-Crick.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 379
A
T
C
G
A
T
C
G
T
A
G
C
T
A
G
C
Figura 35: Molécula de DNA ilustrando a complementaridade de Watson-Crick.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 380
• Algumas representações alternativas:
C
T
G
A
G
A
C
T
5′
3′
5′
3′
5′ − T C G A T T G A A C C − 3′ 3′ − A G C T A A C T T G G − 5′
5′ − T C G A T T G A − 3′
3′ − A A C T T G G − 5′ (Sticky ends)
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 381
2.2. Manipulando o DNA
• Todas as técnicas de computação de DNA envolvem a aplicação de um conjunto
específico de operações biológicas a um conjunto de moléculas.
o Desnaturação: separa cadeias de DNA (separa as bases)
o Annealing: junta cadeias de DNA (une pelas bases)
o Extensão de polimerase: completa cadeias incompletas
o Degradação por nuclease: encurta cadeias de DNA
o Endonucleases: corta moléculas de DNA (separa pelas ligações covalentes)
o Ligação: une moléculas de DNA (une pelas ligações covalentes)
o Modificação de nucleotídeos: insere ou deleta pequenas sequências
o Amplificação (PCR): multiplica moléculas de DNA
o Eletroforese de gel: mede o comprimento de moléculas de DNA
o Filtragem: separa ou extrai moléculas específicas
o Síntese: cria moléculas de DNA
o Sequenciamento: lê a sequência de uma molécula de DNA
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 382
C
T
G
A
G
A
C
T
5′
3′
5′
3′
C
T
G
A
G
A
C
T
5′
3′
5′
3′
Annealing
Denaturing (melting)
5′ − T C G A T T G A A − 3′ (single strand) 3′ − A A C T T C − 5′ (single strand)
↓ (Annealing)
5′ − T C G A T T G A A − 3′ 3′ − A A C T T C − 5′
Figura 36: Desnaturação e annealing.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 383
5′ − T C G A T T − 3′ (primer) 3′ − A G C T A A C T T − 5′ (template)
↓ 5′ − T C G A T T G − 3′ 3′ − A G C T A A C T T − 5′
↓ 5′ − T C G A T T G A − 3′ 3′ − A G C T A A C T T − 5′
↓ 5′ − T C G A T T G A A − 3′ 3′ − A G C T A A C T T − 5′
5′ − T C G A T T G A A − 3′ 3′ − A G C T A A C T T − 5′
↓ 5′ − T C G A T T G A − 3′ 3′ − G C T A A C T T − 5′
↓ 5′ − T C G A T T G − 3′
3′ − C T A A C T T − 5′ ↓
5′ − T C G A T T − 3′ 3′ − T A A C T T − 5′
(a) (b)
Figura 37: (a) Extensão de polimerase. (b) Degradação por nuclease.
5′ − T G A A T T C C G − 3′ 3′ − A C T T A A G G C − 5′
↓ 5′ − T G − 3′ 5′ − A A T T C C G − 3′ 3′ − A C T T A A − 5′ 3′ − G G C − 5′
5′ − T G C C C G G G A − 3′ 3′ − A C G G G C C C T − 5′
↓ 5′ − T G C C C − 3′ 5′ − G G G A − 3′ 3′ − A C G G G − 5′ 3′ − C C C T − 5′
Figura 38: Corte por endonuclease.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 384
OH P 5′ − T C G A T T G A A − 3′ 3′ − A G C T A A C T T − 5′
P OH ↓↓↓↓
OH P 5′ − T C G A T T G A A − 3′ 3′ − A G C T A A C T T − 5′
P OH ↓↓↓↓
5′ − T C G A T T G A A − 3′ 3′ − A G C T A A C T T − 5′
Figura 39: Ligação.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 385
a b c
a b c
Denaturation
Denaturation
Template Primers
a c
a c
a
c
c
a
c
a
a
c
Polymerase extension
Figura 40: PCR (Polymerase Chain Reaction).
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 386
Figura 41: Fotografia de uma eletroforese de gel de uma molécula de proteína.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 387
3. Modelos Baseados em Filtragem
• Em todos os modelos baseados em filtragem, um grande conjunto de strings é
gerado e diversos processos de filtragem são aplicados de forma a filtrar strings
que não podem ser solução do problema.
3.1. O Experimento de Adleman
• O primeiro experimento bem sucedido na utilização de moléculas de DNA e
técnicas de manipulação de DNA na solução de problemas foi apresentado por
Adleman em 1994.
• Neste trabalho, Adleman resolveu uma pequena instância de um problema de
caminho Hamiltoniano (HPP).
o Um grafo direcionado G com os nós de entrada e saída definidos, vin e vout,
possui um caminho Hamiltoniano se e somente se existe uma sequência de
ramos direcionados e1, e2,…,ez (caminho) que inicia em vin e termina em vout.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 388
2
0
6
1
3
4 5
Figura 42: Grafo usado no experimento de Adleman.
• O HPP pode ser resolvido de forma exaustiva e, embora haja algoritmos capazes
de resolver instâncias específicas de forma eficiente, todos os algoritmos de
solução possuem complexidade exponencial no pior caso.
o Portanto, na prática o HPP é um problema intratável usando as técnicas
tradicionais de computação.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 389
o Com a proposta de Adleman usando computação de DNA, o número de
operações em laboratório a serem empregadas na solução do HPP é linear em
função do tamanho do grafo (número de vértices), embora o problema continue
sendo NP-completo.
• Algoritmo para resolver o problema:
Passo 1: gere caminhos aleatórios pelo grafo.
Passo 2: mantenha apenas aqueles que iniciam em vin e terminam em vout.
Passo 3: se o grafo possui n vértices, mantenha somente aqueles caminhos de
comprimento n.
Passo 4: mantenha apenas aqueles que passam por cada nó uma única vez.
Passo 5: se um caminho permanecer, aceite; caso contrário rejeite.
• Antes de aplicar o algoritmo determinístico acima para resolver este problema, é
necessário “codificar” os possíveis caminhos utilizando moléculas de DNA.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 390
• Adleman codificou cada nó do grafo utilizando uma sequência de nucleotídeos
(single strand) de comprimento 20.
• A codificação foi escolhida aleatoriamente e o comprimento de 20 bases foi
adotado para garantir uma codificação diferente para cada nó.
• Uma grande quantidade de nucleotídeos foi gerada via PCR e colocada em um
tubo de ensaio.
• Os ramos foram codificados da seguinte forma:
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 391
v1 = 5′ − T G A A T T C C G A | C G T C C A G T G A − 3′ v2 = 5′ − A T G A A C T A T G | G C A C G C T A T C − 3′ v3 = 5′ − C A T A G T C C G A | T T A G C A G T A G − 3′
↓
e1→2 = 3′ − G C A G G T C A C T | T A C T T G A T A C − 5′ e2→1 = 3′ − C G T G C G A T A G | A C T T A A G G C T − 5′ e1→3 = 3′ − G C A G G T C A C T | G T A T C A G G C T − 5′
(a)
T G A A T T C C G A C G T C C A G T G A A T G A A C T A T G G C A C G C T A T C G C A G G T C A C T T A C T T G A T A C
(b)
v1 v2
e1→2
Figura 43: Método de codificação usado por Adleman para resolver o problema do caminho Hamiltoniano.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 392
Método de Solução
Passo 1: gere caminhos aleatórios pelo grafo.
• Para ligar os vértices de modo a formar caminhos, oligonucleotídeos Ōi
complementares aqueles representando os nós (Oi) são gerados.
• Para unir as ‘single strands’ e gerar os caminhos aleatórios pelo grafo foi feito o
annealing e foi utilizada uma reação de ligação.
Passo 2: mantenha apenas aqueles caminhos que iniciam em vin e terminam em vout.
• Em seguida, uma PCR empregando Ō0 e Ō6 como primers é utilizada para
amplificar o resultado do passo anterior.
• Dessa forma, apenas as moléculas que iniciam no nó 0 e terminam no nó 6 foram
amplificadas.
• Um processo de filtragem separa estas moléculas das demais.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 393
Passo 3: se o grafo possui n vértices, mantenha somente aqueles caminhos de
comprimento n.
• A eletroforese de gel é utilizada para separar as moléculas (double stranded) de
acordo com seus comprimentos.
• Apenas as cadeias com comprimento 140 pares base (7 vértices) foram mantidas.
• Ao final deste passo existem diversas moléculas que iniciam no nó 0, terminam no
nó 6 e passam por 7 nós.
Passo 4: mantenha apenas aqueles que passam por cada nó uma única vez.
• Com um passo para cada vértice, foi possível verificar se as moléculas restantes
possuíam estes vértices. (filtragem)
Passo 5: se um caminho permanecer, aceite; caso contrário rejeite.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 394
Discussão
• Adleman demorou 7 dias para completar seu experimento.
o Entretanto, a quantidade de nucleotídeos necessária para resolver o problema
cresce linearmente com o número de nós do problema.
• Portanto, um problema NP-completo que requer mais tempo de processamento
quanto maior o tamanho do problema, pode ser resolvido em tempo linear devido
ao paralelismo da computação de DNA.
• Uma das dificuldades do procedimento adotado por Adleman está relacionada a
quantidade de single strands que devem ser geradas para codificar os diversos
caminhos possíveis no grafo.
• Como o HPP é um problema NP-completo e ele foi resolvido por uma técnica de
computação de DNA, em teoria é possível utilizar esta mesma estratégia para
resolver qualquer problema da classe NP.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 395
• Entretanto, isso não significa que qualquer instância de um problema NP possa ser
resolvida de forma factível por computação de DNA.
• Adleman resolveu o problema HPP usando a força bruta: ele projetou um sistema
capaz de gerar e avaliar todas as possíveis soluções para uma dada instância do
HPP.
• A característica marcante do experimento de Adleman foi o paralelismo massivo
das moléculas de DNA.
• Em 1994, quando Adleman executou seu experimento, um computador do tipo
desktop comum era capaz de executar 106 operações por segundo e o
supercomputador mais rápido conhecido podia executar aproximadamente 1012
operações por segundo.
o O computador de DNA de Adleman era capaz de executar 1014 operações por
segundo, assumindo que cada ligação corresponde a uma operação. Escalonando
o passo de ligação poderia elevar este número para 1020.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 396
o Além disso, a quantidade de energia consumida era muito baixa, da ordem de
2 × 1019 operações por joule, um valor próximo do limite proposto pela segunda
lei da termodinâmica (34 × 1019).
o Os supercomputadores modernos operam na casa de 109 operações por joule.
o Por último, em um computador de DNA um bit de informação pode ser
armazenado em um nanômetro cúbico de DNA, que é aproximadamente 1012
vezes mais eficiente que os dispositivos de armazenagem conhecidos na época.
o Em resumo, um computador de DNA podia ser, em 1994, 1.200.000 vezes mais
rápido do que o supercomputador mais rápido conhecido, além de permitir um
armazenamento de informação 1012 vezes mais eficiente e consumir 1010 vezes
menos energia que os computadores existentes.
3.2. A Solução de Lipton para o Problema SAT
• Lipton mostrou como empregar procedimentos de DNA para resolver o problema
denominado de satisfiability problem for propositional formulas (SAT).
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 397
• SAT é um problema de busca NP-completo que pode ser definido como a seguir.
• Dado um conjunto finito de variáveis lógicas E = {e1, e2,…, en}, defina um literal
como sendo uma variável, ei, ou seu complemento ēi. Se ei é verdadeira, então ēi é
falsa, e vice-versa.
• Seja uma cláusula Cj um conjunto de literais {e1j, e2
j,…, elj}.
• Uma instância I do problema SAT consiste em um conjunto de cláusulas, mais
especificamente, uma fórmula Booleana da forma C1 ∧ C2 ∧ … ∧ Cm, onde cada
cláusula é uma proposição que pode ser construída a partir de variáveis
proposicionais ei, i = 1,…, e conectivos lógicos AND (∧), OR (∨), e NOT (¬).
• O problema SAT corresponde portanto a especificar um valor Booleano para cada
variável ei ∈ E, i = 1,…,n, tal que toda a fórmula seja verdadeira.
• Um aspecto chave explorado por Lipton foi o fato de podermos representar o
problema SAT como um problema de busca em grafos.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 398
e10 e2
0 e30 en–1
0 en0
v0 v1 v2 . . . vn–1 vn e1
1 e21 e3
1 en–11 en
1
Figura 44: Representação em grafo do problema SAT.
• De acordo com a figura acima, um caminho genérico pode ser representado por
uma sequência v0e1i1v1e2
i2… vn–1eninvn, onde a variável ej pode assumir o valor
verdade ij, j = 1,…n.
• Neste grafo, todos os caminhos que iniciam em v0 e terminam em vn correspondem
a uma string binária.
o Por exemplo, o caminho v0e11v1e2
0v2e30…vn–1en
1vn codifica a string binária
100…1.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 399
• Assim como a solução de Adleman, Lipton também propôs um método composto
por duas fases principais:
o Gerar todas as soluções possíveis (caminhos no grafo)
o Filtrar aquela(s) que satisfaz(em) o problema
• Lipton propôs codificar os grafos em um tubo de ensaio como feito por Adleman e
utilizou o mesmo esquema de codificação.
• Por outro lado, a forma de solução proposta por Lipton foi diferente em essência.
• Ele propôs trabalhar com operações em tubos de ensaio.
• Para exemplificar, foi verificada a seguinte expressão: F = (e1 ∨ e2) ∧ (ē1 ∨ ē2).
e10 e2
0
v0 v1 v2 e1
1 e21
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 400
• Lipton construiu uma série de tubos de ensaio, onde o primeiro tubo t0
supostamente contém todas as possíveis soluções do problema.
• Ele propôs, dentre outras, uma operação de extração E(t,i,a) que extrai todas as
sequências no tubo t cujo i-ésimo bit é a, a ∈ {0,1}.
• Em seguida, ele propôs o seguinte algoritmo para resolver o problema:
Passo 1: Seja t1 o tubo correspondente a E(t0,1,1). O tubo contendo o restante é t1′, e
t2 é E(t1′,2,1). Junte o conteúdo de t1 e t2 produzindo o tubo t3.
Passo 2: Seja t4 o tubo correspondente a E(t3,1,0). O tubo com o conteúdo restante é
t4′, e t5 é E(t4′,2,0). Junte o conteúdo de t4 e t5 produzindo o tubo t6.
Passo 3: Verifique se há alguma molécula de DNA no último tubo. Caso afirmativo,
aceite; caso contrário, rejeite.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 401
Tubo de ensaio
Strings presentes
t0 00, 01, 10, 11 t1 10, 11 t1′ 00, 01 t2 01 t3 01, 10, 11 t4 01 t4′ 10, 11 t5 10
Caso Genérico
• Qualquer problema SAT com n variáveis e m cláusulas pode ser resolvido com, no
máximo, O(m) operações de extração e uma operação de detecção.
• Sejam C1, C2,…, Cm as m cláusulas de uma fórmula proposicional.
• Construa m tubos, t0, t1,…, tm, de forma que tk seja o conjunto de números com n-
bits tal que C1(e) = C2(e) = … = Ck(e) = 1, onde Ci(e) corresponde ao valor verdade
da cláusula Ci sobre o conjunto de variáveis e.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 402
• Para t0 use todas as combinações possíveis de cláusulas.
• Dado tk, construa tk+1 da seguinte forma. Assuma que Ck+1 está na forma disjuntiva:
o1 ∨ ... ∨ ol, onde oi é um literal e ōi é o complemento de um literal.
• Para cada literal opere da seguinte forma:
o Se oi = ej, então gere E(tk,j,1).
o Senão, se oi = ēj, gere E(tk,j,0).
• Cada operação de extração é efetuada e o restante é colocado em um outro tubo.
• Junte todos os tubos e faça uma detecção. Se sobrar algo, então a fórmula é
satisfeita.
Discussão
• Em essência, nenhum método é melhor do que a busca exaustiva na solução do
SAT.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 403
• Neste sentido, o método utilizado pela computação de DNA não é melhor do que
os de busca exaustiva, porém ele faz uso do paralelismo massivo das moléculas de
DNA e suas técnicas de manipulação.
• Um dos principais resultados da solução proposta por Lipton foi a verificação de
que seu procedimento permite resolver qualquer problema SAT de n variáveis e m
cláusulas com, no máximo, m passos de extração e uma detecção.
3.3. Linguagem de Programação de Tubos de Ensaio
• Os aspectos práticos das propostas de Lipton e Adleman dependem das tecnologias
de manipulação de DNA disponíveis.
• Até mesmo os algoritmos utilizados para resolver os problemas poderiam ser
mudados.
• O que é importante neste caso é provar que a computação é factível.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 404
• Meios puramente bioquímicos foram empregados para resolver problemas NP-
completos em um tempo linear em relação a quantidade de operações de
laboratório.
• Estas operações, em uma formulação abstrata, constituem outra grande
contribuição da proposta de Adleman e sua filosofia, resultando em uma espécie de
linguagem de programação de tubos de ensaio baseada em moléculas de DNA
colocadas em tubos de ensaio e mecanismos para manipulação destas moléculas.
O Modelo Irrestrito
• Um tubo de ensaio é um conjunto de moléculas de DNA, ou seja, um multi-
conjunto de strings finitas construídas a partir de um alfabeto {A,C,G,T}.
• Dado um tubo, é possível realizar quatro operações básicas:
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 405
1. Separate (extract) dado um tubo t e uma palavra w (cadeia de símbolos
w pertencentes ao alfabeto {A,C,G,T}), produza dois tubos +(t,w) e −(t,w),
onde +(t,w) consiste de todas as cadeias de DNA em t que contêm w como
sub-sequência, e −(t,w) consiste de todas as cadeias de DNA em t que não
contêm w como sub-sequência.
2. Merge: dado um conjunto de tubos t1, t2, …, tm, produza um tubo com o
conteúdo de todos os outros tubos: ∪(N1,N2,…,Nm) = N1 ∪ N2 ∪…∪ Nm.
3. Detect: dado um tubo t, aceite se t contém pelo menos uma molécula de
DNA, e rejeite caso contrário.
4. Amplify: dado um tubo t, produza duas cópias t1 e t2: t = t1 = t2.
• Estas quatro operações podem ser empregadas para escrever programas que
recebem como entrada um tubo e produzem como saída uma resposta aceite
(YES), rejeite (NO) ou um conjunto de tubos.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 406
• Além destas operações, o experimento de Adleman utiliza a complementaridade de
Watson-Crick e as seguintes modificações da operação separate:
1. Length-separate: dado um tubo t e um inteiro n, produza o tubo (t, ≤ n)
que consiste de todas as cadeias em t de comprimento menor ou igual a n.
2. Position-separate: dado um tubo t e uma palavra w, produza um tubo
B(t,w) que possui todas as cadeias em t que iniciam com a palavra w; ou
produza o tubo E(t,w) que contém todas as cadeias em t que terminam com a
palavra w.
• Exemplos de aplicação:
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 407
procedure [out] = extract(t,A,T,G)
t ← −(t,T) t ← −(t,G) t ← −(t,A) out ← detect(t)
end procedure
o O que o programa acima faz?
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 408
procedure [out] = HPP(t,vin,vout)
t ← B(t,vin)
t ← E(t,vout)
t ← (t,≤ 140) for i=1 to 5 do
t ← +(t,si) end for
out ← detect(t) end procedure
• Na proposta de Lipton para o problema SAT, uma operação extract E(t,i,a) que
extrai todas as sequências de um tubo t cujo i-ésimo bit é igual a a, foi definida:
E(t,i,a) = +(t,eia),
E−(t,i,a) = −(t,eia),
onde E−(t,i,a) extrai todas as sequências no tubo t cujo i-ésimo bit é complementar
a a.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 409
procedure [out] = SAT(t)
t1 ← +(t,e11)
t1’ ← −(t,e11) t2 ← +(t1’,e2
1)
t3 ← merge(t1,t2)
t4 ← +(t3,e10)
t4’ ← −(t3,e10) t5 ← +(t4’,e2
0)
t6 ← merge(t4,t5)
out ← detect(t6) end procedure
A Linguagem Pascal-DNA
• Com o objetivo de fornecer um modelo em alto nível para a computação
molecular, foi introduzida uma outra linguagem de programação combinando
elementos de Pascal com operadores de manipulação de DNA.
• Nesta linguagem, denominada de DNA Pascal, tubos de ensaio com moléculas de
DNA foram mapeados em variáveis contendo palavras do alfabeto {0,1}.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 410
o Initialization: preenche um conjunto de variáveis t com {0,1}n,
t := In(n).
o Empty word: t :={ε}.
o Union: união de dois conjuntos de variáveis t1 e t2, t := t1 ∪ t2.
o Extraction: filtra todas as palavras de um conjunto de variáveis t1 que
possuem um padrão especial. Os autores propuseram dois tipos de
procedimentos de extração: 1) uma extração de bits, e 2) uma extração de sub-
palavras.
o Bit extraction: procura um bit especial b em uma posição particular k,
t := Bx(t1,b,k).
o Sub word extraction: a extração procura uma palavra sub-palavra
especial w em qualquer lugar da palavra, t := Sx(t1,w).
o Concatenation: a concatenação de dois conjuntos de variáveis t1 e t2 é
t := t1.t2.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 411
o Right cut: t := t1/, onde t1/ = {z/ | z ∈ t1} e za/ = z ∀a ∈ {0,1} e ε/ = ε.
o Left cut: t := /t1, onde /t1 = {/z | z ∈ t1} e /za = z ∀a ∈ {0,1} e /ε = ε.
o Right append: t := t1.a, onde t1.a = {z.a | z ∈ t1}.
o Left append: t := a.t1, onde a.t1 = {a.z | z ∈ t1}.
• Alguns testes condicionais também foram propostos:
o Subset test: t1 ⊆ t2.
o Detect test: t = 0.
o Membership test: x ∈ t.
4. Um Breve Resumo dos Modelos Formais
• Virtualmente cada pesquisador em computação de DNA possui sua própria forma
de utilizar DNA para computar.
• Isso indica que esta linha de pesquisa ainda está explorando as diversas
possibilidades de implementar um computador de DNA.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 412
• Entretanto, diversos modelos formais, alguns introduzidos antes do experimento de
Adleman, têm sido propostos com o objetivo de fornecer um estudo teórico sobre a
computação de DNA. Dentre eles é possível citar os:
o sticker systems: Roweis et al. (1996) introduziram um modelo de computação de
DNA chamado de sticker model. Assim como os modelos de filtragem, este
modelo emprega cadeias de DNA como o substrato físico para armazenar e
processar informação. O modelo de stickers possui uma memória de acesso
aleatório que não requer a extensão de cadeias de DNA, não utiliza enzimas, e
(em teoria) utiliza material reaproveitável.
o splicing systems ou sistemas H: De forma simples, cortar (splice) duas strings
corresponde a parti-las em pontos específicos e concatenar os fragmentos
obtidos de uma forma similar a feita com cromossomos durante um crossover.
Este modelo é baseado em linguagens formais e a operação de splicing.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 413
o insertion/deletion systems: As operações de inserção e deleção são fundamentais
em linguagens formais. Dado um par de palavras (x,y), denominado contexto,
um operador de inserção permite inserir uma palavra v entre x e y.
o modelo PAM (parallel associative memory model): Este modelo basicamente
descreve um operador de ligação paralela e associativa. Ele também utiliza
operadores comuns em computação de DNA como união, extração e deleção.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 414
5. Computadores Universais de DNA
• A verificação da capacidade de computação universal de um computador de DNA
tem sido feita de várias formas utilizando diferentes computadores universais,
como máquinas de Turing, autômatos celulares, circuitos Booleanos, e gramáticas
de Chomsky.
• Como uma máquina de Turing universal pode, em princípio, computar qualquer
função computável, projetar uma máquina de Turing universal utilizando DNA
constitui um passo importante na direção de provar a universalidade da
computação de DNA.
• Neste caso, é preciso especificar um computador molecular capaz de manter um
estado e uma memória, e capaz de executar uma quantidade indefinida de
transições de estados.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 415
• D. Beaver projetou uma máquina de Turing consistindo de uma única molécula de
DNA onde os mecanismos químicos para a transição de estados permitem uma
computação paralela, sincronizada e heterogênea.
• A cada passo do modelo proposto, uma molécula de DNA codifica uma
configuração da máquina de Turing: o conteúdo da fita, seu estado atual e a
posição do cabeçote.
• Cada transição de estado requer um esforço O(1) em termos de passos de
laboratório a serem executados.
• Como uma única cadeia de DNA é utilizada para codificar a configuração de uma
máquina de Turing, Beaver primeiramente mostrou como implementar uma
substituição dependente de contexto em uma molécula de DNA.
o Isso foi feito porque simular uma computação (passo) de uma MT
corresponde a substituir uma parte da configuração de uma MT.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 416
• A idéia é substituir a porção de DNA que irá sofrer a transição de estado. (ver
figura)
• Configuração: C = (x1…xk−1qxkxk+1…xm)
• Codificação: Ce = e(x1,1)…e(xk−1,k−1)e(q,k)e(xk,k)…e(xm,m), onde e(xk,k) indica
que o símbolo xk ∈ ∑ está na k-ésima posição da fita e e(q,k) indica o estado atual
da máquina.
• Note que neste esquema o conteúdo da máquina de Turing, juntamente com o
estado q atual da máquina são codificados um a um e concatenados para formar
uma cadeia de DNA que codifica a configuração da máquina.
• Para que ocorra uma transição, a molécula é isolada em um tubo de ensaio de
acordo com o estado q, posição do cabeçote k, símbolo xk sendo lido atualmente e
os símbolos xk−1 a esquerda e xk+1 a direita do cabeçote.
• Os valores de q e xk determinam a transição de estados a ser realizada:
o δ(q,xk) = (q′,xk′,L) movimento para a esquerda
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 417
o δ(q,xk) = (q′,xk′,R) movimento para a direita
• Beaver (1995) também estendeu este método para simular máquinas de Turing
não-determinísticas.
C = (xk−1qxkxk+1); e(xk−1,k−1)e(q,k)e(xk,k)
C = (xk−2q′xk−1xk′); e(q′,k−1)e(xk−1,k−1)e(xk′,k)
. . . . . .
q
xk−2 xk−1 xk xk+1
q′
xk−2 xk−1 xk′ xk+1
. . . . . .
Figura 45: Codificação de uma configuração da máquina de Turing.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 418
Polymerase extension Ligation
L A U E R
Ā Ō Ē R Mix
Anneal
U L A E R
Ā Ē Ō
R
Ā Ē Ō
R
U L A E R
L Ā Ē
Ō R
U L A E R
L
L Denaturing
Mix with L Anneal
L A O E R
L Ā Ō Ē R
Polymerase extension Destruction of the original strand
Figura 46: Substituição molecular de uma sequência de DNA empregada como transição de estados de uma “máquina de Turing de DNA”. Exemplo: substituir U por O.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 419
6. Escopo da Computação de DNA
• A computação de DNA foi inicialmente proposta para resolver problemas e
demonstrou ser bem sucedida na solução de problemas NP-completos.
• Como qualquer instância de um problema NP-completo pode ser expressa em
termos de outro problema NP-completo, as soluções baseadas em computação de
DNA apresentadas fornecem implicitamente um poder computacional suficiente
para resolver qualquer problema na classe NP.
• Exemplos de outros problemas que podem ser resolvidos por DNA:
o Graph coloring
o Shortest common superstring
o Integer factorization
o Protein conformation
o Maximum clique
o Etc.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 420
• Também são encontrados trabalhos na literatura aplicando DNA para a geração de
memórias associativas, solução de problemas criptográficos, desenvolvimento de
algoritmos baseados em DNA para adição de números e multiplicação de matrizes,
máquinas paralelas, e implementação em computadores de DNA ou hibridização
de diversos paradigmas de computação natural.
• O paralelismo massivo e a miniaturização do DNA sugerem uma vasta gama de
problemas que são candidatos em potencial a serem resolvidos pela computação de
DNA.
• Além destas aplicações computacionais da computação de DNA, ela também pode
ser aplicada no domínio da biologia. Exemplos:
o Processamento de DNA: sequenciamento e fingerprinting
o Decodificação de material genético
o Criação e busca em bases de dados de DNA
o Detecção de mutações
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 421
• Possíveis resultados desta pesquisa em problemas da biologia:
o Erradicação de doenças
o Identificação de criminosos, dentre outras
o Desenvolvimento de biochips implantáveis
7. Discussão
• O experimento de Adleman foi rapidamente seguido por uma grande quantidade de
generalizações e extensões para solução de outros problemas NP-completos.
• Entretanto, é interessante notar que boa parte dos autores não implementou a
computação de DNA em laboratório como feito por Adleman.
• Na verdade, boa parte das propostas de soluções baseadas em DNA é de cunho
teórico, uma atividade denominada de menmology (mental molecular biology) por
Rozenberg.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 422
• As questões em aberto sobre a computação de DNA não mais dizem respeito ao
seu poder de processamento.
o Ao invés disso, a principal questão que permanece é quanto ao projeto e
construção de um computador de DNA.
o Neste sentido são dois os problemas centrais: correção de erros e realização
e automação das técnicas de manipulação de DNA.
• Um dos grandes problemas da computação de DNA é que erros são muito comuns
em reações e processos biológicos. As operações de extração, annealing, merge e
muitas outras são imprecisas.
• Tem sido grande o esforço no sentido de aproveitar conceitos de matemática e
biologia molecular para projetar computadores de DNA.
• No estado atual, a computação molecular possui diversos desafios:
o O material utilizado (DNA, RNA ou proteínas) não é reutilizável
o Os componentes moleculares são especializados
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 423
o Correção de erros
o Para que um computador de DNA seja eficiente, o algoritmo a ser utilizado
deve ser o mais paralelizável possível
o A interface de entrada/saída é um tanto complicada
o O tempo experimental ainda é grande, mas isso pode ser remediado com um
aprofundamento dos conhecimentos e tecnologias em biologia molecular e
engenharia genética
• Entretanto, algumas características da computação de DNA servem para
contrabalançar as dificuldades de projeto de um computador de DNA:
o Alta velocidade de processamento paralelo quando automatizado (permite o
uso da força bruta)
o É economicamente barato sob o ponto de vista de consumo de energia,
armazenagem e processamento de informação
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 424
Tópico 10: Computação Quântica
1. Princípios de Mecânica Quântica
1.1. A Notação de Dirac
• Um vetor é representado por |x⟩, onde x é o rótulo do vetor.
• A notação |⋅⟩, conhecida como ket, indica que x é um vetor coluna. Cada ket possui
um bra ⟨x| dual, que corresponde ao conjugado transposto do ket |x⟩: ⟨x| = |x⟩†.
• O estado de um sistema quântico é descrito por um vetor de norma unitária em um
espaço de Hilbert, ou seja, um espaço vetorial complexo de dimensão n, Hn, que
corresponde ao espaço de estados do sistema.
• O espaço de estados de um sistema quântico, conhecido como espaço de estados
quântico, pode ser descrito em termos de vetores e matrizes ou usando uma
notação padrão denominada de notação bracket (bra-ket) ou notação de Dirac.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 425
• A terminologia bracket deve-se ao fato de que o produto interno de dois estados é
representado por um bracket: ⟨y||x⟩ = ⟨y|x⟩, cujo resultado é um número complexo.
• O produto externo de |x⟩ e ⟨y|, representado por |x⟩⟨y|, resulta numa matriz.
• Exemplo: Seja a base ortonormal do espaço formada pelos vetores |x⟩ e |y⟩,
{|0⟩,|1⟩}. Na notação usual da álgebra linear esta base poderia ser expressa por
{(1,0)T,(0,1)T} ou, alternativamente, {(0,1)T,(1,0)T}. No primeiro caso, o produto
interno ⟨0|1⟩ entre os vetores ⟨0| e |1⟩ é ⟨0|1⟩ = 0; e o produto interno entre os
vetores ⟨0| e |0⟩ é ⟨0|0⟩ = 1.
• O produto externo dos vetores |1⟩ e ⟨0| é:
A = |1⟩⟨0| =
01
00.
• Note que o resultado do produto externo é uma matriz A, ou seja, uma
transformação nos estados quânticos que irá ditar o que acontece com os vetores
base.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 426
o Por exemplo, o produto externo |1⟩⟨0| mapeia |0⟩ em |1⟩ e |1⟩ em (0,0)T.
1.2. Superposição Quântica
• Qualquer estado de um sistema quântico pode ser escrito como uma combinação
linear de um certo número de estados base ou vetores base:
c1|x1⟩ + c2|x2⟩ + … + cn|xn⟩,
onde ci, i = 1,…,n são números complexos, denominados de amplitudes, e
∑i |ci|2 = 1, ∀i.
• Note que xi, i = 1,…,n, correspondem a observáveis de um objeto físico.
o Por exemplo, x1 pode representar a velocidade de uma partícula e x2 pode
representar seu momento.
1.3. Produtos Tensores
• O produto tensor de |x⟩ e |y⟩, representado por |x⟩⊗|y⟩, também abreviado por
|x⟩|y⟩ ou |xy⟩, é uma forma de unir espaços vetoriais na construção de espaços
vetoriais maiores; ele permite combinar estados quânticos.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 427
• Portanto, o espaço de estados de um sistema composto é o produto tensor dos
espaços de estado dos sistemas físicos componentes.
• Exemplo: Dados os estados base {|0⟩,|1⟩} = {(1,0)T,(0,1)T}, temos os seguintes
produtos tensores:
|0⟩⊗|0⟩ = |00⟩ = (1 0 0 0)T. |0⟩⊗|1⟩ = |01⟩ = (0 1 0 0)T
.
|1⟩⊗|0⟩ = |10⟩ = (0 0 1 0)T. |1⟩⊗|1⟩ = |11⟩ = (0 0 0 1)T
.
• Para um escalar arbitrário c pertencente ao campo e alguns vetores x, x1, x2, y, y1,
e y2, pertencentes aos espaços apropriados, o produto tensor satisfaz as seguintes
propriedades básicas:
c(|x⟩⊗|y⟩) = (c|x⟩)⊗|y⟩ = |x⟩⊗(c|y⟩); (|x1⟩+|x2⟩)⊗|y⟩ = |x1⟩⊗|y⟩ + |x2⟩⊗|y⟩; |x⟩⊗(|y1⟩+|y2⟩) = |x⟩⊗|y1⟩ + |x⟩⊗|y2⟩.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 428
1.4. Emaranhamento (Entanglement)
• Dois bits clássicos podem ser unidos (combinados) em um sistema composto da
forma 00, 01, 10, 11. O valor de qualquer combinação pode ser escrito como o
produto dos bits individuais.
• Há alguns sistemas quânticos compostos que não podem ser escritos como o
produto tensor dos estados de seus sistemas componentes, uma propriedade
chamada de emaranhamento.
• O espaço de Hilbert de um sistema composto por dois sistemas A e B é HA⊗HB; ou
seja, é o produto tensor dos respectivos espaços.
• Assumindo que o primeiro sistema está em um estado arbitrário |x⟩A e o segundo
em um estado arbitrário |y⟩B, se o estado do sistema composto não puder ser
escrito como o produto tensor |x⟩A⊗|y⟩B, então os estados são ditos emaranhados;
caso contrário, eles são ditos separáveis, decomponíveis, ou estados produto.
• A forma geral do estado de um sistema composto HA⊗HB é:
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 429
∑ ⟩⟩yx xy yxc
,|| BA .
• Exemplos de estados emaranhados com dois qubits são os estados de Bell:
( )ABAB ⟩+⟩=⟩ 11|00|2
1| 0x ; ( )ABAB ⟩+⟩=⟩ 10|01|
2
1| 1x ;
( )ABAB ⟩−⟩=⟩ 11|00|2
1| 2x ; ( )ABAB ⟩−⟩=⟩ 10|01|
2
1| 3x .
• Um exemplo de um estado decomponível é aquele formado pela combinação
linear de todos os estados base em H4: ½(|00⟩+|01⟩+|10⟩+|11⟩).
o Isso pode ser verificado encontrando-se os coeficientes a1, a2, b1, b2, tal que:
½(|00⟩+|01⟩+|10⟩+|11⟩) = (a1|0⟩+a2|1⟩)(b1|0⟩+b2|1⟩) =
= a1b1|00⟩ + a1b2|01⟩ + a2b1|10⟩ + a2b2|11⟩.
o Neste caso a1b1 = a1b2 = a2b1 = a2b2 = ½, ou seja, a1 = a2 = b1 = b2 = 2/1 .
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 430
1.5. Evolução (Dinâmica)
• A evolução de um sistema quântico corresponde a sua dinâmica, ou seja, como ele
varia ao longo do tempo. Se um sistema quântico não está interagindo com outro
sistema (é fechado), sua evolução pode ser descrita por uma transformação
unitária representada por uma matriz.
• Em outras palavras, o estado |x1⟩ de um sistema no instante de tempo t1 está
relacionado ao estado |x2⟩ no instante de tempo t2 por uma transformação unitária
A que é função de t1 e t2:
|x2⟩ = A|x1⟩.
• A ação da transformação unitária A sobre o estado x é descrita pela
correspondente rotação do vetor |x⟩ no espaço de Hilbert apropriado. Portanto, a
transformação unitária corresponde a operação da mecânica quântica e também a
uma rotação unitária.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 431
• Note que a ordem de aplicação de uma transformação influencia o resultado final:
A.B ≠ B.A, onde A e B são transformações unitárias. Além disso, uma
transformação unitária significa que a evolução no tempo de um sistema quântico
é inversível (reversível), ou seja, |x1⟩ pode ser perfeitamente recuperado a partir de
|x2⟩.
• Exemplos de transformações unitárias são as matrizes de Pauli:
σ0 = I =
10
01 σ1 = X =
01
10
σ2 = Y =
− 0
0
i
i σ3 = Z =
−10
01
• A aplicação do operador X aos vetores base {|0⟩,|1⟩} mapeia |0⟩ em |1⟩ e |1⟩ em
|0⟩, respectivamente; agindo, portanto, como uma espécie de porta NOT.
• Portanto, é possível concluir que um operador unitário pode ser visto como uma
espécie de porta quântica (quantum gate).
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 432
1.6. Medição
• Em várias ocasiões é necessário medir ou observar o comportamento do sistema.
Uma medição quântica é descrita por um conjunto de operadores que atuam sobre
o espaço de estados do sistema sendo observado.
• Qualquer dispositivo de medição de um sistema quântico possui uma base
ortonormal associada em relação a qual a medição será feita. O resultado será a
projeção do estado do sistema antes da medição no subespaço do espaço de
estados compatível com os valores medidos; ou seja, a medição projeta (promove
o colapso) o estado quântico em um dos estados base associados ao dispositivo de
medição.
• Exemplo: Seja um estado arbitrário |x⟩ representado pela combinação linear dos
estados base |0⟩ e |1⟩: |x⟩ = c1|0⟩ + c2|1⟩, onde c1 e c2 são números complexos.
• A medição do estado |x⟩ = c1|0⟩ + c2|1⟩ resulta em |0⟩ com probabilidade |c1|2 e em
|1⟩ com probabilidade |c2|2. Observar |x⟩ implica em interagir com |x⟩, o que possui
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 433
o efeito de promover um colapso do estado do sistema em um dos estados base.
Portanto, de acordo com o princípio da incerteza de Heisenberg, observar um
estado quântico causa uma perturbação no mesmo.
1.7. Teorema ‘No-Cloning’
• O teorema chamado de no-cloning afirma que não é possível criar cópias idênticas
de um estado quântico arbitrário desconhecido, ou seja, não há uma máquina para
se copiar estados quânticos.
• Para provar o teorema, assuma um sistema quântico A ∈ H2 com estados base |0⟩A
e |1⟩A. Um estado arbitrário |x⟩A deste sistema quântico pode ser escrito como uma
combinação linear dos estados base: |x⟩A = c1|0⟩A + c2|1⟩A.
• Suponhamos que o objetivo seja copiar o estado |x⟩A. A máquina para copiar
estados quânticos deverá receber como entrada |x⟩A e apresentar como saída |x⟩A
duas vezes. Para fazer a cópia, um sistema B com um espaço de Hilbert idêntico e
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 434
um estado inicial arbitrário |s⟩B é tomado. O estado inicial |s⟩B do sistema B será
transformado no estado a ser copiado.
• O seguinte estado inicial resulta da máquina de copiar estados:
|x⟩A|s⟩B.
• O sistema composto pode ser observado, o que promoveria um colapso para um
dos estados base do medidor, ou ser submetido a uma transformação unitária
arbitrária A que seria responsável por copiar o estado |x⟩A:
A(|x⟩A|s⟩B) = |x⟩A|x⟩B = (c1|0⟩A + c2|1⟩A) (c1|0⟩B + c2|1⟩B) =
= (c12|0⟩A|0⟩B + c1c2|0⟩A|1⟩B + c2c1|1⟩A|0⟩B + c2
2|1⟩A|1⟩B).
• No caso particular em que queremos copiar os estados-base de um sistema
quântico bidimensional:
A(|0⟩A|s⟩B) = |0⟩A|0⟩B. A(|1⟩A|s⟩B) = |1⟩A|1⟩B.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 435
• Aplicando a copiadora ao estado genérico |x⟩, assumindo a linearidade da
transformação A, e considerando a Equação (10), tem-se:
A(|x⟩A|s⟩B) = A(c1|0⟩A + c2|1⟩A)|s⟩B = A(c1|0⟩A|s⟩B + c2|1⟩A|s⟩B) =
= A(c1|0⟩A|s⟩B) + A(c2|1⟩A|s⟩B) = c1|0⟩A|0⟩B + c2|1⟩A|1⟩B.
• Que é diferente da Eq. (9). Portanto, genericamente A(|x⟩A|s⟩B) ≠ |x⟩A|x⟩B.
2. Informação Quântica
2.1. Bits e Bits Quânticos
• Em computação e teoria da informação, a unidade mais básica de informação é o
dígito binário ou bit, que corresponde a uma entidade abstrata que pode assumir
um dos valores lógicos ‘0’ ou ‘1’.
• A informação é fisicamente armazenada como bits nos computadores clássicos e
os dispositivos que implementam os bits podem ser uma combinação de
transistores ou outros elementos de circuitos integrados com uma distribuição de
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 436
carga que determina o estado do bit. Os bits podem ser organizados em strings de
comprimento n, permitindo a representação de uma quantidade maior de
informação e as cadeias binárias podem ser manipuladas para realizar
computação, por exemplo, implementar algoritmos. É possível acessar certo
endereço de memória de um computador clássico e observar (ler) seu conteúdo.
• Quando a informação é armazenada em escala atômica, os efeitos quânticos
aparecem e o resultado é um cenário completamente diferente. Neste caso, um bit
quântico, ou qubit, pode assumir ambos os valores ‘0’ e ‘1’ simultaneamente.
• Os qubits são objetos matemáticos (entidades abstratas) com propriedades
específicas e correspondem as unidades mais básicas de informação em
computação quântica. Eles são representados por um sistema quântico ideal de
dois estados, como fótons polarizados, elétrons, átomos, íons ou spins nucleares.
A informação quântica é descrita por um estado em um sistema quântico com dois
estados básicos nomeados, por convenção, |0⟩ e |1⟩.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 437
• Estes estados particularmente formam uma base ortonormal de um espaço vetorial
complexo bi-dimensional (um espaço de Hilbert H2) e, portanto, são conhecidos
como estados computacionais base (computational basis states).
• Sendo assim, é possível fazer combinações lineares dos estados base,
denominadas superposição, que correspondem a um estado de um qubit puro:
|x⟩ = c1|0⟩ + c2|1⟩,
onde c1 e c2 são números complexos.
• Na prática, a superposição de estados quânticos significa que uma quantidade
infinita de informação pode, potencialmente, ser codificada em um único qubit.
Basta definir apropriadamente os coeficientes c1 e c2.
2.2. Múltiplos Bits e Qubits
• Na computação clássica, N bits podem ser usados para representar 2N estados
distintos.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 438
• Um sistema quântico com N qubits possui N estados computacionais base,
denotados por:
∑=
⟩=⟩1...11
000
||...x
x xcy ,
onde cx são números complexos tais que ∑x |cx|2 = 1.
• Portanto, N qubits podem representar qualquer vetor complexo unitário em um
espaço de Hilbert de dimensão 2N, possuindo uma dimensão para cada estado
clássico.
o Ou seja, qualquer vetor neste espaço de dimensão 2N pode ser representado por
uma combinação linear dos estados base.
o Isso corresponde a um crescimento exponencial do número de possíveis estados
de um sistema quântico em comparação aos sistemas clássicos.
o Um sistema ordenado de N qubits é conhecido como um registrador quântico.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 439
• Os estados quânticos são combinados através de produtos tensores, responsáveis
pelo crescimento exponencial do número de estados possíveis.
• Exemplo:
• Considere o espaço de estados de um sistema quântico com dois qubits, cada qual
com uma base computacional clássica {|0⟩,|1⟩}.
• A base do espaço de estados resultante é {|0⟩⊗|0⟩, |0⟩⊗|1⟩, |1⟩⊗|0⟩, |1⟩⊗|1⟩},
também representada por {|00⟩, |01⟩, |10⟩, |11⟩}.
• Assumindo a base padrão da álgebra linear em H2, a base em H4 torna-se:
=⟩
0
0
0
1
00|,
=⟩
0
0
1
0
01|,
=⟩
0
1
0
0
10|,
=⟩
1
0
0
0
11|.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 440
2.3. Portas Lógicas e Portas Quânticas
• As operações elementares para manipular bits em computadores clássicos são
chamadas de funções ou operações lógicas. Uma porta lógica é um dispositivo
eletrônico usado para realizar uma função lógica simples e para construir sistemas
lógicos maiores. As operações realizadas pelas portas lógicas clássicas geralmente
são não-inversíveis.
• Exemplo:
AND NOT
OR NAND
XOR NOR
a
b
a
b
a
b
a
a
b
a
b
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 441
a b a AND b a b a OR b a b a XOR b
0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 1 1 1 0 0 1 0 1 1 0 1 1 1 1 1 1 1 1 1 0
a NOT a a b a NAND b a b a NOR b
0 1 0 0 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 1 0 0 1 1 0 1 1 0
Figura 47: Portas lógicas dos computadores clássicos e suas respectivas tabelas-verdade.
• As portas quânticas constituem as unidades básicas dos algoritmos quânticos e,
portanto, dos computadores quânticos.
• O exemplo mais simples de uma porta quântica que atua em um único qubit é a
porta NOT quântica, que faz o seguinte mapeamento: |0⟩ → |1⟩ e |1⟩ → |0⟩:
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 442
NOT |0⟩ = X|0⟩ = =
=
1
0
0
1
01
10|1⟩,
NOT |1⟩ = X|1⟩ = =
=
0
1
1
0
01
10|0⟩.
• Esta operação (NOT) é representada pela matriz X.
• Qualquer transformação matricial unitária pode ser usada como uma porta
quântica e, portanto, as portas quânticas são reversíveis (inversíveis).
• A necessidade da unitariedade da transformação vem do fato de que dado um
estado quântico arbitrário |y′′′′⟩ = c1′′′′|0⟩ + c2′′′′|1⟩ obtido a partir de |y⟩ = c1|0⟩ + c2|1⟩,
os coeficientes |c1′′′′|2 + |c2′′′′|
2 = 1.
• As matrizes de Pauli estudadas na revisão matemática correspondem a portas
quânticas conhecidas.
σ0 = I =
10
01 σ1 = X =
01
10 σ2 = Y =
− 0
0
i
i σ3 = Z =
−10
01
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 443
• I: porta identidade; X: porta NOT e Z: porta mudança de fase.
• Outras portas quânticas:
Raiz quadrada do NOT:
NOT |0⟩ = ½(1+i)|0⟩ + ½(1−i)|1⟩,
NOT |1⟩ = ½(1−i)|0⟩ + ½(1+i)|1⟩,
+−
−+=
ii
ii
11
11
2
1NOT ,
NOT . NOT = NOT.
Porta de Hadamard:
H =
−11
11
2
1.
Obs.: quando aplicada a N bits individualmente, a porta de Hadamard gera uma
superposição de todos os 2N possíveis estados:
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 444
H|0⟩ = )1|0(|2
1
1
1
2
1
0
1
11
11
2
1⟩⟩+=
=
− ,
H|1⟩ = )1|0(|2
1
1
1
2
1
1
0
11
11
2
1⟩⟩−=
−=
− .
NOT controlado:
CNOT =
0100
1000
0010
0001
.
Dado um estado de entrada |x1x2⟩, x1, x2 ∈ {0,1}, a saída produzida pela porta
CNOT é |x1x3⟩, x3 = x1 ⊕ x2, onde ⊕ é a adição módulo 2 (operação XOR).
CNOT |00⟩ = |00⟩ CNOT |01⟩ = |01⟩
CNOT |10⟩ = |11⟩ CNOT |11⟩ = |10⟩
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 445
Uma propriedade importante da parta CNOT é que ela pode ser usada para criar
emaranhamento. Exemplo:
CNOT 2
1(|00⟩ + |10⟩) = 2
1(|00⟩ + |11⟩).
Porta de Toffoli ou controlled-controlled-NOT:
CCNOT |000⟩ = |000⟩ CCNOT |001⟩ = |001⟩ CCNOT |010⟩ = |010⟩ CCNOT |011⟩ = |011⟩ CCNOT |100⟩ = |100⟩ CCNOT |101⟩ = |101⟩ CCNOT |110⟩ = |111⟩ CCNOT |111⟩ = |110⟩
=
01000000
10000000
00100000
00010000
00001000
00000100
00000010
00000001
CCNOT
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 446
2.4. Circuitos Quânticos
• Circuitos quânticos correspondem a descrições gráficas de uma ou mais
transformações quânticas.
• Exemplo:
⊕
|x⟩ |x⟩
|y⟩ |x⊕y⟩
Figura 48: Circuito quântico para a porta CNOT.
• É possível combinar a porta CNOT de várias maneiras.
• Exemplo:
⊕ ⊕
⊕
⊕
|x⟩ |x⟩ |(x⊕y)⊕x⟩ = |y⟩ |y⟩
|y⟩ |x⊕y⟩ |x⊕y⟩ |y⊕(x⊕y)⟩ = |x⟩ ⊕
⊕
• O que o circuito acima faz?
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 447
• Outras representações para circuitos quânticos específicos:
H S T
Figura 49: Circuitos quânticos para as portas de Hadamard, mudança de fase e Toffoli.
• Os estados Bell, também denominados de pares EPR, podem ser gerados por uma
combinação de uma porta Hadamard aplicada ao primeiro qubit seguido de uma
porta controlled-NOT:
⊕
H x y
|βxy⟩
Figura 50: Circuito quântico para gerar os estados Bell (pares EPR).
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 448
Estado inicial H(primeiro qubit, x) CNOT(primeiro qubit, x)
|00⟩ ( ) ⟩⟩⟩+ 0|1|0|21 ( )⟩⟩+ 11|00|21
|01⟩ ( ) ⟩⟩⟩+ 1|0|1|21 ( )⟩⟩+ 01|10|21
|10⟩ ( ) ⟩⟩⟩− 0|1|0|21 ( )⟩⟩− 11|00|21
|11⟩ ( ) ⟩⟩⟩− 1|1|0|21 ( )⟩⟩− 10|01|21
3. Exemplos de Aplicação
• A Codificação Densa (dense coding) e o Teletransporte (teleportation) servem
para ilustrar o uso de portas quânticas simples.
• Ambos os exemplos assumem o mesmo cenário inicial:
o Alice e Bob nunca se comunicaram e querem fazê-lo.
o Para isso eles usam um aparato que gera pares emaranhados de qubits (estados
Bell) como, por exemplo,
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 449
( )⟩⟩+=⟩ 11|00|2
1| 0x .
o Um qubit é enviado a Alice e outro a Bob. Alice só pode aplicar transformações
em seu respectivo qubit e Bob em seu, até que uma partícula seja transmitida.
3.1. Codificação Densa
• A codificação densa corresponde ao método pelo qual Alice pode comunicar dois
bits clássicos enviando apenas um qubit a Bob.
• Dois qubits estão envolvidos, mas Alice enxerga apenas um deles.
• Alice recebe dois bits clássicos e codifica os números 0, 1, 2 e 3.
• Estes números corresponderão a uma das quatro transformações unitárias
{I,X,Y,Z}, e atuarão no primeiro bit do par emaranhado da Alice x0.
I =
10
01 X =
01
10 Y =
− 01
10 Z =
−10
01
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 450
Valor codificado Estado inicial Transformação Novo estado
0
|x0⟩ = ( )⟩⟩+ 11|00|2
1
(I ⊗ I) |x0⟩ ( )⟩⟩+ 11|00|21
1 (X ⊗ I) |x0⟩ ( )⟩⟩+ 01|10|21
2 (Y ⊗ I) |x0⟩ ( )⟩⟩+− 01|10|21
3 (Z ⊗ I) |x0⟩ ( )⟩⟩− 11|00|21
• Em seguida Bob aplica uma porta CNOT nos pares emaranhados resultantes,
obtendo um conjunto de pares decomponíveis.
• Desta forma, Bob pode medir o segundo qubit sem perturbar o estado quântico.
• Aplicando uma porta Hadamard no primeiro qubit resultante da aplicação do
CNOT torna-se possível identificar os bits enviados.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 451
Estado inicial CNOT |xi⟩ H(1º. qubit)
|x0⟩ = ( )⟩⟩+ 11|00|21 ( ) ( ) ⟩⟩⟩+=⟩⟩+ 0|1|0|2110|00|21 |0⟩
|x1⟩ = ( )⟩⟩+ 01|10|21 ( ) ( ) ⟩⟩⟩+=⟩⟩+ 1|0|1|2101|11|21 |0⟩
|x2⟩ = ( )⟩⟩+− 01|10|21 ( ) ( ) ⟩⟩⟩+−=⟩⟩+− 1|0|1|2101|11|21 |1⟩
|x3⟩ = ( )⟩⟩− 11|00|21 ( ) ( ) ⟩⟩⟩−=⟩⟩− 0|1|0|2110|00|21 |1⟩
• A codificação densa pode ser realizada através do circuito apresentado abaixo:
x
y
|β00⟩
⊕
H
⊕
H Meas
Meas
T x
y
Figura 51: Circuito quântico para realizar a codificação densa.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 452
3.2. Teletransporte Quântico
• Assuma que Alice quer comunicar um qubit desconhecido |x⟩ a Bob.
o Devido ao teorema no-cloning, estados quânticos não podem ser copiados e
enviados sem serem destruídos.
o Além disso, se |x⟩ é desconhecido, qualquer tentativa de medi-lo irá destruí-lo.
o Portanto, a única forma de transmitir |x⟩ a Bob parece ser enviando um bit
clássico.
• O teletransporte quântico constitui uma forma de realizar esta tarefa.
o Ele corresponde ao processo pelo qual Alice comunica um único qubit
desconhecido |x⟩ a Bob enviando apenas informação clássica.
• Assuma que Alice e Bob possuem, cada um, um qubit de um par EPR, e que Alice
controla o primeiro qubit do par EPR e Bob o segundo.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 453
• Alice interage o qubit a ser transmitido |x⟩ com sua metade do par EPR e depois
mede os dois qubits que ela possui, obtendo um de quatro possíveis resultados
{00,01,10,11}.
o Esta informação é posteriormente enviada a Bob através de um canal clássico,
que executa uma das quatro operações {I,X,Y,Z} na sua metade do par EPR, o
que o permite recuperar a informação enviada |x⟩.
• Seja |x⟩ = c1|0⟩ + c2|1⟩, |c1|2 + |c2|
2 = 1, o estado quântico desconhecido a ser
enviado e |x0⟩ = ( )⟩⟩+ 11|00|21 o par EPR que eles possuem.
• O estado de entrada do sistema é o produto tensor entre |x⟩ e |x0⟩:
|x0⟩|x⟩ = (c1|0⟩ + c2|1⟩) ( )⟩⟩+ 11|00|21 =
( ))11|00(|1|)11|00(|0|21 21 ⟩⟩+⟩+⟩⟩+⟩ cc =
( )⟩+⟩+⟩+⟩ 111|100|011|000|21 2211 cccc .
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 454
• Alice aplica agora o passo de decodificação da codificação densa – uma porta
CNOT seguida de uma porta Hadamard – ao qubit desconhecido e a seu membro
do par emaranhado, o que corresponde a transformação (H⊗I⊗I)⋅(CNOT⊗I):
(H⊗I⊗I)(CNOT⊗I)(|x0⟩|x⟩) =
( )[ ]⟩+⟩+⟩+⟩⊗⊗ 101|110|011|000|21)( 2211 ccccIIH =
( )[ ])01|10(|1|)11|00(|0|21)( 21 ⟩⟩+⟩+⟩⟩+⟩⊗⊗ ccIIH =
[ ])01|10)(|1|0(|)11|00)(|1|0(|21 21 ⟩⟩+⟩⟩−+⟩⟩+⟩⟩+ cc =
(23)
[])0|1|(11|)1|0|(10|
)0|1|(01|)1|0|(00|21
2121
2121
⟩−⟩⟩+⟩−⟩⟩+
+⟩+⟩⟩+⟩+⟩⟩
cccc
cccc.
• Em seguida Alice mede seus dois qubits, promovendo um colapso do estado em
uma das quatro possibilidades {00,01,10,11}.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 455
• Este resultado é enviado a Bob, que o usa para descobrir qual das quatro
operações {I,X,Y,Z} ele deve aplicar a seu qubit para colocá-lo no estado
superposto |x⟩ = c1|0⟩ + c2|1⟩:
Bits recebidos Estado Transformação
00 c1|0⟩ + c2|1⟩ I
01 c1|1⟩ + c2|0⟩ X
10 c1|0⟩ − c2|1⟩ Z
11 c1|1⟩ − c2|0⟩ Y
|β00⟩
⊕
H ⊕
H Meas
Meas
|x⟩ T
|x⟩
Figura 52: Circuito quântico para realizar teletransporte.
Fundamentos de Computação Natural
Copyright© Leandro Nunes de Castro 456
• Nota: a palavra teletransporte ou teleporte é usada em ficção científica para
descrever o processo de mover objetos de um ambiente a outro codificando
informação sobre os objetos, transmitindo esta informação a outro local e depois
criando uma cópia dos objetos originais no novo local. O teletransporte quântico
possui este nome porque ele possui estas características em comum com a noção
fictícia de teletransporte: a) bits quânticos são codificados como bits clássicos; b)
a informação a ser transmitida é destruída durante o processo (devido a
observação); e c) o qubit transmitido é reconstruído a partir dos bits clássicos e do
par EPR.
Recommended