Fundamentos de Computação Natural




  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.


Copyright© Leandro Nunes de Castro                                                                        1
Fundamentos de Computação Natural



                                               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

Copyright© Leandro Nunes de Castro                                                                                                           2
Fundamentos de Computação Natural


   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

Copyright© Leandro Nunes de Castro                                                                                                        3
Fundamentos de Computação Natural


   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

Copyright© Leandro Nunes de Castro                                                                                                       4
Fundamentos de Computação Natural


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

Copyright© Leandro Nunes de Castro                                                                                                          5
Fundamentos de Computação Natural


   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

Copyright© Leandro Nunes de Castro                                                                                                          6
Fundamentos de Computação Natural


   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

Copyright© Leandro Nunes de Castro                                                                                                          7
Fundamentos de Computação Natural


   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

Copyright© Leandro Nunes de Castro                                                                                                          8
Fundamentos de Computação Natural


   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

Copyright© Leandro Nunes de Castro                                                                                                           9
Fundamentos de Computação Natural


3.      Exemplos de Aplicação ..................................................................................................... 448
     3.1.   Codificação Densa ................................................................................................... 449
     3.2.   Teletransporte Quântico ........................................................................................... 452




Copyright© Leandro Nunes de Castro                                                                                                 10
Fundamentos de Computação Natural



   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.



Copyright© Leandro Nunes de Castro                                                       11
Fundamentos de Computação Natural


• 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);
Copyright© Leandro Nunes de Castro                                                       12
Fundamentos de Computação Natural


  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.



Copyright© Leandro Nunes de Castro                                                       13
Fundamentos de Computação Natural


• 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


Copyright© Leandro Nunes de Castro                                                       14
Fundamentos de Computação Natural


  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                          PARTE II                     PARTE III
        Computação Inspirada            Simulação e Emulação          Computação com Novos
           na Natureza                       da Natureza                Materiais Naturais




                     Figura 1: Três principais vertentes da computação natural.




Copyright© Leandro Nunes de Castro                                                               15
Fundamentos de Computação Natural


• 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.

Copyright© Leandro Nunes de Castro                                                       16
Fundamentos de Computação Natural


• É 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.


Copyright© Leandro Nunes de Castro                                                        17
Fundamentos de Computação Natural


• 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;


Copyright© Leandro Nunes de Castro                                                     18
Fundamentos de Computação Natural


  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.




Copyright© Leandro Nunes de Castro                                                   19
Fundamentos de Computação Natural



                                     Observações
                                      empíricas




                   experimentais
                                                                Síntese de



                     Estudos
                                                                fenômenos

                                                              Novas formas
                                     Computação
                                                               de resolver
                                       natural
                                                               problemas
                   Estudos
                   teóricos

                                                                  Novos
                                                              paradigmas de
                                                               computação
                                     Outras linhas
                                     de pesquisa


  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

Copyright© Leandro Nunes de Castro                                                           20
Fundamentos de Computação Natural


  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




Copyright© Leandro Nunes de Castro                                       21
Fundamentos de Computação Natural



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

Copyright© Leandro Nunes de Castro                                                      22
Fundamentos de Computação Natural


     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.




Copyright© Leandro Nunes de Castro                                                      23
Fundamentos de Computação Natural



                          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.



Copyright© Leandro Nunes de Castro                                                     24
Fundamentos de Computação Natural


• 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


Copyright© Leandro Nunes de Castro                                                       25
Fundamentos de Computação Natural


  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.



Copyright© Leandro Nunes de Castro                                                       26
Fundamentos de Computação Natural


  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).

Copyright© Leandro Nunes de Castro                                                      27
Fundamentos de Computação Natural


• 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.

Copyright© Leandro Nunes de Castro                                                     28
Fundamentos de Computação Natural


• 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.



Copyright© Leandro Nunes de Castro                                                       29
Fundamentos de Computação Natural


  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.


Copyright© Leandro Nunes de Castro                                                      30
Fundamentos de Computação Natural


• 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.


Copyright© Leandro Nunes de Castro                                                   31
Fundamentos de Computação Natural


  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.

Copyright© Leandro Nunes de Castro                                                        32
Fundamentos de Computação Natural


• 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.

Copyright© Leandro Nunes de Castro                                                      33
Fundamentos de Computação Natural


• 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.




Copyright© Leandro Nunes de Castro                                                      34
Fundamentos de Computação Natural




                         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.


Copyright© Leandro Nunes de Castro                                                                  35
Fundamentos de Computação Natural


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.

Copyright© Leandro Nunes de Castro                                                        36
Fundamentos de Computação Natural


• 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:

Copyright© Leandro Nunes de Castro                                                     37
Fundamentos de Computação Natural


  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.




Copyright© Leandro Nunes de Castro                                                        38
Fundamentos de Computação Natural


• 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.




Copyright© Leandro Nunes de Castro                                                       39
Fundamentos de Computação Natural




 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


Copyright© Leandro Nunes de Castro                                                          40
Fundamentos de Computação Natural


  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.



Copyright© Leandro Nunes de Castro                                                      41
Fundamentos de Computação Natural


• 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.




Copyright© Leandro Nunes de Castro                                                     42
Fundamentos de Computação Natural


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.
Copyright© Leandro Nunes de Castro                                                        43
Fundamentos de Computação Natural


• 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.


Copyright© Leandro Nunes de Castro                                                            44
Fundamentos de Computação Natural




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

                                                            More cold air

                                                Pleasant
                                              temperature

                               More hot air

                                               Too cold


    Figura 6: Realimentação negativa no funcionamento de um aquecedor/ar-condicionado.


Copyright© Leandro Nunes de Castro                                                                45
Fundamentos de Computação Natural


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.



Copyright© Leandro Nunes de Castro                                                      46
Fundamentos de Computação Natural


  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.

Copyright© Leandro Nunes de Castro                                                            47
Fundamentos de Computação Natural


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.


Copyright© Leandro Nunes de Castro                                                    48
Fundamentos de Computação Natural


  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.



Copyright© Leandro Nunes de Castro                                                   49
Fundamentos de Computação Natural


• 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.

Copyright© Leandro Nunes de Castro                                                      50
Fundamentos de Computação Natural


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.
Copyright© Leandro Nunes de Castro                                                            51
Fundamentos de Computação Natural


• 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



Copyright© Leandro Nunes de Castro                                                       52
Fundamentos de Computação Natural


  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 A maioria dos fenômenos pode ser descrita
 da alma, que não pode ser descrita         por espíritos materiais de vida
 cientificamente
 A vida pode ser teleologicamente formada e Grande parte da vida é determinada de forma
 conduzida                                  causal e passível de descrições físicas e
                                            químicas

Copyright© Leandro Nunes de Castro                                                           53
Fundamentos de Computação Natural


 Meados do século 20
                     Vitalismo                             Reducionismo
 Deus com uma pequena significância       Nenhum Deus

 Alma ≠ (espíritos da vida = energia      Nenhuma alma
 nervosa)
 Alguns fenômenos não podem ser descritos Todos os fenômenos podem ser descritos
 cientificamente                          cientificamete
 A vida é teleologicamente conduzida      Determinismo causal

 Matéria inorgânica ≠ material orgânica   Matéria inorgânica = material orgânica




Copyright© Leandro Nunes de Castro                                                         54
Fundamentos de Computação Natural



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).
Copyright© Leandro Nunes de Castro                                                     55
Fundamentos de Computação Natural


• 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.


Copyright© Leandro Nunes de Castro                                                        56
Fundamentos de Computação Natural


• 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.



Copyright© Leandro Nunes de Castro                                                        57
Fundamentos de Computação Natural


• 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.



Copyright© Leandro Nunes de Castro                                                        58
Fundamentos de Computação Natural


• 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.




Copyright© Leandro Nunes de Castro                                                       59
Fundamentos de Computação Natural



                    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

Copyright© Leandro Nunes de Castro                                                    60
Fundamentos de Computação Natural


  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;


Copyright© Leandro Nunes de Castro                                                      61
Fundamentos de Computação Natural


      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?


Copyright© Leandro Nunes de Castro                                                       62
Fundamentos de Computação Natural


      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;


Copyright© Leandro Nunes de Castro                                                       63
Fundamentos de Computação Natural


      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:




Copyright© Leandro Nunes de Castro                                                        64
Fundamentos de Computação Natural


      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.”



Copyright© Leandro Nunes de Castro                                                      65
Fundamentos de Computação Natural


• 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.
Copyright© Leandro Nunes de Castro                                                         66
Fundamentos de Computação Natural


• 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.

Copyright© Leandro Nunes de Castro                                                       67
Fundamentos de Computação Natural


• 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).
Copyright© Leandro Nunes de Castro                                                       68
Fundamentos de Computação Natural


• 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

Copyright© Leandro Nunes de Castro                                                     69
Fundamentos de Computação Natural


   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)?




Copyright© Leandro Nunes de Castro                                                     70
Fundamentos de Computação Natural


• 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.




Copyright© Leandro Nunes de Castro                                                      71
Fundamentos de Computação Natural


• 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.




Copyright© Leandro Nunes de Castro                                                     72
Fundamentos de Computação Natural


• 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.



Copyright© Leandro Nunes de Castro                                                       73
Fundamentos de Computação Natural


• É 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.




Copyright© Leandro Nunes de Castro                                                        74
Fundamentos de Computação Natural



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.


Copyright© Leandro Nunes de Castro                                                      75
Fundamentos de Computação Natural


• 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.




Copyright© Leandro Nunes de Castro                                                              76
Fundamentos de Computação Natural



                            Órgão                                            Comunidade

             Célula                        Sistema
                                                             População                       Ecossistema



                                                 Organismo
                       Nível fisiológico                                   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.



Copyright© Leandro Nunes de Castro                                                                    77
Fundamentos de Computação Natural


• 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.

Copyright© Leandro Nunes de Castro                                                        78
Fundamentos de Computação Natural




• 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.
                                     Crom osomo diagram ático    Locus

                                                                 Alelos: {A, B}
                                 A   B   A A   B   A   B B A B
                                                                    Gene


  Figura 9: Ilustração pictórica de um cromossomo salientando o locus, os genes e os alelos.

Copyright© Leandro Nunes de Castro                                                               79
Fundamentos de Computação Natural


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);

Copyright© Leandro Nunes de Castro                                                      80
Fundamentos de Computação Natural


•   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.

                                           g2   f4    ′
                                                     g1
                                                              Espaço genotípico G
                           g1




                                f1        f3




                                     f2
                                                            Espaço fenotípico F
                      p1                   p2



      Figura 10: Evolução explicada através de mapeamentos entre os espaços genotípico e
                                          fenotípico.
Copyright© Leandro Nunes de Castro                                                            81
Fundamentos de Computação Natural


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;




Copyright© Leandro Nunes de Castro                                                    82
Fundamentos de Computação Natural


  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.




Copyright© Leandro Nunes de Castro                                                    83
Fundamentos de Computação Natural



                                                             M ito s e




                                          R e p lica ç ã o
                                                              D ivis ã o




                          H a p ló id e




                   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

Copyright© Leandro Nunes de Castro                                                                      84
Fundamentos de Computação Natural


  cromossomos existentes nos respectivos pais. Os cromossomos presentes nos
  gametas fornecidos pelos pais se emparelham para gerar uma nova célula diploide.




                                                                        Ovo


                                       Meiose




              Replicação
                                     Separação dos
                                      homólogos




                                                                               Zigoto
   Diplóide
                                                                              diplóide


                                                                        Esperma


                                                                 Gametas
                                                                 haplóides




Copyright© Leandro Nunes de Castro                                                       85
Fundamentos de Computação Natural


• 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



Copyright© Leandro Nunes de Castro                                                           86
Fundamentos de Computação Natural


  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                    A   B   A C    B   A    B C A B



           A   B    A B    B    A    B C A B                    A   B   A B    B   A    B C A   +     B

                   Mutação pontual                                            Deleção               perdido


                                         A   B   A C   B   A   B C A B


                                         A   C   A B   B   A   B B A B

                                                  Inversão


                          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,

Copyright© Leandro Nunes de Castro                                                                        87
Fundamentos de Computação Natural


  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.


Copyright© Leandro Nunes de Castro                                                     88
Fundamentos de Computação Natural



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.

Copyright© Leandro Nunes de Castro                                                        89
Fundamentos de Computação Natural


• 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).

Copyright© Leandro Nunes de Castro                                                         90
Fundamentos de Computação Natural


• 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
                                               2
                              −2 (( x − 0.1) / 0.9 )
   única variável: g ( x) = 2                        sen(5πx) 6 , x ∈ [0,1].



Copyright© Leandro Nunes de Castro                                                                          91
Fundamentos de Computação Natural


      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.



Copyright© Leandro Nunes de Castro                                                     92
Fundamentos de Computação Natural


• 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




Copyright© Leandro Nunes de Castro                                                     93
Fundamentos de Computação Natural


• É 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


Copyright© Leandro Nunes de Castro                                                      94
Fundamentos de Computação Natural


• 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.


Copyright© Leandro Nunes de Castro                                                        95
Fundamentos de Computação Natural




                                Cromossomo em um GA clássico           Locus

                                                                       Alelos: {0,1}
                               1     0   0   0   1   1   0   0   1 0
                                                                          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.




Copyright© Leandro Nunes de Castro                                                                   96
Fundamentos de Computação Natural


• Exemplo:                                                                 0.25


N    Cromossomo                  Fitness Graus
1    0001100101010                6.0    180              0
                                                                            1

2    0101001010101                3.0     90              1        4
                                                                                      0.5
                                                                                  2
3    1011110100101                1.5     45
                                                                       3
4    1010010101001                1.5     45
                                                                       0.75

• 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.



Copyright© Leandro Nunes de Castro                                                          97
Fundamentos de Computação Natural


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.



Copyright© Leandro Nunes de Castro                                                       98
Fundamentos de Computação Natural


                                                   Ponto de crossover, (r = 5)

                            1        0   0     0    0    0    1    1 Cromossomo
                                                                     pai 1


                            1     1      0   1      1    1    1    0   Cromossomo
                                                                       pai 2

                                Crossover de        ponto único


                                                                       Cromossomo
                            1        0   0     0    1    1    1    0
                                                                       filho 1

                                                                       Cromossomo
                            1     1      0   1      0    0    1    1
                                                                       filho 2


           Figura 15: Crossover de um único ponto para cadeias de comprimento l = 8.




Copyright© Leandro Nunes de Castro                                                                            99
Fundamentos de Computação Natural


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.

Copyright© Leandro Nunes de Castro                                                       100
Fundamentos de Computação Natural


                                                  001010010111010                     00101     0010111010
                                                  110011010010010                     11001     1010010010
              011001010100001
              110011010010010                     010100100100100                     0101001001    00100
              010100100100100                     011001010100001                     0110010101    00001
              101000101001001
              010010100101001                     010010100101001                     010     010100101001
              001001000101000                     001001000101000                     001     001000101000
              101101010101001
              001010010111010        Seleção de   011001010100001    Determinação     01100101     0100001
              101011111010101         pares via   001010010111010    dos pontos de    00101001     0111010
              001010100010100         Roulette                        Crossover
                                       Wheel      101011111010101                     10 1011111010101
                                                  001010100010100                     00 1010100010100
                GERAÇÃO
                 ATUAL

                                                                                Crossover



                                                                                      00101     1010010010
              001011010010010                      001011010010010                    11001     0010111010
              110000010111010                      110010010111010
              010100100100001                      010100100100001                    0101001001    00001
              011001010101100                      011001010100100                    0110010101    00100
              010001000101000                      010001000101000
              001010100101001                      001010100101001                    010     001000101000
              011001010111010                      011001010111010                    001     010100101001
              001110010100001                      001010010100001
                                       Mutação     101010100010100                    01100101     0111010
              101010100010100
              001011111010001                      001011111010101                    00101001     0100001

                                                                                      10 1010100010100
                  PRÓXIMA                                                             00 1011111010101
                  GERAÇÃO


Copyright© Leandro Nunes de Castro                                                                               101
Fundamentos de Computação Natural


• 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
Copyright© Leandro Nunes de Castro                                                    102
Fundamentos de Computação Natural


   o avaliação (cálculo do fitness) e ordenação da população intermediária
   o seleção para nova geração



  MELHOR INDIVÍDUO




                                                      AVALIAÇÃO E ORDENAÇÃO




                                                                                                 SELEÇÃO
                         OPERAÇÕES




    GERAÇÃO                                                                                                PRÓXIMA
     ATUAL                                                                                                 GERAÇÃO

     (fitness já
   determinado)




                                     SUB-POPULAÇÕES                             POPULAÇÃO
                                                                              INTERMEDIÁRIA

Copyright© Leandro Nunes de Castro                                                                                   103
Fundamentos de Computação Natural



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




Copyright© Leandro Nunes de Castro                                                             104
Fundamentos de Computação Natural



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?


Copyright© Leandro Nunes de Castro                                                    105
Fundamentos de Computação Natural


   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


Copyright© Leandro Nunes de Castro                                                      106
Fundamentos de Computação Natural


      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).

Copyright© Leandro Nunes de Castro                                                           107
Fundamentos de Computação Natural


• 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.


Copyright© Leandro Nunes de Castro                                                       108
Fundamentos de Computação Natural


• 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.




Copyright© Leandro Nunes de Castro                                                      109
Fundamentos de Computação Natural


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.




Copyright© Leandro Nunes de Castro                                                    110
Fundamentos de Computação Natural




                  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.

Copyright© Leandro Nunes de Castro                                                      111
Fundamentos de Computação Natural


• 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.


Copyright© Leandro Nunes de Castro                                                    112
Fundamentos de Computação Natural


• 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.




Copyright© Leandro Nunes de Castro                                                    113
Fundamentos de Computação Natural


                                                  h
                                                            N e tw o rk o f
                                                            n e u ro n s




                                                                     N e u ro n

                           B ra in




                             S yn a p se



                        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.



Copyright© Leandro Nunes de Castro                                                                  114
Fundamentos de Computação Natural


• 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).




Copyright© Leandro Nunes de Castro                                                     115
Fundamentos de Computação Natural



       D endrites
                             S ynaptic
                               clefts
                                                                  A x on




                                                      A x on hillock

                                                           M ielin sheath




                                         C ell body
                                          (som a)



                     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.



Copyright© Leandro Nunes de Castro                                                                      116
Fundamentos de Computação Natural


• 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.



Copyright© Leandro Nunes de Castro                                                     117
Fundamentos de Computação Natural


• 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.



Copyright© Leandro Nunes de Castro                                                     118
Fundamentos de Computação Natural




                              Figura 18: Estrutura em camadas do córtex.

Copyright© Leandro Nunes de Castro                                                               119
Fundamentos de Computação Natural




• 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).


Copyright© Leandro Nunes de Castro                                                     120
Fundamentos de Computação Natural




                                     Figura 19: Córtex e suas partes.




Copyright© Leandro Nunes de Castro                                                                  121
Fundamentos de Computação Natural


• 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
Copyright© Leandro Nunes de Castro                                                     122
Fundamentos de Computação Natural


  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

Copyright© Leandro Nunes de Castro                                                       123
Fundamentos de Computação Natural


   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;


Copyright© Leandro Nunes de Castro                                                    124
Fundamentos de Computação Natural


   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.




Copyright© Leandro Nunes de Castro                                                      125
Fundamentos de Computação Natural


• 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;



Copyright© Leandro Nunes de Castro                                                        126
Fundamentos de Computação Natural


   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.


Copyright© Leandro Nunes de Castro                                                      127
Fundamentos de Computação Natural


• 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.

Copyright© Leandro Nunes de Castro                                                    128
Fundamentos de Computação Natural


• 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.




Copyright© Leandro Nunes de Castro                                                        129
Fundamentos de Computação Natural



                                         Pesos das
                                         conexões    bk Limiar(bias)
                                    x1
                                             wk1
                                                               Função de
                                    x2       wk2                ativação



                         Entradas
                                                              uk               yk
                                                     Σ             f(uk)




                                         …
                                             wkm                           Saída
                                                    Junção
                                                   somadora
                                    xm

                                    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.


Copyright© Leandro Nunes de Castro                                                                     130
Fundamentos de Computação Natural


• 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:

                       m                                      m         
   y k = f (u k ) = f  ∑ wkj x j + bk  ou y k = f (u k ) = f  ∑ wkj x j  ,
                                                                        
                       j =1                                   j =0      
  onde x0 é um sinal de entrada de valor 1 e peso associado wk0 = bk:
• Exemplos de função de ativação:



Copyright© Leandro Nunes de Castro                                                            131
Fundamentos de Computação Natural


                                   1 se pu k ≥ 1
                                                        com p constante e positivo.
                     f (u k ) =  pu k se 0 < pu k < 1
                                   0 se pu k ≤ 0
                                
              1




            0.8                                      p


            0.6




            0.4




            0.2




              0                                      0
                        0            1/p                      0               1/p
                                a)                                   b)


          Função semi-linear (a) e sua derivada em relação à entrada interna (b)




Copyright© Leandro Nunes de Castro                                                             132
Fundamentos de Computação Natural


                         e pu k     1                        ∂y
          y = f (u k ) = pu     =                                = pu k (1 − u k ) > 0
                        e k + 1 1 + e − pu k                ∂u k
                                                 0.8
      1


                                                 0.7


    0.8                                p=3
                                                 0.6
                                     p=1.5
                                                                                p=3
                                     p=0.8
                                                 0.5
    0.6
                                                                                p=1.5
                                                 0.4
                                                                                p=0.8
    0.4
                                                 0.3



                                                 0.2
    0.2


                                                 0.1


      0
                                                   0
       -5                   0                5      -5               0                   5


                            a)                                       b)

            Função logística (a) e sua derivada em relação à entrada interna (b)



Copyright© Leandro Nunes de Castro                                                           133
Fundamentos de Computação Natural


                                     e pu k − e − pu k                   ∂y
        y = f (u k ) = tanh( pu k ) = pu                                     = p (1 − u 2 ) > 0
                                     e k + e − pu k                     ∂u k
                                                                                        k




                                                       2.5
        1




                                        p=2.2
                                                         2
                                       p=1
     0.5
                                     p=0.6                                          p=2.2
                                                       1.5

                                                                                   p=1
        0


                                                         1                           p=0.6


    -0.5

                                                       0.5




      -1
                                                         0
        -5                    0                 5        -5                 0                     5

                             a)                                             b)
            Função tangente hiperbólica (a) e sua derivada em relação à entrada interna (b)



Copyright© Leandro Nunes de Castro                                                                    134
Fundamentos de Computação Natural


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.

                                              1         wi0
                                         yj
                                     g


                                                        w
                                                                          ui              yi
                                                                                  g
                                                  xij
                                                        wij


                                                        w


                                     Figura 21: Conectando neurônios.

Copyright© Leandro Nunes de Castro                                                                  135
Fundamentos de Computação Natural


• 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.

Copyright© Leandro Nunes de Castro                                                    136
Fundamentos de Computação Natural



                                          x0         w10
                                                     w21               y1

                                                      .
                              Neurônio    x1                           y2
                              sensorial
                                                      .
                                          x2          .                y3
                              Neurônio de
                              processamento
                                                      .




                                               …




                                                             …
                                                                 …
                                          xm                           yo
                                                     wom
                                               Camada de   Camada de
                                                entrada      saída

                        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.



Copyright© Leandro Nunes de Castro                                                           137
Fundamentos de Computação Natural


      w10         w11 L w1m 
   W= M
                   M O M   
      wo 0
                  wo1 L wom 
                             
  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.

Copyright© Leandro Nunes de Castro                                                   138
Fundamentos de Computação Natural


• 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.


                        +1                 +1             +1

                        x1


                        x2                                                              y1


                        x3                                                              y2




                                                                                   …
                        …




                                                                                        yo
                                                …              …

                        xm
                             Input layer
                                           First hidden     Second       Output layer
                                               layer      hidden layer


                         Figura 23: Rede feedforward de múltiplas camadas.


Copyright© Leandro Nunes de Castro                                                                      139
Fundamentos de Computação Natural


• Seja Wk a matriz de pesos da camada k, contadas da esquerda para a direita.
   k
• wij 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.


Copyright© Leandro Nunes de Castro                                                     140
Fundamentos de Computação Natural




                                                                  Z−1


                                                                             Z−1




                                                                                            Z−1




                                     Figura 24: Rede neural recorrente.


Copyright© Leandro Nunes de Castro                                                                    141
Fundamentos de Computação Natural



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


Copyright© Leandro Nunes de Castro                                                     142
Fundamentos de Computação Natural


• 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).



Copyright© Leandro Nunes de Castro                                                       143
Fundamentos de Computação Natural


• 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.

Copyright© Leandro Nunes de Castro                                                          144
Fundamentos de Computação Natural


• 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.




Copyright© Leandro Nunes de Castro                                                     145
Fundamentos de Computação Natural


• 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.




Copyright© Leandro Nunes de Castro                                                        146
Fundamentos de Computação Natural




            x(t)       One or more                              yj(t)                  dj(t)
                                                Output
                                                                          Σ
                        layers of
                         hidden                 neuron
                        neurons                    j            −                       +
                                                                               ej(t)



                             Multi-layer Feedforward Network


                            Figura 25: Aprendizagem por correção de erro.
                                                                  1 o 2 
• Um critério muito utilizado é o de erro quadrático médio: J = E  o ∑ e j (t ) .
                                                                   j =1        
• Um conceito que está implícito em toda esta análise é a hipótese de
   estacionariedade dos processos aleatórios presentes.




Copyright© Leandro Nunes de Castro                                                                  147
Fundamentos de Computação Natural


• 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
                       1 o 2
   médio: J ≅ J (k ) = o ∑ e j (k ) .
                         j =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.

Copyright© Leandro Nunes de Castro                                                      148
Fundamentos de Computação Natural


• 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.

                                              Input
                                             patterns

                                                            Neural
                             Environment
                                                           Network




                              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.
Copyright© Leandro Nunes de Castro                                                               149
Fundamentos de Computação Natural


• 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.

Copyright© Leandro Nunes de Castro                                                     150
Fundamentos de Computação Natural


• 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:
          α( x − w i ) se i ganha a competição
   ∆w i = 
               0       se i perde a competição

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.



Copyright© Leandro Nunes de Castro                                                   151
Fundamentos de Computação Natural


• 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.




Copyright© Leandro Nunes de Castro                                                     152
Fundamentos de Computação Natural


                                       Estado do ambiente
                                        (dado de entrada)       Rede
                         Ambiente
                                                                Neural
                                         Sinal de reforço



                                             Saída da rede


                                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.

Copyright© Leandro Nunes de Castro                                                            153
Fundamentos de Computação Natural


• 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.

Copyright© Leandro Nunes de Castro                                                      154
Fundamentos de Computação Natural


  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.




Copyright© Leandro Nunes de Castro                                                    155
Fundamentos de Computação Natural


                                   +1
                                            w0 = b
                                   x1
                                            w1
                                                                Função de
                                   x2                            ativação



                        Entradas
                                            w2
                                                            u                 y
                                                     Σ             f(u)




                                        …
                                            wm                              Saída
                                                  Junção
                                   xm            somadora


                        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.
Copyright© Leandro Nunes de Castro                                                                      156
Fundamentos de Computação Natural


• 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


Copyright© Leandro Nunes de Castro                                                      157
Fundamentos de Computação Natural


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.


                           Entradas    Saídas     (0,1)      (1,1)
                           x1    x2   x1 AND x2
                           0      0       0
                           0      1       0
                           1      0       0
                           1      1       1       (0,0)      (1,0)



                                0 0 1 1
                              X=        d = [0 0 0 1]
                                0 1 0 1
• 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.

Copyright© Leandro Nunes de Castro                                                      158
Fundamentos de Computação Natural


• 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.

Copyright© Leandro Nunes de Castro                                                       159
Fundamentos de Computação Natural



                                         w1 = 2; w2 = 1; b = −3


                   (0,1)                    (1,1)




                   (0,0)                    (1,0)
                                                            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.



Copyright© Leandro Nunes de Castro                                                                    160
Fundamentos de Computação Natural


• 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
                      T
      W ← W + α ei xi     //atualize a matriz de pesos
      b ← b + α ei        //atualize o vetor de bias
    end for
    t ← t + 1
  end while
end procedure

Copyright© Leandro Nunes de Castro                                                       161
Fundamentos de Computação Natural


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).




Copyright© Leandro Nunes de Castro                                                                    162
Fundamentos de Computação Natural


• 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.


Copyright© Leandro Nunes de Castro                                                      163
Fundamentos de Computação Natural


  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.



Copyright© Leandro Nunes de Castro                                                      164
Fundamentos de Computação Natural


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




Copyright© Leandro Nunes de Castro                                       165
Fundamentos de Computação Natural



                   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:

Copyright© Leandro Nunes de Castro                                                   166
Fundamentos de Computação Natural


  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


Copyright© Leandro Nunes de Castro                                                          167
Fundamentos de Computação Natural


     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


Copyright© Leandro Nunes de Castro                                                     168
Fundamentos de Computação Natural


  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.


Copyright© Leandro Nunes de Castro                                                      169
Fundamentos de Computação Natural




• 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:




Copyright© Leandro Nunes de Castro                                                    170
Fundamentos de Computação Natural


  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.




Copyright© Leandro Nunes de Castro                                                      171
Fundamentos de Computação Natural


• 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.

       Source A        Hive          Source B



  1.00M                                      2.50M




          12                            91

• 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.



Copyright© Leandro Nunes de Castro                                                       172
Fundamentos de Computação Natural


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.




Copyright© Leandro Nunes de Castro                                                      173
Fundamentos de Computação Natural



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.

Copyright© Leandro Nunes de Castro                                                    174
Fundamentos de Computação Natural


• 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.



Copyright© Leandro Nunes de Castro                                                      175
Fundamentos de Computação Natural


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.




Copyright© Leandro Nunes de Castro                                                      176
Fundamentos de Computação Natural


                                        Nest
                                                                                     Nest



    Food                                        Food
   source                                      source


                                                          Nest




                                Food
                               source




• 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.

Copyright© Leandro Nunes de Castro                                                    177
Fundamentos de Computação Natural


  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                      Food                       Food
               source                    source                     source




             Nest                       Nest                      Nest




Copyright© Leandro Nunes de Castro                                                    178
Fundamentos de Computação Natural


• 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.


Copyright© Leandro Nunes de Castro                                                       179
Fundamentos de Computação Natural


• 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.
Copyright© Leandro Nunes de Castro                                                    180
Fundamentos de Computação Natural


  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.


Copyright© Leandro Nunes de Castro                                                         181
Fundamentos de Computação Natural


3.3. Uma Simulação de Vida Artificial
• Ninho: lado esquerdo
• Fonte de alimento: lado direito
• N = 500 formigas




Copyright© Leandro Nunes de Castro                                  182
Fundamentos de Computação Natural




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}.



Copyright© Leandro Nunes de Castro                                                 183
Fundamentos de Computação Natural


• 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
                                         4                                       3
                                                                                                 2
                                                                                             1
           C          G1                         B G2       B   F G3             B               F G4
                                             1                                       2
                                                                                         5
 E                D             C                       E       D           E                    D




Copyright© Leandro Nunes de Castro                                                                   184
Fundamentos de Computação Natural


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).

Copyright© Leandro Nunes de Castro                                                   185
Fundamentos de Computação Natural


• 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:

               τ ij (t )
                                     se j ∈ N i
   pij (t ) =  ∑ j∈N τ ij (t )
    k

              
                     i

                    0               outros casos
        k
  onde pij (t ) é 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:
Copyright© Leandro Nunes de Castro                                                     186
Fundamentos de Computação Natural


  τ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.




Copyright© Leandro Nunes de Castro                                                   187
Fundamentos de Computação Natural


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:

Copyright© Leandro Nunes de Castro                                                    188
Fundamentos de Computação Natural


  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:




Copyright© Leandro Nunes de Castro                                                     189
Fundamentos de Computação Natural


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




Copyright© Leandro Nunes de Castro                                             190
Fundamentos de Computação Natural



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 .


Copyright© Leandro Nunes de Castro                                                      191
Fundamentos de Computação Natural


• 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:
               [τ ij (t )]α .[ηij ]β
                                             se j ∈ J ik
   pij (t ) =  ∑ k [τ il (t )]α .[ηil ]β
    k
                 l∈J i
                          0                caso contrário
              
  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.

Copyright© Leandro Nunes de Castro                                                        192
Fundamentos de Computação Natural


• 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:
             Q / Lk (t ) se (i, j ) ∈ T k (t )
   ∆τ (t ) = 
      k
      ij
              0           outros casos
  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.

Copyright© Leandro Nunes de Castro                                                     193
Fundamentos de Computação Natural


• 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.



Copyright© Leandro Nunes de Castro                                                    194
Fundamentos de Computação Natural

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 T (t) by applying (e − 1) times the following step:
                      k

       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;
                      Q / Lk (t ) if (i, j ) ∈ T k (t )
         ∆τ ij (t ) = 
            k
                                                         , and
                       0             otherwise
                      Q / Lbest if (i, j ) ∈ best
         ∆τ b (t ) = 
            ij                                      .
                       0           otherwise
    end for
    t ← t + 1
  end while
end procedure



Copyright© Leandro Nunes de Castro                                                           195
Fundamentos de Computação Natural


• 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




Copyright© Leandro Nunes de Castro                                                               196
Fundamentos de Computação Natural



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.

Copyright© Leandro Nunes de Castro                                                      197
Fundamentos de Computação Natural


• 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.




Copyright© Leandro Nunes de Castro                                                    198
Fundamentos de Computação Natural


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.

Copyright© Leandro Nunes de Castro                                                         199
Fundamentos de Computação Natural


• 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.
Copyright© Leandro Nunes de Castro                                                      200
Fundamentos de Computação Natural


• 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
         k 
   pp =  1 
        k + f 
         1    
  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:



Copyright© Leandro Nunes de Castro                                                     201
Fundamentos de Computação Natural


                        2
         f 
        k + f 
   pd =       
         2    
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).


Copyright© Leandro Nunes de Castro                                                      202
Fundamentos de Computação Natural




• 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.




Copyright© Leandro Nunes de Castro                                                      203
Fundamentos de Computação Natural




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



Copyright© Leandro Nunes de Castro                                                    204
Fundamentos de Computação Natural


  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:




Copyright© Leandro Nunes de Castro                                                    205
Fundamentos de Computação Natural


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




Copyright© Leandro Nunes de Castro                                     206
Fundamentos de Computação Natural


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:

              1                           d (x i , x j ) 
              
   f (x i ) =  s 2          ∑ (r ) 1 − α  se f > 0
                      x j ∈Neigh ( s× s )                 
              0                                             outros casos
              
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:

Copyright© Leandro Nunes de Castro                                                                      207
Fundamentos de Computação Natural

                                 2
                    k1      
                 k + f (x ) 
   p p (x i ) =             
                 1       i 


               2 f (x i ) if f (x i ) < k 2
   pd (x i ) = 
               1          if f (x i ) ≥ k 2 s


• 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

Copyright© Leandro Nunes de Castro                                                    208
Fundamentos de Computação Natural


  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:



Copyright© Leandro Nunes de Castro                                                        209
Fundamentos de Computação Natural

                                           2
                   1       k1         
      Pp (i) =                        
               f (i)φ (i)  k1 + f (i) 
                                      
                                             2
                             f (i) 
                             k + f (i ) 
       Pd (i ) = f (i )φ (i)            
                             2          
• 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.




Copyright© Leandro Nunes de Castro                                                   210
Fundamentos de Computação Natural




                                         C1
                                     0         C1




                                         C2



                                         C4


                        C3




Copyright© Leandro Nunes de Castro                                        211
Fundamentos de Computação Natural


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.




Copyright© Leandro Nunes de Castro                                                    212
Fundamentos de Computação Natural


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




Copyright© Leandro Nunes de Castro                                                          213
Fundamentos de Computação Natural




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




Copyright© Leandro Nunes de Castro                                                      214
Fundamentos de Computação Natural


     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;


Copyright© Leandro Nunes de Castro                                                       215
Fundamentos de Computação Natural


  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.




Copyright© Leandro Nunes de Castro                                                     216
Fundamentos de Computação Natural


• 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.

Copyright© Leandro Nunes de Castro                                                     217
Fundamentos de Computação Natural


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

Copyright© Leandro Nunes de Castro                                                    218
Fundamentos de Computação Natural


  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


Copyright© Leandro Nunes de Castro                                                     219
Fundamentos de Computação Natural


  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.




Copyright© Leandro Nunes de Castro                                                   220
Fundamentos de Computação Natural




Copyright© Leandro Nunes de Castro                               221
Fundamentos de Computação Natural


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.




Copyright© Leandro Nunes de Castro                                                      222
Fundamentos de Computação Natural




• 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.

Copyright© Leandro Nunes de Castro                                                     223
Fundamentos de Computação Natural


  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.

Copyright© Leandro Nunes de Castro                                                     224
Fundamentos de Computação Natural




Copyright© Leandro Nunes de Castro                               225
Fundamentos de Computação Natural


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:

Copyright© Leandro Nunes de Castro                                                      226
Fundamentos de Computação Natural


  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.


Copyright© Leandro Nunes de Castro                                                     227
Fundamentos de Computação Natural


• 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.

Copyright© Leandro Nunes de Castro                                                    228
Fundamentos de Computação Natural


• 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:



Copyright© Leandro Nunes de Castro                                                     229
Fundamentos de Computação Natural


  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.




Copyright© Leandro Nunes de Castro                                                       230
Fundamentos de Computação Natural




Copyright© Leandro Nunes de Castro                               231
Fundamentos de Computação Natural


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




Copyright© Leandro Nunes de Castro                                                    232
Fundamentos de Computação Natural


  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.


Copyright© Leandro Nunes de Castro                                                     233
Fundamentos de Computação Natural




Copyright© Leandro Nunes de Castro                               234
Fundamentos de Computação Natural


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;




Copyright© Leandro Nunes de Castro                                                       235
Fundamentos de Computação Natural


  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.




Copyright© Leandro Nunes de Castro                                                    236
Fundamentos de Computação Natural


• 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;

Copyright© Leandro Nunes de Castro                                                       237
Fundamentos de Computação Natural


  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.


Copyright© Leandro Nunes de Castro                                                    238
Fundamentos de Computação Natural


• 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.

Copyright© Leandro Nunes de Castro                                                      239
Fundamentos de Computação Natural


                                          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.

Copyright© Leandro Nunes de Castro                                                                     240
Fundamentos de Computação Natural


  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

Copyright© Leandro Nunes de Castro                                                                       241
Fundamentos de Computação Natural


  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

Copyright© Leandro Nunes de Castro                                                      242
Fundamentos de Computação Natural


(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




Copyright© Leandro Nunes de Castro                                               243
Fundamentos de Computação Natural


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.




Copyright© Leandro Nunes de Castro                                                    244
Fundamentos de Computação Natural


5.3. De Sistemas Sociais a Enxames de Partículas
  Sociocognição                Algoritmo PSO
  Indivíduo                    Partícula
  População de                 Enxame de partículas
  indivíduos
  Esquecimento e               Incremento ou decremento nos valores de alguns atributos das
  aprendizagem                 partículas
  Experiência própria de Cada partícula possui algum conhecimento de sua história
  um indivíduo           (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




Copyright© Leandro Nunes de Castro                                                                245
Fundamentos de Computação Natural



           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)




Copyright© Leandro Nunes de Castro                                                               246
Fundamentos de Computação Natural




   “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)




Copyright© Leandro Nunes de Castro                                                             247
Fundamentos de Computação Natural




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.


Copyright© Leandro Nunes de Castro                                                         248
Fundamentos de Computação Natural


• 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.



Copyright© Leandro Nunes de Castro                                                     249
Fundamentos de Computação Natural


• 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:



Copyright© Leandro Nunes de Castro                                                              250
Fundamentos de Computação Natural


  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:




Copyright© Leandro Nunes de Castro                                                   251
Fundamentos de Computação Natural


                        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):




Copyright© Leandro Nunes de Castro                                                      252
Fundamentos de Computação Natural




             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”.

Copyright© Leandro Nunes de Castro                                                  253
Fundamentos de Computação Natural


• 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

Copyright© Leandro Nunes de Castro                                                      254
Fundamentos de Computação Natural


  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.

Copyright© Leandro Nunes de Castro                                                         255
Fundamentos de Computação Natural


  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.




Copyright© Leandro Nunes de Castro                                                   256
Fundamentos de Computação Natural




• Outro fractal pioneiro: o triângulo de Sierpinski.




Copyright© Leandro Nunes de Castro                                                 257
Fundamentos de Computação Natural




                                       Step 1        Step 2         Step 3

• Curvas que preenchem o espaço: a curva de Peano.




                              Step 0            Step 1




                              Step 2            Step 3




Copyright© Leandro Nunes de Castro                                                        258
Fundamentos de Computação Natural


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

Copyright© Leandro Nunes de Castro                                                   259
Fundamentos de Computação Natural


  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.

Copyright© Leandro Nunes de Castro                                                     260
Fundamentos de Computação Natural


• 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.

Copyright© Leandro Nunes de Castro                                                   261
Fundamentos de Computação Natural


  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:
                                                                   log N
     N = (1/m) ⇒ log(N) = log((1/m) ) ⇒ log(N) = d.log(1/m) ⇒
                  d                  d                        d=
                                                                 log1 / m
• Portanto, a dimensão ds de uma forma autossimilar pode então ser dada por:
          log N
   d=
        log1 / m ,

Copyright© Leandro Nunes de Castro                                                    262
Fundamentos de Computação Natural


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.



Copyright© Leandro Nunes de Castro                                                     263
Fundamentos de Computação Natural




         Line
                                                                      m = 1/4, N(m) = 4
                                                m = 1/2, N(m) = 2
                              m = 1, N(m) = 1

     N(1) = 1
     N(1/2) = 2 = 1/(1/2)
     N(1/4) = 4 = 1/(1/4)
     ...
     N(m) = 1/ m




Copyright© Leandro Nunes de Castro                                                        264
Fundamentos de Computação Natural




        Filled-in               m = 1, N(m) = 1   m = 1/2, N(m) = 4   m = 1/4, N(m) = 16
        square
     N(1) = 1
                           2
     N(1/2) = 4 = (1/(1/2))
                             2
     N(1/4) = 16 = (1/(1/4))
     ...
                  2
     N(m) = (1/m)

• 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:
          log( N (m)) − log(k )
   db =                         .
               log(1 / m)

Copyright© Leandro Nunes de Castro                                                          265
Fundamentos de Computação Natural


• 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:
                   log( N (m))
   d b = lim m→0
                    log(1 / m) .

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.




Copyright© Leandro Nunes de Castro                                                      266
Fundamentos de Computação Natural


• 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.


Copyright© Leandro Nunes de Castro                                                        267
Fundamentos de Computação Natural


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



Copyright© Leandro Nunes de Castro                                                          268
Fundamentos de Computação Natural




                                                      T im 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),


Copyright© Leandro Nunes de Castro                                                     269
Fundamentos de Computação Natural


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



Copyright© Leandro Nunes de Castro                                                        270
Fundamentos de Computação Natural




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.




Copyright© Leandro Nunes de Castro                                                    271
Fundamentos de Computação Natural



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.



Copyright© Leandro Nunes de Castro                                                     272
Fundamentos de Computação Natural


• 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



Copyright© Leandro Nunes de Castro                                                    273
Fundamentos de Computação Natural


  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
Copyright© Leandro Nunes de Castro                                                      274
Fundamentos de Computação Natural


  o O processo de aplicação das regras é denominado de processo de derivação ou
     de reescrita.
                                     Iteration   Word
                                             0   c
                                             1   b
                                             2   ac
                                             3   cb
                                             4   bac
                                             5   accb
                                             6   cbbac
                                             7   bacaccb
                                             8   accbcbbac
                                             9   cbbacbacaccb
                                            10   bacaccbaccbcbbac
• A introdução dos sistemas-L reviveu o interesse na representação de imagens
  utilizando sequências de caracteres.



Copyright© Leandro Nunes de Castro                                                              275
Fundamentos de Computação Natural


• 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.

Copyright© Leandro Nunes de Castro                                                    276
Fundamentos de Computação Natural


• 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


Copyright© Leandro Nunes de Castro                                                    277
Fundamentos de Computação Natural


     α, 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.




Copyright© Leandro Nunes de Castro                                                     278
Fundamentos de Computação Natural


• 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.

                                                y
                    F

            −           +




                                                                                   x



Copyright© Leandro Nunes de Castro                                                     279
Fundamentos de Computação Natural


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: [ → [

Copyright© Leandro Nunes de Castro                                                        280
Fundamentos de Computação Natural


  p4: ] → ]
     Iteration Word
       0
                 F
       1
                 G[−F]G[+F]F
       2
                 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




Copyright© Leandro Nunes de Castro                                               281
Fundamentos de Computação Natural


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




Copyright© Leandro Nunes de Castro                                      282
Fundamentos de Computação Natural


• Exemplos de plantas geradas com sistemas L.




t = 8, δ = 22.5o                        t = 5, δ = 22.5o
ω: G                                    ω: G
G → F+[[G]−G]−F[−FG]+G                  G → FG[−F[G]−G][G+G][+F[G]+G]
F → FF                                  F → FF


Copyright© Leandro Nunes de Castro                                                  283
Fundamentos de Computação Natural


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).

Copyright© Leandro Nunes de Castro                                                     284
Fundamentos de Computação Natural


• 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.

Copyright© Leandro Nunes de Castro                                                    285
Fundamentos de Computação Natural


• 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:
            x   a b  x1   e 
            x   c d  x  +  f  = Ax + t
   w(x) = w 1  =       
            2        2   
• 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




Copyright© Leandro Nunes de Castro                                                   286
Fundamentos de Computação Natural




                                      Scaling




                                     Reflection




                                     Rotation




Copyright© Leandro Nunes de Castro                                            287
Fundamentos de Computação Natural


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.


Copyright© Leandro Nunes de Castro                                                        288
Fundamentos de Computação Natural


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:
   An+1 = ∪ N=1 w j ( An ) , n = 1,2,…
            j


• 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).

                 A0
                            An           MRCM               An+1




Copyright© Leandro Nunes de Castro                                                     289
Fundamentos de Computação Natural




Copyright© Leandro Nunes de Castro                               290
Fundamentos de Computação Natural


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

Copyright© Leandro Nunes de Castro                                                     291
Fundamentos de Computação Natural


• 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




Copyright© Leandro Nunes de Castro                                                                    292
Fundamentos de Computação Natural


5.3. Autosimilaridade e Autoafinidade Revisitadas




Copyright© Leandro Nunes de Castro                                      293
Fundamentos de Computação Natural




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.




Copyright© Leandro Nunes de Castro                                               294
Fundamentos de Computação Natural


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




Copyright© Leandro Nunes de Castro                                                    295
Fundamentos de Computação Natural


• 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.




Copyright© Leandro Nunes de Castro                                                     296
Fundamentos de Computação Natural


• 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.



Copyright© Leandro Nunes de Castro                                                    297
Fundamentos de Computação Natural




Copyright© Leandro Nunes de Castro                               298
Fundamentos de Computação Natural


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




Copyright© Leandro Nunes de Castro                                  299
Fundamentos de Computação Natural


• 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:
                              1
  X(t0 + t) − X(t0) e            ( X (t0 + rt ) − X (t0 )) ,
                               r
  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
                 1
  X(t) e            ( X (rt ) ) são estatisticamente indistinguíveis; a segunda sendo uma
                  r
  versão apropriadamente reescalonada da primeira.

Copyright© Leandro Nunes de Castro                                                         300
Fundamentos de Computação Natural


• 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 ∆1 :
                                                               2



     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.

Copyright© Leandro Nunes de Castro                                                     301
Fundamentos de Computação Natural


  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:
                  1 2
         ∆2n =        σ
                 2 n+1 .
  X(t)
                                               X(t)




                             D1                                             D2,2



                                                      D2,1

                           0.5       1.0   t            0.25     0.5      0.75      1.0      t




Copyright© Leandro Nunes de Castro                                                         302
Fundamentos de Computação Natural




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.

Copyright© Leandro Nunes de Castro                                                     303
Fundamentos de Computação Natural


• 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 (t 0 + rt ) − X (t 0 )
  X(t0 + t) − X(t0) e          rH
  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
                 1
  X(t) e           ( X (rt )) são estatisticamente indistinguíveis; a segunda sendo uma
                rH
versão apropriadamente reescalonada da primeira.
• Para aplicar o algoritmo RMD ao caso mais geral de MBF é necessário que:


Copyright© Leandro Nunes de Castro                                                        304
Fundamentos de Computação Natural


  var(X(t2) − X(t1)) = |t2 − t1|2H σ2.
• O deslocamento do ponto médio torna-se então
        σ2
   ∆ = n 2 H (1 − 2 2 H −2 ) .
    2
    n
      (2 )
• 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



Copyright© Leandro Nunes de Castro                                                     305
Fundamentos de Computação Natural


• 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.

Copyright© Leandro Nunes de Castro                                                    306
Fundamentos de Computação Natural




Copyright© Leandro Nunes de Castro                               307
Fundamentos de Computação Natural


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.




Copyright© Leandro Nunes de Castro                                                    308
Fundamentos de Computação Natural




                                 © K. Musgrave, Pandromeda.com

Copyright© Leandro Nunes de Castro                                                       309
Fundamentos de Computação Natural



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.




Copyright© Leandro Nunes de Castro                                                  310
Fundamentos de Computação Natural


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:




Copyright© Leandro Nunes de Castro                                                    311
Fundamentos de Computação Natural


  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.



Copyright© Leandro Nunes de Castro                                                    312
Fundamentos de Computação Natural


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



Copyright© Leandro Nunes de Castro                                                         313
Fundamentos de Computação Natural


• 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

Copyright© Leandro Nunes de Castro                                                 314
Fundamentos de Computação Natural


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’.

Copyright© Leandro Nunes de Castro                                                         315
Fundamentos de Computação Natural


  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.




Copyright© Leandro Nunes de Castro                                                       316
Fundamentos de Computação Natural


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




Copyright© Leandro Nunes de Castro                                                         317
Fundamentos de Computação Natural




Copyright© Leandro Nunes de Castro                               318
Fundamentos de Computação Natural



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:




Copyright© Leandro Nunes de Castro                                                      319
Fundamentos de Computação Natural


  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


Copyright© Leandro Nunes de Castro                                                      320
Fundamentos de Computação Natural


  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.




Copyright© Leandro Nunes de Castro                                                     321
Fundamentos de Computação Natural



                             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)




Copyright© Leandro Nunes de Castro                                                       322
Fundamentos de Computação Natural


   “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)


Copyright© Leandro Nunes de Castro                                                      323
Fundamentos de Computação Natural


• 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.


Copyright© Leandro Nunes de Castro                                                      324
Fundamentos de Computação Natural


      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.




Copyright© Leandro Nunes de Castro                                                     325
Fundamentos de Computação Natural



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.



Copyright© Leandro Nunes de Castro                                                      326
Fundamentos de Computação Natural


• 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.

Copyright© Leandro Nunes de Castro                                                       327
Fundamentos de Computação Natural


   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:



Copyright© Leandro Nunes de Castro                                                     328
Fundamentos de Computação Natural


   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


Copyright© Leandro Nunes de Castro                                                      329
Fundamentos de Computação Natural


      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.


Copyright© Leandro Nunes de Castro                                                    330
Fundamentos de Computação Natural


• 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.




Copyright© Leandro Nunes de Castro                                                         331
Fundamentos de Computação Natural


• 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).



Copyright© Leandro Nunes de Castro                                                      332
Fundamentos de Computação Natural


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.

Copyright© Leandro Nunes de Castro                                                       333
Fundamentos de Computação Natural


• 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.


Copyright© Leandro Nunes de Castro                                                      334
Fundamentos de Computação Natural


• 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

Copyright© Leandro Nunes de Castro                                                       335
Fundamentos de Computação Natural


   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

Copyright© Leandro Nunes de Castro                                                    336
Fundamentos de Computação Natural


   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.




Copyright© Leandro Nunes de Castro                                                  337
Fundamentos de Computação Natural



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




Copyright© Leandro Nunes de Castro                                                 338
Fundamentos de Computação Natural




Copyright© Leandro Nunes de Castro                               339
Fundamentos de Computação Natural


• 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



Copyright© Leandro Nunes de Castro                                                     340
Fundamentos de Computação Natural




              Tank              Chandelier II     Christmas tree              Dry tree




              Frog                   Crab        Gang with glasses         Queen (chess)




         Transformer                 Spider     Hen (from the back)            Fat face

Copyright© Leandro Nunes de Castro                                                                341
Fundamentos de Computação Natural


• 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)




Copyright© Leandro Nunes de Castro                                                    342
Fundamentos de Computação Natural



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.


Copyright© Leandro Nunes de Castro                                                     343
Fundamentos de Computação Natural


• 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:

Copyright© Leandro Nunes de Castro                                                    344
Fundamentos de Computação Natural


   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);

Copyright© Leandro Nunes de Castro                                                      345
Fundamentos de Computação Natural


   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.

Copyright© Leandro Nunes de Castro                                                         346
Fundamentos de Computação Natural


• 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.




Copyright© Leandro Nunes de Castro                                                       347
Fundamentos de Computação Natural


• 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.




Copyright© Leandro Nunes de Castro                                               348
Fundamentos de Computação Natural




• 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.
Copyright© Leandro Nunes de Castro                                                          349
Fundamentos de Computação Natural


      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:




Copyright© Leandro Nunes de Castro                                                    350
Fundamentos de Computação Natural




Copyright© Leandro Nunes de Castro                               351
Fundamentos de Computação Natural


• 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.
Copyright© Leandro Nunes de Castro                                                      352
Fundamentos de Computação Natural




• 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.




Copyright© Leandro Nunes de Castro                                                  353
Fundamentos de Computação Natural


• 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



Copyright© Leandro Nunes de Castro                                                      354
Fundamentos de Computação Natural


         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.




Copyright© Leandro Nunes de Castro                                                        355
Fundamentos de Computação Natural




Copyright© Leandro Nunes de Castro                               356
Fundamentos de Computação Natural


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.

Copyright© Leandro Nunes de Castro                                                            357
Fundamentos de Computação Natural


• 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.




Copyright© Leandro Nunes de Castro                                                    358
Fundamentos de Computação Natural


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)

Copyright© Leandro Nunes de Castro                                                      359
Fundamentos de Computação Natural


• 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.

Copyright© Leandro Nunes de Castro                                                    360
Fundamentos de Computação Natural


• Os principais módulos do sistema nervoso dos peixes são: percepção,
   comportamento e motor.




Copyright© Leandro Nunes de Castro                                          361
Fundamentos de Computação Natural


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

Copyright© Leandro Nunes de Castro                                                    362
Fundamentos de Computação Natural


   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:




Copyright© Leandro Nunes de Castro                                                      363
Fundamentos de Computação Natural


• 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


Copyright© Leandro Nunes de Castro                                                               364
Fundamentos de Computação Natural




                                     Blinker




                                           Beehive




Copyright© Leandro Nunes de Castro                                               365
Fundamentos de Computação Natural




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.



Copyright© Leandro Nunes de Castro                                                     366
Fundamentos de Computação Natural


• 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.




Copyright© Leandro Nunes de Castro                                                   367
Fundamentos de Computação Natural




Sierpinski Gasket
• Grid unidimensional (d = 1); vizinhança n = 3, r = 1; S = {0,1}.
Copyright© Leandro Nunes de Castro                                                     368
Fundamentos de Computação Natural


• 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.

Copyright© Leandro Nunes de Castro                                                  369
Fundamentos de Computação Natural




Copyright© Leandro Nunes de Castro                               370
Fundamentos de Computação Natural


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.



Copyright© Leandro Nunes de Castro                                                     371
Fundamentos de Computação Natural



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).




Copyright© Leandro Nunes de Castro                                                          372
Fundamentos de Computação Natural



                      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:

Copyright© Leandro Nunes de Castro                                                 373
Fundamentos de Computação Natural


  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.


Copyright© Leandro Nunes de Castro                                                    374
Fundamentos de Computação Natural



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.

                                                                           Dupla hélice
                                                                           de DNA
                                           gene




                                           gene




                                           gene




                 Figura 33: A molécula de DNA encontra-se no núcleo das células.

Copyright© Leandro Nunes de Castro                                                            375
Fundamentos de Computação Natural




• 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.



Copyright© Leandro Nunes de Castro                                                      376
Fundamentos de Computação Natural


                                                                                  O

           5′
                                                                                  C
           4′                                                                                    CH 3
                                                                           HN             C
Fosfato
           3′                               5′
                               P      O    CH 2                        O    C          CH
           2′
                                                        O        1′               N
                                          4′ C    3′        2′   C
           1′
                                                  C         C

           Base                             H                    H
                                                  OH        H

                            Fosfato                    Açúcar                      Base




            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;


Copyright© Leandro Nunes de Castro                                                                377
Fundamentos de Computação Natural


  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.




Copyright© Leandro Nunes de Castro                                                    378
Fundamentos de Computação Natural




                              A                  T                 G
                                             A

                              T                  A             T   C
                                     C   G   T       C


                                     G               G         A
                                         C



        Figura 35: Molécula de DNA ilustrando a complementaridade de Watson-Crick.




Copyright© Leandro Nunes de Castro                                                        379
Fundamentos de Computação Natural


• Algumas representações alternativas:
 5′                                  3′
                                               5′ − T C G A T T G A A C C − 3′
                C       G                      3′ − A G C T A A C T T G G − 5′


                T       A                      5′ − T C G A T T G A − 3′
                                                       3′ − A A C T T G G − 5′
                                                                                  (Sticky ends)
                G        C



                A        T

 3′                                       5′




Copyright© Leandro Nunes de Castro                                                                380
Fundamentos de Computação Natural


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
Copyright© Leandro Nunes de Castro                                                     381
Fundamentos de Computação Natural



                                                     Annealing
        5′                                 3′                        5′                                        3′

                     C      G                                                       C             G



                     T      A                                                      T               A



                     G      C                                                      G               C



                     A       T                                                     A               T

        3′                                      5′                   3′                                             5′
                                                      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.

Copyright© Leandro Nunes de Castro                                                                                       382
Fundamentos de Computação Natural



           5′ − T C G A T T − 3′              (primer)           5′ − T C G A T T G A A − 3′
           3′ − A G C T A A C T T − 5′        (template)         3′ − A G C T A A C T T − 5′
                          ↓                                                          ↓
           5′ − T C G A T T G − 3′                               5′ − T C G A T T G A − 3′
           3′ − A G C T A A C T T − 5′                             3′ − G C T A A C T T − 5′
                          ↓                                                          ↓
           5′ − T C G A T T G A − 3′                             5′ − T C G A T T G − 3′
           3′ − A G C T A A C T T − 5′                                3′ − C T A A C T T − 5′
                          ↓                                                          ↓
           5′ − T C G A T T G A A − 3′                           5′ − T C G A T T − 3′
           3′ − A G C T A A C T T − 5′                                   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′                 5′ − T G C C C G G G A − 3′
                  3′ − A C T T A A G G C − 5′                 3′ − A C G G G C C C T − 5′
                                  ↓                                        ↓
          5′ − T G − 3′ 5′ − A A T T C C G − 3′            5′ − T G C C C − 3′ 5′ − G G G A − 3′
          3′ − A C T T A A − 5′ 3′ − G G C − 5′            3′ − A C G G G − 5′ 3′ − C C C T − 5′


                                     Figura 38: Corte por endonuclease.

Copyright© Leandro Nunes de Castro                                                                    383
Fundamentos de Computação Natural


                                       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.




Copyright© Leandro Nunes de Castro                                                                    384
Fundamentos de Computação Natural


                                     a         b          c
                   Template
                                                                      Denaturation
                                     a      b            c


                   Primers
                                     a              c

                                            a                 c

                                                   Denaturation



                              a

                                                         Polymerase
                              a                          extension                   c


                                                                                      c
                                            c

                                                                  a
                                           c

                                                                  a
                              Figura 40: PCR (Polymerase Chain Reaction).

Copyright© Leandro Nunes de Castro                                                                           385
Fundamentos de Computação Natural




         Figura 41: Fotografia de uma eletroforese de gel de uma molécula de proteína.




Copyright© Leandro Nunes de Castro                                                            386
Fundamentos de Computação Natural



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.

Copyright© Leandro Nunes de Castro                                                      387
Fundamentos de Computação Natural



                                                 6
                                         2                     3


                                     0
                                                               4
                                                     5

                                             1
                        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.


Copyright© Leandro Nunes de Castro                                                             388
Fundamentos de Computação Natural


  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.



Copyright© Leandro Nunes de Castro                                                     389
Fundamentos de Computação Natural


• 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:




Copyright© Leandro Nunes de Castro                                                     390
Fundamentos de Computação Natural



               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)
                           v1                                      v2
   TGAATTCCGACGTCCAGTGA ATGAACTATGGCACGCTATC
             GCAGGTCACT TAC TTGATAC
                                             e1→2

                                            (b)

 Figura 43: Método de codificação usado por Adleman para resolver o problema do caminho
                                     Hamiltoniano.




Copyright© Leandro Nunes de Castro                                                             391
Fundamentos de Computação Natural


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.




Copyright© Leandro Nunes de Castro                                                     392
Fundamentos de Computação Natural


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.




Copyright© Leandro Nunes de Castro                                                     393
Fundamentos de Computação Natural


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.



Copyright© Leandro Nunes de Castro                                                     394
Fundamentos de Computação Natural


• 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.

Copyright© Leandro Nunes de Castro                                                      395
Fundamentos de Computação Natural


  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).
Copyright© Leandro Nunes de Castro                                                    396
Fundamentos de Computação Natural


• 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, e2j,…, 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.



Copyright© Leandro Nunes de Castro                                                        397
Fundamentos de Computação Natural



                        e10          e20         e30           en–10        en0


              v0               v1          v2          . . .    vn–1                   vn


                         e11         e21         e31           en–11        en1

                        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 v0e1i1v1e2i2… 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 v0e11v1e20v2e30…vn–1en1vn codifica a string binária
     100…1.


Copyright© Leandro Nunes de Castro                                                                 398
Fundamentos de Computação Natural


• 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        e20


                                     v0         v1          v2


                                          e11        e21


Copyright© Leandro Nunes de Castro                                                        399
Fundamentos de Computação Natural


• 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.




Copyright© Leandro Nunes de Castro                                                           400
Fundamentos de Computação Natural


                                     Tubo de     Strings
                                      ensaio    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.
Copyright© Leandro Nunes de Castro                                                          401
Fundamentos de Computação Natural


• 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.




Copyright© Leandro Nunes de Castro                                                        402
Fundamentos de Computação Natural


• 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.




Copyright© Leandro Nunes de Castro                                                    403
Fundamentos de Computação Natural


• 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:




Copyright© Leandro Nunes de Castro                                                      404
Fundamentos de Computação Natural


    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.



Copyright© Leandro Nunes de Castro                                                       405
Fundamentos de Computação Natural


• 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:




Copyright© Leandro Nunes de Castro                                                      406
Fundamentos de Computação Natural


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?




Copyright© Leandro Nunes de Castro                               407
Fundamentos de Computação Natural


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.



Copyright© Leandro Nunes de Castro                                                        408
Fundamentos de Computação Natural


procedure [out] = SAT(t)
  t1 ← +(t,e11)
  t1’ ← −(t,e11)
  t2 ← +(t1’,e21)
  t3 ← merge(t1,t2)
  t4 ← +(t3,e10)
  t4’ ← −(t3,e10)
  t5 ← +(t4’,e20)
  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}.
Copyright© Leandro Nunes de Castro                                                 409
Fundamentos de Computação Natural


  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.

Copyright© Leandro Nunes de Castro                                                         410
Fundamentos de Computação Natural


  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.

Copyright© Leandro Nunes de Castro                                                       411
Fundamentos de Computação Natural


• 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.



Copyright© Leandro Nunes de Castro                                                    412
Fundamentos de Computação Natural


  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.




Copyright© Leandro Nunes de Castro                                                      413
Fundamentos de Computação Natural




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.




Copyright© Leandro Nunes de Castro                                                  414
Fundamentos de Computação Natural


• 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.



Copyright© Leandro Nunes de Castro                                                    415
Fundamentos de Computação Natural


• 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

Copyright© Leandro Nunes de Castro                                                        416
Fundamentos de Computação Natural


  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.

                        ...          xk−2 x k−1 xk xk+1          ...

                                                q

                         C = (xk−1qx kxk+1); e(xk−1,k−1)e(q,k)e(x k,k)


                       ...           xk−2 x k−1 xk′ xk+1           ...

                                           q′


                         C = (xk−2q′xk−1xk′); e(q′,k−1)e(xk−1,k−1)e(xk′,k)

                Figura 45: Codificação de uma configuração da máquina de Turing.


Copyright© Leandro Nunes de Castro                                                           417
Fundamentos de Computação Natural


                                                                           U
          L           A U E              R                         L   A        E         R
                                                   Mix
               Ā Ō Ē                   R          Anneal               Ā        Ē         R
                                                                           Ō
                                                                                Polymerase extension
                          U                                                     Ligation
           L          A       E            R                                U
                                                 Denaturing        L   A        E          R
           L
                                                 Mix with L        L   Ā        Ē          R
           L         Ā        Ē            R      Anneal                    Ō
                          Ō
                              Polymerase extension
                              Destruction of the original strand

          L           A O E              R


          L           Ā Ō Ē             R

  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.

Copyright© Leandro Nunes de Castro                                                                     418
Fundamentos de Computação Natural



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.

Copyright© Leandro Nunes de Castro                                                 419
Fundamentos de Computação Natural


• 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


Copyright© Leandro Nunes de Castro                                                  420
Fundamentos de Computação Natural


• 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.



Copyright© Leandro Nunes de Castro                                                    421
Fundamentos de Computação Natural


• 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

Copyright© Leandro Nunes de Castro                                                     422
Fundamentos de Computação Natural


     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



Copyright© Leandro Nunes de Castro                                                      423
Fundamentos de Computação Natural



                   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.



Copyright© Leandro Nunes de Castro                                                       424
Fundamentos de Computação Natural


• 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| é:
                0 0
   A = |1〉〈0| = 1 0 .
                   
• 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.

Copyright© Leandro Nunes de Castro                                                      425
Fundamentos de Computação Natural


   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.

Copyright© Leandro Nunes de Castro                                                      426
Fundamentos de Computação Natural


• 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〉.




Copyright© Leandro Nunes de Castro                                                         427
Fundamentos de Computação Natural


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 é:

Copyright© Leandro Nunes de Castro                                                      428
Fundamentos de Computação Natural



   ∑   x ,y
              c xy | x〉 A | y 〉 B .

• Exemplos de estados emaranhados com dois qubits são os estados de Bell:
                    1                                        1
      | x0 〉 =         (| 00〉 AB + | 11〉 AB ) ;   | x1 〉 =       (| 01〉 AB + | 10〉 AB ) ;
                     2                                       2

                    1                                        1
      | x2 〉 =         (| 00〉 AB − | 11〉 AB ) ;   | x3 〉 =      (| 01〉 AB − | 10〉 AB ) .
                     2                                        2

• 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 = 1 / 2 .



Copyright© Leandro Nunes de Castro                                                                       429
Fundamentos de Computação Natural


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.



Copyright© Leandro Nunes de Castro                                                    430
Fundamentos de Computação Natural


• 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:

            1 0                         0 1 
   σ0 = I = 0 1                σ1 = X = 1 0
                                            
             0 i                        1 0 
   σ2 = Y = − i 0              σ3 = Z = 0 − 1
                                             
• 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).
Copyright© Leandro Nunes de Castro                                                        431
Fundamentos de Computação Natural


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

Copyright© Leandro Nunes de Castro                                                        432
Fundamentos de Computação Natural


   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



Copyright© Leandro Nunes de Castro                                                           433
Fundamentos de Computação Natural


   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 + c22|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.




Copyright© Leandro Nunes de Castro                                                            434
Fundamentos de Computação Natural


• 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

Copyright© Leandro Nunes de Castro                                                              435
Fundamentos de Computação Natural


   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〉.


Copyright© Leandro Nunes de Castro                                                     436
Fundamentos de Computação Natural


• 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.



Copyright© Leandro Nunes de Castro                                                      437
Fundamentos de Computação Natural


• Um sistema quântico com N qubits possui N estados computacionais base,
   denotados por:
             11...1
   | y〉 =     ∑c
            x = 00 ...0
                          x   | x〉 ,

   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.



Copyright© Leandro Nunes de Castro                                                    438
Fundamentos de Computação Natural


• 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:
           1         0         0         0 
           0         1         0         0 
   | 00〉 =   | 01〉 =   | 10〉 =   | 11〉 =  
           0 ,       0  ,      1  ,      0  .
                                          
           0          0         0        1




Copyright© Leandro Nunes de Castro                                                    439
Fundamentos de Computação Natural


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:
                      a
                                     AND      a                  NOT
                      b

                      a                       a
                      b              OR                          NAND
                                              b

                      a                       a
                                     XOR                         NOR
                      b                       b




Copyright© Leandro Nunes de Castro                                                     440
Fundamentos de Computação Natural


                   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〉:



Copyright© Leandro Nunes de Castro                                                                 441
Fundamentos de Computação Natural


                    0 1  1  0 
   NOT |0〉 = X|0〉 = 1 0 0 = 1 = |1〉,
                           
                    0 1 0 1
   NOT |1〉 = X|1〉 = 1 0 1 = 0 = |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.

            1 0                         0 1              0 i                 1 0 
   σ0 = I = 0 1                σ1 = X = 1 0    σ2 = Y = − i 0 σ3 = Z =       0 −1
                                                                                 
Copyright© Leandro Nunes de Castro                                                          442
Fundamentos de Computação Natural


• 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〉,

                 1 1 + i 1 −        i
      NOT =                          ,
                 2 1 − i 1 +
                                    i
                                      
      NOT . NOT = NOT.
   Porta de Hadamard:
      1        1 1 
   H= 2        1 − 1 .
                    
   Obs.: quando aplicada a N bits individualmente, a porta de Hadamard gera uma
superposição de todos os 2N possíveis estados:


Copyright© Leandro Nunes de Castro                                                    443
Fundamentos de Computação Natural


          1 1 1  1 1 1 1
   H|0〉 = 2 1 − 1 0 = 2 1 = 2 (| 0〉+ | 1〉 ) ,
                        
          1 1 1  0 1  1  1
   H|1〉 = 2 1 − 1 1 = 2 − 1 = 2 (| 0〉− | 1〉 ) .
                         
   NOT controlado:
          1          0 0 0
          0          1 0 0
                          
   CNOT = 0          0 0 1 .
                          
          0          0 1 0

   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〉



Copyright© Leandro Nunes de Castro                                                     444
Fundamentos de Computação Natural


   Uma propriedade importante da parta CNOT é que ela pode ser usada para criar
emaranhamento. Exemplo:
        1                 1
   CNOT 2 (|00〉 + |10〉) = 2 (|00〉 + |11〉).

   Porta de Toffoli ou controlled-controlled-NOT:

             CCNOT |000〉 =           |000〉           1    0 0 0 0 0 0 0
                                                     0    1 0 0 0 0 0 0
             CCNOT |001〉 =           |001〉                             
             CCNOT |010〉 =           |010〉           0    0 1 0 0 0 0 0
             CCNOT |011〉 =           |011〉                             
                                                       0   0 0 1 0 0 0 0
             CCNOT |100〉 =           |100〉   CCNOT = 
                                                     0    0 0 0 1 0 0 0
             CCNOT |101〉 =           |101〉                             
             CCNOT |110〉 =           |111〉           0    0 0 0 0 1 0 0
             CCNOT |111〉 =           |110〉           0    0 0 0 0 0 0 1
                                                                       
                                                     0
                                                          0 0 0 0 0 1 0
                                                                        




Copyright© Leandro Nunes de Castro                                                       445
Fundamentos de Computação Natural


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?
Copyright© Leandro Nunes de Castro                                                                         446
Fundamentos de Computação Natural


• 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:
                                     x
                                            H
                                     y                     |β xy〉
                                                    ⊕
                Figura 50: Circuito quântico para gerar os estados Bell (pares EPR).




Copyright© Leandro Nunes de Castro                                                                  447
Fundamentos de Computação Natural




             Estado inicial          H(primeiro qubit, x)        CNOT(primeiro qubit, x)
                 |00〉                1    2 (| 0〉+ | 1〉 ) | 0〉      1   2 (| 00〉+ | 11〉 )
                    |01〉              1   2 (| 1〉+ | 0〉 ) | 1〉      1   2 (| 10〉+ | 01〉 )
                    |10〉             1    2 (| 0〉− | 1〉 ) | 0〉      1   2 (| 00〉− | 11〉 )
                    |11〉              1   2 (| 0〉− | 1〉 ) | 1〉      1   2 (| 01〉− | 10〉 )
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,



Copyright© Leandro Nunes de Castro                                                                  448
Fundamentos de Computação Natural


                 1
      | x0 〉 =      (| 00〉+ | 11〉 ) .
                  2
   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.

       1 0                  0 1          0 1          1 0 
   I = 0 1              X = 1 0     Y =  − 1 0    Z = 0 − 1
                                                           



Copyright© Leandro Nunes de Castro                                                       449
Fundamentos de Computação Natural


   Valor codificado                  Estado inicial      Transformação            Novo estado
             0                                             (I ⊗ I) |x0〉       1    2 (| 00〉+ | 11〉 )
                                     1                                             2 (| 10〉+ | 01〉 )
                              |x0〉 = 2 (| 00〉+ | 11〉 )
             1                                            (X ⊗ I) |x0〉        1

             2                                            (Y ⊗ I) |x0〉      1     2 (− | 10〉+ | 01〉 )

             3                                            (Z ⊗ I) |x0〉        1    2 (| 00〉− | 11〉 )



• 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.




Copyright© Leandro Nunes de Castro                                                                450
Fundamentos de Computação Natural


      Estado inicial                                    CNOT |xi〉                                H(1º. qubit)

|x0〉 = 1   2 (| 00〉+ | 11〉 )           1      2 (| 00〉+ | 10〉 ) = 1      2 (| 0〉+ | 1〉 ) | 0〉          |0〉

|x1〉 = 1   2 (| 10〉+ | 01〉 )             1     2 (| 11〉+ | 01〉 ) = 1     2 (| 1〉+ | 0〉 ) | 1〉          |0〉

|x2〉 = 1   2 (− | 10〉+ | 01〉 ) 1         2 (− | 11〉+ | 01〉 ) = 1       2 (− | 1〉+ | 0〉 ) | 1〉          |1〉

|x3〉 = 1   2 (| 00〉− | 11〉 )            1     2 (| 00〉− | 10〉 ) = 1      2 (| 0〉− | 1〉 ) | 0〉          |1〉



• A codificação densa pode ser realizada através do circuito apresentado abaixo:


           x
           y

                     H                           T                     H               Meas               x
                                     |β 00〉
                               ⊕                            ⊕                          Meas               y


                   Figura 51: Circuito quântico para realizar a codificação densa.
Copyright© Leandro Nunes de Castro                                                                             451
Fundamentos de Computação Natural


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.




Copyright© Leandro Nunes de Castro                                                       452
Fundamentos de Computação Natural


• 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〉 = 1         2 (| 00〉+ | 11〉 ) 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〉) 1         2 (| 00〉+ | 11〉 ) =

  1    2 (c1 | 0〉 (| 00〉+ | 11〉 ) + c 2 | 1〉 (| 00〉+ | 11〉 ) ) =

   1    2 (c1 | 000〉 + c1 | 011〉 + c 2 | 100〉 + c 2 | 111〉 ) .


Copyright© Leandro Nunes de Castro                                                              453
Fundamentos de Computação Natural


• 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〉) =

                   [
       (H ⊗ I ⊗ I) 1        2 (c1 | 000〉 + c1 | 011〉 + c 2 | 110〉 + c 2 | 101〉 ) =  ]
       (H ⊗ I ⊗ I )[
                   1                                                            ]
                            2 (c1 | 0〉 (| 00〉+ | 11〉 ) + c 2 | 1〉 (| 10〉+ | 01〉 ) ) =

       1 2[c1 (| 0〉+ | 1〉 )(| 00〉+ | 11〉 ) + c 2 (| 0〉− | 1〉 )(| 10〉+ | 01〉 )] =
             (23)

   1 2 [| 00〉 (c1 | 0〉 + c 2 | 1〉 )+ | 01〉 (c1 | 1〉 + c 2 | 0〉 ) +
   + | 10〉 (c1 | 0〉 − c 2 | 1〉 )+ | 11〉 (c1 | 1〉 − c 2 | 0〉 )]       .

• Em seguida Alice mede seus dois qubits, promovendo um colapso do estado em
   uma das quatro possibilidades {00,01,10,11}.


Copyright© Leandro Nunes de Castro                                                                        454
Fundamentos de Computação Natural


• 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


             |x〉
                                                    H         Meas
                       H                      ⊕               Meas
                                     |β 00〉
                                ⊕                                            T          |x〉

                      Figura 52: Circuito quântico para realizar teletransporte.

Copyright© Leandro Nunes de Castro                                                                455
Fundamentos de Computação Natural


• 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.




Copyright© Leandro Nunes de Castro                                                       456

2012: Computação Natural - Slides do Curso

  • 1.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 1
  • 2.
    Fundamentos de ComputaçãoNatural 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 Copyright© Leandro Nunes de Castro 2
  • 3.
    Fundamentos de ComputaçãoNatural 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 Copyright© Leandro Nunes de Castro 3
  • 4.
    Fundamentos de ComputaçãoNatural 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 Copyright© Leandro Nunes de Castro 4
  • 5.
    Fundamentos de ComputaçãoNatural 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 Copyright© Leandro Nunes de Castro 5
  • 6.
    Fundamentos de ComputaçãoNatural 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 Copyright© Leandro Nunes de Castro 6
  • 7.
    Fundamentos de ComputaçãoNatural 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 Copyright© Leandro Nunes de Castro 7
  • 8.
    Fundamentos de ComputaçãoNatural 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 Copyright© Leandro Nunes de Castro 8
  • 9.
    Fundamentos de ComputaçãoNatural 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 Copyright© Leandro Nunes de Castro 9
  • 10.
    Fundamentos de ComputaçãoNatural 3. Exemplos de Aplicação ..................................................................................................... 448 3.1. Codificação Densa ................................................................................................... 449 3.2. Teletransporte Quântico ........................................................................................... 452 Copyright© Leandro Nunes de Castro 10
  • 11.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 11
  • 12.
    Fundamentos de ComputaçãoNatural • 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); Copyright© Leandro Nunes de Castro 12
  • 13.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 13
  • 14.
    Fundamentos de ComputaçãoNatural • 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 Copyright© Leandro Nunes de Castro 14
  • 15.
    Fundamentos de ComputaçãoNatural 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 PARTE II PARTE III Computação Inspirada Simulação e Emulação Computação com Novos na Natureza da Natureza Materiais Naturais Figura 1: Três principais vertentes da computação natural. Copyright© Leandro Nunes de Castro 15
  • 16.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 16
  • 17.
    Fundamentos de ComputaçãoNatural • É 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. Copyright© Leandro Nunes de Castro 17
  • 18.
    Fundamentos de ComputaçãoNatural • 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; Copyright© Leandro Nunes de Castro 18
  • 19.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 19
  • 20.
    Fundamentos de ComputaçãoNatural Observações empíricas experimentais Síntese de Estudos fenômenos Novas formas Computação de resolver natural problemas Estudos teóricos Novos paradigmas de computação Outras linhas de pesquisa 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 Copyright© Leandro Nunes de Castro 20
  • 21.
    Fundamentos de ComputaçãoNatural 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 Copyright© Leandro Nunes de Castro 21
  • 22.
    Fundamentos de ComputaçãoNatural 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 Copyright© Leandro Nunes de Castro 22
  • 23.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 23
  • 24.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 24
  • 25.
    Fundamentos de ComputaçãoNatural • 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 Copyright© Leandro Nunes de Castro 25
  • 26.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 26
  • 27.
    Fundamentos de ComputaçãoNatural 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). Copyright© Leandro Nunes de Castro 27
  • 28.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 28
  • 29.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 29
  • 30.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 30
  • 31.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 31
  • 32.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 32
  • 33.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 33
  • 34.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 34
  • 35.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 35
  • 36.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 36
  • 37.
    Fundamentos de ComputaçãoNatural • 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: Copyright© Leandro Nunes de Castro 37
  • 38.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 38
  • 39.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 39
  • 40.
    Fundamentos de ComputaçãoNatural 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 Copyright© Leandro Nunes de Castro 40
  • 41.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 41
  • 42.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 42
  • 43.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 43
  • 44.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 44
  • 45.
    Fundamentos de ComputaçãoNatural 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 More cold air Pleasant temperature More hot air Too cold Figura 6: Realimentação negativa no funcionamento de um aquecedor/ar-condicionado. Copyright© Leandro Nunes de Castro 45
  • 46.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 46
  • 47.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 47
  • 48.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 48
  • 49.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 49
  • 50.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 50
  • 51.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 51
  • 52.
    Fundamentos de ComputaçãoNatural • 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 Copyright© Leandro Nunes de Castro 52
  • 53.
    Fundamentos de ComputaçãoNatural 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 A maioria dos fenômenos pode ser descrita da alma, que não pode ser descrita por espíritos materiais de vida cientificamente A vida pode ser teleologicamente formada e Grande parte da vida é determinada de forma conduzida causal e passível de descrições físicas e químicas Copyright© Leandro Nunes de Castro 53
  • 54.
    Fundamentos de ComputaçãoNatural Meados do século 20 Vitalismo Reducionismo Deus com uma pequena significância Nenhum Deus Alma ≠ (espíritos da vida = energia Nenhuma alma nervosa) Alguns fenômenos não podem ser descritos Todos os fenômenos podem ser descritos cientificamente cientificamete A vida é teleologicamente conduzida Determinismo causal Matéria inorgânica ≠ material orgânica Matéria inorgânica = material orgânica Copyright© Leandro Nunes de Castro 54
  • 55.
    Fundamentos de ComputaçãoNatural 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). Copyright© Leandro Nunes de Castro 55
  • 56.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 56
  • 57.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 57
  • 58.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 58
  • 59.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 59
  • 60.
    Fundamentos de ComputaçãoNatural 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 Copyright© Leandro Nunes de Castro 60
  • 61.
    Fundamentos de ComputaçãoNatural 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; Copyright© Leandro Nunes de Castro 61
  • 62.
    Fundamentos de ComputaçãoNatural 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? Copyright© Leandro Nunes de Castro 62
  • 63.
    Fundamentos de ComputaçãoNatural 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; Copyright© Leandro Nunes de Castro 63
  • 64.
    Fundamentos de ComputaçãoNatural 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: Copyright© Leandro Nunes de Castro 64
  • 65.
    Fundamentos de ComputaçãoNatural 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.” Copyright© Leandro Nunes de Castro 65
  • 66.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 66
  • 67.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 67
  • 68.
    Fundamentos de ComputaçãoNatural • 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). Copyright© Leandro Nunes de Castro 68
  • 69.
    Fundamentos de ComputaçãoNatural • 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 Copyright© Leandro Nunes de Castro 69
  • 70.
    Fundamentos de ComputaçãoNatural 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)? Copyright© Leandro Nunes de Castro 70
  • 71.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 71
  • 72.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 72
  • 73.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 73
  • 74.
    Fundamentos de ComputaçãoNatural • É 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. Copyright© Leandro Nunes de Castro 74
  • 75.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 75
  • 76.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 76
  • 77.
    Fundamentos de ComputaçãoNatural Órgão Comunidade Célula Sistema População Ecossistema Organismo Nível fisiológico 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. Copyright© Leandro Nunes de Castro 77
  • 78.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 78
  • 79.
    Fundamentos de ComputaçãoNatural • 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. Crom osomo diagram ático Locus Alelos: {A, B} A B A A B A B B A B Gene Figura 9: Ilustração pictórica de um cromossomo salientando o locus, os genes e os alelos. Copyright© Leandro Nunes de Castro 79
  • 80.
    Fundamentos de ComputaçãoNatural 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); Copyright© Leandro Nunes de Castro 80
  • 81.
    Fundamentos de ComputaçãoNatural • 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. g2 f4 ′ g1 Espaço genotípico G g1 f1 f3 f2 Espaço fenotípico F p1 p2 Figura 10: Evolução explicada através de mapeamentos entre os espaços genotípico e fenotípico. Copyright© Leandro Nunes de Castro 81
  • 82.
    Fundamentos de ComputaçãoNatural 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; Copyright© Leandro Nunes de Castro 82
  • 83.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 83
  • 84.
    Fundamentos de ComputaçãoNatural M ito s e R e p lica ç ã o D ivis ã o H a p ló id e 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 Copyright© Leandro Nunes de Castro 84
  • 85.
    Fundamentos de ComputaçãoNatural cromossomos existentes nos respectivos pais. Os cromossomos presentes nos gametas fornecidos pelos pais se emparelham para gerar uma nova célula diploide. Ovo Meiose Replicação Separação dos homólogos Zigoto Diplóide diplóide Esperma Gametas haplóides Copyright© Leandro Nunes de Castro 85
  • 86.
    Fundamentos de ComputaçãoNatural • 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 Copyright© Leandro Nunes de Castro 86
  • 87.
    Fundamentos de ComputaçãoNatural 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 A B A C B A B C A B A B A B B A B C A B A B A B B A B C A + B Mutação pontual Deleção perdido A B A C B A B C A B A C A B B A B B A B Inversão 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, Copyright© Leandro Nunes de Castro 87
  • 88.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 88
  • 89.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 89
  • 90.
    Fundamentos de ComputaçãoNatural • 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). Copyright© Leandro Nunes de Castro 90
  • 91.
    Fundamentos de ComputaçãoNatural • 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 2 −2 (( x − 0.1) / 0.9 ) única variável: g ( x) = 2 sen(5πx) 6 , x ∈ [0,1]. Copyright© Leandro Nunes de Castro 91
  • 92.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 92
  • 93.
    Fundamentos de ComputaçãoNatural • 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 Copyright© Leandro Nunes de Castro 93
  • 94.
    Fundamentos de ComputaçãoNatural • É 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 Copyright© Leandro Nunes de Castro 94
  • 95.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 95
  • 96.
    Fundamentos de ComputaçãoNatural Cromossomo em um GA clássico Locus Alelos: {0,1} 1 0 0 0 1 1 0 0 1 0 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. Copyright© Leandro Nunes de Castro 96
  • 97.
    Fundamentos de ComputaçãoNatural • Exemplo: 0.25 N Cromossomo Fitness Graus 1 0001100101010 6.0 180 0 1 2 0101001010101 3.0 90 1 4 0.5 2 3 1011110100101 1.5 45 3 4 1010010101001 1.5 45 0.75 • 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. Copyright© Leandro Nunes de Castro 97
  • 98.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 98
  • 99.
    Fundamentos de ComputaçãoNatural Ponto de crossover, (r = 5) 1 0 0 0 0 0 1 1 Cromossomo pai 1 1 1 0 1 1 1 1 0 Cromossomo pai 2 Crossover de ponto único Cromossomo 1 0 0 0 1 1 1 0 filho 1 Cromossomo 1 1 0 1 0 0 1 1 filho 2 Figura 15: Crossover de um único ponto para cadeias de comprimento l = 8. Copyright© Leandro Nunes de Castro 99
  • 100.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 100
  • 101.
    Fundamentos de ComputaçãoNatural 001010010111010 00101 0010111010 110011010010010 11001 1010010010 011001010100001 110011010010010 010100100100100 0101001001 00100 010100100100100 011001010100001 0110010101 00001 101000101001001 010010100101001 010010100101001 010 010100101001 001001000101000 001001000101000 001 001000101000 101101010101001 001010010111010 Seleção de 011001010100001 Determinação 01100101 0100001 101011111010101 pares via 001010010111010 dos pontos de 00101001 0111010 001010100010100 Roulette Crossover Wheel 101011111010101 10 1011111010101 001010100010100 00 1010100010100 GERAÇÃO ATUAL Crossover 00101 1010010010 001011010010010 001011010010010 11001 0010111010 110000010111010 110010010111010 010100100100001 010100100100001 0101001001 00001 011001010101100 011001010100100 0110010101 00100 010001000101000 010001000101000 001010100101001 001010100101001 010 001000101000 011001010111010 011001010111010 001 010100101001 001110010100001 001010010100001 Mutação 101010100010100 01100101 0111010 101010100010100 001011111010001 001011111010101 00101001 0100001 10 1010100010100 PRÓXIMA 00 1011111010101 GERAÇÃO Copyright© Leandro Nunes de Castro 101
  • 102.
    Fundamentos de ComputaçãoNatural • 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 Copyright© Leandro Nunes de Castro 102
  • 103.
    Fundamentos de ComputaçãoNatural o avaliação (cálculo do fitness) e ordenação da população intermediária o seleção para nova geração MELHOR INDIVÍDUO AVALIAÇÃO E ORDENAÇÃO SELEÇÃO OPERAÇÕES GERAÇÃO PRÓXIMA ATUAL GERAÇÃO (fitness já determinado) SUB-POPULAÇÕES POPULAÇÃO INTERMEDIÁRIA Copyright© Leandro Nunes de Castro 103
  • 104.
    Fundamentos de ComputaçãoNatural 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 Copyright© Leandro Nunes de Castro 104
  • 105.
    Fundamentos de ComputaçãoNatural 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? Copyright© Leandro Nunes de Castro 105
  • 106.
    Fundamentos de ComputaçãoNatural 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 Copyright© Leandro Nunes de Castro 106
  • 107.
    Fundamentos de ComputaçãoNatural 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). Copyright© Leandro Nunes de Castro 107
  • 108.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 108
  • 109.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 109
  • 110.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 110
  • 111.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 111
  • 112.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 112
  • 113.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 113
  • 114.
    Fundamentos de ComputaçãoNatural h N e tw o rk o f n e u ro n s N e u ro n B ra in S yn a p se 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. Copyright© Leandro Nunes de Castro 114
  • 115.
    Fundamentos de ComputaçãoNatural • 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). Copyright© Leandro Nunes de Castro 115
  • 116.
    Fundamentos de ComputaçãoNatural D endrites S ynaptic clefts A x on A x on hillock M ielin sheath C ell body (som a) 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. Copyright© Leandro Nunes de Castro 116
  • 117.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 117
  • 118.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 118
  • 119.
    Fundamentos de ComputaçãoNatural Figura 18: Estrutura em camadas do córtex. Copyright© Leandro Nunes de Castro 119
  • 120.
    Fundamentos de ComputaçãoNatural • 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). Copyright© Leandro Nunes de Castro 120
  • 121.
    Fundamentos de ComputaçãoNatural Figura 19: Córtex e suas partes. Copyright© Leandro Nunes de Castro 121
  • 122.
    Fundamentos de ComputaçãoNatural • 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 Copyright© Leandro Nunes de Castro 122
  • 123.
    Fundamentos de ComputaçãoNatural 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 Copyright© Leandro Nunes de Castro 123
  • 124.
    Fundamentos de ComputaçãoNatural 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; Copyright© Leandro Nunes de Castro 124
  • 125.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 125
  • 126.
    Fundamentos de ComputaçãoNatural • 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; Copyright© Leandro Nunes de Castro 126
  • 127.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 127
  • 128.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 128
  • 129.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 129
  • 130.
    Fundamentos de ComputaçãoNatural Pesos das conexões bk Limiar(bias) x1 wk1 Função de x2 wk2 ativação Entradas uk yk Σ f(uk) … wkm Saída Junção somadora xm 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. Copyright© Leandro Nunes de Castro 130
  • 131.
    Fundamentos de ComputaçãoNatural • 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:  m   m  y k = f (u k ) = f  ∑ wkj x j + bk  ou y k = f (u k ) = f  ∑ wkj x j  ,      j =1   j =0  onde x0 é um sinal de entrada de valor 1 e peso associado wk0 = bk: • Exemplos de função de ativação: Copyright© Leandro Nunes de Castro 131
  • 132.
    Fundamentos de ComputaçãoNatural  1 se pu k ≥ 1  com p constante e positivo. f (u k ) =  pu k se 0 < pu k < 1  0 se pu k ≤ 0  1 0.8 p 0.6 0.4 0.2 0 0 0 1/p 0 1/p a) b) Função semi-linear (a) e sua derivada em relação à entrada interna (b) Copyright© Leandro Nunes de Castro 132
  • 133.
    Fundamentos de ComputaçãoNatural e pu k 1 ∂y y = f (u k ) = pu = = pu k (1 − u k ) > 0 e k + 1 1 + e − pu k ∂u k 0.8 1 0.7 0.8 p=3 0.6 p=1.5 p=3 p=0.8 0.5 0.6 p=1.5 0.4 p=0.8 0.4 0.3 0.2 0.2 0.1 0 0 -5 0 5 -5 0 5 a) b) Função logística (a) e sua derivada em relação à entrada interna (b) Copyright© Leandro Nunes de Castro 133
  • 134.
    Fundamentos de ComputaçãoNatural e pu k − e − pu k ∂y y = f (u k ) = tanh( pu k ) = pu = p (1 − u 2 ) > 0 e k + e − pu k ∂u k k 2.5 1 p=2.2 2 p=1 0.5 p=0.6 p=2.2 1.5 p=1 0 1 p=0.6 -0.5 0.5 -1 0 -5 0 5 -5 0 5 a) b) Função tangente hiperbólica (a) e sua derivada em relação à entrada interna (b) Copyright© Leandro Nunes de Castro 134
  • 135.
    Fundamentos de ComputaçãoNatural 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. 1 wi0 yj g w ui yi g xij wij w Figura 21: Conectando neurônios. Copyright© Leandro Nunes de Castro 135
  • 136.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 136
  • 137.
    Fundamentos de ComputaçãoNatural x0 w10 w21 y1 . Neurônio x1 y2 sensorial . x2 . y3 Neurônio de processamento . … … … xm yo wom Camada de Camada de entrada saída 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. Copyright© Leandro Nunes de Castro 137
  • 138.
    Fundamentos de ComputaçãoNatural  w10 w11 L w1m  W= M  M O M    wo 0  wo1 L wom   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. Copyright© Leandro Nunes de Castro 138
  • 139.
    Fundamentos de ComputaçãoNatural • 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. +1 +1 +1 x1 x2 y1 x3 y2 … … yo … … xm Input layer First hidden Second Output layer layer hidden layer Figura 23: Rede feedforward de múltiplas camadas. Copyright© Leandro Nunes de Castro 139
  • 140.
    Fundamentos de ComputaçãoNatural • Seja Wk a matriz de pesos da camada k, contadas da esquerda para a direita. k • wij 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. Copyright© Leandro Nunes de Castro 140
  • 141.
    Fundamentos de ComputaçãoNatural Z−1 Z−1 Z−1 Figura 24: Rede neural recorrente. Copyright© Leandro Nunes de Castro 141
  • 142.
    Fundamentos de ComputaçãoNatural 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 Copyright© Leandro Nunes de Castro 142
  • 143.
    Fundamentos de ComputaçãoNatural • 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). Copyright© Leandro Nunes de Castro 143
  • 144.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 144
  • 145.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 145
  • 146.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 146
  • 147.
    Fundamentos de ComputaçãoNatural x(t) One or more yj(t) dj(t) Output Σ layers of hidden neuron neurons j − + ej(t) Multi-layer Feedforward Network Figura 25: Aprendizagem por correção de erro. 1 o 2  • Um critério muito utilizado é o de erro quadrático médio: J = E  o ∑ e j (t ) .  j =1  • Um conceito que está implícito em toda esta análise é a hipótese de estacionariedade dos processos aleatórios presentes. Copyright© Leandro Nunes de Castro 147
  • 148.
    Fundamentos de ComputaçãoNatural • 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 1 o 2 médio: J ≅ J (k ) = o ∑ e j (k ) . j =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. Copyright© Leandro Nunes de Castro 148
  • 149.
    Fundamentos de ComputaçãoNatural • 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. Input patterns Neural Environment Network 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. Copyright© Leandro Nunes de Castro 149
  • 150.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 150
  • 151.
    Fundamentos de ComputaçãoNatural • 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: α( x − w i ) se i ganha a competição ∆w i =   0 se i perde a competição 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. Copyright© Leandro Nunes de Castro 151
  • 152.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 152
  • 153.
    Fundamentos de ComputaçãoNatural Estado do ambiente (dado de entrada) Rede Ambiente Neural Sinal de reforço Saída da rede 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. Copyright© Leandro Nunes de Castro 153
  • 154.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 154
  • 155.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 155
  • 156.
    Fundamentos de ComputaçãoNatural +1 w0 = b x1 w1 Função de x2 ativação Entradas w2 u y Σ f(u) … wm Saída Junção xm somadora 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. Copyright© Leandro Nunes de Castro 156
  • 157.
    Fundamentos de ComputaçãoNatural • 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 Copyright© Leandro Nunes de Castro 157
  • 158.
    Fundamentos de ComputaçãoNatural 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. Entradas Saídas (0,1) (1,1) x1 x2 x1 AND x2 0 0 0 0 1 0 1 0 0 1 1 1 (0,0) (1,0) 0 0 1 1 X=  d = [0 0 0 1] 0 1 0 1 • 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. Copyright© Leandro Nunes de Castro 158
  • 159.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 159
  • 160.
    Fundamentos de ComputaçãoNatural w1 = 2; w2 = 1; b = −3 (0,1) (1,1) (0,0) (1,0) 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. Copyright© Leandro Nunes de Castro 160
  • 161.
    Fundamentos de ComputaçãoNatural • 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 T W ← W + α ei xi //atualize a matriz de pesos b ← b + α ei //atualize o vetor de bias end for t ← t + 1 end while end procedure Copyright© Leandro Nunes de Castro 161
  • 162.
    Fundamentos de ComputaçãoNatural 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). Copyright© Leandro Nunes de Castro 162
  • 163.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 163
  • 164.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 164
  • 165.
    Fundamentos de ComputaçãoNatural 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 Copyright© Leandro Nunes de Castro 165
  • 166.
    Fundamentos de ComputaçãoNatural 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: Copyright© Leandro Nunes de Castro 166
  • 167.
    Fundamentos de ComputaçãoNatural 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 Copyright© Leandro Nunes de Castro 167
  • 168.
    Fundamentos de ComputaçãoNatural 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 Copyright© Leandro Nunes de Castro 168
  • 169.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 169
  • 170.
    Fundamentos de ComputaçãoNatural • 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: Copyright© Leandro Nunes de Castro 170
  • 171.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 171
  • 172.
    Fundamentos de ComputaçãoNatural • 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. Source A Hive Source B 1.00M 2.50M 12 91 • 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. Copyright© Leandro Nunes de Castro 172
  • 173.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 173
  • 174.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 174
  • 175.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 175
  • 176.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 176
  • 177.
    Fundamentos de ComputaçãoNatural Nest Nest Food Food source source Nest Food source • 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. Copyright© Leandro Nunes de Castro 177
  • 178.
    Fundamentos de ComputaçãoNatural 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 Food Food source source source Nest Nest Nest Copyright© Leandro Nunes de Castro 178
  • 179.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 179
  • 180.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 180
  • 181.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 181
  • 182.
    Fundamentos de ComputaçãoNatural 3.3. Uma Simulação de Vida Artificial • Ninho: lado esquerdo • Fonte de alimento: lado direito • N = 500 formigas Copyright© Leandro Nunes de Castro 182
  • 183.
    Fundamentos de ComputaçãoNatural 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}. Copyright© Leandro Nunes de Castro 183
  • 184.
    Fundamentos de ComputaçãoNatural • 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 4 3 2 1 C G1 B G2 B F G3 B F G4 1 2 5 E D C E D E D Copyright© Leandro Nunes de Castro 184
  • 185.
    Fundamentos de ComputaçãoNatural 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). Copyright© Leandro Nunes de Castro 185
  • 186.
    Fundamentos de ComputaçãoNatural • 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:  τ ij (t )  se j ∈ N i pij (t ) =  ∑ j∈N τ ij (t ) k  i  0 outros casos k onde pij (t ) é 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: Copyright© Leandro Nunes de Castro 186
  • 187.
    Fundamentos de ComputaçãoNatural τ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. Copyright© Leandro Nunes de Castro 187
  • 188.
    Fundamentos de ComputaçãoNatural 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: Copyright© Leandro Nunes de Castro 188
  • 189.
    Fundamentos de ComputaçãoNatural 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: Copyright© Leandro Nunes de Castro 189
  • 190.
    Fundamentos de ComputaçãoNatural 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 Copyright© Leandro Nunes de Castro 190
  • 191.
    Fundamentos de ComputaçãoNatural 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 . Copyright© Leandro Nunes de Castro 191
  • 192.
    Fundamentos de ComputaçãoNatural • 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:  [τ ij (t )]α .[ηij ]β  se j ∈ J ik pij (t ) =  ∑ k [τ il (t )]α .[ηil ]β k l∈J i  0 caso contrário  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. Copyright© Leandro Nunes de Castro 192
  • 193.
    Fundamentos de ComputaçãoNatural • 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: Q / Lk (t ) se (i, j ) ∈ T k (t ) ∆τ (t ) =  k ij  0 outros casos 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. Copyright© Leandro Nunes de Castro 193
  • 194.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 194
  • 195.
    Fundamentos de ComputaçãoNatural 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 T (t) by applying (e − 1) times the following step: k 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; Q / Lk (t ) if (i, j ) ∈ T k (t ) ∆τ ij (t ) =  k , and  0 otherwise Q / Lbest if (i, j ) ∈ best ∆τ b (t ) =  ij .  0 otherwise end for t ← t + 1 end while end procedure Copyright© Leandro Nunes de Castro 195
  • 196.
    Fundamentos de ComputaçãoNatural • 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 Copyright© Leandro Nunes de Castro 196
  • 197.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 197
  • 198.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 198
  • 199.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 199
  • 200.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 200
  • 201.
    Fundamentos de ComputaçãoNatural • 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  k  pp =  1  k + f   1  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: Copyright© Leandro Nunes de Castro 201
  • 202.
    Fundamentos de ComputaçãoNatural 2  f  k + f  pd =    2  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). Copyright© Leandro Nunes de Castro 202
  • 203.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 203
  • 204.
    Fundamentos de ComputaçãoNatural 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 Copyright© Leandro Nunes de Castro 204
  • 205.
    Fundamentos de ComputaçãoNatural 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: Copyright© Leandro Nunes de Castro 205
  • 206.
    Fundamentos de ComputaçãoNatural 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 Copyright© Leandro Nunes de Castro 206
  • 207.
    Fundamentos de ComputaçãoNatural 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: 1  d (x i , x j )   f (x i ) =  s 2 ∑ (r ) 1 − α  se f > 0 x j ∈Neigh ( s× s )   0 outros casos  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: Copyright© Leandro Nunes de Castro 207
  • 208.
    Fundamentos de ComputaçãoNatural 2  k1   k + f (x )  p p (x i ) =    1 i  2 f (x i ) if f (x i ) < k 2 pd (x i ) =  1 if f (x i ) ≥ k 2 s • 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 Copyright© Leandro Nunes de Castro 208
  • 209.
    Fundamentos de ComputaçãoNatural 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: Copyright© Leandro Nunes de Castro 209
  • 210.
    Fundamentos de ComputaçãoNatural 2 1  k1  Pp (i) =   f (i)φ (i)  k1 + f (i)    2  f (i)   k + f (i )  Pd (i ) = f (i )φ (i)   2  • 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. Copyright© Leandro Nunes de Castro 210
  • 211.
    Fundamentos de ComputaçãoNatural C1 0 C1 C2 C4 C3 Copyright© Leandro Nunes de Castro 211
  • 212.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 212
  • 213.
    Fundamentos de ComputaçãoNatural 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 Copyright© Leandro Nunes de Castro 213
  • 214.
    Fundamentos de ComputaçãoNatural 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 Copyright© Leandro Nunes de Castro 214
  • 215.
    Fundamentos de ComputaçãoNatural 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; Copyright© Leandro Nunes de Castro 215
  • 216.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 216
  • 217.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 217
  • 218.
    Fundamentos de ComputaçãoNatural 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 Copyright© Leandro Nunes de Castro 218
  • 219.
    Fundamentos de ComputaçãoNatural 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 Copyright© Leandro Nunes de Castro 219
  • 220.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 220
  • 221.
    Fundamentos de ComputaçãoNatural Copyright© Leandro Nunes de Castro 221
  • 222.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 222
  • 223.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 223
  • 224.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 224
  • 225.
    Fundamentos de ComputaçãoNatural Copyright© Leandro Nunes de Castro 225
  • 226.
    Fundamentos de ComputaçãoNatural 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: Copyright© Leandro Nunes de Castro 226
  • 227.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 227
  • 228.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 228
  • 229.
    Fundamentos de ComputaçãoNatural • 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: Copyright© Leandro Nunes de Castro 229
  • 230.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 230
  • 231.
    Fundamentos de ComputaçãoNatural Copyright© Leandro Nunes de Castro 231
  • 232.
    Fundamentos de ComputaçãoNatural 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 Copyright© Leandro Nunes de Castro 232
  • 233.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 233
  • 234.
    Fundamentos de ComputaçãoNatural Copyright© Leandro Nunes de Castro 234
  • 235.
    Fundamentos de ComputaçãoNatural 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; Copyright© Leandro Nunes de Castro 235
  • 236.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 236
  • 237.
    Fundamentos de ComputaçãoNatural • 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; Copyright© Leandro Nunes de Castro 237
  • 238.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 238
  • 239.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 239
  • 240.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 240
  • 241.
    Fundamentos de ComputaçãoNatural 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 Copyright© Leandro Nunes de Castro 241
  • 242.
    Fundamentos de ComputaçãoNatural 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 Copyright© Leandro Nunes de Castro 242
  • 243.
    Fundamentos de ComputaçãoNatural (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 Copyright© Leandro Nunes de Castro 243
  • 244.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 244
  • 245.
    Fundamentos de ComputaçãoNatural 5.3. De Sistemas Sociais a Enxames de Partículas Sociocognição Algoritmo PSO Indivíduo Partícula População de Enxame de partículas indivíduos Esquecimento e Incremento ou decremento nos valores de alguns atributos das aprendizagem partículas Experiência própria de Cada partícula possui algum conhecimento de sua história um indivíduo (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 Copyright© Leandro Nunes de Castro 245
  • 246.
    Fundamentos de ComputaçãoNatural 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) Copyright© Leandro Nunes de Castro 246
  • 247.
    Fundamentos de ComputaçãoNatural “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) Copyright© Leandro Nunes de Castro 247
  • 248.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 248
  • 249.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 249
  • 250.
    Fundamentos de ComputaçãoNatural • 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: Copyright© Leandro Nunes de Castro 250
  • 251.
    Fundamentos de ComputaçãoNatural 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: Copyright© Leandro Nunes de Castro 251
  • 252.
    Fundamentos de ComputaçãoNatural 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): Copyright© Leandro Nunes de Castro 252
  • 253.
    Fundamentos de ComputaçãoNatural 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”. Copyright© Leandro Nunes de Castro 253
  • 254.
    Fundamentos de ComputaçãoNatural • 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 Copyright© Leandro Nunes de Castro 254
  • 255.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 255
  • 256.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 256
  • 257.
    Fundamentos de ComputaçãoNatural • Outro fractal pioneiro: o triângulo de Sierpinski. Copyright© Leandro Nunes de Castro 257
  • 258.
    Fundamentos de ComputaçãoNatural Step 1 Step 2 Step 3 • Curvas que preenchem o espaço: a curva de Peano. Step 0 Step 1 Step 2 Step 3 Copyright© Leandro Nunes de Castro 258
  • 259.
    Fundamentos de ComputaçãoNatural 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 Copyright© Leandro Nunes de Castro 259
  • 260.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 260
  • 261.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 261
  • 262.
    Fundamentos de ComputaçãoNatural 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: log N N = (1/m) ⇒ log(N) = log((1/m) ) ⇒ log(N) = d.log(1/m) ⇒ d d d= log1 / m • Portanto, a dimensão ds de uma forma autossimilar pode então ser dada por: log N d= log1 / m , Copyright© Leandro Nunes de Castro 262
  • 263.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 263
  • 264.
    Fundamentos de ComputaçãoNatural Line m = 1/4, N(m) = 4 m = 1/2, N(m) = 2 m = 1, N(m) = 1 N(1) = 1 N(1/2) = 2 = 1/(1/2) N(1/4) = 4 = 1/(1/4) ... N(m) = 1/ m Copyright© Leandro Nunes de Castro 264
  • 265.
    Fundamentos de ComputaçãoNatural Filled-in m = 1, N(m) = 1 m = 1/2, N(m) = 4 m = 1/4, N(m) = 16 square N(1) = 1 2 N(1/2) = 4 = (1/(1/2)) 2 N(1/4) = 16 = (1/(1/4)) ... 2 N(m) = (1/m) • 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: log( N (m)) − log(k ) db = . log(1 / m) Copyright© Leandro Nunes de Castro 265
  • 266.
    Fundamentos de ComputaçãoNatural • 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: log( N (m)) d b = lim m→0 log(1 / m) . 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. Copyright© Leandro Nunes de Castro 266
  • 267.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 267
  • 268.
    Fundamentos de ComputaçãoNatural 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 Copyright© Leandro Nunes de Castro 268
  • 269.
    Fundamentos de ComputaçãoNatural T im 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), Copyright© Leandro Nunes de Castro 269
  • 270.
    Fundamentos de ComputaçãoNatural 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 Copyright© Leandro Nunes de Castro 270
  • 271.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 271
  • 272.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 272
  • 273.
    Fundamentos de ComputaçãoNatural • 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 Copyright© Leandro Nunes de Castro 273
  • 274.
    Fundamentos de ComputaçãoNatural 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 Copyright© Leandro Nunes de Castro 274
  • 275.
    Fundamentos de ComputaçãoNatural o O processo de aplicação das regras é denominado de processo de derivação ou de reescrita. Iteration Word 0 c 1 b 2 ac 3 cb 4 bac 5 accb 6 cbbac 7 bacaccb 8 accbcbbac 9 cbbacbacaccb 10 bacaccbaccbcbbac • A introdução dos sistemas-L reviveu o interesse na representação de imagens utilizando sequências de caracteres. Copyright© Leandro Nunes de Castro 275
  • 276.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 276
  • 277.
    Fundamentos de ComputaçãoNatural • 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 Copyright© Leandro Nunes de Castro 277
  • 278.
    Fundamentos de ComputaçãoNatural α, 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. Copyright© Leandro Nunes de Castro 278
  • 279.
    Fundamentos de ComputaçãoNatural • 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. y F − + x Copyright© Leandro Nunes de Castro 279
  • 280.
    Fundamentos de ComputaçãoNatural 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: [ → [ Copyright© Leandro Nunes de Castro 280
  • 281.
    Fundamentos de ComputaçãoNatural p4: ] → ] Iteration Word 0 F 1 G[−F]G[+F]F 2 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 Copyright© Leandro Nunes de Castro 281
  • 282.
    Fundamentos de ComputaçãoNatural 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 Copyright© Leandro Nunes de Castro 282
  • 283.
    Fundamentos de ComputaçãoNatural • Exemplos de plantas geradas com sistemas L. t = 8, δ = 22.5o t = 5, δ = 22.5o ω: G ω: G G → F+[[G]−G]−F[−FG]+G G → FG[−F[G]−G][G+G][+F[G]+G] F → FF F → FF Copyright© Leandro Nunes de Castro 283
  • 284.
    Fundamentos de ComputaçãoNatural 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). Copyright© Leandro Nunes de Castro 284
  • 285.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 285
  • 286.
    Fundamentos de ComputaçãoNatural • 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:  x   a b  x1   e   x   c d  x  +  f  = Ax + t w(x) = w 1  =       2   2    • 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 Copyright© Leandro Nunes de Castro 286
  • 287.
    Fundamentos de ComputaçãoNatural Scaling Reflection Rotation Copyright© Leandro Nunes de Castro 287
  • 288.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 288
  • 289.
    Fundamentos de ComputaçãoNatural 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: An+1 = ∪ N=1 w j ( An ) , n = 1,2,… j • 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). A0 An MRCM An+1 Copyright© Leandro Nunes de Castro 289
  • 290.
    Fundamentos de ComputaçãoNatural Copyright© Leandro Nunes de Castro 290
  • 291.
    Fundamentos de ComputaçãoNatural 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 Copyright© Leandro Nunes de Castro 291
  • 292.
    Fundamentos de ComputaçãoNatural • 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 Copyright© Leandro Nunes de Castro 292
  • 293.
    Fundamentos de ComputaçãoNatural 5.3. Autosimilaridade e Autoafinidade Revisitadas Copyright© Leandro Nunes de Castro 293
  • 294.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 294
  • 295.
    Fundamentos de ComputaçãoNatural 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 Copyright© Leandro Nunes de Castro 295
  • 296.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 296
  • 297.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 297
  • 298.
    Fundamentos de ComputaçãoNatural Copyright© Leandro Nunes de Castro 298
  • 299.
    Fundamentos de ComputaçãoNatural 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 Copyright© Leandro Nunes de Castro 299
  • 300.
    Fundamentos de ComputaçãoNatural • 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: 1 X(t0 + t) − X(t0) e ( X (t0 + rt ) − X (t0 )) , r 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 1 X(t) e ( X (rt ) ) são estatisticamente indistinguíveis; a segunda sendo uma r versão apropriadamente reescalonada da primeira. Copyright© Leandro Nunes de Castro 300
  • 301.
    Fundamentos de ComputaçãoNatural • 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 ∆1 : 2 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. Copyright© Leandro Nunes de Castro 301
  • 302.
    Fundamentos de ComputaçãoNatural 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: 1 2 ∆2n = σ 2 n+1 . X(t) X(t) D1 D2,2 D2,1 0.5 1.0 t 0.25 0.5 0.75 1.0 t Copyright© Leandro Nunes de Castro 302
  • 303.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 303
  • 304.
    Fundamentos de ComputaçãoNatural • 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 (t 0 + rt ) − X (t 0 ) X(t0 + t) − X(t0) e rH 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 1 X(t) e ( X (rt )) são estatisticamente indistinguíveis; a segunda sendo uma rH versão apropriadamente reescalonada da primeira. • Para aplicar o algoritmo RMD ao caso mais geral de MBF é necessário que: Copyright© Leandro Nunes de Castro 304
  • 305.
    Fundamentos de ComputaçãoNatural var(X(t2) − X(t1)) = |t2 − t1|2H σ2. • O deslocamento do ponto médio torna-se então σ2 ∆ = n 2 H (1 − 2 2 H −2 ) . 2 n (2 ) • 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 Copyright© Leandro Nunes de Castro 305
  • 306.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 306
  • 307.
    Fundamentos de ComputaçãoNatural Copyright© Leandro Nunes de Castro 307
  • 308.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 308
  • 309.
    Fundamentos de ComputaçãoNatural © K. Musgrave, Pandromeda.com Copyright© Leandro Nunes de Castro 309
  • 310.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 310
  • 311.
    Fundamentos de ComputaçãoNatural 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: Copyright© Leandro Nunes de Castro 311
  • 312.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 312
  • 313.
    Fundamentos de ComputaçãoNatural 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 Copyright© Leandro Nunes de Castro 313
  • 314.
    Fundamentos de ComputaçãoNatural • 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 Copyright© Leandro Nunes de Castro 314
  • 315.
    Fundamentos de ComputaçãoNatural 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’. Copyright© Leandro Nunes de Castro 315
  • 316.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 316
  • 317.
    Fundamentos de ComputaçãoNatural 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 Copyright© Leandro Nunes de Castro 317
  • 318.
    Fundamentos de ComputaçãoNatural Copyright© Leandro Nunes de Castro 318
  • 319.
    Fundamentos de ComputaçãoNatural 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: Copyright© Leandro Nunes de Castro 319
  • 320.
    Fundamentos de ComputaçãoNatural 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 Copyright© Leandro Nunes de Castro 320
  • 321.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 321
  • 322.
    Fundamentos de ComputaçãoNatural 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) Copyright© Leandro Nunes de Castro 322
  • 323.
    Fundamentos de ComputaçãoNatural “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) Copyright© Leandro Nunes de Castro 323
  • 324.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 324
  • 325.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 325
  • 326.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 326
  • 327.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 327
  • 328.
    Fundamentos de ComputaçãoNatural 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: Copyright© Leandro Nunes de Castro 328
  • 329.
    Fundamentos de ComputaçãoNatural 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 Copyright© Leandro Nunes de Castro 329
  • 330.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 330
  • 331.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 331
  • 332.
    Fundamentos de ComputaçãoNatural • 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). Copyright© Leandro Nunes de Castro 332
  • 333.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 333
  • 334.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 334
  • 335.
    Fundamentos de ComputaçãoNatural • 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 Copyright© Leandro Nunes de Castro 335
  • 336.
    Fundamentos de ComputaçãoNatural 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 Copyright© Leandro Nunes de Castro 336
  • 337.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 337
  • 338.
    Fundamentos de ComputaçãoNatural 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 Copyright© Leandro Nunes de Castro 338
  • 339.
    Fundamentos de ComputaçãoNatural Copyright© Leandro Nunes de Castro 339
  • 340.
    Fundamentos de ComputaçãoNatural • 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 Copyright© Leandro Nunes de Castro 340
  • 341.
    Fundamentos de ComputaçãoNatural Tank Chandelier II Christmas tree Dry tree Frog Crab Gang with glasses Queen (chess) Transformer Spider Hen (from the back) Fat face Copyright© Leandro Nunes de Castro 341
  • 342.
    Fundamentos de ComputaçãoNatural • 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) Copyright© Leandro Nunes de Castro 342
  • 343.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 343
  • 344.
    Fundamentos de ComputaçãoNatural • 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: Copyright© Leandro Nunes de Castro 344
  • 345.
    Fundamentos de ComputaçãoNatural 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); Copyright© Leandro Nunes de Castro 345
  • 346.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 346
  • 347.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 347
  • 348.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 348
  • 349.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 349
  • 350.
    Fundamentos de ComputaçãoNatural 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: Copyright© Leandro Nunes de Castro 350
  • 351.
    Fundamentos de ComputaçãoNatural Copyright© Leandro Nunes de Castro 351
  • 352.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 352
  • 353.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 353
  • 354.
    Fundamentos de ComputaçãoNatural • 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 Copyright© Leandro Nunes de Castro 354
  • 355.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 355
  • 356.
    Fundamentos de ComputaçãoNatural Copyright© Leandro Nunes de Castro 356
  • 357.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 357
  • 358.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 358
  • 359.
    Fundamentos de ComputaçãoNatural 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) Copyright© Leandro Nunes de Castro 359
  • 360.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 360
  • 361.
    Fundamentos de ComputaçãoNatural • Os principais módulos do sistema nervoso dos peixes são: percepção, comportamento e motor. Copyright© Leandro Nunes de Castro 361
  • 362.
    Fundamentos de ComputaçãoNatural 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 Copyright© Leandro Nunes de Castro 362
  • 363.
    Fundamentos de ComputaçãoNatural 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: Copyright© Leandro Nunes de Castro 363
  • 364.
    Fundamentos de ComputaçãoNatural • 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 Copyright© Leandro Nunes de Castro 364
  • 365.
    Fundamentos de ComputaçãoNatural Blinker Beehive Copyright© Leandro Nunes de Castro 365
  • 366.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 366
  • 367.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 367
  • 368.
    Fundamentos de ComputaçãoNatural Sierpinski Gasket • Grid unidimensional (d = 1); vizinhança n = 3, r = 1; S = {0,1}. Copyright© Leandro Nunes de Castro 368
  • 369.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 369
  • 370.
    Fundamentos de ComputaçãoNatural Copyright© Leandro Nunes de Castro 370
  • 371.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 371
  • 372.
    Fundamentos de ComputaçãoNatural 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). Copyright© Leandro Nunes de Castro 372
  • 373.
    Fundamentos de ComputaçãoNatural 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: Copyright© Leandro Nunes de Castro 373
  • 374.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 374
  • 375.
    Fundamentos de ComputaçãoNatural 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. Dupla hélice de DNA gene gene gene Figura 33: A molécula de DNA encontra-se no núcleo das células. Copyright© Leandro Nunes de Castro 375
  • 376.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 376
  • 377.
    Fundamentos de ComputaçãoNatural O 5′ C 4′ CH 3 HN C Fosfato 3′ 5′ P O CH 2 O C CH 2′ O 1′ N 4′ C 3′ 2′ C 1′ C C Base H H OH H Fosfato Açúcar Base 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; Copyright© Leandro Nunes de Castro 377
  • 378.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 378
  • 379.
    Fundamentos de ComputaçãoNatural A T G A T A T C C G T C G G A C Figura 35: Molécula de DNA ilustrando a complementaridade de Watson-Crick. Copyright© Leandro Nunes de Castro 379
  • 380.
    Fundamentos de ComputaçãoNatural • Algumas representações alternativas: 5′ 3′ 5′ − T C G A T T G A A C C − 3′ C G 3′ − A G C T A A C T T G G − 5′ T A 5′ − T C G A T T G A − 3′ 3′ − A A C T T G G − 5′ (Sticky ends) G C A T 3′ 5′ Copyright© Leandro Nunes de Castro 380
  • 381.
    Fundamentos de ComputaçãoNatural 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 Copyright© Leandro Nunes de Castro 381
  • 382.
    Fundamentos de ComputaçãoNatural Annealing 5′ 3′ 5′ 3′ C G C G T A T A G C G C A T A T 3′ 5′ 3′ 5′ 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. Copyright© Leandro Nunes de Castro 382
  • 383.
    Fundamentos de ComputaçãoNatural 5′ − T C G A T T − 3′ (primer) 5′ − T C G A T T G A A − 3′ 3′ − A G C T A A C T T − 5′ (template) 3′ − A G C T A A C T T − 5′ ↓ ↓ 5′ − T C G A T T G − 3′ 5′ − T C G A T T G A − 3′ 3′ − A G C T A A C T T − 5′ 3′ − G C T A A C T T − 5′ ↓ ↓ 5′ − T C G A T T G A − 3′ 5′ − T C G A T T G − 3′ 3′ − A G C T A A C T T − 5′ 3′ − C T A A C T T − 5′ ↓ ↓ 5′ − T C G A T T G A A − 3′ 5′ − T C G A T T − 3′ 3′ − A G C T A A C T T − 5′ 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′ 5′ − T G C C C G G G A − 3′ 3′ − A C T T A A G G C − 5′ 3′ − A C G G G C C C T − 5′ ↓ ↓ 5′ − T G − 3′ 5′ − A A T T C C G − 3′ 5′ − T G C C C − 3′ 5′ − G G G A − 3′ 3′ − A C T T A A − 5′ 3′ − G G C − 5′ 3′ − A C G G G − 5′ 3′ − C C C T − 5′ Figura 38: Corte por endonuclease. Copyright© Leandro Nunes de Castro 383
  • 384.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 384
  • 385.
    Fundamentos de ComputaçãoNatural a b c Template Denaturation a b c Primers a c a c Denaturation a Polymerase a extension c c c a c a Figura 40: PCR (Polymerase Chain Reaction). Copyright© Leandro Nunes de Castro 385
  • 386.
    Fundamentos de ComputaçãoNatural Figura 41: Fotografia de uma eletroforese de gel de uma molécula de proteína. Copyright© Leandro Nunes de Castro 386
  • 387.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 387
  • 388.
    Fundamentos de ComputaçãoNatural 6 2 3 0 4 5 1 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. Copyright© Leandro Nunes de Castro 388
  • 389.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 389
  • 390.
    Fundamentos de ComputaçãoNatural • 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: Copyright© Leandro Nunes de Castro 390
  • 391.
    Fundamentos de ComputaçãoNatural 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) v1 v2 TGAATTCCGACGTCCAGTGA ATGAACTATGGCACGCTATC GCAGGTCACT TAC TTGATAC e1→2 (b) Figura 43: Método de codificação usado por Adleman para resolver o problema do caminho Hamiltoniano. Copyright© Leandro Nunes de Castro 391
  • 392.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 392
  • 393.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 393
  • 394.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 394
  • 395.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 395
  • 396.
    Fundamentos de ComputaçãoNatural 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). Copyright© Leandro Nunes de Castro 396
  • 397.
    Fundamentos de ComputaçãoNatural • 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, e2j,…, 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. Copyright© Leandro Nunes de Castro 397
  • 398.
    Fundamentos de ComputaçãoNatural e10 e20 e30 en–10 en0 v0 v1 v2 . . . vn–1 vn e11 e21 e31 en–11 en1 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 v0e1i1v1e2i2… 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 v0e11v1e20v2e30…vn–1en1vn codifica a string binária 100…1. Copyright© Leandro Nunes de Castro 398
  • 399.
    Fundamentos de ComputaçãoNatural • 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 e20 v0 v1 v2 e11 e21 Copyright© Leandro Nunes de Castro 399
  • 400.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 400
  • 401.
    Fundamentos de ComputaçãoNatural Tubo de Strings ensaio 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. Copyright© Leandro Nunes de Castro 401
  • 402.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 402
  • 403.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 403
  • 404.
    Fundamentos de ComputaçãoNatural • 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: Copyright© Leandro Nunes de Castro 404
  • 405.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 405
  • 406.
    Fundamentos de ComputaçãoNatural • 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: Copyright© Leandro Nunes de Castro 406
  • 407.
    Fundamentos de ComputaçãoNatural 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? Copyright© Leandro Nunes de Castro 407
  • 408.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 408
  • 409.
    Fundamentos de ComputaçãoNatural procedure [out] = SAT(t) t1 ← +(t,e11) t1’ ← −(t,e11) t2 ← +(t1’,e21) t3 ← merge(t1,t2) t4 ← +(t3,e10) t4’ ← −(t3,e10) t5 ← +(t4’,e20) 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}. Copyright© Leandro Nunes de Castro 409
  • 410.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 410
  • 411.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 411
  • 412.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 412
  • 413.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 413
  • 414.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 414
  • 415.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 415
  • 416.
    Fundamentos de ComputaçãoNatural • 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 Copyright© Leandro Nunes de Castro 416
  • 417.
    Fundamentos de ComputaçãoNatural 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. ... xk−2 x k−1 xk xk+1 ... q C = (xk−1qx kxk+1); e(xk−1,k−1)e(q,k)e(x k,k) ... xk−2 x k−1 xk′ xk+1 ... q′ C = (xk−2q′xk−1xk′); e(q′,k−1)e(xk−1,k−1)e(xk′,k) Figura 45: Codificação de uma configuração da máquina de Turing. Copyright© Leandro Nunes de Castro 417
  • 418.
    Fundamentos de ComputaçãoNatural U L A U E R L A E R Mix Ā Ō Ē R Anneal Ā Ē R Ō Polymerase extension U Ligation L A E R U Denaturing L A E R L Mix with L L Ā Ē R L Ā Ē R Anneal Ō Ō Polymerase extension Destruction of the original strand L A O E R L Ā Ō Ē R 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. Copyright© Leandro Nunes de Castro 418
  • 419.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 419
  • 420.
    Fundamentos de ComputaçãoNatural • 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 Copyright© Leandro Nunes de Castro 420
  • 421.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 421
  • 422.
    Fundamentos de ComputaçãoNatural • 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 Copyright© Leandro Nunes de Castro 422
  • 423.
    Fundamentos de ComputaçãoNatural 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 Copyright© Leandro Nunes de Castro 423
  • 424.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 424
  • 425.
    Fundamentos de ComputaçãoNatural • 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| é: 0 0 A = |1〉〈0| = 1 0 .   • 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. Copyright© Leandro Nunes de Castro 425
  • 426.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 426
  • 427.
    Fundamentos de ComputaçãoNatural • 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〉. Copyright© Leandro Nunes de Castro 427
  • 428.
    Fundamentos de ComputaçãoNatural 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 é: Copyright© Leandro Nunes de Castro 428
  • 429.
    Fundamentos de ComputaçãoNatural ∑ x ,y c xy | x〉 A | y 〉 B . • Exemplos de estados emaranhados com dois qubits são os estados de Bell: 1 1 | x0 〉 = (| 00〉 AB + | 11〉 AB ) ; | x1 〉 = (| 01〉 AB + | 10〉 AB ) ; 2 2 1 1 | x2 〉 = (| 00〉 AB − | 11〉 AB ) ; | x3 〉 = (| 01〉 AB − | 10〉 AB ) . 2 2 • 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 = 1 / 2 . Copyright© Leandro Nunes de Castro 429
  • 430.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 430
  • 431.
    Fundamentos de ComputaçãoNatural • 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: 1 0 0 1  σ0 = I = 0 1 σ1 = X = 1 0      0 i 1 0  σ2 = Y = − i 0 σ3 = Z = 0 − 1     • 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). Copyright© Leandro Nunes de Castro 431
  • 432.
    Fundamentos de ComputaçãoNatural 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 Copyright© Leandro Nunes de Castro 432
  • 433.
    Fundamentos de ComputaçãoNatural 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 Copyright© Leandro Nunes de Castro 433
  • 434.
    Fundamentos de ComputaçãoNatural 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 + c22|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. Copyright© Leandro Nunes de Castro 434
  • 435.
    Fundamentos de ComputaçãoNatural • 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 Copyright© Leandro Nunes de Castro 435
  • 436.
    Fundamentos de ComputaçãoNatural 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〉. Copyright© Leandro Nunes de Castro 436
  • 437.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 437
  • 438.
    Fundamentos de ComputaçãoNatural • Um sistema quântico com N qubits possui N estados computacionais base, denotados por: 11...1 | y〉 = ∑c x = 00 ...0 x | x〉 , 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. Copyright© Leandro Nunes de Castro 438
  • 439.
    Fundamentos de ComputaçãoNatural • 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: 1 0  0  0  0 1 0  0  | 00〉 =   | 01〉 =   | 10〉 =   | 11〉 =   0 , 0  , 1  , 0  .         0  0  0 1 Copyright© Leandro Nunes de Castro 439
  • 440.
    Fundamentos de ComputaçãoNatural 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: a AND a NOT b a a b OR NAND b a a XOR NOR b b Copyright© Leandro Nunes de Castro 440
  • 441.
    Fundamentos de ComputaçãoNatural 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〉: Copyright© Leandro Nunes de Castro 441
  • 442.
    Fundamentos de ComputaçãoNatural 0 1  1  0  NOT |0〉 = X|0〉 = 1 0 0 = 1 = |1〉,      0 1 0 1 NOT |1〉 = X|1〉 = 1 0 1 = 0 = |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. 1 0 0 1   0 i 1 0  σ0 = I = 0 1 σ1 = X = 1 0 σ2 = Y = − i 0 σ3 = Z = 0 −1         Copyright© Leandro Nunes de Castro 442
  • 443.
    Fundamentos de ComputaçãoNatural • 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〉, 1 1 + i 1 − i NOT =  , 2 1 − i 1 +  i  NOT . NOT = NOT. Porta de Hadamard: 1 1 1  H= 2 1 − 1 .   Obs.: quando aplicada a N bits individualmente, a porta de Hadamard gera uma superposição de todos os 2N possíveis estados: Copyright© Leandro Nunes de Castro 443
  • 444.
    Fundamentos de ComputaçãoNatural 1 1 1  1 1 1 1 H|0〉 = 2 1 − 1 0 = 2 1 = 2 (| 0〉+ | 1〉 ) ,     1 1 1  0 1  1  1 H|1〉 = 2 1 − 1 1 = 2 − 1 = 2 (| 0〉− | 1〉 ) .      NOT controlado: 1 0 0 0 0 1 0 0   CNOT = 0 0 0 1 .   0 0 1 0 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〉 Copyright© Leandro Nunes de Castro 444
  • 445.
    Fundamentos de ComputaçãoNatural Uma propriedade importante da parta CNOT é que ela pode ser usada para criar emaranhamento. Exemplo: 1 1 CNOT 2 (|00〉 + |10〉) = 2 (|00〉 + |11〉). Porta de Toffoli ou controlled-controlled-NOT: CCNOT |000〉 = |000〉 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 CCNOT |001〉 = |001〉   CCNOT |010〉 = |010〉 0 0 1 0 0 0 0 0 CCNOT |011〉 = |011〉   0 0 0 1 0 0 0 0 CCNOT |100〉 = |100〉 CCNOT =  0 0 0 0 1 0 0 0 CCNOT |101〉 = |101〉   CCNOT |110〉 = |111〉 0 0 0 0 0 1 0 0 CCNOT |111〉 = |110〉 0 0 0 0 0 0 0 1   0  0 0 0 0 0 1 0  Copyright© Leandro Nunes de Castro 445
  • 446.
    Fundamentos de ComputaçãoNatural 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? Copyright© Leandro Nunes de Castro 446
  • 447.
    Fundamentos de ComputaçãoNatural • 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: x H y |β xy〉 ⊕ Figura 50: Circuito quântico para gerar os estados Bell (pares EPR). Copyright© Leandro Nunes de Castro 447
  • 448.
    Fundamentos de ComputaçãoNatural Estado inicial H(primeiro qubit, x) CNOT(primeiro qubit, x) |00〉 1 2 (| 0〉+ | 1〉 ) | 0〉 1 2 (| 00〉+ | 11〉 ) |01〉 1 2 (| 1〉+ | 0〉 ) | 1〉 1 2 (| 10〉+ | 01〉 ) |10〉 1 2 (| 0〉− | 1〉 ) | 0〉 1 2 (| 00〉− | 11〉 ) |11〉 1 2 (| 0〉− | 1〉 ) | 1〉 1 2 (| 01〉− | 10〉 ) 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, Copyright© Leandro Nunes de Castro 448
  • 449.
    Fundamentos de ComputaçãoNatural 1 | x0 〉 = (| 00〉+ | 11〉 ) . 2 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. 1 0 0 1   0 1 1 0  I = 0 1  X = 1 0 Y =  − 1 0 Z = 0 − 1         Copyright© Leandro Nunes de Castro 449
  • 450.
    Fundamentos de ComputaçãoNatural Valor codificado Estado inicial Transformação Novo estado 0 (I ⊗ I) |x0〉 1 2 (| 00〉+ | 11〉 ) 1 2 (| 10〉+ | 01〉 ) |x0〉 = 2 (| 00〉+ | 11〉 ) 1 (X ⊗ I) |x0〉 1 2 (Y ⊗ I) |x0〉 1 2 (− | 10〉+ | 01〉 ) 3 (Z ⊗ I) |x0〉 1 2 (| 00〉− | 11〉 ) • 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. Copyright© Leandro Nunes de Castro 450
  • 451.
    Fundamentos de ComputaçãoNatural Estado inicial CNOT |xi〉 H(1º. qubit) |x0〉 = 1 2 (| 00〉+ | 11〉 ) 1 2 (| 00〉+ | 10〉 ) = 1 2 (| 0〉+ | 1〉 ) | 0〉 |0〉 |x1〉 = 1 2 (| 10〉+ | 01〉 ) 1 2 (| 11〉+ | 01〉 ) = 1 2 (| 1〉+ | 0〉 ) | 1〉 |0〉 |x2〉 = 1 2 (− | 10〉+ | 01〉 ) 1 2 (− | 11〉+ | 01〉 ) = 1 2 (− | 1〉+ | 0〉 ) | 1〉 |1〉 |x3〉 = 1 2 (| 00〉− | 11〉 ) 1 2 (| 00〉− | 10〉 ) = 1 2 (| 0〉− | 1〉 ) | 0〉 |1〉 • A codificação densa pode ser realizada através do circuito apresentado abaixo: x y H T H Meas x |β 00〉 ⊕ ⊕ Meas y Figura 51: Circuito quântico para realizar a codificação densa. Copyright© Leandro Nunes de Castro 451
  • 452.
    Fundamentos de ComputaçãoNatural 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. Copyright© Leandro Nunes de Castro 452
  • 453.
    Fundamentos de ComputaçãoNatural • 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〉 = 1 2 (| 00〉+ | 11〉 ) 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〉) 1 2 (| 00〉+ | 11〉 ) = 1 2 (c1 | 0〉 (| 00〉+ | 11〉 ) + c 2 | 1〉 (| 00〉+ | 11〉 ) ) = 1 2 (c1 | 000〉 + c1 | 011〉 + c 2 | 100〉 + c 2 | 111〉 ) . Copyright© Leandro Nunes de Castro 453
  • 454.
    Fundamentos de ComputaçãoNatural • 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〉) = [ (H ⊗ I ⊗ I) 1 2 (c1 | 000〉 + c1 | 011〉 + c 2 | 110〉 + c 2 | 101〉 ) = ] (H ⊗ I ⊗ I )[ 1 ] 2 (c1 | 0〉 (| 00〉+ | 11〉 ) + c 2 | 1〉 (| 10〉+ | 01〉 ) ) = 1 2[c1 (| 0〉+ | 1〉 )(| 00〉+ | 11〉 ) + c 2 (| 0〉− | 1〉 )(| 10〉+ | 01〉 )] = (23) 1 2 [| 00〉 (c1 | 0〉 + c 2 | 1〉 )+ | 01〉 (c1 | 1〉 + c 2 | 0〉 ) + + | 10〉 (c1 | 0〉 − c 2 | 1〉 )+ | 11〉 (c1 | 1〉 − c 2 | 0〉 )] . • Em seguida Alice mede seus dois qubits, promovendo um colapso do estado em uma das quatro possibilidades {00,01,10,11}. Copyright© Leandro Nunes de Castro 454
  • 455.
    Fundamentos de ComputaçãoNatural • 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 |x〉 H Meas H ⊕ Meas |β 00〉 ⊕ T |x〉 Figura 52: Circuito quântico para realizar teletransporte. Copyright© Leandro Nunes de Castro 455
  • 456.
    Fundamentos de ComputaçãoNatural • 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. Copyright© Leandro Nunes de Castro 456