2012: computação natural - slides do curso

456
Fundamentos de Computação Natural Copyright© Leandro Nunes de Castro 1 Fundamentos de Computação Natural Slides do Curso Completo Copyright © 2012 by Leandro Nunes de Castro Este material foi desenvolvido com base na seguinte referência bibliográfica: DE CASTRO, L. N. Fundamentals of Natural Computing: Basic Concepts, Algorithms, and Applications. CRC Press, 2006. A primeira versão destes slides foi gerada em 2003 ainda durante a escrita da referência básica do curso, quando a disciplina “Computação Natural” foi introduzida no Programa de Pós-Graduação em Engenharia Elétrica da Unicamp. Partes deste material foram desenvolvidas em conjunto com o Prof. Fernando José Von Zuben da Unicamp, a quem atribuo os devidos créditos e agradecimentos. Versões mais atuais do material são utilizadas em disciplinas de pós-graduação de vários programas nacionais, incluindo o Programa de Pós- Graduação em Engenharia Elétrica (PPGEE) da Universidade Presbiteriana Mackenzie, instituição sede do autor principal. O uso deste material para fins acadêmicos é livre e gratuito, desde que sejam mantidas as informações originais de autoria. As referências citadas e não listadas podem ser encontradas no livro texto da disciplina. O Tópico 6 (Sistemas Imunológicos Artificiais) pode ser ministrado usando um ou mais dos outros conjuntos de slides disponíveis no Slideshare do autor: http://www.slideshare.net/lndecastro . Mais informações sobre o tema podem ser encontradas no site do Laboratório de Computação Natural (LCoN): http://www.mackenzie.br/lcon.html .

Upload: leandro-de-castro

Post on 05-Dec-2014

2.359 views

Category:

Technology


16 download

DESCRIPTION

Conjunto completo de slides usado na disciplina Computação Natural do Programa de Pós-Graduação em Engenharia Elétrica da Universidade Mackenzie. Fonte de referência: L. N. de Castro, "Fundamentals of Natural Computing: Basic Concepts, Algorithms, and Applications", CRC Press, 2006.

TRANSCRIPT

Page 1: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 1

Fundamentos de Computação Natural

Slides do Curso Completo

Copyright© 2012 by Leandro Nunes de Castro

Este material foi desenvolvido com base na seguinte referência bibliográfica: DE CASTRO, L. N. Fundamentals of Natural Computing: Basic Concepts, Algorithms, and Applications. CRC Press, 2006. A primeira versão destes slides foi gerada em 2003 ainda durante a escrita da referência básica do curso, quando a disciplina “Computação Natural” foi introduzida no Programa de Pós-Graduação em Engenharia Elétrica da Unicamp. Partes deste material foram desenvolvidas em conjunto com o Prof. Fernando José Von Zuben da Unicamp, a quem atribuo os devidos créditos e agradecimentos. Versões mais atuais do material são utilizadas em disciplinas de pós-graduação de vários programas nacionais, incluindo o Programa de Pós-Graduação em Engenharia Elétrica (PPGEE) da Universidade Presbiteriana Mackenzie, instituição sede do autor principal. O uso deste material para fins acadêmicos é livre e gratuito, desde que sejam mantidas as informações originais de autoria. As referências citadas e não listadas podem ser encontradas no livro texto da disciplina. O Tópico 6 (Sistemas Imunológicos Artificiais) pode ser ministrado usando um ou mais dos outros conjuntos de slides disponíveis no Slideshare do autor: http://www.slideshare.net/lndecastro. Mais informações sobre o tema podem ser encontradas no site do Laboratório de Computação Natural (LCoN): http://www.mackenzie.br/lcon.html.

Page 2: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 2

Sumário do Curso Tópico 1: Fundamentos de Computação Natural ........................................................................ 11

1. Introdução............................................................................................................................ 11

1.1. Motivação ................................................................................................................... 12

2. Filosofia da Computação Natural e suas Subáreas ............................................................. 18

2.1. Computação Inspirada na Biologia ............................................................................ 20

2.2. Simulação e Emulação de Fenômenos Naturais ........................................................ 21

2.3. Computação com Matéria-Prima Natural .................................................................. 21

3. Quando Usar a Computação Natural .................................................................................. 22

Tópico 2: Conceitualização .......................................................................................................... 24

1. A Dificuldade da Conceitualização .................................................................................... 24

2. Fenômenos Naturais, Modelos e Metáforas ....................................................................... 24

3. Da Natureza à Computação................................................................................................. 30

4. Conceitos Gerais ................................................................................................................. 32

4.1. Indivíduos, Entidades e Agentes ................................................................................ 32

4.2. Paralelismo e Distributividade ................................................................................... 35

4.3. Interatividade.............................................................................................................. 36

4.4. Adaptação ................................................................................................................... 40

4.5. Realimentação (Feedback) ......................................................................................... 43

4.6. Auto-Organização ...................................................................................................... 46

Page 3: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 3

4.7. Complexidade ............................................................................................................ 48

4.8. Vitalismo e Reducionismo ......................................................................................... 51

4.9. Abordagens Bottom-Up e Top-Down ....................................................................... 55

4.10. Determinismo, Caos e Fractais .................................................................................. 56

Tópico 3: Computação Evolutiva ................................................................................................ 60

1. A Origem das Espécies ....................................................................................................... 60

2. A Ideia Perigosa de Darwin ................................................................................................ 63

2.1. A Seleção Natural como um Processo Algorítmico .................................................. 66

2.2. Espaço de Buscas (Design Space) ............................................................................. 68

2.3. Biologia é Engenharia ................................................................................................ 69

3. Base Biológica .................................................................................................................... 71

3.1. Hereditariedade .......................................................................................................... 71

3.2. Do Darwinismo ao Neodarwinismo .......................................................................... 75

3.3. Terminologia biológica .............................................................................................. 76

3.4. Fenótipo x Genótipo................................................................................................... 80

3.5. Adaptação evolutiva ................................................................................................... 82

3.6. Reprodução assexuada e sexuada .............................................................................. 82

3.7. Mutação ...................................................................................................................... 86

4. Resolução de Problemas via Métodos de Busca................................................................. 89

5. Algoritmos Genéticos ......................................................................................................... 94

5.1. Representação (Estrutura de Dados) .......................................................................... 95

Page 4: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 4

5.2. Mecanismo de Seleção ............................................................................................... 96

5.3. Operador de Recombinação (Crossover Simples) ..................................................... 98

5.4. Operador de Mutação ............................................................................................... 100

6. Algoritmo Genético Modificado ....................................................................................... 102

7. Da Biologia para a Computação Evolutiva ...................................................................... 104

8. Escopo da Computação Evolutiva .................................................................................... 105

8.1. Aplicações em Planejamento ................................................................................... 105

8.2. Aplicações em Projeto ............................................................................................. 107

8.3. Aplicações em Simulação e Identificação ............................................................... 108

8.4. Aplicações em Controle ........................................................................................... 109

8.5. Aplicações em Classificação ................................................................................... 110

Tópico 4: Redes Neurais Artificiais ........................................................................................... 111

1. Base Biológica .................................................................................................................. 111

1.1. O Sistema Nervoso................................................................................................... 112

1.2. Base Biológica e Física da Aprendizagem e Memória ............................................ 122

2. Redes Neurais Artificiais .................................................................................................. 123

2.1. O Neurônio Genérico em RNAs .............................................................................. 128

2.2. Arquiteturas de Rede ................................................................................................ 135

2.3. Paradigmas de Aprendizagem ................................................................................. 142

3. Alguns Algoritmos de Aprendizado Supervisionado ....................................................... 153

3.1. Perceptron ................................................................................................................ 153

Page 5: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 5

Tópico 5: Inteligência de Enxame ............................................................................................. 166

1. Introdução.......................................................................................................................... 166

2. Algumas Ideias sobre Insetos Sociais ............................................................................... 169

2.1. Curiosidades sobre as formigas ............................................................................... 173

3. Colônias de Formigas ........................................................................................................ 174

3.1. Coleta de Alimento pelas Formigas ......................................................................... 176

3.2. Otimização por Colônias de Formigas .................................................................... 180

3.3. Uma Simulação de Vida Artificial .......................................................................... 182

3.4. Algoritmo Simples de Otimização por Colônias de Formigas ................................ 185

3.5. Algoritmo Genérico de Otimização por Colônias de Formigas .............................. 188

3.6. Exemplo de Aplicação ............................................................................................. 191

3.7. Clusterização de Corpos e Organização de Larvas ................................................. 197

3.8. Clusterização por Colônias de Formigas ................................................................. 199

3.9. Algoritmo Simples de Clusterização (ACA) ........................................................... 200

3.10. Exemplos de Aplicação ............................................................................................ 207

4. Robótica de Enxame ......................................................................................................... 214

4.1. Coleta de Alimento pelas Formigas ......................................................................... 218

4.2. Clusterização de Objetos .......................................................................................... 222

4.3. Transporte Coletivo de Presas ................................................................................. 226

5. Adaptação Social do Conhecimento ................................................................................. 236

5.1. Algoritmo de Otimização por Partículas ................................................................. 238

Page 6: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 6

5.2. Escopo de Aplicação ................................................................................................ 244

5.3. De Sistemas Sociais a Enxames de Partículas ......................................................... 245

Tópico 7: Geometria Fractal da Natureza .................................................................................. 246

1. Introdução.......................................................................................................................... 248

2. A Geometria Fractal da Natureza ..................................................................................... 249

2.1. Autossimilaridade .................................................................................................... 251

2.2. Alguns Fractais Pioneiros ........................................................................................ 253

2.3. Dimensão e Dimensão Fractal ................................................................................. 259

3. Autômatos Celulares ......................................................................................................... 266

3.1. O Exemplo Mais Simples ........................................................................................ 268

3.2. Definição Formal ..................................................................................................... 269

3.3. Escopo de Aplicação ................................................................................................ 271

4. Sistemas L (L-Systems) .................................................................................................... 272

4.1. Conceitos sobre Sistemas de Produção e Gramáticas ............................................. 272

4.2. Sistemas DOL .......................................................................................................... 274

4.3. Gráfico Tartaruga (Turtle Graphics) ........................................................................ 277

4.4. Modelos de Arquiteturas de Plantas ........................................................................ 280

4.5. Escopo dos Sistemas L ............................................................................................. 284

5. Sistemas de Funções Iterativas ......................................................................................... 284

5.1. Fundamentos Teóricos ............................................................................................. 285

5.2. Sistemas de Funções Iterativas (IFS) ....................................................................... 288

Page 7: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 7

5.3. Autosimilaridade e Autoafinidade Revisitadas ....................................................... 293

6. Movimento Browniano ..................................................................................................... 294

6.1. Fractais Aleatórios na Natureza e Movimento Browniano ..................................... 295

6.2. Movimento Browniano Fracionário ........................................................................ 303

6.3. Escopo do MBF ....................................................................................................... 308

7. Sistemas de Partículas ....................................................................................................... 310

7.1. Conceitos Básicos .................................................................................................... 311

7.2. Modelo Básico ......................................................................................................... 313

7.3. Simulando Fogos de Artifício .................................................................................. 315

7.4. Escopo dos Sistemas de Partículas .......................................................................... 317

8. Da Geometria Natural à Geometria Fractal ...................................................................... 317

9. Escopo da Geometria Fractal ............................................................................................ 319

Tópico 8: Vida Artificial ............................................................................................................ 322

1. Introdução.......................................................................................................................... 322

1.1. Algumas Definições ................................................................................................. 322

1.2. Weak ALife × Strong ALife .................................................................................... 325

2. Conceitos e Características da ALife ................................................................................ 326

2.1. ALife e Computação Inspirada na Natureza ............................................................ 326

2.2. Vida e Organismos Artificiais ................................................................................. 327

2.3. Vida Artificial e Biologia ......................................................................................... 330

2.4. Modelos e Características da Vida Artificial Computacional ................................. 333

Page 8: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 8

2.5. Vida Artificial como Sistemas Complexos Adaptativos ......................................... 334

3. Exemplos de Projetos de Vida Artificial .......................................................................... 335

3.1. Coletivos: Revoadas, Grupos e Cardumes .............................................................. 335

3.2. Biomorphs (Bioformas) ........................................................................................... 338

3.3. Vírus Computacionais .............................................................................................. 343

3.4. Síntese de Comportamentos Emocionais................................................................. 346

3.5. O Robô Cachorro AIBO da Sony® .......................................................................... 350

3.6. Construção de Ninhos de Abelhas e Vespas ........................................................... 352

3.7. Criaturas ................................................................................................................... 357

3.8. Peixes Artificiais ...................................................................................................... 359

3.9. Tartarugas, Cupins e Engarrafamentos de Trânsito ................................................ 362

3.10. Simulações com Autômatos Celulares .................................................................... 363

3.11. Framsticks ................................................................................................................ 371

4. Escopo da Vida Artificial .................................................................................................. 372

Tópico 9: Computação de DNA ................................................................................................ 373

1. Introdução.......................................................................................................................... 373

1.1. Computação de DNA x Computadores Tradicionais .............................................. 374

2. Conceitos Básicos de Biologia Molecular ........................................................................ 375

2.1. A Molécula de DNA ................................................................................................ 375

2.2. Manipulando o DNA ................................................................................................ 381

3. Modelos Baseados em Filtragem ...................................................................................... 387

Page 9: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 9

3.1. O Experimento de Adleman .................................................................................... 387

3.2. A Solução de Lipton para o Problema SAT ............................................................ 396

3.3. Linguagem de Programação de Tubos de Ensaio .................................................... 403

4. Um Breve Resumo dos Modelos Formais ........................................................................ 411

5. Computadores Universais de DNA ................................................................................... 414

6. Escopo da Computação de DNA ...................................................................................... 419

7. Discussão ........................................................................................................................... 421

Tópico 10: Computação Quântica ............................................................................................. 424

1. Princípios de Mecânica Quântica...................................................................................... 424

1.1. A Notação de Dirac .................................................................................................. 424

1.2. Superposição Quântica ............................................................................................. 426

1.3. Produtos Tensores .................................................................................................... 426

1.4. Emaranhamento (Entanglement) ............................................................................. 428

1.5. Evolução (Dinâmica) ............................................................................................... 430

1.6. Medição .................................................................................................................... 432

1.7. Teorema ‘No-Cloning’ ............................................................................................. 433

2. Informação Quântica ......................................................................................................... 435

2.1. Bits e Bits Quânticos ................................................................................................ 435

2.2. Múltiplos Bits e Qubits ............................................................................................ 437

2.3. Portas Lógicas e Portas Quânticas ........................................................................... 440

2.4. Circuitos Quânticos .................................................................................................. 446

Page 10: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 10

3. Exemplos de Aplicação ..................................................................................................... 448

3.1. Codificação Densa ................................................................................................... 449

3.2. Teletransporte Quântico ........................................................................................... 452

Page 11: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 11

Tópico 1: Fundamentos de Computação Natural

1. Introdução

• Durante os primeiros anos da humanidade os recursos naturais eram usados para

alimentação e proteção.

• Após algum tempo aprendemos a modificar e controlar a natureza, produzindo

alimentos, criando animais, construindo artefatos, controlando o fogo, etc.

• Mais recentemente passamos a observar e estudar fenômenos físicos, químicos e

biológicos com o objetivo de compreender melhor o funcionamento da natureza.

o Exemplo: estudos sobre as leis do movimento e gravidade nos permitiram

projetar aviões.

• Apesar de todos os avanços anteriores, foi o desenvolvimento tecnológico que

alterou drasticamente nossa interação com a natureza.

Page 12: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 12

• Ela permitiu o uso da natureza como fonte de inspiração (metáfora) para o

desenvolvimento de técnicas de solução de problemas; simular e emular

fenômenos e mecanismos naturais em computador; e utilizarmos novos materiais

para computar.

1.1. Motivação

• A computação natural é constituída por novas abordagens de computação

caracterizadas por uma maior proximidade com a natureza.

• Seus resultados e transformações já afetam nossas vidas, mesmo sem percebermos,

e podem vir a ser ainda mais marcantes:

o A computação natural já se encontra em máquinas de lavar roupas, trens,

brinquedos, aparelhos de ar-condicionado, filmes, jogos eletrônicos, etc.

• Existem várias razões para se estudar a computação natural:

o Possibilidade de desenvolver novas ferramentas computacionais para a solução

de problemas complexos (de engenharia);

Page 13: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 13

o A possibilidade de projetar dispositivos (computacionais) que simulam, emulam,

modelam e descrevem sistemas naturais;

o A possibilidade de sintetizar novas formas de vida; e

o A possibilidade de utilizar materiais e mecanismos naturais, como cadeias de

DNA e dispositivos quânticos, como novos paradigmas de computação em

substituição aos computadores atuais baseados em silício.

• Exemplos de objetos inspirados na natureza:

o Velcro (plantas); Coletes a prova de bala (teias de aranha); Sonares (morcegos);

Aviões (pássaros); Submarinos (peixes); etc.

• Além disso, a observação da natureza permitiu o desenvolvimento de diversas leis

e teorias sobre como a natureza opera. Por exemplo, as leis da física:

o Leis da termodinâmica (conservação, entropia, e zero absoluto); leis do

movimento (leis de Newton); leis do eletromagnetismo (leis de Maxwell); etc.

Page 14: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 14

• A computação natural pode ser vista como uma versão computacional do processo

de extração de ideias da natureza para o desenvolvimento de sistemas

“artificiais”, ou então a utilização de materiais e mecanismos naturais para

realizar computação.

• É importante salientar que a palavra “artificial” neste contexto significa apenas que

os sistemas são desenvolvidos por seres humanos ao invés de serem resultantes de

processos naturais.

• A computação natural pode ser dividida em três grandes partes:

o Computação inspirada na natureza: utiliza a natureza como fonte de inspiração

para o desenvolvimento de novas técnicas de solução de problemas;

o Simulação e emulação da natureza utilizando a computação: trata-se

basicamente de um processo de síntese que objetiva criar formas, padrões e

comportamentos similares àqueles conhecidos na natureza. Além disso, algumas

áreas visam o desenvolvimento de organismos artificiais; e

Page 15: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 15

o Computação com materiais naturais: corresponde ao uso de um novo tipo de

matéria prima para computar. Trata-se de um novo paradigma de computação

que vem com o objetivo principal de substituir a tecnologia de silício empregada

atualmente.

Computação Natural

PARTE I Computação Inspirada

na Natureza

PARTE II Simulação e Emulação

da Natureza

PARTE III Computação com Novos Materiais Naturais

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

Page 16: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 16

• Sendo assim, é possível definir a computação natural como sendo a linha de

pesquisa que, baseada ou inspirada na natureza: 1) permite o desenvolvimento de

novas ferramentas de computação (em software e/ou hardware) para a solução de

problemas; 2) resulta em processos de síntese de padrões, formas,

comportamentos e organismos; e 3) que utiliza matéria-prima natural para o

desenvolvimento de novos tipos de computadores.

• Portanto, a computação natural é uma linha de pesquisa que depõe contra a

especialização de disciplinas.

• Ela mostra, com suas três principais áreas de atuação, que o conhecimento em

diversas linhas de pesquisa é necessário para uma maior compreensão da natureza,

para o estudo e simulação de sistemas e processos naturais, e para o

desenvolvimento de novos paradigmas de computação.

• Físicos, químicos, engenheiros, matemáticos, biólogos, etc., todos contribuem e

trocam ideias para o desenvolvimento da computação natural.

Page 17: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 17

• É importante salientar que o desenvolvimento da computação natural também

resulta em benefícios para as ciências naturais (biologia, química e física).

o Diversas ferramentas, algoritmos e sistemas computacionais desenvolvidos em

computação natural são empregadas para solucionar problemas em áreas como

biologia, bioinformática, imunologia, etc., e também podem ser empregados

como modelos abstratos de fenômenos naturais, podendo resultar assim em um

melhor entendimento da natureza.

• Este curso visa fornecer uma visão geral dos fundamentos da ampla área de

computação natural, apresentando conceitos básicos, pseudocódigos para

algoritmos, discussões teóricas e filosóficas sobre temas específicos, guiando os

alunos para a literatura relevante e sites na Internet onde procurar informações

de qualidade sobre os tópicos abordados, e propondo uma série de atividades

teóricas, filosóficas e computacionais para garantir uma maior fixação dos

conceitos abordados.

Page 18: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 18

• Este curso não trata os conceitos mais avançados das áreas de computação

natural estudadas.

2. Filosofia da Computação Natural e suas Subáreas

• Como é possível descobrir regras e mecanismos naturais que podem ser úteis sob

uma perspectiva computacional?

• As explicações científicas têm sido dominadas pela formulação de princípios e

regras que governam o comportamento de um dado sistema (fenômeno).

• A computação natural geralmente enfatiza modelos altamente simplificados e

abstratos da natureza. (A lâmina de Occam – Occam’s razor)

• As razões para um tratamento simplificado são várias:

o Muitas simplificações são necessárias para tornar a computação tratável;

o Pode ser vantajoso destacar as características mínimas de um sistema que

permitem o uso de algum de seus aspectos particulares;

Page 19: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 19

o O uso de ‘modelos’ simplificados é suficiente para atingir os objetivos

esperados; e

o Nem sempre são conhecidos os detalhes do fenômeno/sistema natural

observado/estudado.

• Foco do curso:

o Extração de ideias e abstrações;

o Aspectos de projeto da computação natural; e

o Desenvolvimento e uso de ferramentas computacionais inspiradas na natureza.

Page 20: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 20

Estu

dos

experim

enta

is

Estu

dos

teó

ricos

Observações empíricas

Outras linhas de pesquisa

Computação natural

Novas formas de resolver problemas

Síntese de fenômenos

Novos paradigmas de

computação

Figura 2: Integração de linhas de pesquisa para o desenvolvimento da computação natural.

2.1. Computação Inspirada na Biologia

• Este curso irá abordar quatro tópicos da computação inspirada na biologia:

o Computação evolutiva

Page 21: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 21

o Inteligência de Enxame

o Neurocomputação

o Sistemas Imunológicos Artificiais

2.2. Simulação e Emulação de Fenômenos Naturais

• Tópicos a serem abordados:

o Vida artificial

o Geometria fractal

2.3. Computação com Matéria-Prima Natural

• Tópicos a serem abordados:

o Computação de DNA

o Computação quântica

Page 22: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 22

3. Quando Usar a Computação Natural

• As técnicas que compõem a computação natural correspondem, quase

invariavelmente, a técnicas alternativas.

• Isso significa que, em muitos casos, há outras formas de resolver o mesmo

problema, sintetizar o mesmo fenômeno e realizar a mesma computação.

• Portanto, é necessário investigar com cuidado se há ou não a necessidade de

aplicar uma técnica de computação natural a um dado problema.

• Algumas dicas. A computação natural pode ser usada quando:

o O problema a ser resolvido é complexo; ou seja, envolve um grande número de

variáveis, uma grande quantidade de possíveis soluções, é dinâmico, etc.

o Não é possível garantir que uma solução potencial encontrada é ótima, mas é

possível criar medidas de comparação entre soluções candidatas;

o O problema a ser resolvido não pode ser (apropriadamente) modelado, assim

como problemas de reconhecimento e classificação de padrões. Em alguns

Page 23: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 23

casos, embora não seja possível modelar o problema é possível empregar

exemplos (amostras) para ‘ensinar’ o sistema a resolver o problema;

o Uma única solução não é suficiente, ou seja, quando diversidade é importante;

o Sistemas físicos, químicos e biológicos precisam ser modelados ou emulados

com realismo. Nem sempre a geometria Euclidiana é suficiente;

o Comportamentos e padrões naturais precisam ser reproduzidos com realismo;

o Os limites da tecnologia computacional atual forem atingidos.

Page 24: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 24

Tópico 2: Conceitualização

1. A Dificuldade da Conceitualização

• Existe uma grande quantidade de conceitos envolvidos em computação natural.

• Muitos destes conceitos são conhecidos em outras linhas de pesquisa e podem ter

significados diferentes.

• Um dos aspectos que deve ficar claro ao estudar este tópico é a necessidade de

sermos cuidadosos com a terminologia empregada em trabalhos técnicos, como

textos de tese, artigos, etc.

2. Fenômenos Naturais, Modelos e Metáforas

• O enfoque deste curso está na utilização da natureza como fonte de inspiração para

a computação natural.

Page 25: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 25

• O termo modelo é geralmente utilizado para se referir a uma descrição

(esquemática) de um sistema, uma teoria, ou um fenômeno, levando em

consideração suas propriedades conhecidas ou inferidas, e que pode ser utilizado

para um estudo mais aprofundado sobre suas características.

• Nas ciências naturais (biologia, química e física), modelos geralmente são

utilizados com vários propósitos:

o Através da modelagem e identificação de um sistema é possível oferecer uma

melhor descrição quantitativa dele e seus resultados experimentais;

o Modelos podem ajudar na análise crítica de hipóteses e na compreensão dos

mecanismos naturais envolvidos;

o Modelos também podem ajudar na predição de comportamentos e no projeto de

experimentos;

o Modelos podem ser utilizados para simular e estimular novas abordagens para o

estudo de sistemas naturais; e

Page 26: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 26

o Modelos podem permitir recuperar informações obtidas em experimentos.

• A palavra metáfora se origina do grego e significa “transferência”. Uma metáfora

corresponde ao uso de uma linguagem referente a um objeto A para designar outro

objeto B, de forma a utilizar B para caracterizar A. Metáforas geralmente são vistas

como comparações implícitas.

o Exemplo 1: ela é uma flor → significando, p. ex.: ela é bela como uma flor.

o Exemplo 2: “sistemas imunológicos computacionais”.

• Embora metáforas possam sugerir comparações, elas são geralmente atribuições de

propriedades entre entidades.

o Exemplo: “redes neurais artificiais” possuem características inspiradas no

sistema neural humano.

• Em termos computacionais, existe uma diferença importante entre um modelo e

uma metáfora.

Page 27: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 27

o Enquanto os modelos visam descrições quantitativas de algum fenômeno,

metáforas constituem geralmente abstrações e simplificações de um sistema ou

processo com o objetivo de desenvolver outro sistema ou processo.

• Um experimento pode ser considerado como um procedimento realizado em um

ambiente controlado, com o objetivo de coletar observações, dados, ou fatos, que

demonstrem fatos conhecidos ou teorias, ou que permitam e elaboração e/ou teste

de teorias e hipóteses.

• Exemplo de um experimento biológico: utilização de ratos para verificação da

potencialidade de algumas drogas na redução da pressão arterial.

• Tradicionalmente, experimentos biológicos podem ser realizados in vitro ou in

vivo.

o Atualmente eles também podem ser realizados in silico utilizando modelos.

• Há importantes diferenças conceituais entre os termos experimento, simulação,

emulação e realização (realization).

Page 28: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 28

• Uma simulação tem como principal objetivo predizer aspectos comportamentais de

um fenômeno através da criação de um modelo aproximado deste fenômeno.

• Isso pode ser feito através da criação de um modelo físico, escrevendo-se um

programa computacional, utilizando-se um pacote de simulação específico, etc.

o Exemplo: simulação de acidente de automóveis.

• Todos os passos de uma simulação devem ser cuidadosamente verificados de

forma a garantir uma fiel reprodução do fenômeno simulado.

• A realização de um sistema ou organismo corresponde ao desenvolvimento de um

modelo material literal que implementa certas funções do sistema ou organismo

original.

• Uma realização é avaliada, primariamente, pela sua fidelidade como uma

implementação de uma especificação de projeto.

o Um sistema ou função é usado para realizar um outro quando ele se comporta

exatamente como o outro.

Page 29: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 29

• Emular um sistema é imitar ou reproduzir suas funções usando outro sistema ou

meio.

o Exemplo: emular um computador através de um programa executado em outro

computador.

• Emulamos um sistema como uma forma de substituí-lo, enquanto simulamos um

sistema se o objetivo é, por exemplo, analisá-lo ou estudá-lo.

• Devido às diferenças de objetivo e níveis de detalhes incorporados, a maioria dos

“modelos” propostos em computação natural é denominada metáfora, simulação,

emulação, ou simplesmente abstração da natureza.

• Além disso, a computação natural geralmente emprega abordagens distintas

daquelas comuns nas ciências naturais.

• A biologia teórica costuma desenvolver modelos baseados em equações

diferencias ordinárias (EDO) e/ou simulações de Monte Carlo.

Page 30: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 30

o Exemplo de EDO: modelo de uma colônia de formigas seguindo uma trilha de

feromônio. Quanto mais feromônio uma formiga encontra, mais rápido ela anda:

dx/dt = kP,

onde dx/dt corresponde a velocidade (dx: espaço, dt: tempo), k é uma constante

de proporcionalidade, e P é o nível de feromônio.

3. Da Natureza à Computação

• Na maioria dos casos, o primeiro passo para se desenvolver uma ferramenta de

computação natural é observar a natureza e seus modelos teóricos objetivando

encontrar algum mecanismo passível de simulação, emulação, ou implementação

computacional.

o Exemplo: objetivando criar um cachorro “artificial” que se comporte de forma

similar a um cachorro doméstico, podemos observar comportamentos básicos e

instintivos de um cachorro real.

Page 31: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 31

• Entretanto, uma das dificuldades em se criar novas abordagens de computação

natural reside no fato de que geralmente é difícil compreender de forma direta

como a natureza funciona.

o Exemplo: embora já conheçamos alguns mecanismos básicos de processamento

e transmissão de sinais no cérebro humano, está muito longe do nosso alcance

desvendar todos seus mistérios, principalmente algumas características

cognitivas como amar e sentir ódio.

• A utilização da natureza como fonte de inspiração gera questões importantes de

ordem prática:

o Será que imitar a natureza é a melhor abordagem?

o Até que ponto o sistema desenvolvido deve ser fiel à sua fonte de inspiração

(natureza)?

• Projetar um mecanismo de computação natural não deixa de ser uma tarefa de

engenharia.

Page 32: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 32

o Propriedades e dispositivos físicos, mecânicos, estruturais e comportamentais da

natureza são utilizados para desenvolver ferramentas de solução de problemas,

novas formas de vida, e novos paradigmas de computação.

• Embora seja muito difícil fornecer uma estrutura formal e genérica para o

desenvolvimento de ferramentas de computação natural, boa parte de suas diversas

linhas de pesquisa permite a especificação de um conjunto de características e

procedimentos básicos de projeto.

4. Conceitos Gerais

4.1. Indivíduos, Entidades e Agentes

• Existe uma vasta literatura sobre agentes e teoria de agentes.

• Uma das principais características da computação natural está na coletividade:

populações de indivíduos, colônias de insetos, revoadas de pássaros, genomas,

repertórios de células, redes de neurônios, etc.

Page 33: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 33

• Todos estes fenômenos, processos, sistemas, etc., são compostos por diversas

entidades ou componentes.

• Neste curso, a palavra agente será utilizada, juntamente com as palavras entidade e

componente para descrever os vários elementos que compõem um determinado

sistema.

• Atualmente, o termo agente é utilizado para referenciar qualquer coisa entre uma

mera sub-rotina de um programa computacional até um organismo inteligente.

• Intuitivamente, para algo ser considerado um agente ele deve apresentar algum

grau de autonomia ou identidade, ou seja, ele deve ser distinguível do seu ambiente

por alguma barreira física, química ou temporal.

• É interessante perceber que num sistema baseado em agentes simples, interagindo

localmente, é possível observar um comportamento sinergético que resulta em

comportamentos globais muito mais complexos do que aqueles observados nos

agentes individuais.

Page 34: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 34

• A teoria de agentes apresenta uma série de definições sobre o que é um agente:

o “Um agente é qualquer coisa que pode perceber o ambiente através de seus

sensores e atuar neste ambiente através de seus atuadores.” (Russel & Norvig,

1995)

o “Um agente deve apresentar as seguintes características: autonomia, habilidade

social, reatividade, pró-atividade.” (Wooldridge & Jennings, 1995)

o “Um agente autônomo é um sistema situado dentro e que faz parte de um

ambiente, que é capaz de sentir e atuar neste ambiente, ao longo do tempo, em

busca da realização de seus próprios objetivos.” (Franklin & Graesser, 1997)

• Tipos de agentes: biológicos (formigas, neurônios, etc.), físicos (robôs, etc.),

virtuais (Tamagotchi, etc.), etc.

Page 35: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 35

Figura 3: (a) Agentes naturais. (b) Agente artificial.

4.2. Paralelismo e Distributividade

• Existem vários exemplos conhecidos envolvendo o processamento de mais de um

evento ou processo ao mesmo tempo e de forma distribuída. O processamento

paralelo e distribuído compõe boa parte da natureza.

o Exemplos: organismos sociais, genomas, evolução das espécies, etc.

Page 36: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 36

4.3. Interatividade

• Os componentes da maioria dos sistemas naturais possuem a capacidade de

interagir com outros componentes e com o ambiente.

• Podem existir diversas formas de interação entre indivíduos: reprodutiva,

simbiótica, competitiva, cooperativa, parasítica, etc.

• Em um nível macroscópico, um resultado desta interatividade é a disputa por uma

quantidade limitada de recursos naturais, ou seja, a luta pela sobrevivência.

o Indivíduos mais bem adaptados ao seu ambiente local possuem maior chances

de sobrevivência e reprodução, propagando assim seu material genético.

• Sistemas, organismos e comportamentos complexos são resultados da interação

(dentre outros processos) entre elementos.

• A interação entre elementos e partes de um sistema também permite a

redistribuição de tarefas.

o Exemplo: recuperação de pacientes com cérebros danificados.

Page 37: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 37

• Existem alguns tipos particulares de interação entre elementos que são importantes

para a computação natural: reprodução, sinalização molecular, interação via

conexões e estigmergia.

Conectividade

• Sistemas conexionistas empregam um tipo de representação onde a informação é

codificada através de nós e conexões de uma rede de elementos básicos, também

denominados de unidades.

• O termo conexionismo surgiu em meados dos anos 1980 para descrever modelos

cognitivos em forma de rede, baseados nos padrões de ativação de numerosas

unidades simples de processamento de informação.

• Entretanto, qualquer sistema estruturado sob a forma de um grafo pode ser

considerado um sistema conexionista.

o Exemplos: redes neurais e redes imunológicas.

• Os sistemas conexionistas possuem uma série de peculiaridades:

Page 38: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 38

o As conexões estabelecem caminhos para a interação entre unidades: duas

unidades só podem interagir através da conexão que as liga;

o A conexão é geralmente um elemento ativo da interação, ou seja, ela não apenas

especifica quem interage com quem, mas ela também quantifica esta interação;

o A interação direta via conexão também fornece uma estrutura ou arquitetura

para o sistema. Esta estrutura pode, por exemplo, refletir a estrutura do ambiente

no qual a rede está inserida.

Estigmergia

• Grassé (1959) introduziu o conceito de estigmergia para se referir à forma

coordenada de construção do ninho dos cupins do gênero Macrotermes.

• Ele percebeu como os cupins atuam de forma independente em uma estrutura sem

se comunicar diretamente uns com os outros.

Page 39: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 39

• O conceito de estigmergia fornece um mecanismo geral que relaciona

comportamentos individuais e globais: um comportamento individual modifica o

ambiente que resulta em um novo comportamento individual modificado.

• Sendo assim, o ambiente media a comunicação ou interação entre os indivíduos, ou

seja, existe uma forma de interação indireta entre os indivíduos.

• Meios diretos de interação entre os cupins são antenação, trofalaxia (troca de

comida e/ou líquidos), contato mandibular, contato visual, etc.

Page 40: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 40

Figura 4: Construção do ninho por cupins. Quando a quantidade de material atinge um nível crítico, o próprio processo de construção estimula o trabalho de outros cupins.

4.4. Adaptação

• Adaptação pode ser definida como a habilidade de um sistema ajustar sua resposta

a estímulos ambientais. Adaptação é um sinônimo de mudança, variação. Um

Page 41: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 41

agente que sofre modificação, de forma a se tornar melhor preparado para uma

situação ou aplicação, torna-se mais adaptado a este novo cenário.

• Existem muitas palavras que podem ser interpretadas como sinônimos da palavra

adaptação, por exemplo, evolução, aprendizagem e auto-organização.

• Entretanto, estes conceitos também podem ser vistos como sendo resultantes de um

processo adaptativo.

Aprendizagem

• A aprendizagem corresponde ao ato, processo ou experiência de adquirir

conhecimento, compreensão, capacidade ou abilidade, através de experiência,

estudo, ou interações.

• Sistemas que sofrem aprendizagem são geralmente aqueles capazes de se adaptar

ou mudar seu comportamento baseado em exemplos, de forma a manipular

informações.

Page 42: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 42

• Uma virtude importante da aprendizagem baseada em adaptação é a possibilidade

de resolver tarefas de processamento de informação e a capacidade de operar em

ambientes dinâmicos.

• A maioria dos processos de aprendizagem é gradativa, ou seja, eles não ocorrem de

uma hora para outra.

• Quando um sistema aprende alguma coisa, ele altera seu padrão comportamental

ou alguma outra de suas características.

• Existem formas de aprendizagem que não são gradativas, por exemplo, a

memorização.

• É importante salientar que a aprendizagem não requer consciência e nem

inteligência. Animais e insetos aprendem os caminhos que devem seguir para obter

comida, se reproduzir, etc.

Page 43: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 43

Evolução

• Em sua forma mais simples, a teoria da evolução simplesmente afirma que a vida

muda ao longo do tempo, com formas mais jovens descendendo de formas mais

antigas.

• Diferentemente da aprendizagem, a evolução requer a ocorrência de processos

específicos bem definidos. Primeiramente a evolução requer uma população de

indivíduos capazes de se reproduzir, sofrer variações genéticas, e seleção natural.

• Na falta de qualquer uma destas características não existe evolução.

4.5. Realimentação (Feedback)

• Essencialmente, uma realimentação ocorre quando a resposta a um estímulo

possui algum tipo de efeito sobre o próprio estímulo.

• A realimentação pode ser entendida como o retorno (de uma parte) da saída de um

processo ou sistema para a sua entrada, especialmente quando utilizada para

manter o desempenho ou controle do sistema ou processo.

Page 44: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 44

• A natureza da resposta determina como a realimentação é chamada:

o Realimentação positiva: a resposta aumenta o estímulo original

o Realimentação negativa: a resposta diminui o estímulo original

Realimentação positiva

• É um tipo de processo de auto-reforço (ou crescimento) no qual quanto mais um

evento ocorre, mais ele tende a ocorrer.

o Exemplos: agrupamento de corpos em colônias de formigas, construção de

ninhos de cupins, resposta imunológica, reprodução humana, avalanche, etc.

More termites

More pheromone

Figura 5: Realimentação positiva no processo de construção do ninho por cupins.

Page 45: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 45

Realimentação negativa

• A realimentação negativa opera como um regulador para a realimentação positiva

de forma a manter um equilíbrio (dinâmico) do meio.

• A ausência de mecanismos de realimentação negativa resultaria em sistemas

instáveis ou na extinção de recursos.

o Exemplos: ecossistemas, homeostase, metabolismo, termostato, etc.

Too hot

Pleasant temperature

More cold air

More hot air

Too cold

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

Page 46: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 46

4.6. Auto-Organização

• Uma questão importante nas ciências naturais é “De onde vem a ordem que

observamos na natureza?”

• O mundo está cheio de sistemas, organismos, processos e fenômenos que mantêm

uma grande quantidade de energia e organização interna desafiando as leis da

física.

o Exemplos de sistemas auto-organizados: partículas suspensas de água formando

nuvens, desenvolvimento embrionário, organizações sociais, etc.

• Um aspecto importante desta auto-organização é que os processos observados não

estão apenas sujeitos às leis da física e à composição genética, a auto-organização

é um fenômeno que emerge espontaneamente.

• A auto-organização se refere a um amplo processo de formação de padrões em

sistemas físicos e biológicos.

Page 47: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 47

o Exemplos: formas em dunas de areia, ondas produzidas por uma torcida de

futebol, reações químicas formando espirais, etc.

• A formação de padrões em sistemas auto-organizados ocorre através de interações

internas ao sistema, sem nenhuma intervenção externa direta.

• No sentido adotado aqui, um padrão corresponde a um arranjo espacial e/ou

temporal organizado de objetos.

• O conceito de auto-organização também pode ser entendido fornecendo-se

contraexemplos.

o Contraexemplos: soldados marchando, homens trabalhando em uma construção,

etc.

• Fato interessante: abelha rainha.

Características da Auto-Organização

• Coletividade e interatividade, dinâmica, emergência, não linearidades,

complexidade, baseada em regras, retroalimentação.

Page 48: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 48

Alternativas a Auto-Organização

• Liderança. Ex.: um capitão em um campo de batalha.

• Modelo. Ex.: partitura musical.

• Receita. Ex.: receita de bolo.

• Fôrma ou molde. Ex.: moldes para fabricar peças de automóveis.

4.7. Complexidade

• Um sistema complexo pode ser definido como aquele cujas propriedades não

podem ser completamente compreendidas e nem explicadas estudando-se as partes

que o compõe.

• De uma forma menos genérica, um sistema complexo é aquele que possui uma

grande quantidade de componentes que interagem entre si e com o meio ambiente

e cujo comportamento global é não linear e geralmente apresenta processos auto-

organizados.

Page 49: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 49

o Exemplos: sistema imunológico, uma célula individual, uma formiga, um

relógio, etc.

• A nova linha de pesquisa denominada de complexidade sugere que a organização

interna de um sistema não é condição suficiente para a compreensão de como o

sistema funciona. É também preciso investigar como o sistema interage com o

meio ambiente e como as diversas partes componentes do sistema interagem entre

si e com o meio ambiente.

o Exemplo: pleiotropia e poligenia genética.

• Uma das contribuições importantes da complexidade para a ciência está na

sugestão e descoberta de que vários comportamentos complexos podem ser

reproduzidos e/ou descritos por uma quantidade finita e, geralmente, pequena de

regras simples.

o Exemplo: as leis da física.

Page 50: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 50

• Já foram discutidas as quatro principais formas de se estudar sistemas complexos:

experimentação, modelagem, simulação e emulação. A computação natural utiliza

todas as quatro abordagens, com maior ou menor grau de aprofundamento.

• Apesar da grande simplicidade da maioria das técnicas de computação natural, elas

ainda devem ser capazes de capturar características essenciais dos processos

naturais envolvidos.

Sistemas Complexos Adaptativos

• A diferença básica entre um sistema complexo e um sistema complexo adaptativo

está na capacidade de se adaptar dos sistemas adaptativos.

• Embora conceitualmente esta pareça uma pequena diferença, os sistemas

complexos adaptativos (chamados de CAS – complex adaptive systems) possuem

maiores capacidades de extrair e processar informações, podendo, portanto, se

tornar melhores adaptados ao ambiente onde estão inseridos e realizar diversas

tarefas.

Page 51: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 51

Emergência

• O conceito de emergência está intimamente relacionado com o conceito de auto-

organização.

• Existem diversas propriedades de um sistema ou organismo que não estão

presentes e nem são diretamente deriváveis de seus componentes. Estas

propriedades são ditas emergentes.

o Exemplos: uma gota d’água não é uma nuvem, um neurônio não é consciente.

• Praticamente todos os sistemas complexos adaptativos apresentam

comportamentos emergentes.

• Uma característica importante dos sistemas emergentes é o fato deles serem

governados por regras.

4.8. Vitalismo e Reducionismo

• As doutrinas vitalistas clássicas do século 18 eram baseadas na ideia de que a vida

era devida a espíritos imateriais.

Page 52: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 52

• Por outro lado, a visão reducionista da vida sugeria que ela poderia ser descrita por

processos químicos e físicos.

• Por muito tempo os cientistas acreditavam e se empolgavam com a ideia de que a

vida poderia ser totalmente explicada pelo reducionismo, ou seja, através do estudo

dos componentes orgânicos mais fundamentais da matéria. Exemplos:

o Os físicos buscavam as partículas básicas da matéria e as forças que atuam sobre

estas partículas;

o Os químicos tentavam entender as ligações químicas entre os diversos elementos

básicos; e

o Os biólogos destrinchavam as sequências de DNA e outras estruturas

moleculares com o objetivo de compreender o organismo.

• Com o avanço das ciências fica cada vez mais claro que muitas das propriedades,

fenômenos e comportamentos observados na natureza não podem ser

Page 53: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 53

apropriadamente e nem completamente explicados via reducionismo. Processos

auto-organizados e emergentes são ubíquos na natureza.

• Os pesquisadores verificaram que o reducionismo é apenas uma das ferramentas

necessárias para a compreensão da vida.

• (Talvez a nova “ciência” denominada de complexidade ajude-nos a compreender

melhor como a estrutura básica da matéria, juntamente com os fenômenos

emergentes e auto-organizados, levam a vida).

Século 19

Vitalismo Reducionismo

Deus é responsável por tudo Deus é responsável por tudo

Alma = espíritos da vida = imaterial Alma imaterial ≠ espíritos da vida ≠ matéria

Fenômenos mentais e da vida são resultado da alma, que não pode ser descrita cientificamente

A maioria dos fenômenos pode ser descrita por espíritos materiais de vida

A vida pode ser teleologicamente formada e conduzida

Grande parte da vida é determinada de forma causal e passível de descrições físicas e químicas

Page 54: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 54

Meados do século 20

Vitalismo Reducionismo

Deus com uma pequena significância Nenhum Deus

Alma ≠ (espíritos da vida = energia

nervosa)

Nenhuma alma

Alguns fenômenos não podem ser descritos

cientificamente

Todos os fenômenos podem ser descritos

cientificamete

A vida é teleologicamente conduzida Determinismo causal

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

Page 55: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 55

4.9. Abordagens Bottom-Up e Top-Down

• Uma abordagem reducionista é, de alguma forma, uma abordagem bottom-up.

Abordagens bottom-up são aquelas voltadas ao estudo das partes constituintes de

um determinado fenômeno, processo ou sistema.

• Entretanto, as abordagens bottom-up não sugerem, como no caso do reducionismo,

que o fenômeno em estudo pode ser completamente compreendido e descrito por

meio da análise de seus componentes fundamentais.

• Em contraste com as técnicas clássicas de inteligência artificial, a computação

natural é, em sua grande maioria, baseada em abordagens bottom-up.

• O termo bottom-up também pode ser utilizado para descrever princípios de

projetos de sistemas. Por exemplo, um projeto do tipo bottom-up é aquele no qual

as partes do sistema vão sendo adicionadas gradativamente.

o Exemplos: redes neurais, castelo de areia, evolução da vida (processo gradativo

de adaptação ao ambiente).

Page 56: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 56

• As abordagens top-down, por outro lado, são baseadas na ideia de que é possível

olhar para o sistema como um todo e desvendar a forma com que ele opera.

o Exemplo: as técnicas clássicas de IA tentavam modelar comportamentos

inteligentes através da definição de regras específicas seguidas de mecanismos

genéricos de inferência.

• Assim como no caso das abordagens bottom-up, também é possível utilizar a

terminologia top-down para descrever princípios de projetos.

o Exemplos: redes neurais, castelo de areia, etc.

4.10. Determinismo, Caos e Fractais

• Originalmente considerava-se que um sistema determinístico era aquele cuja

evolução temporal podia ser medida precisamente; todos os eventos são

consequências inevitáveis de causas antecedentes suficientes.

• Atualmente, este tipo de sistema determinístico é dito ser previsível.

Page 57: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 57

• Quando é possível prever o desenvolvimento ou evolução temporal de um sistema

para algumas condições específicas, ele é dito ser determinístico e previsível.

• Sistemas com estas características inviabilizam comportamentos emergentes e,

portanto, são pouco estudados em computação natural.

• Por outro lado, comportamentos emergentes são geralmente imprevisíveis e,

portanto, difíceis de terem seus aspectos formais estudados.

o Este fato pode se tornar uma dificuldade para a aceitação destas novas técnicas

por parte da comunidade em geral, principalmente quando o objetivo principal

envolve a resolução de problemas e descrição de aspectos formais de sistemas.

• Um dos resultados mais interessantes e excitantes do desenvolvimento científico

atual, principalmente na física, está na remodelagem da relação entre determinismo

e capacidade de predição.

• Atualmente é de consenso que muitos sistemas determinísticos são imprevisíveis.

Page 58: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 58

• Uma das dificuldades em se prever o comportamento de alguns sistemas

determinísticos se deve à sensibilidade que estes apresentam às condições iniciais.

• Juntamente com o tratamento dado por Poincaré para o “problema dos três corpos”

(ele verificou um comportamento irregular na dinâmica de corpos celestes), o

estudo feito por Hadamard sobre a sensibilidade a condições iniciais levou ao

surgimento da “Teoria do Caos”.

• Uma das consequências teóricas importantes da teoria do caos foi o divórcio entre

determinismo e previsibilidade.

• Exemplos de diversos sistemas caóticos:

o Clima, mar, batimentos cardíacos, etc.

• Existe todo um lado irregular da natureza (p.ex. a forma das nuvens, montanhas,

etc.) cujas características têm sido mais fácil de serem entendidas a partir da teoria

do caos.

Page 59: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 59

• A teoria do caos criou novas técnicas de utilização dos computadores e diversos

tipos de imagens gráficas capazes de descrever estruturas naturais.

• A palavra fractal refere-se a uma nova forma de descrever, calcular, e raciocinar

sobre formas irregulares, fragmentadas, quebradas, etc.

• Um fractal pode ser definido como uma forma ou padrão geométrico que se repete

indefinidamente (auto-similaridade) desenvolvido para representar formas e

superfícies que não podem ser representadas pela geometria clássica.

o Eles são usados especialmente na modelagem computacional de padrões e

estruturas irregulares da natureza.

Page 60: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 60

Tópico 3: Computação Evolutiva

1. A Origem das Espécies

• Darwin apresentou uma teoria para explicar o porque da existência de uma

variedade (diversidade) tão grande de seres vivos (organismos) na natureza. Sua

teoria apresenta a “seleção natural” como o principal mecanismo para a

manutenção das variações favoráveis à sobrevivência e reprodução de um

organismo em seu ambiente. O acúmulo destas variações favoráveis através da

seleção natural permite, ao longo de um grande intervalo de tempo, o

aparecimento de novos organismos tão distintos de seus antecedentes a ponto de

poderem ser caracterizados como uma nova espécie.

• Ao contrário do que muitos pensam, Darwin não apresentou uma teoria para a

evolução do homem. Isso ele fez muitos anos depois (C. Darwin, The Descent of

Man, and Selection in Relation to Sex, John Murray, London, 1871). Darwin

Page 61: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 61

também não propôs uma teoria para a origem da primeira espécie, mas sim para o

surgimento de novas espécies partindo de outras.

• Darwin descreve

o “uma lei geral, resultando na melhoria de todos os seres orgânicos:

multiplique, varie, deixe os mais fortes sobreviverem e os mais fracos

morrerem.”

• Em resumo, a teoria Darwiniana propõe que a evolução é o resultado de uma (ou

mais) população de indivíduos sujeita aos seguintes processos:

o Reprodução com herança

o Variação

o Seleção natural

• Darwin resume os seguintes argumentos em defesa da teoria da seleção natural:

o Graduações na perfeição de qualquer órgão ou instinto existem ou poderiam

ter existido;

Page 62: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 62

o Todos os órgãos e instintos são variáveis;

o Existe uma luta pela sobrevivência que leva a preservação das variações

favoráveis à vida e reprodução de um organismo;

o Os registros geológicos são imperfeitos.

• Uma das capacidades marcantes de Darwin foi a de apresentar uma gama de

argumentos que poderiam ser (certamente foram e ainda são) utilizados contra sua

própria teoria:

1. É possível que animais com estruturas e hábitos completamente distintos

sejam descendentes de um mesmo organismo?

2. Como órgãos apresentando extrema perfeição e complexidade (p. ex. os

olhos) podem ser gerados por seleção natural?

3. Porque existem órgãos que, aparentemente, possuem pouca importância?

4. Instintos podem ser adquiridos e modificados por seleção natural?

5. Porque espécies quando cruzadas são estéreis, enquanto variedades não são?

Page 63: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 63

6. Se as espécies são descendentes de outras espécies por meio de inúmeras

pequenas variações, por que não encontramos formas transicionais em

registros geológicos?

2. A Ideia Perigosa de Darwin

• O filósofo Daniel Dennett é um ardente defensor da teoria Darwiniana, e seu livro

Darwin’s Dangerous Idea: Evolution and the Meanings of Life é considerado um

dos textos de ciência popular mais influentes da atualidade sobre o assunto.

• Dennett apresentou, dentre outras coisas, uma visão de engenharia (computação)

para a teoria da evolução proposta por Darwin que serve aos nossos propósitos.

• Dennett inicia seu livro descrevendo alguns dos diversos pontos de vista sobre o

mundo e suas origens antes da teoria Darwiniana. Por exemplo:

o Ele cita a hipótese GAIA para o universo – o universo como um (super-)

organismo;

Page 64: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 64

o Ele também discute o filósofo Hume e sua teoria de que somente um Criador

Inteligente seria capaz de produzir toda a vida que observamos.

• Sob o ponto de vista de Dennett, Darwin provou através de sua teoria da seleção

natural, como um Criador Não-Inteligente é capaz de produzir vida.

• Sendo assim, a ideia de Darwin torna-se perigosa, pois ela vem confrontar não

apenas as visões filosóficas e científicas sobre a vida, mas também as crenças de

praticamente todo o mundo baseadas em uma entidade (p. ex. Deus) criador da

terra e criaturas.

• É importante ressaltar, entretanto, que não se trata de um livro que faz uma disputa

entre ciência e religião. Pelo contrário, ele trás uma discussão bastante rica sobre

como as duas podem caminhar juntas, sem uma ofuscar a outra e traçando limites

entre o que é mais adequadamente explicado por cada uma delas:

Page 65: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 65

o “Nem todos os cientistas e filósofos são ateus, e muitos que possuem suas

crenças declaram que sua ideia de Deus pode viver em harmonia com, ou até

encontrar suporte, na estrutura de ideias de Darwin. Sob o ponto de vista

deles, Deus não é um criador antropomórfico, mas ainda assim um Deus que

vale a pena ser adorado, capaz de dar consolo e significado a vida. Outros

embasam sua preocupação em filosofias seculares, visões sobre o significado

da vida que mantêm o autocontrole sem precisar do conceito de um Ser

Supremo – que não seja o próprio Universo. Algo é sagrado para estes

pensadores, mas eles não chamam isso de Deus; eles chamam de, talvez,

Vida, ou Amor, ou Bondade, ou Inteligência, ou Beleza, ou Humanidade. O

que ambos os grupos compartilham, apesar das diferenças em suas mais

profundas crenças, é uma convicção de que a vida possui significado, que a

bondade importa.”

Page 66: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 66

• Dennett apresenta, dentre outras coisas, uma visão algorítmica (sob uma

perspectiva de engenharia) para a teoria da evolução.

• Dennett dividiu a ideia de Darwin em duas partes principais:

o Uma que prova que as espécies atuais são descendentes “revisados” de

espécies anteriores, ou seja, as espécies evoluem;

o Outra que mostra como este processo evolutivo ocorre.

2.1. A Seleção Natural como um Processo Algorítmico

• Dennett define um algoritmo como um tipo de processo formal que pode ser

utilizado na obtenção de um resultado sempre que executado ou instanciado.

• A proposta de Darwin é dedutível a partir de um processo formal:

o Se um conjunto de condições é atendido, então um certo resultado pode ser

esperado.

• Dennett argumenta que uma visão algorítmica de diversos processos expande seu

escopo e fortalece ideias.

Page 67: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 67

• Como exemplo, ele cita o caso do algoritmo de “simulated annealing” ou

“recozimento simulado”, máquinas de Boltzmann e redes neurais de Hopfield.

• Sob uma perspectiva de engenharia, um dos aspectos importantes enfatizados por

Dennett é que, embora um bom conhecimento dos mecanismos detalhados de

funcionamento de diversos processos naturais seja importante, as ideias básicas

podem ser apresentadas de uma forma simples através de um processo abstrato e

uma terminologia comum, ou seja, um algoritmo.

• Para o caso da teoria da evolução através da seleção natural, os principais

processos algorítmicos envolvidos são:

o Reprodução com herança genética

o Variação genética

o Seleção natural

• Antes da teoria Darwiniana, a visão da vida era, em essência, vitalista:

o Deus, Mente, Projeto, Ordem, Caos, Nada.

Page 68: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 68

• Após Darwin, esta visão deixou de ser do tipo top-down (partindo de um criador

inteligente para os elementos mais simples), para uma visão bottom-up (partindo

de estruturas muito simples que evoluíram até os seres “superiores” de hoje).

• No intuito de justificar os processos vitais e reconciliar crença e ciência, muitos

pensadores e cientistas propuseram então uma visão de um “Deus” criador de leis

e processos que levam à origem e desenvolvimento da vida, ao invés de um

“Deus” responsável pela criação direta da vida.

2.2. Espaço de Buscas (Design Space)

• Dennett utiliza a terminologia espaço de projeto ou espaço de buscas para denotar

o espaço de todos os possíveis fenótipos que podem resultar a partir dos genótipos.

• De acordo com a teoria de Darwin, quando a seleção natural é imposta sobre as

variações ocorre uma movimentação mensurável no espaço de buscas. Esta

movimentação pode ser vista como um processo de pesquisa e desenvolvimento

(P&D) que pode resultar em uma busca ou acúmulo de projeto (otimização).

Page 69: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 69

• Temos a intuição de que um trabalho de projeto é, de alguma forma, um trabalho

inteligente. Darwin propôs que esta inteligência pode ser quebrada em partes tão

pequenas e “estúpidas” de forma que elas não são reconhecidas como inteligentes,

mas que distribuídas no espaço e tempo sob uma forma algorítmica podem resultar

em estruturas extremamente complexas e perfeitas.

2.3. Biologia é Engenharia

• “O trabalho feito pela seleção natural é P&D, então biologia é fundamentalmente

engenharia, uma conclusão que...esclarece alguns de nossos mais profundos

enigmas. Ao adotarmos a perspectiva de engenharia, o conceito central em

biologia de função e o conceito central em filosofia de significado podem ser

explicados e unidos. Como nossa própria capacidade de responder e criar

significado – nossa inteligência – está embasada no nosso status de produtos

avançados de processos Darwinianos, a distinção entre inteligência artificial e

natural desaparece. Há diferenças importantes, entretanto, entre os produtos da

Page 70: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 70

engenharia humana e os produtos da evolução devido a diferenças nos processos

que as geram. Apenas agora estamos começando a entender os grandiosos

processos da evolução, e isso porque estamos direcionando os produtos de nossa

própria tecnologia, computadores, para o entendimento das questões mais

relevantes.”

• Sendo assim, enxergar biologia como engenharia permite-nos relacionar função

com projeto. O funcionamento de toda estrutura carrega implicitamente

informações sobre o ambiente. Por exemplo:

o A posição dos órgãos no corpo de uma serpente (distribuição e locomoção);

o As asas de uma ave (aerodinâmica).

• Como vimos, a teoria da seleção natural permite uma movimentação no espaço de

buscas, mas em que direção (com qual objetivo)?

Page 71: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 71

• Dennett, assim como Darwin, argumenta que a seleção natural atua de forma a

privilegiar organismos cujas variações resultam num maior grau de adaptabili-

dade ao ambiente.

• Sendo assim, a evolução pode ser comparada a um processo de busca que visa

otimizar (através dos processos de reprodução com herança genética, variação e

seleção natural) a estrutura orgânica dos seres vivos a seus ambientes.

3. Base Biológica

3.1. Hereditariedade

• A história da genética é fascinante, principalmente pela velocidade com que se

evoluiu de observações a demonstrações experimentais dos mecanismos

fundamentais envolvidos. Ideias de hereditariedade: datam de 6000 anos atrás.

Page 72: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 72

• Por volta de 500 a.C. (tempo de Aristóteles), filósofos gregos, propuseram que

“vapores” derivados de vários órgãos se uniam sob a ação vitalizadora do sêmen,

interpretado como sangue altamente purificado. Esta ideia influiu sobre a cultura

da humanidade por cerca de 2000 anos.

• Neste período, defendia-se a ideia de que o sexo era determinado pela procedência

do líquido seminal no homem: se do testículo direito ⇒ sexo masculino; se do

testículo esquerdo ⇒ sexo feminino.

• A mulher era vista apenas como uma “incubadeira” neste processo.

• 1672: descoberta do óvulo pelo holandês Graaf → as fêmeas de mamíferos

também apresentam ovulação!

• 1675: descoberta do espermatozóide pelo holandês Von Leeuwenhoeck.

• Homúnculo: ovistas e espermistas.

Page 73: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 73

• Epigênese: teoria atual segundo a qual a constituição dos seres se inicia a partir de

célula sem estrutura e se faz mediante sucessiva formação e adição de novas partes

que, previamente, não existem no ovo fecundado.

• 1866: ideias efetivas acerca da hereditariedade → monge agostiniano Gregor

Mendel (República Tcheca). Ele atacou o problema de modo simples e lógico,

escolheu material adequado, concentrou-se em poucas características contrastantes,

desenvolveu um programa de cruzamentos controlados, tratou os resultados de

forma eficiente e sugeriu fatores causais (hoje chamados de genes) como os

responsáveis pelos fenômenos observados.

• Ninguém havia chegado tão perto da compreensão real da hereditariedade (ficou

faltando apenas elucidar os mecanismos celulares envolvidos), mas foram

necessários mais de 30 anos para que a comunidade científica se desse conta da

importância e eficácia destes resultados.

Page 74: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 74

• É curioso constatar que um dos fatores que dificultou a assimilação dos resultados

de Mendel foi justamente o intenso debate reinante nos meios científicos após a

divulgação teoria de seleção natural de

Darwin.

• 1900: redescoberta das ideias de Mendel

(após sua morte), feitas de forma

independente por três pesquisadores.

• 1a lei de Mendel: Cada caráter é

condicionado por dois fatores. Eles

separam-se na formação dos gametas,

passando apenas um fator por gameta.

Page 75: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 75

3.2. Do Darwinismo ao Neodarwinismo

• Darwin sugeriu que para haver evolução é necessário que exista uma população de

indivíduos sujeita a:

1. Reprodução com herança;

2. Variação; e

3. Seleção Natural.

• Embora Darwin tenha considerado estas hipóteses como suficientes para explicar

a origem das espécies, hoje elas são aceitas apenas como suficientes para explicar

os processos ecológicos.

• Na época de Darwin (meados de 1800), entretanto, sabia-se muito pouco sobre os

processos de reprodução e, praticamente nada sobre genética. Além disso, não

havia um bom entendimento sobre como operam os mecanismos de seleção

natural.

Page 76: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 76

• A união da genética com diversos conceitos e teorias sobre seleção natural leva ao

que hoje é chamado de neodarwinismo.

Sobre a Seleção Natural

• O princípio da seleção natural indica que os indivíduos cujas variações se adaptam

melhor ao ambiente terão maior probabilidade de sobreviver e se reproduzir.

• A seleção natural é probabilística, e seu alvo primário é o indivíduo, embora seu

efeito resultante vai se manifestar na espécie como um todo. A espécie é o

beneficiário final do processo evolutivo.

3.3. Terminologia biológica

• A terminologia biológica a ser empregada representa uma analogia às entidades

biológicas reais, em que as entidades computacionais corresponderão

invariavelmente a estruturas bem mais simples que seus equivalentes biológicos.

Page 77: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 77

Célula

Órgão

Sistema

Organismo

Nível fisiológico

População

Comunidade

Ecossistema

Nível ecológico

Figura 7: Divisão hierárquica dos sistemas biológicos.

• Célula: unidade estrutural básica dos seres vivos, que se compõe de numerosas

partes, sendo as fundamentais a parede ou membrana, o protoplasma e o núcleo. A

célula é a menor unidade de matéria viva que pode existir de maneira

independente, e ser capaz de se reproduzir. Toda célula de um mesmo organismo

contém o mesmo conjunto de um ou mais cromossomos. Nos seres humanos, cada

célula somática (não germinativa) contém 23 pares de cromossomos.

Page 78: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 78

• Cromossomo: estrutura nucleoprotéica formada por uma cadeia de DNA, sendo a

base física dos genes nucleares, os quais estão dispostos linearmente. Cada espécie

apresenta um número característico de cromossomos. Quando os cromossomos são

arranjados em pares (cada cromossomo proveniente de um dos pais, embora haja

exceções), os respectivos organismos são chamados diploides. Organismos cujos

cromossomos não se apresentam aos pares são chamados haploides.

gene gene

gene

Figura 8: Ampliação de um organismo para enfocar o material genético. Organismo → célula → cromossomo → gene → DNA.

Page 79: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 79

• Genes: blocos funcionais de DNA, os quais codificam uma proteína específica. É a

denominação que damos hoje ao fator mendeliano. Cada gene está localizado em

uma posição (locus) particular do cromossomo. Quando dois genes se comportam

segundo a 1a lei de Mendel, são ditos alelos, e se encontram no mesmo locus de

dois cromossomos homólogos. Para exemplificar, é possível pensar um gene como

o responsável pela definição de uma característica do indivíduo, como a cor dos

olhos. As diferentes colorações (azul, castanho, etc.) correspondem a alelos.

• Como muitos organismos apresentam células com mais de um cromossomo, o

conjunto de todos os cromossomos compõe o material genético do organismo,

denominado genoma.

A B A A B A B B A B

Cromosomo diagramático Locus

Alelos: {A, B}

Gene

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

Page 80: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 80

3.4. Fenótipo x Genótipo

• 1909: introdução dos conceitos de genótipo e fenótipo.

• Genótipo: representa o conjunto específico de genes do genoma. Neste caso,

indivíduos com o mesmo genoma são ditos terem o mesmo genótipo.

• Fenótipo: é a manifestação do genótipo no comportamento, fisiologia e morfologia

do indivíduo, como um produto de sua interação com o ambiente.

• A seleção natural opera somente na expressão fenotípica do genótipo.

• Para modelar este fenômeno, foi estendido um resultado da literatura baseado no

emprego de dois espaços de estados:

1. G: espaço genotípico (representa a informação);

2. P: espaço fenotípico (representa o comportamento).

• que permitem a definição de quatro funções, onde I representa um conjunto de

efeitos do ambiente (entrada), na forma:

• f1: I × G → P (epigênese);

Page 81: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 81

• f2: P → P (seleção); • f3: P → G (sobrevivência genotípica); • f4: G → G (variação genética). • A adaptação evolutiva ocorre a partir da aplicação iterativa dessas funções.

Espaço genotípico G

Espaço fenotípico F

g 1

f 1

p 1

f 2

p 2

f 3

g 2 f 4 1 g ′

Figura 10: Evolução explicada através de mapeamentos entre os espaços genotípico e

fenotípico.

Page 82: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 82

3.5. Adaptação evolutiva

• Sob um processo de competição por recursos limitados e seleção natural,

indivíduos mais bem adaptados têm uma maior probabilidade de sobreviver e

propagar seu material genético. A adaptação (fitness) pode ser definida como a

probabilidade de sobrevivência e reprodução (viabilidade), ou então como uma

função do número de descendentes que o organismo produziu (fertilidade).

3.6. Reprodução assexuada e sexuada

• Embora os detalhes da evolução biológica ainda não estejam completamente

compreendidos, existem alguns aspectos fundamentados em fortes evidências

experimentais:

1. A evolução é um processo que opera sobre cromossomos e não sobre

organismos;

Page 83: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 83

2. A seleção natural é o mecanismo que relaciona cromossomos com a eficiência

da entidade que eles representam, permitindo assim que organismos mais bem

adaptados ao meio ambiente tenham uma taxa maior de reprodução;

3. O processo evolutivo se dá durante o estágio reprodutivo. Dentre os fenômenos

que podem ocorrer neste estágio é possível citar a mutação e a recombinação

genética (crossover);

4. O processo evolutivo não possui memória direta.

• Reprodução assexuada: na natureza, a codificação da informação genética é

realizada de modo a admitir reprodução assexuada. Neste caso, os filhos

apresentam quase sempre a mesma informação genética do pai. Um número muito

grande de organismos naturais se reproduz de forma assexuada, incluindo a maior

parte das bactérias.

Page 84: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 84

Rep licação

Hap ló ide

D ivisão

M itose

Figura 11: Reprodução assexuada em cromossomos haploides.

• Reprodução sexuada: neste caso, os filhos apresentam uma informação genética

que corresponde a uma combinação da informação genética de seus pais. Na

reprodução sexuada diplóide, cada pai fornece uma célula haploide denominada

gameta, formada por cromossomos resultantes da recombinação dos pares de

Page 85: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 85

cromossomos existentes nos respectivos pais. Os cromossomos presentes nos

gametas fornecidos pelos pais se emparelham para gerar uma nova célula diploide.

Replicação

Diplóide

Separação dos homólogos

Meiose

Ovo

Esperma

Zigoto diplóide

Gametas haplóides

Page 86: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 86

• Durante a reprodução sexuada, os cromossomos estão sujeitos à recombinação.

• Recombinação ou crossover: consiste na troca aleatória de material genético entre

dois cromossomos.

Figura 12: Recombinação genética (crossover) entre dois cromossomos.

3.7. Mutação

• Tanto na reprodução assexuada como na sexuada, o processo de cópia do material

genético dos pais está sujeito a erros, denominados mutações. Uma mutação

Page 87: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 87

corresponde então à troca aleatória, no processo de cópia do material genético, de

um nucleotídeo por outro.

• Nucleotídeo: unidade elementar do DNA.

A B A C B A B C A B

Mutação pontual

A B A B B A B C A B

A B A C B A B C A B

Deleção perdido

A B A B B A B C A + B

A B A C B A B C A B

Inversão

A C A B B A B B A B

Figura 13: Ilustração de diferentes tipos de mutação.

• A mutação é uma consequência inescapável da existência de sistemas que se

reproduzem continuamente em um universo com diferencial de entropia positivo,

Page 88: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 88

sendo um mecanismo importante de implantação da diversidade entre os

indivíduos.

• Em estágios iniciais do processo evolutivo natural, as taxas de mutação podem ter

sido muito maiores. O fato de que as taxas de mutação atuais nos organismos vivos

são muito baixas na maioria dos casos observados pode ser devido a estes

organismos, como espécie, terem atingido um estado de estacionariedade em

relação às condições ambientais atuais. Neste caso, o nível de evolução orgânica

atual não deve servir de referência para qualquer tipo de implementação

computacional de algoritmo evolutivo.

• Teoricamente, as taxas ótimas de mutação são inversamente proporcionais ao

número de variáveis de decisão envolvidas e diretamente proporcionais à distância

do ótimo. A probabilidade de ocorrência de mutação deve ser inversamente

proporcional ao tamanho da população (De Jong, 1975). Existem estratégias que

incorporam a definição da taxa de mutação ao próprio genótipo.

Page 89: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 89

4. Resolução de Problemas via Métodos de Busca

• Sob a perspectiva de computação evolutiva a ser abordada neste curso, um

problema pode ser entendido como uma coleção de informações a partir das quais

algo deverá ser extraído ou inferido.

• Exemplos:

o Função numérica a ser otimizada: f(x) = x3 + x + 1

o Sequenciamento de tarefas: dado um conjunto de máquinas, operadores,

jornadas de trabalho, etc., qual configuração leva a uma melhor distribuição

tarefa/operador?

• O processo de resolução do problema corresponderá a tomada de ações (passos),

ou sequências de ações (passos), que levam a um desempenho desejado, ou

melhoram o desempenho relativo de soluções candidatas.

• Este processo de procura por um desempenho desejado ou um melhor

desempenho é denominado de busca.

Page 90: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 90

• Um algoritmo de busca terá como entrada um problema e retornará como saída

uma solução.

• Neste caso, uma ou mais soluções candidatas podem ser utilizadas no processo de

busca. Os métodos que utilizam mais de um indivíduo no processo de busca são

denominados de métodos populacionais (p.ex., algoritmos evolutivos).

• O primeiro passo na resolução de um problema é a formulação do problema, que

irá depender das informações disponíveis.

• Três conceitos são fundamentais na resolução de problemas: representação,

especificação de um objetivo, e definição de uma função de avaliação.

• Escolha de uma representação

o Corresponde a codificação de soluções candidatas, que por sua vez sofrerão

algum tido de manipulação. Sua interpretação irá implicar no espaço de

busca e sua dimensão. O espaço de busca é definido pela sua configuração

(estado) inicial e pelo conjunto de possíves configurações (estados).

Page 91: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 91

• Especificação de um objetivo

o Descrição de uma meta. Trata-se de uma expressão (e não uma função)

matemática que descreve o problema.

• Definição de uma função de avaliação

o Função que retorna um valor específico indicando a qualidade (relativa) de

uma solução candidata particular, dada a representação adotada. Trata-se

geralmente de um mapeamento do espaço de soluções candidatas, dada a

representação adotada, para um conjuto de números, onde cada elemento do

espaço de soluções candidatas possui um valor numérico indicativo de sua

qualidade. Geralmente o objetivo sugere uma função de avaliação particular.

• Exemplo: Suponha que seu objetivo seja maximizar a seguinte função de uma

única variável: 6)9.0/)1.0((2 )5(sen2)(

2

xxg x π−−= , x ∈ [0,1].

Page 92: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 92

o Representação: suponha também que você irá representar a variável x

utilizando uma cadeia binária de comprimento l. Sendo assim, o espaço de

busca corresponde a todas as cadeias binárias de comprimento l, e portanto

possui dimensão 2l.

o Objetivo: max g(x), x ∈ [0,1].

o Função de avaliação: a avaliação da própria função serve para indicar a

qualidade relativa dos candidatos a solução.

1.1 Definição de um Problema de Busca

• Dado um espaço de busca S e uma região F factível deste espaço, F ⊆ S, encontre

x ∈ F tal que

eval(x*) ≤ eval(x), ∀x ∈ F

• Trata-se assim, de um problema de minimização, onde valores menores de x são

considerados de qualidade superior.

Page 93: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 93

• O ponto x* que satisfaz a condição acima é dito ser o ótimo global ou mínimo

global do problema.

• Ao contrário do ótimo global, uma solução x ∈ F é dita ser um ótimo local em

relação a uma vizinhança N de um ponto y, se e somente se

eval(x) ≤ eval(y), ∀ y ∈ N(x),

onde N(x) = {y ∈ S : dist(x,y) ≤ ε}, dist é uma função que determina a distância

entre x e y, e ε é uma constante positiva.

• A função de avaliação define uma superfície de resposta, que será posteriormente

denominada de superfície de fitness (ou adaptação), semelhante a uma topografia

de vales e picos.

• Sendo assim, a determinação de soluções ótimas para um problema corresponde

a uma busca por picos (assumindo maximização) em uma superfície de adaptação

Page 94: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 94

• É importante ter em mente que esta superfície pode apresentar uma grande

quantidade de picos, platôs, vales, etc., o que dificulta o processo de busca e a

determinação de ótimos locais e globais.

• Métodos de busca eficientes devem ser capazes de fornecer um equilíbrio entre

dois objetivos aparentemente conflitantes: busca local (exploitation) e exploração

do espaço de busca (exploration).

5. Algoritmos Genéticos

• Os algoritmos genéticos (AG’s) foram formalizados por J. Holland em 1975, da

Universidade de Michigan.

• Metas:

o Abstrair e rigorosamente explicar os processos adaptativos em sistemas naturais

o Desenvolver simulações em computador que retenham os mecanismos originais

encontrados em sistemas naturais

Page 95: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 95

• Características principais:

o existência de 2 espaços de trabalho: espaço genotípico e espaço fenotípico

o AG’s fazem busca sobre uma população de pontos e não sobre um único ponto

o AG’s fazem uso de descrições genéricas do que se quer ver presente na solução,

através de funções de fitness (funções de avaliação)

o AG’s utilizam regras de transição probabilísticas, e não regras determinísticas

• Algoritmo Genético Clássico:

o população de tamanho fixo e estrutura de dados do tipo cadeias binárias

o seleção natural proporcional ao fitness via algoritmo Roulette Wheel

o crossover simples (crossover de um ponto)

o mutação pontual

5.1. Representação (Estrutura de Dados)

• Cadeias binárias de comprimento fixo.

Page 96: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 96

1 0 0 0 1 1 0 0 1 0

Cromossomo em um GA clássico Locus

Alelos: {0,1}

Gene

Figura 14: Cadeia binária de comprimento l = 10 correspondente à estrutura de dados de um GA clássico.

• O problema a ser resolvido é capturado em uma função objetivo que indica o

fitness (adaptabilidade) de cada candidato a solução.

5.2. Mecanismo de Seleção

• A seleção no GA clássico é proporcional ao fitness e é geralmente implementada

utilizando um algoritmo denominado de Roulette Wheel.

Page 97: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 97

• Exemplo:

N Cromossomo Fitness Graus 1 0001100101010 6.0 180 2 0101001010101 3.0 90 3 1011110100101 1.5 45 4 1010010101001 1.5 45

0

1

0.25

0.75

0.5

1

2

3

4

• Implementação: gerador de números pseudo-aleatórios com distribuição uniforme.

• Note que este procedimento permite a perda (“morte”) do melhor indivíduo e

também permite que um indivíduo seja selecionado mais do que uma vez.

• As probabilidades de reprodução de cada indivíduo irão resultar na geração de

uma nova população composta por indivíduos probabilisticamente selecionados a

partir da população atual.

• Os indivíduos selecionados irão gerar probabilisticamente filhos (descendentes)

através de operadores genéticos específicos, particularmente, crossover e mutação.

Page 98: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 98

5.3. Operador de Recombinação (Crossover Simples)

• Nos sistemas biológicos o crossover pode ocorrer durante a reprodução sexuada

permitindo a troca de material genético entre dois indivíduos.

• Este processo pode ser abstraído como um operador geral para as estruturas de

dados do tipo cadeia binária utilizada no GA clássico:

o Duas cadeias x = x1x2…xl e y = y1y2…yl de comprimento l são selecionadas com

probabilidade de crossover pc.

o Um número r ∈ {1,2,…,l−1} indicando o ponto de cruzamento (crossover) é

selecionado.

o Duas novas cadeias são formadas a partir de x e y através da troca de um

conjunto de atributos à direita da posição r, resultando em x’ = x1…xiyi+1…yl e

y’ = y1…yixi+1…xl.

• Os dois novos cromosomos gerados x’ e y’ são os filhos (offspring) de x e y.

Page 99: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 99

1 0 0 0 1 1 1 0

1 1 0 1 0 0 1 1

Cromossomo pai 1

Cromossomo pai 2

Cromossomo filho 1

Cromossomo filho 2

Ponto de crossover, (r = 5)

1 0 0 0 0 0 1 1

1 1 0 1 1 1 1 0

Crossover de ponto único

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

Page 100: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 100

5.4. Operador de Mutação

• Em genética a mutação pontual é um processo no qual um alelo de um gene é

aleatoriamente substituído (ou modificado) por outro, resultando em um novo

cromossomo.

• Geralmente existe uma baixa probabilidade de mutar cada gene de um

cromossomo.

• Isso significa que cada bit na população P é operado da seguinte forma:

o Os números r,…,u indicando as posições que irão sofrer mutação são

determinados aleatoriamente de forma que cada posição possui uma pequena

probabilidade pm de sofrer mutação independente das outras posições.

o Uma nova cadeia x’ = x1…xr…xu…xl é gerada onde xr…xu são determinadas

aleatoriamente partindo do conjunto de alelos para cada gene. No caso de

cadeias binárias, se uma posição possui alelo ‘0’, então ela se torna ‘1’ e vice-

versa.

Page 101: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 101

GERAÇÃOATUAL

011001010100001110011010010010010100100100100101000101001001010010100101001001001000101000101101010101001001010010111010101011111010101001010100010100

001010010111010110011010010010

010100100100100011001010100001

010010100101001001001000101000

011001010100001001010010111010

101011111010101001010100010100

00101 001011101011001 1010010010

0101001001 001000110010101 00001

010 010100101001001 001000101000

01100101 010000100101001 0111010

10 101111101010100 1010100010100

00101 101001001011001 0010111010

0101001001 000010110010101 00100

010 001000101000001 010100101001

01100101 011101000101001 0100001

10 101010001010000 1011111010101

001011010010010110010010111010010100100100001011001010100100010001000101000001010100101001011001010111010001010010100001101010100010100001011111010101

001011010010010110000010111010010100100100001011001010101100010001000101000001010100101001011001010111010001110010100001101010100010100001011111010001

PRÓXIMAGERAÇÃO

Seleção depares viaRouletteWheel

Crossover

Mutação

Determinaçãodos pontos de

Crossover

Page 102: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 102

• Problemas com o algoritmo clássico:

o política de reprodução/seleção permite a perda do melhor indivíduo

o posição dos genes no cromossomo influi na probabilidade de permanecerem no

mesmo cromossomo após crossover

o dificuldades na codificação binária de números reais e outros tipos de

problemas

• Algumas estratégias de solução:

o mecanismos alternativos de seleção

o crossover uniforme

o codificação em arranjos de números reais ou uma estrutura de dados adequada

ao problema em questão

6. Algoritmo Genético Modificado

o geração de sub-populações por meio da aplicação de operadores genéticos e

outros operadores sobre membros da geração atual

Page 103: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 103

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

o seleção para nova geração

AV

AL

IAÇ

ÃO

E

O

RD

EN

ÃO

GERAÇÃOATUAL

SUB-POPULAÇÕES

SE

LE

ÇÃ

O

PRÓXIMAGERAÇÃO

POPULAÇÃOINTERMEDIÁRIA

MELHOR INDIVÍDUO

OP

ER

ÕE

S

(fitness jádeterminado)

Page 104: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 104

7. Da Biologia para a Computação Evolutiva

Biologia (Genética) Algoritmos Genéticos

Cromossomo Estrutura de dados

Gene Elemento ocupando uma dada posição da estrutura de dados

Lócus Posição ocupada por um gene em uma estrutura de dados

Alelo Variações de um elemento que podem ocupar um lócus

Crossover Troca de partes entre estruturas de dados

Mutação Substituição de um ou mais genes

Fitness Valor que indica a qualidade de um indivíduo em relação ao problema a ser resolvido

Seleção Processo que permite a sobrevivência e reprodução de indivíduos

Genótipo Codificação de um candidato a solução

Fenótipo Valor decodificado do cromossomo

Page 105: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 105

8. Escopo da Computação Evolutiva

• Aplicações de computação evolutiva podem ser encontradas em diversas áreas.

Por conveniência, elas serão divididas aqui em cinco grandes áreas não exaustivas

e não mutuamente exclusivas:

o Planejamento

o Projeto (Design)

o Simulação e identificação

o Controle

o Classificação

8.1. Aplicações em Planejamento

• Roteamento:

o Caixeiro viajante: qual a melhor ordem de cidades a serem visitadas dado o

custo entre as cidades?

Page 106: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 106

o Roteamento de veículos: generalização do caixeiro viajante para mais de um

veículo (caixeiro).

o Problema de transporte: um único material deve ser distribuído para um

número de clientes partindo de mais de um depósito.

o Robótica: um caminho factível, seguro e sem colisões deve ser percorrido por

um robô.

• Sequenciamento de tarefas (scheduling): desenvolver um plano para executar uma

determinada quantidade de tarefas em um período de tempo, onde os recursos são

limitados, existem restrições e pode haver mais do que um objetivo a ser

otimizado.

o Job shop scheduling: são dadas uma planta de manufatura e (diferentes tipos de)

máquinas. Existe uma quantidade de trabalhos a serem executados, cada um

composto por um conjunto de tarefas. Cada tarefa requer um tipo específico de

máquina durante um intervalo de tempo, e as tarefas devem ser executadas em

Page 107: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 107

uma determinada ordem. Qual sequência (scheduling) permite que todas as

tarefas sejam executadas com custo mínimo?

o Tabelas de horários – agenda (Timetabling): desenvolver uma agenda de

provas, aulas, organização de horários de trabalho, etc.

o Processamento computacional: alocação de processos computacionais em

diferentes estações ou processadores, políticas de substituição de memória, etc.

o Empacotamento (Knapsack): dado um pacote (p.ex. mochila, caixa, etc.) com

uma determinada capacidade e um conjunto de itens cada um com seu tamanho,

peso, etc., encontre o conjunto máximo de itens que pode ser acomodado no

pacote.

8.2. Aplicações em Projeto

• Filtros: projeto de sistemas eletrônicos ou digitais que implementam uma

determinada resposta em frequência, tanto resposta ao impulso finito (FIR) quanto

ao impulso infinito (IIR).

Page 108: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 108

• Processamento de sinais: otimização do projeto de sistemas de processamento de

sinais e desenho de circuitos integrados.

• Sistemas inteligentes: definição de arquitetura e/ou parâmetros de redes neurais

artificiais, sistemas nebulosos, autômatos celulares, e sistemas imunológicos

artificiais, dentre outros.

• Aplicações em engenharia: redes de telecomunicações, projetos estruturais,

projeto de aeronaves, projeto de estruturas espaciais, projeto de reatores químicos,

teste e diagnóstico de falhas, etc.

8.3. Aplicações em Simulação e Identificação

• A simulação envolve a determinação de como o sistema irá se comportar baseado

em um modelo ou projeto deste sistema.

o Determinação de equilíbrio de sistemas químicos.

o Determinação de estruturas de proteínas, etc.

Page 109: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 109

• A identificação envolve a determinação do projeto de um sistema dado seu

comportamento.

o Determinação de polos e zeros de um sistema, etc.

8.4. Aplicações em Controle

• Duas abordagens distintas: controle on-line e off-line.

o Off-line: um algoritmo evolutivo é utilizado para projetar um controlador que é

depois utilizado para controlar um sistema.

o On-line: um algoritmo evolutivo é utilizado como uma parte ativa do

controlador.

• Uma vantagem de um controlador evolutivo é que ele pode ser utilizado em

ambientes dinâmicos.

Page 110: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 110

8.5. Aplicações em Classificação

• Sistemas classificadores têm sido utilizados como partes de outros sistemas como,

por exemplo, sistemas de controle.

• Algoritmos evolutivos também têm sido aplicados a problemas de jogos (game

playing).

• Muitas outras aplicações de AEs existem em classificação como, por exemplo:

o Economia, biologia, processamento de imagens, mineração de dados, etc.

Page 111: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 111

Tópico 4: Redes Neurais Artificiais

1. Base Biológica

• Como o cérebro processa informações? Como ele é organizado? Quais são os

mecanismos envolvidos no funcionamento cerebral?

• Estas são apenas algumas das perguntas mais desafiadoras para a ciência.

• O cérebro é especialista em desempenhar funções como reconhecimento de

padrões, controle motor, percepção, inferência, intuição, adivinhações, etc.

Entretanto, o cérebro também é “preconceituoso”, lento, impreciso, realiza

generalizações incorretas e, acima de tudo, é geralmente incapaz de explicar suas

próprias ações (embora este seja um requisito cultural e não funcional).

• Os neurônios são considerados como as unidades básicas de processamento do

cérebro.

Page 112: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 112

• De modo análogo, modelos simplificados dos neurônios biológicos constituem as

unidades básicas de processamento das redes neurais artificiais (RNAs).

• Os neurônios biológicos estão conectados uns aos outros através de conexões

sinápticas. Acredita-se que a capacidade das sinapses serem moduladas é a

principal base para todos os processos cognitivos, como percepção, raciocínio e

memória.

• Sendo assim, algumas informações essenciais sobre neurônios, sinapses e

organização estrutural são importantes para o projeto de RNAs.

1.1. O Sistema Nervoso

• Todos os organismos multicelulares possuem algum tipo de sistema nervoso, cuja

complexidade e organização varia de acordo com o tipo de animal.

• Mesmo os vermes, lesmas e insetos são capazes de adaptar seu comportamento e

armazenar informações em seus sistemas nervosos.

Page 113: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 113

• O sistema nervoso é responsável por dotar o organismo, através de entradas

sensoriais, de informações sobre o estado do ambiente no qual ele vive e se move.

A informação de entrada é processada, comparada com as experiências passadas, e

transformada em ações apropriadas ou absorvidas sob a forma de conhecimento.

• O sistema nervoso pode ser organizado em diferentes níveis: moléculas, sinapses,

neurônios, camadas, mapas e sistemas.

Page 114: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 114

h

Brain

Network of neurons

Neuron

Synapse

Figura 16: Níveis organizacionais do sistema nervoso.

• O processo de transmissão de sinais entre neurônios é central para a capacidade de

processamento de informação do cérebro.

Page 115: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 115

• Uma das descobertas mais empolgantes em neurociência foi a de que a efetividade

da transmissão de sinais pode ser modulada, permitindo o cérebro se adaptar a

diferentes situações.

• A plasticidade sináptica, ou seja, a capacidade das sinapses sofrerem

modificações, é o ingrediente chave para o aprendizado da maioria das RNAs.

• Os neurônios podem receber e enviar sinais a vários outros neurônios.

• Os neurônios que enviam sinais, chamados de neurônios pré-sinápticos ou

“enviadores”, fazem contato com os neurônios receptores ou pós-sinápticos em

regiões especializadas denominadas de sinapses.

• A sinapse é, portanto, a junção entre o axônio de um neurônio pré-sináptico e o

dendrito ou corpo celular de um neurônio pós-sináptico (ver figura).

Page 116: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 116

Cell body (som a)

Axon

Synaptic c lefts

Dendrites

Axon hillock

M ielin sheath

Figura 17: Representação pictórica do neurônio biológico.

• A capacidade de processamento de informação das sinapses permite que elas

alterem o estado de um neurônio pós-sináptico, eventualmente gerando um pulso

elétrico, denominado potencial de ação, no neurônio pós-sináptico.

Page 117: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 117

• A ativação de um neurônio ocorre apenas quando seu potencial de membrana é

maior do que um dado limiar (threshold).

• Portanto, um neurônio pode ser visto como um dispositivo capaz de receber

estímulos (de entrada) de diversos outros neurônios e propagar sua única saída,

função dos estímulos recebidos e do estado interno, a vários outros neurônios.

• Os neurônios podem ter conexões de sentido positivo (feedforward) e/ou de

sentido negativo (feedback) com outros neurônios, ou seja, as conexões podem ter

um único sentido ou serem recíprocas.

• Diversos neurônios interconectados geram uma estrutura em rede conhecida como

rede neural.

• Um agrupamento de neurônios interconectados pode exibir comportamentos

complexos e uma capacidade de processamento de informação que não pode ser

predita tomando-se cada neurônio individualmente.

Page 118: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 118

• Uma característica marcante das redes neurais é a representação distribuída de

informação e seu processamento paralelo.

• Muitas áreas do cérebro apresentam uma organização laminar de neurônios.

Lâminas são camadas de neurônios em contato com outras camadas.

• Um dos arranjos mais comuns de neurônios é uma estrutura bidimensional em

camadas organizada através de um arranjo topográfico das respostas de saída. O

exemplo mais conhecido deste tipo de estrutura é o córtex humano.

• O córtex corresponde à superfície externa do cérebro; uma estrutura bidimensional

com vários dobramentos, fissuras e elevações.

• Diferentes partes do córtex possuem diferentes funções (ver figura).

• Em geral os neurônios do córtex estão organizados em camadas distintas, que são

subdivididas em camada de entrada, camadas intermediárias ou escondidas e

camada de saída.

Page 119: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 119

Figura 18: Estrutura em camadas do córtex.

Page 120: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 120

• A camada de entrada recebe os sinais sensoriais ou de entrada, a camada de saída

envia sinais para outras partes do cérebro e as camadas intermediárias recebem

(enviam) sinais de (para) outras camadas do córtex. Isso significa que as camadas

intermediárias nem recebem entradas diretamente e nem produzem uma saída do

tipo motora, por exemplo.

• Um princípio organizacional importante em vários sistemas sensoriais e motores é

o mapa topográfico.

o Por exemplo, neurônios em áreas visuais do córtex estão arranjados

topograficamente, no sentido de que neurônios adjacentes possuem campos de

recepção visual adjacentes e, coletivamente, eles constituem um mapa da retina.

o Obs: Como neurônios vizinhos ocupam-se de representações similares, mapas

topográficos constituem uma forma parcimoniosa de organização do cérebro (há

economia de conexões, por exemplo).

Page 121: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 121

Figura 19: Córtex e suas partes.

Page 122: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 122

• A organização estrutural em redes, mapas topográficos e camadas são todos casos

especiais de um princípio mais geral: a exploração das propriedades estruturais e

espaços-temporais para o processamento e armazenagem de informação.

1.2. Base Biológica e Física da Aprendizagem e Memória

• O sistema nervoso está continuamente sofrendo modificações e atualizações.

Virtualmente todas as suas funções, incluindo percepção, controle motor,

regulação térmica e raciocínio, são modificadas por estímulos.

• Observações comportamentais permitiram verificar graus de plasticidade do

sistema nervoso: existem mudanças rápidas e fáceis, mudanças lentas e profundas,

e mudanças mais permanentes (porém ainda modificáveis).

• Em geral, a aprendizagem global é resultado de alterações locais nos neurônios.

• Existem diversas formas de modificações possíveis em um neurônio: o Dendritos podem nascer, assim como também podem ser removidos

o Alguns dendritos podem se esticar ou ser encolhidos permitindo ou eliminando, respectivamente, a conexão com outras células

Page 123: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 123

o Novas sinapses podem ser criadas ou sofrerem alterações

o Sinapses também podem ser removidas o Todo neurônio pode morrer e também se regenerar.

• Toda esta vasta gama de adaptação estrutural pode ser convenientemente

condensada simplesmente referindo-se às sinapses, pois estas modificações

envolvem a modificação sináptica de forma direta ou indireta.

• Sendo assim, a aprendizagem via modulação sináptica é o mecanismo mais

importante para as redes neurais, sejam elas biológicas ou artificiais.

• A modulação sináptica poderá depender de mecanismos de adaptação de neurônios

individuais e de redes neurais como um todo.

2. Redes Neurais Artificiais

• Uma RNA pode ser definida como sendo uma estrutura de processamento (rede),

passível de implementação em dispositivos eletrônicos, composta por um número

de unidades interconectadas (neurônios artificiais), sendo que cada unidade

Page 124: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 124

apresenta um comportamento específico de entrada/saída (computação local),

determinado pela sua função de transferência, pelas interconexões com outras

unidades, dentro de um raio de vizinhança, e possivelmente pelas entradas

externas.

• Uma rede neural artificial é um circuito composto por uma grande quantidade de

unidades simples de processamento inspiradas no sistema neural.

• Uma RNA é um sistema massivamente paralelo e distribuído, composto por

unidades de processamento simples que possuem uma capacidade natural de

armazenar e utilizar conhecimento.

• As RNAs apresentam diversas características em comum com o sistema nervoso:

o O processamento básico de informação ocorre em diversas unidades simples

denominadas de neurônios artificiais ou simplesmente neurônios (ou nós);

o Os neurônios estão interconectados gerando redes de neurônios, ou redes

neurais;

Page 125: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 125

o A informação (sinais) é transmitida entre neurônios através de conexões ou

sinapses;

o A eficiência de uma sinapse, representada por um peso associado, corresponde

à informação armazenada pelo neurônio e, portanto, pela rede neural; e

o O conhecimento é adquirido do ambiente através de um processo de

aprendizagem que é, basicamente, responsável por adaptar os pesos das

conexões aos estímulos recebidos do ambiente.

• Uma característica importante das RNAs é o local onde o conhecimento está

armazenado. Nos casos mais simples, este conhecimento é armazenado nos pesos

das conexões entre neurônios.

• Esta característica tem grandes implicações para a capacidade de processamento e

aprendizagem da rede.

Page 126: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 126

• A representação de conhecimento é feita de forma que o conhecimento

necessariamente influencie a forma de processamento da rede, ou seja, o seu

comportamento de entrada-saída.

• Se o conhecimento está armazenado nos pesos das conexões, então o processo de

aprendizagem corresponde a identificar um conjunto apropriado de pesos de

forma que a rede se comporte como desejado.

• Esta característica possui duas implicações importantes para as RNAs: a

possibilidade de desenvolvimento de técnicas de aprendizagem, e a representação

distribuída de conhecimento.

• Existem tipos de redes neurais cujo treinamento (ou projeto) é mais complicado do

que a simples determinação de conjuntos apropriados de pesos sinápticos.

• Uma rede neural artificial pode ser projetada através de:

1. Uma definição ou escolha de um conjunto de neurônios artificiais;

Page 127: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 127

2. A definição ou escolha de um padrão de conectividade entre os neurônios, ou

seja, de uma arquitetura para a rede; e

3. A definição de um método de determinação dos parâmetros livres da rede,

denominado de algoritmo de aprendizagem ou treinamento.

• Embora seja possível projetar uma rede neural a partir da definição do papel

(computação global) que ela deve desempenhar, combinando-se os efeitos

individuais de todos os neurônios, uma rede neural usualmente se adapta para

atingir a funcionalidade desejada a partir de uma ou mais estratégias de

aprendizado, as quais vão atuar junto a parâmetros configuráveis da rede neural.

• É fundamental, portanto, que a rede neural possua meios de interagir com o

ambiente.

• Cada rede neural artificial representa uma arquitetura de processamento

específica, havendo uma família de arquiteturas, cada qual adequada para

funcionalidades específicas.

Page 128: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 128

• A diversidade de arquiteturas tem aumentado muito, sendo que as últimas

gerações de redes neurais já não podem ser caracterizadas por apresentarem um

grande número de unidades e conexões, com funções de transferência simples e

idênticas para todas as unidades.

2.1. O Neurônio Genérico em RNAs

• No neurônio biológico, os sinais de entrada chegam através de canais localizados

nas sinapses, permitindo a entrada e saída de íons. Um potencial de membrana

aparece como resultado da integração dos sinais de entrada, que irão determinar se

o neurônio irá produzir um sinal de saída (spike, pulso, ou potencial de ação) ou

não. O potencial de ação resulta na liberação de neurotransmissores na sinapse

sempre que o potencial de membrana for superior a um determinado limiar

(threshold).

• O efeito líquido de todos estes processos biológicos que ocorrem nas sinapses é

representado por um peso associado.

Page 129: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 129

• O elemento computacional básico empregado na maioria das RNAs é um

integrador. Trata-se de um elemento processador de informações que é

fundamental para a operação das RNAs.

• As principais partes do neurônio artificial genérico são:

o as sinapses, caracterizadas pelos seus pesos associados;

o a junção somadora; e

o a função de ativação.

Page 130: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 130

uk yk

Σ

x1

x2

xm

f(uk)

Junção somadora

Função de ativação

Saída

wk1 wk2

wkm

bk Limiar(bias)

Pesos das conexões

Entradas

Figura 20: Neurônio artificial genérico.

• Nesta representação, o primeiro subscrito k do peso sináptico wkj corresponde ao

neurônio pós-sináptico, e o segundo subscrito corresponde à sinapse ligada a ele.

• A junção somadora soma todos os sinais de entrada ponderados pelos pesos das

conexões.

Page 131: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 131

• Assumindo os vetores de entrada e de pesos como sendo vetores coluna, esta

operação corresponde ao produto interno do vetor de entradas x pelo vetor de

pesos wk, mais o limiar bk. Genericamente, trata-se de uma combinação linear das

entradas pelos pesos associados, mais o limiar bk.

• A função de ativação é geralmente utilizada com dois propósitos: limitar a saída do

neurônio e introduzir não linearidade no modelo.

• O limiar bk tem o papel de aumentar ou diminuir a influência do valor da entrada

líquida para a ativação do neurônio k.

• Matematicamente, a saída do neurônio k pode ser descrita por:

+== ∑

=k

m

jjkjkk bxwfufy

1

)( ou

== ∑

=

m

jjkjkk xwfufy

0

)(,

onde x0 é um sinal de entrada de valor 1 e peso associado wk0 = bk:

• Exemplos de função de ativação:

Page 132: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 132

( )

<<

=

0p se 0

1p0 se

1p se 1

k

kk

k

k pf

u

uu

u

u com p constante e positivo.

0

0.2

0.4

0.6

0.8

1

a)1/p0

b)1/p0

p

0

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

Page 133: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 133

kk

k

pp

p

kee

efy

uu

u

u−+

=+

==1

1

1)( ( ) 01 >−= kk

k

py

uuu∂∂

0

0.2

0.4

0.6

0.8

1

-5 0 50

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

-5 0 5

a) b)

p=0.8

p=1.5

p=3

p=0.8

p=1.5

p=3

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

Page 134: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 134

kk

kk

pp

pp

kkee

eepfy

uu

uu

uu−

+

−=== )tanh()(

( ) 01 2 >−= k

k

py

uu∂∂

-1

-0.5

0

0.5

1

-5 0 50

0.5

1

1.5

2

2.5

-5 0 5

a) b)

p=1

p=0.6

p=2.2

p=0.6

p=1

p=2.2

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

Page 135: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 135

2.2. Arquiteturas de Rede

• Muito pouco é sabido sobre os padrões de conexão entre os neurônios biológicos.

• Entretanto, a maioria das RNAs utilizam arquiteturas padronizadas, projetadas

especialmente para resolver algumas classes de problemas.

• O processo de conexão entre neurônios artificiais leva à geração de sinapses e à

construção de redes neurais artificiais.

w

gu

wij

w

xij

i yi

gyj

1 wi0

Figura 21: Conectando neurônios.

Page 136: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 136

• Existem basicamente três camadas em uma rede neural artificial: uma camada de

entrada, uma camada intermediária, e uma camada de saída. Entretanto, nem

todas as RNAs possuem camadas intermediárias.

• A forma pela qual os neurônios estão interconectados está intimamente relacionada

ao algoritmo a ser utilizado no seu treinamento.

• Existem, basicamente, três tipos principais de arquitetura em RNAs: redes

feedforward de uma única camada, redes feedforward de múltiplas camadas, e

redes recorrentes.

Rede Feedforward com Uma Única Camada

• Este caso mais simples de rede em camadas consiste em uma camada de entrada e

uma camada de saída.

• Geralmente os neurônios de entrada são lineares, ou seja, eles simplesmente

propagam o sinal de entrada para a próxima camada. São também denominados de

neurônios sensoriais.

Page 137: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 137

Camada de entrada

Camada de saída

Neurônio sensorial Neurônio de processamento

y1 y2 y3

yo

x0

x1 x2

xm

w10 w21 . .

. .

wom

Figura 22: Rede feedforward com uma única camada.

• Esta rede é denominada feedforward porque a propagação do sinal ocorre apenas

da entrada para a saída, ou seja, é apenas no sentido positivo.

Page 138: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 138

=

omoo

m

www

www

L

MOMM

L

10

11110

W

yi = f(wi.x) = f(Σj wij.xj) , j = 1,…,m.

Note que a primeira coluna de W corresponde ao vetor de bias.

• Em forma matricial:

y = f(W.x),

onde W ∈ ℜo×m, wi ∈ ℜ1×m, i = 1,…,o, x ∈ ℜm×1, e y ∈ ℜo×1.

Rede Feedforward de Múltiplas Camadas

• As redes de múltiplas camadas possuem uma ou mais camadas intermediárias ou

escondidas. Adicionando-se camadas intermediárias não-lineares é possível

aumentar a capacidade de processamento de uma rede feedforward.

• A saída de cada camada intermediária é utilizada como entrada para a próxima

camada.

Page 139: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 139

• Em geral o algoritmo de treinamento para este tipo de rede envolve a

retropropagação do erro entre a saída da rede e uma saída desejada conhecida.

Input layer First hidden layer

Output layer Second hidden layer

y1 y2 yo

+1

x1 x2 x3

xm

+1 +1

… …

Figura 23: Rede feedforward de múltiplas camadas.

Page 140: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 140

• Seja Wk a matriz de pesos da camada k, contadas da esquerda para a direita.

• kijw corresponde ao peso ligando o neurônio pós-sináptico i ao neurônio pré-

sináptico j na camada k.

• Em notação matricial, a saída da rede é dada por:

y = f3(W3 f2(W2 f1(W1x + b1) + b2) + b3)

• Note que fk, k = 1,..., M (M = número de camadas da rede) é uma matriz quadrada

fk ∈ ℜl×l, onde l é o número de neurônios na camada k.

• O que acontece se as funções de ativação das unidades intermediárias forem

lineares?

Redes Recorrentes

• O terceiro principal tipo de arquitetura de RNAs são as denominadas redes

recorrentes, pois elas possuem, pelo menos, um laço realimentando a saída de

neurônios para outros neurônios da rede.

Page 141: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 141

Z−1

Z−1

Z−1

Figura 24: Rede neural recorrente.

Page 142: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 142

2.3. Paradigmas de Aprendizagem

• A capacidade de “aprender” associada a uma rede neural é uma das mais

importantes qualidades destas estruturas.

• Trata-se da habilidade de adaptar-se, de acordo com regras pré-existentes, ao seu

ambiente, alterando seu desempenho ao longo do tempo.

• Sendo assim, considera-se “aprendizado” o processo que adapta o comportamento

e conduz a uma melhoria de desempenho.

• No contexto de redes neurais artificiais, aprendizagem ou treinamento corresponde

ao processo de ajuste dos parâmetros livres da rede através de um mecanismo de

apresentação de estímulos ambientais, conhecidos como padrões (ou dados) de

entrada ou de treinamento:

estímulo → adaptação → novo comportamento da rede

Page 143: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 143

• Nas RNAs mais simples e tradicionais, os parâmetros livres da rede correspondem

apenas aos pesos sinápticos. Toda a estrutura da rede, incluindo os tipos de

neurônios e suas funções de ativação, é pré-definida.

• O objetivo do aprendizado em redes neurais é a obtenção de um modelo implícito

do sistema em estudo, por ajuste dos parâmetros da rede.

• Dada uma rede neural artificial, seja w(t) um peso sináptico de um dado neurônio,

no instante de tempo t. O ajuste ∆w(t) é aplicado ao peso sináptico w(t) no instante

t, gerando o valor corrigido w(t+1), na forma:

w(t+1) = w(t) + ∆w(t)

• A obtenção de ∆w(t) pode ser feita de diversas formas. O tipo de aprendizado é

determinado pela técnica empregada no processo de ajuste dos pesos sinápticos

(parâmetros da rede neural).

Page 144: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 144

• Um conjunto bem definido de regras para obtê-los é denominado um algoritmo de

aprendizagem ou treinamento. Exemplos de alguns algoritmos: regra de Hebb,

algoritmo de backpropagation, estratégias de competição, máquina de Boltzmann.

• A maneira pela qual o ambiente influencia a rede em seu aprendizado define o

paradigma de aprendizagem. Exemplos de paradigmas: aprendizado

supervisionado, aprendizado por reforço e aprendizado não supervisionado (ou

auto-organizado).

• Existem basicamente três paradigmas de aprendizado: aprendizado

supervisionado, aprendizado não supervisionado e aprendizado por reforço.

Aprendizagem Supervisionada

• Este curso vai se ocupar com o desenvolvimento de técnicas para aprendizado

supervisionado e não supervisionado em redes neurais artificiais.

• Pelo fato de serem mais intuitivas, técnicas de aprendizado supervisionado serão

abordadas primeiro.

Page 145: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 145

• Idéia intuitiva: controle de processos (ex. pouso e decolagem de aviões)

• Exemplos de problemas de engenharia que podem ser apresentados na forma de

um problema de aprendizado supervisionado:

� classificação e reconhecimento de padrões

� predição de séries temporais

� identificação de sistemas

� controle de processos

� projeto de filtros em processamento de sinais

Formalização do processo de aprendizado supervisionado

• Seja dj(t) a resposta desejada para o neurônio j no instante t e yj(t) a resposta

observada do neurônio j no instante t, obtida através de um estímulo x(t) presente

na entrada da rede neural.

Page 146: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 146

• x(t) e dj(t) constituem um EXEMPLO de par estímulo-resposta apresentado ao

neurônio no instante t, possivelmente extraídos de um ambiente ruidoso, cujas

distribuições de probabilidade são desconhecidas.

• ej(t) = dj(t) − yj(t) é o sinal de erro observado na saída do neurônio j no instante t.

Observe que, em ambiente ruidoso, ej(t) é uma variável aleatória.

• O processo de aprendizado supervisionado tem por objetivo corrigir este erro

observado (em todos os neurônios), e para tanto busca minimizar um critério

(função objetivo) baseado em ej(t), j=1,2,…,o, onde o é o número de neurônios da

rede neural, de maneira que, para t suficientemente alto, yj(t), j=1,2,…,o, estejam

próximos de dj(t), j=1,2,…,o, no sentido estatístico.

Page 147: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 147

ej(t)

Σ

One or more layers of hidden neurons

Output neuron j

dj(t) yj(t)

− +

x(t)

Multi-layer Feedforward Network

Figura 25: Aprendizagem por correção de erro.

• Um critério muito utilizado é o de erro quadrático médio:

= ∑

=

o

jj te

oEJ

1

2 )(1

.

• Um conceito que está implícito em toda esta análise é a hipótese de

estacionariedade dos processos aleatórios presentes.

Page 148: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 148

• Além disso, para minimizar J é necessário conhecer as características estatísticas

do sistema.

• Uma aproximação para o critério é utilizar o valor instantâneo do erro quadrático

médio: ∑=

=≅o

jj ke

okJJ

1

2 )(1

)( .

• Nesta fase do curso, vamos considerar que a minimização de J(t) é realizada

apenas em relação aos pesos sinápticos da rede neural.

Aprendizagem Não supervisionada

• No paradigma não supervisionado ou auto-organizado não existe supervisor para

avaliar o desempenho da rede em relação aos dados de entrada.

• Nenhuma medida de erro é utilizada para realimentar a rede.

• Os dados são ditos não rotulados, no sentido de que as classes às quais eles

pertencem ou as saídas desejadas da rede são desconhecidas.

Page 149: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 149

• A rede se adapta a regularidades estatísticas nos dados de entrada, desenvolvendo

uma capacidade de criar representações internas que codificam as características

dos dados de entrada, tornando-se, portanto, capaz de identificar a quais classes

novos padrões pertencem.

Inputpatterns

EnvironmentNeuralNetwork

Figura 26: Aprendizagem auto-organizada.

• Geralmente as redes auto-organizadas empregam um algoritmo competitivo de

aprendizagem.

• Na aprendizagem competitiva, os neurônios de saída da rede competem entre si

para se tornarem ativos, com um único neurônio sendo o vencedor da competição.

Page 150: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 150

• Esta propriedade é que faz com que o algoritmo seja capaz de descobrir

regularidades estatísticas no conjunto de dados.

• Neurônios individuais aprendem a se especializar a conjuntos (grupos ou clusters)

de padrões similares. Eles se tornam detectores ou extratores de características

para diferentes classes dos dados de entrada.

• Ideia intuitiva: agrupamento de dados (ex. balões coloridos)

Formalização do processo de aprendizado competitivo

• Para que um neurônio i seja o vencedor, a distância entre este o vetor de pesos wi

deste neurônio e um determinado padrão de entrada x deve ser a menor dentre

todos os outros neurônios da rede, dada uma métrica de distância ||⋅|| (geralmente

utiliza-se a distância Euclidiana).

• A ideia é encontrar o neurônio cujo vetor de pesos seja o mais parecido ao padrão

de entrada, ou seja:

i = arg mini ||x − wi||, ∀i.

Page 151: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 151

• Se um neurônio não responde a um padrão de entrada, ou seja, não é o vencedor,

então nenhuma adaptação é sofrida por este neurônio.

• Entretanto, o neurônio i que ganhou a competição sofre um ajuste ∆wi no seu

vetor de pesos na direção do vetor de entrada:

=∆competição a perde se0

competição a ganha se)α(

i

iii

wxw

onde α indica o tamanho do passo a ser dado na direção de x. O parâmetro α é

conhecido como taxa de aprendizagem.

Aprendizagem Por Reforço

• A aprendizagem por reforço é distinta das outras abordagens, pois neste caso não

existe uma interação direta com um supervisor ou modelo explícito do ambiente.

• Geralmente, a única informação disponível é um valor escalar que indica a

qualidade do desempenho da RNA.

Page 152: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 152

• Na aprendizagem por reforço existe um objetivo a ser alcançado. Durante o

processo de aprendizagem, a rede “tenta” algumas ações (saídas) e recebe um sinal

de reforço (estímulo) do ambiente que permite avaliar a qualidade de sua ação.

• O sistema em aprendizagem seletivamente retém as ações que levam a uma

maximização dos sinais de reforço.

• Ideia intuitiva: ex. ensinar animais circenses.

• A cada iteração t, o sistema em aprendizagem recebe uma entrada x(t)

(representando o estado do ambiente), fornece uma saída y(t), e no próximo passo

recebe um escalar de reforço r(t+1) e um novo estado do ambiente x(t+1).

• Portanto, os dois conceitos básicos por trás da aprendizagem por reforço são:

busca por tentativa e erro e reforço retardado.

Page 153: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 153

Estado do ambiente(dado de entrada)

Sinal de reforço

Saída da rede

Ambiente

Rede Neural

Figura 27: Aprendizagem por reforço.

3. Alguns Algoritmos de Aprendizado Supervisionado

3.1. Perceptron

• Rosenblatt introduziu o perceptron como a arquitetura mais simples de rede neural

capaz de classificar padrões linearmente separáveis.

• O algoritmo de treinamento do perceptron foi o primeiro modelo de treinamento

supervisionado, embora alguns perceptrons fossem auto-organizados.

Page 154: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 154

• Basicamente, o perceptron consiste em uma única camada de neurônios com pesos

sinápticos e bias ajustáveis.

• Se os padrões de entrada forem linearmente separáveis, o algoritmo de treinamento

do perceptron possui convergência garantida, ou seja, é capaz de encontrar um

conjunto de pesos que classifica corretamente os dados.

• Os pesos dos neurônios que compõem o perceptron serão tais que as superfícies de

decisão produzidas pela rede neural estarão apropriadamente posicionadas no

espaço.

Perceptron Simples para Classificação de Padrões

• O algoritmo do perceptron funciona como a seguir.

o Para cada padrão de treinamento (dado de entrada) xi, a saída da rede yi é

calculada.

o Em seguida, é determinado o erro ei entre a saída desejada para este padrão di e a

saída da rede yi, ei = di − yi.

Page 155: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 155

o O vetor de pesos conectando as entradas (neurônios pré-sinápticos) a cada saída

(neurônios pós-sinápticos) e o bias do neurônio são atualizados de acordo com

as seguintes regras:

wi(t+1) = wi(t) + α ei xi,

b(t+1) = b(t) + α ei,

onde w ∈ ℜ1×m, x ∈ ℜ1×m, e b ∈ ℜ1×1.

• Considere agora o caso mais simples do perceptron com um único neurônio.

Page 156: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 156

u y

Σ

x1

x2

xm

f(u)

Junção somadora

Função de ativação

Saída

w1 w2

wm

+1

w0 = b

Entradas

Figura 28: Modelo matemático genérico do neurônio.

• O objetivo desta rede, mais especificamente deste neurônio, é classificar alguns

padrões de entrada como pertencentes ou não pertencentes a uma dada classe.

• Considere o conjunto de dados de entrada como sendo formado por N amostras

{x1,d1}, {x2,d2}, …, {xN,dN}, onde xj é o vetor j de entradas, e dj sua saída desejada

(classe) correspondente.

Page 157: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 157

• Seja X ∈ ℜm×N, a matriz de dados de entradas com N padrões de dimensão m cada

(colunas de X), e d ∈ ℜ1×N o vetor de saídas desejadas. O algoritmo abaixo pode

ser utilizado para treinar o perceptron de um único neurônio:

procedure [w] = perceptron(max_it,E,α,X,d) initialize w // por simplicidade, inicialize com 0 initialize b //por simplicidade, inicialize com 0

t ← 1 while t < max_it & E > 0 do, for i from 1 to N do, //para cada padrão de entrada

yi ← f(wxi + b) //determine a saída para xi

ei ← di − yi //determine o erro para xi

w ← w + α ei xi //atualize o vetor de pesos

b ← b + α ei //atualize o bias end for

E ← sum(ei)

t ← t + 1 end while

end procedure

Page 158: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 158

Exemplo de Aplicação e Motivação Geométrica

• Considere o problema de utilizar o perceptron com um único neurônio para

representar a função lógica AND.

(0,1) (1,1) (0,0) (1,0)

Entradas Saídas x1 x2 x1 AND x2 0 0 0 0 1 0 1 0 0 1 1 1

[ ]10001010

1100=

= dX

• A saída yi do neurônio para o vetor de dados xi pode ser representada na forma:

yi = f(wxi + b)

• Para quaisquer valores de w e b, a função f(u) separa o espaço de entradas em duas

regiões, sendo que a curva de separação (superfície de decisão) é uma linha reta.

Page 159: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 159

• A equação desta reta é dada por:

w1 x1 + w2 x2 + b = 0

• Se a função de ativação do tipo sinal (degrau) possui θ = 0, então

w1 x1 + w2 x2 + b ≥ 0

resultará em uma saída positiva da rede.

• Inicializando todos os pesos e o limiar em zero w = [0 0] e b = 0, e definindo

α = 1, o algoritmo de treinamento do perceptron fornece o seguinte:

w1 = 2; w2 = 1; b = − 3, portanto 2x1 + 1x2 − 3 = 0.

• Obs.: note que os pesos do perceptron também poderiam ter sido inicializados com

valores aleatórios pequenos.

o Neste caso, a superfície de decisão obtida seria diferente.

o Considere para efeitos ilustrativos: w1 = 0.015; w2 = 0.768; b = 0.971.

o A figura a seguir mostra as duas superfícies de decisão e os pesos e bias

determinados pelo algoritmo de treinamento do perceptron.

Page 160: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 160

(0,1) (1,1) (0,0) (1,0)

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

w1 = 2.015; w2 = 0.768; b = −2.029

Figura 29: Superfícies de decisão.

Perceptron com Múltiplos Neurônios

• Note que a regra de aprendizagem do perceptron é do tipo supervisionado,

empregando aprendizagem por correção de erro.

Page 161: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 161

• Esta regra pode ser facilmente estendida para atualizar os pesos de uma rede de

neurônios em uma única camada.

• Neste caso, para cada vetor de entrada xi haverá um vetor de saídas da rede:

yi = f(Wxi + b); W ∈ ℜo×m, xi ∈ ℜm×1, i = 1,…,N, yi ∈ ℜo×1, e b ∈ ℜo×1, D ∈ ℜo×N.

• Existe agora um vetor de erros para cada padrão de entrada: ei = di − yi.

procedure [W] = perceptron(max_it,α,X,D) initialize W //for simplicity set it to zero initialize b //for simplicity set it to zero

t ← 1 while t < max_it do, for i from 1 to N do, //para cada padrão de entrada

yi ← f(Wxi + b) //determine a saída da rede para xi

ei ← di − yi //determine o vetor de erros para xi

W ← W + α ei xiT //atualize a matriz de pesos

b ← b + α ei //atualize o vetor de bias end for

t ← t + 1 end while

end procedure

Page 162: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 162

Exemplo de Aplicação: Reconhecimento de Caracteres

• Considere o problema de aplicar o perceptron com múltiplas saídas ao problema de

classificação (reconhecimento) dos seguintes caracteres binários:

Figura 30: Padrões de treinamento.

• Cada um destes oito padrões de entrada possui uma resolução de 12×10 pixels e as

classes a que eles pertencem (0,1,2,3,4,6,�,9) estão pré-definidas.

• Vamos projetar um perceptron com oito neurônios de saída, onde cada neurônio irá

corresponder a uma classe. Temos então X ∈ ℜ120×8 e D ∈ ℜ8×8 (matriz diagonal).

Page 163: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 163

• O algoritmo de treinamento do perceptron será responsável então por definir uma

hipersuperfície de decisão em um espaço de dimensão 120 capaz de classificar os

dados corretamente.

Aspectos Práticos do Treinamento do Perceptron

• Condição inicial: verificou-se que diferentes conjuntos iniciais de pesos para o

perceptron podem levar a diferentes superfícies de decisão.

o Na verdade, o problema de ajuste supervisionado de pesos pode ser visto como

um processo de busca por um conjunto de pesos que otimizam uma determinada

superfície de erro.

o Sendo assim, uma escolha inadequada da condição inicial da rede pode levar o

algoritmo a uma convergência para ótimos locais desta superfície de erro.

• Critério de convergência: no caso do perceptron, é possível garantir que, dado um

conjunto de padrões linearmente separáveis, o algoritmo é capaz de encontrar uma

superfície de decisão capaz de classificar corretamente os dados.

Page 164: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 164

o Sendo assim, é possível utilizar como critério de convergência para o perceptron

simples (classificação binária) a determinação de erro igual a zero para todos os

padrões de entrada.

o Outro critério que pode ser utilizado é a adaptação por uma quantidade finita de

iterações, denominadas de épocas de treinamento.

• Parâmetros de treinamento: o algoritmo de treinamento do perceptron possui

basicamente o parâmetro de treinamento α que deve ser definido pelo usuário.

• Treinamento versus aplicação da rede: é importante diferenciar entre o processo

de treinamento e aplicação da rede.

o O treinamento da rede corresponde ao processo de ajuste de pesos.

o Após treinada, a rede poderá ser aplicada ao mesmo problema, de forma a

verificar a qualidade do aprendizado, ou a outro problema, de forma a verificar

sua capacidade de generalização.

Page 165: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 165

procedure [y] = perceptron(W,b,Z)

for i from 1 to N do, //para cada padrão de entrada xi

yi ← f(Wxi + b) //determine as saídas da rede end for

end procedure

Page 166: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 166

Tópico 5: Inteligência de Enxame

1. Introdução

• Várias espécies se beneficiam da sociabilidade:

o A vida em grupos sociais aumenta a probabilidade de acasalamento, facilita a

caça e coleta de alimentos, reduz a probabilidade de ataque por predadores,

permite a divisão de trabalho, etc.

• Comportamentos sociais também inspiraram o desenvolvimento de diversas

ferramentas computacionais para a solução de problemas e estratégias de

coordenação e controle de robôs.

• O termo swarm intelligence foi proposto no fim da década de 1980 onde se referia

a sistemas robóticos compostos por uma coleção de agentes simples em um

ambiente interagindo de acordo com regras locais.

• Algumas definições de swarm intelligence:

Page 167: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 167

o O termo “enxame” (ou coletivo) é utilizado de forma genérica para se referir a

qualquer coleção estruturada de agentes capazes de interagir. O exemplo

clássico de um enxame é um enxame de abelhas, entretanto a metáfora de um

enxame pode ser estendida a outros sistemas com uma arquitetura similar. Uma

colônia de formigas pode ser vista como um enxame onde os agentes são

formigas, uma revoada de pássaros é um enxame onde os agentes são pássaros,

um engarrafamento é um enxame onde os agentes são carros, uma multidão é

um enxame de pessoas, um sistema imunológico é um enxame de células e

moléculas, e uma economia é um enxame de agentes econômicos. Embora a

noção de enxame sugira um aspecto de movimento coletivo no espaço, como em

um ‘enxame de pássaros’, estamos interessados em todos os tipos de

comportamentos coletivos, não apenas movimento espacial. (FAQ do Santa Fé)

o A inteligência de enxame inclui qualquer tentativa de projetar algoritmos ou

dispositivos distribuídos de solução de problemas inspirados pelo

Page 168: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 168

comportamento coletivo de insetos sociais e outras sociedades animais

(Bonabeau et al., 1999).

o A inteligência de enxame é uma propriedade de sistemas compostos por agentes

não inteligentes e com capacidade individual limitada, capazes de apresentar

comportamentos coletivos inteligentes (White & Pagurek, 1998).

• Algumas propriedades da inteligência coletiva:

o Proximidade: os agentes devem ser capazes de interagir;

o Qualidade: os agentes devem ser capazes de avaliar seus comportamentos;

o Diversidade: permite ao sistema reagir a situações inesperadas;

o Estabilidade: nem todas as variações ambientais devem afetar o comportamento

de um agente;

o Adaptabilidade: capacidade de se adequar a variações ambientais.

• Sendo assim, um sistema de enxame é aquele composto por um conjunto de

agentes capazes de interagir entre si e com o meio ambiente. A inteligência de

Page 169: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 169

enxame é uma propriedade emergente de um sistema coletivo que resulta de seus

princípios de proximidade, qualidade, diversidade, estabilidade e adaptabilidade.

• Duas principais linhas de pesquisa podem ser observadas em inteligência de

enxame:

o Trabalhos inspirados por comportamentos sociais de insetos;

o Trabalhos inspirados na habilidade das sociedades humanas em processar

conhecimento.

• Embora existam diferenças entre estas abordagens, elas possuem a seguinte

característica importante em comum:

o População de indivíduos capazes de interagir entre si e com o ambiente.

2. Algumas Ideias sobre Insetos Sociais

• Insetos sociais são aqueles que vivem em comunidades ou colônias. Exemplos:

o Formigas, abelhas, vespas e cupins.

Page 170: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 170

• Uma colônia não é nada além de uma grande família de insetos (sem hierarquia na

maioria dos casos).

• Dentro de uma colônia existe uma sobreposição entre gerações de pais e filhos.

• Cada inseto parece ter sua própria agenda, mesmo assim, uma colônia parece

extremamente bem organizada.

• A integração de todas as atividades individuais não requer supervisão, trata-se de

um fenômeno auto-organizado.

• Exemplos de ninhos:

Page 171: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 171

Formigas do tipo leafcutter cortam folhas de plantas e árvores para cultivar fungos.

Formigas trabalhadoras buscam por alimento a grandes distâncias do ninho,

criando literalmente caminhos de e para o ninho.

• Formigas do tipo weaver formam correntes com seus próprios corpos permitindo

que elas atravessem grandes buracos e carreguem alimento para o ninho.

• Durante sua fase de movimentação e busca por alimento, as formigas do tipo army

organizam frentes de batalha impressionantes.

Page 172: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 172

• As abelhas constroem uma série de pentes paralelos formando correntes que

induzem um aumento local de temperatura. Desta forma, fica mais fácil moldar a

colmeia.

• As fontes de alimento são exploradas de acordo com sua qualidade e distância do

ninho.

• Exemplos de problemas resolvidos por insetos sociais:

o Encontrar alimento, construir ou aumentar o ninho, dividir a mão de obra,

alimentar a colônia, responder a desafios externos (clima, predadores, etc.), soar

alarmes, encontrar um local apropriado para construir o ninho, etc.

Source A Hive Source B

12 91

1.00M 2.50M

Page 173: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 173

2.1. Curiosidades sobre as formigas

• As formigas podem levantar até 20 vezes seu próprio peso.

• O cérebro de uma formiga possui aproximadamente 2,5×105 neurônios, enquanto

o cérebro humano possui aproximadamente 1,0×1010 neurônios.

o Portanto, uma colônia de 40.000 formigas possui o mesmo número de

neurônios que um cérebro humano.

• Uma formiga vive de 45-60 dias.

• As formigas utilizam suas antenas para tocar e sentir cheiro.

• As formigas possuem olhos compostos e seu abdômen possui dois estômagos. O

primeiro armazena alimento para a própria formiga e o segundo armazena

alimento a ser compartilhado.

• Existe mais do que 10.000 espécies conhecidas de formigas.

Page 174: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 174

3. Colônias de Formigas

• As formigas são os insetos sociais mais amplamente estudados. Exemplos da

popularidade das formigas podem ser encontrados em filmes como Formiguinha Z

e Vida de Inseto.

• Considere o seguinte trecho de Formiguinha Z, onde uma formiga trabalhadora

chamada Z entra no consultório do terapeuta reclamando de sua insignificância:

o “Eu me sinto insignificante”

o “Ah, você teve um grande progresso”.

o “Tive?”

o “Sim . . . você é insignificante!”

• Entretanto, a perspectiva que a maioria das pessoas tem da organização social dos

insetos é errônea. Os filmes acima mostram isso claramente.

• Neste filme, por exemplo, existe uma forte hierarquia social, com herdeiros de

trono, etc.

Page 175: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 175

• Algumas tarefas que as formigas devem desempenhar:

o Coletar e distribuir alimento, construir o ninho, cuidar do ninho, dos ovos e das

larvas, etc.

• Alocação de tarefas é o processo que resulta em alguns trabalhadores realizando

tarefas específicas, em quantidades apropriadas à situação atual.

• Trata-se de soluções encontradas para problemas dinâmicos e requer, portanto, um

processo contínuo de adaptação.

• No caso particular das formigas, este processo é auto-organizado. Nenhuma

formiga é capaz de avaliar as necessidades globais do formigueiro e nem de contar

a quantidade de trabalhadores envolvidos em cada tarefa de forma a decidir como

realocá-los.

• A capacidade de cada formiga é limitada. Cada trabalhador precisa tomar apenas

decisões locais.

Page 176: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 176

3.1. Coleta de Alimento pelas Formigas

• Apesar de existir uma grande variedade de formigas no mundo, boa parte delas

possui comportamentos similares de coleta de alimentos.

• Estudos de campo e experimentos de laboratório demonstraram uma grande

capacidade das formigas “explotar” ricas fontes de alimentos sem perder a

capacidade de explorar o ambiente, assim como encontrar o menor caminho entre

o ninho e a fonte de alimentos.

• Neste sentido, dois comportamentos importantes são observados: construir uma

trilha de feromônio, e seguir a trilha de feromônio.

• Recrutamento é o nome dado ao mecanismo comportamental que permite que uma

colônia de formigas reúna rapidamente uma grande quantidade de coletadoras

(foragers) em torno de uma determinada fonte de alimento.

Page 177: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 177

Food source

Nest

Food source

Nest

Food source

Nest

• Existem diferentes formas de recrutamento:

o Recrutamento em massa: um explorador descobre a fonte de alimento e retorna

ao ninho, liberando uma substância química denominada de feromônio e

iniciando a formação de uma trilha. Outras formigas detectam a trilha de

feromônio e seguem-na de forma a reforçá-la.

o Recrutamento de grupo: o explorador guia um grupo de formigas até a fonte de

alimento utilizando uma substância química com ação de curto alcance.

Page 178: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 178

o Recrutamento em linha: o explorador convida outras formigas a seguí-lo.

• O feromônio possui duas funções importantes:

o Definir a trilha a ser seguida; e

o Servir como sinal de orientação para as formigas passeando fora do ninho.

• Exemplo de experimento realizado com formigas para avaliar a importância da

trilha de feromônio na coleta de alimentos:

Food source

Nest

Food source

Nest

Food source

Nest

Page 179: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 179

• Algumas observações importantes deste experimento:

o Os caminhos mais curtos são privilegiados;

o A probabilidade de um caminho mais curto ser escolhido aumenta com a

diferença de comprimento entre os caminhos (estigmergia);

o Se o caminho mais curto for apresentado (muito) depois do caminho mais longo,

ele não será selecionado, a não ser que o feromônio evapore (muito)

rapidamente;

o A quantidade de feromônio que uma formiga libera é diretamente proporcional à

qualidade da fonte de alimento (estímulo) encontrada;

o A aleatoriedade possui um papel importante neste processo. As formigas não

seguem as trilhas perfeitamente, elas possuem uma determinada probabilidade

de se perderem da trilha ao longo do percurso. Este tipo de comportamento é

importantíssimo para que seja possível a descoberta de outras fontes de

alimento.

Page 180: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 180

• Obs.: note aqui a presença de realimentação positiva, estigmergia, e busca baseada

em exploração e explotação.

3.2. Otimização por Colônias de Formigas

• A escolha do caminho mais curto entre a fonte de alimento e o ninho permite que

as formigas minimizem o tempo gasto nesta viagem.

• O problema de encontrar a menor rota entre o ninho e a fonte de alimento é similar

ao problema do caixeiro viajante (TSP).

• Inspirados pelos experimentos de coleta de alimentos por formigas, Dorigo et al.

(1996) estenderam este modelo para resolver o problema do caixeiro viajante.

• Esta abordagem está baseada em um grupo de “formigas artificiais” que liberam e

seguem “trilhas de feromônio artificial”.

• Neste caso, existe uma colônia de formigas (artificiais), cada uma indo de uma

cidade a outra de forma independente, favorecendo cidades próximas ou

caminhando aleatoriamente.

Page 181: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 181

o Enquanto uma formiga atravessa um determinado caminho entre cidades, ela

libera certa quantidade de feromônio inversamente proporcional ao

comprimento total do caminho percorrido pela formiga: quanto menor o

comprimento do caminho percorrido, maior a quantidade de feromônio liberada

e vice-versa.

o Depois que todas as formigas tiverem completado suas rotas e liberado

feromônio, as conexões pertencentes a maior quantidade de rotas mais curtas

terão mais feromônio depositado.

o Como o feromônio evapora com o tempo, quanto maior o comprimento do

caminho, mais rápido será o desaparecimento de uma trilha em um caminho

longo.

• A maior parte dos algoritmos de otimização baseados em colônias de formigas é

utilizada para resolver problemas de otimização combinatória representados por

grafos.

Page 182: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 182

3.3. Uma Simulação de Vida Artificial

• Ninho: lado esquerdo

• Fonte de alimento: lado direito

• N = 500 formigas

Page 183: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 183

Conceitos Básicos sobre a Teoria de Grafos

• Um grafo pode ser definido como uma 2-upla G = (V,E) onde V é um conjunto de

vértices ou nós, e E é um conjunto de conexões ou pares de nós ligando estes

vértices: V = {v0,v1,…,vN}, E = {(vi,vj) : i ≠ j}.

Page 184: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 184

• Um caminho em um grafo consiste em uma sequência alternada de nós e conexões.

Quando não existir ambiguidade, um caminho pode ser descrito por uma sequência

de nós.

• Um grafo é dito:

o conexo se existir pelo menos uma conexão ligando cada par de nós.

o direcionado quando existe uma direção específica de percurso.

o ponderado se para cada conexão e ∈ G for especificado um número não

negativo w(e) ≥ 0 denominado peso ou comprimento de e.

A B A A C A C

C G1 B G2 B F G3 B F G4

E D C E D E D

3 2 1 2 5

4 1

Page 185: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 185

3.4. Algoritmo Simples de Otimização por Colônias de

Formigas

• Algoritmos de otimização por colônias de formigas (ACO) foram inicialmente

propostos por Dorigo et al. (1991) e Dorigo (1992) como uma abordagem multi-

agente para resolver problemas de otimização combinatória.

• Obs.: um problema combinatorial é aquele para o qual existe uma grande

quantidade discreta de possíveis soluções.

• Assumindo um grafo conexo G = (V,E), o ACO simples (S-ACO) pode ser

utilizado para determinar uma solução para o problema do caminho mais curto

definido no grafo G.

• Uma solução é um caminho no grafo conectando um nó inicial s a um nó destino d,

e o comprimento do caminho é dado pelo número de conexões atravessadas.

• No S-ACA existe uma variável τij denominada de trilha artificial de feromônio

associada a cada conexão (i,j).

Page 186: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 186

• Cada formiga artificial é capaz de “liberar feromônio” em uma conexão e avaliar a

quantidade de feromônio em uma determinada conexão.

• Cada formiga atravessa uma conexão a cada passo de tempo t (iteração) e, em cada

nó, a informação local sobre a quantidade (nível) de feromônio τij da conexão é

utilizada pela formiga de forma que ela selecione probabilisticamente o próximo

nó para o qual ela irá se mover, de acordo com a seguinte regra:

= ∑ ∈

casos outros0

se)(τ

)(τ

)( i

Nj ij

ij

kij

Njt

t

tpi

onde )(tpkij é a probabilidade de uma formiga k localizada no nó i se mover para o

nó j, τij(t) é o nível de feromônio da conexão (i,j), todos na iteração t, e Ni é o

conjunto de vizinhos diretos do nó i.

• Quando uma formiga atravessa uma conexão (i,j) ela deposita em pouco de

feromônio nesta conexão:

Page 187: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 187

τij(t) ← τij(t) + ∆τ,

onde ∆τ é uma quantidade constante de feromônio depositada pela formiga.

• Note que quando uma formiga deposita feromônio numa determinada conexão ela

está aumentando a probabilidade de que esta conexão seja selecionada por outra

formiga, reforçando uma determinada trilha.

• Para evitar uma convergência prematura do algoritmo quando aplicado a

problemas de caminho mais curto foi inserida uma equação para evaporação do

feromônio:

τij(t) ← (1−ρ)τij(t) + ∆τ,

onde ρ ∈ [0,1) é a taxa de decaimento do feromônio.

Page 188: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 188

3.5. Algoritmo Genérico de Otimização por Colônias de

Formigas

• Um algoritmo de otimização por colônias de formigas alterna, por uma quantidade

máxima de iterações, a aplicação de dois procedimentos básicos:

o Um procedimento paralelo de construção/modificação de trilhas no qual um

conjunto de N formigas constrói/modifica N soluções paralelas para o problema;

o Uma regra de atualização de feromônio a partir da qual a quantidade de

feromônio nas conexões é alterada.

• O processo de construir ou modificar uma solução (caminho) é feito de forma

probabilística, e a probabilidade de uma nova conexão ser adicionada à solução

sendo construída é função de uma qualidade heurística η (heuristic desirability) e

da quantidade de feromônio τ depositada por outras formigas.

• A qualidade heurística expressa a probabilidade de uma formiga se mover para

uma determinada conexão. Exemplo:

Page 189: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 189

o Quando o caminho mínimo está sendo procurado, η pode ser tomado como

sendo inversamente proporcional à distância entre um par de nós.

o A regra de atualização da quantidade de feromônio deve levar em conta a taxa

de evaporação de feromônio ρ e a qualidade das soluções produzidas.

• Seja best a melhor solução encontrada até a iteração atual, max_it a quantidade

máxima de iterações que o algoritmo irá percorrer, e e a quantidade de conexões

no grafo:

Page 190: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 190

procedure [best] = ACO(max_it)

initialize τij //usually every edge is initialized with the same τ0 place each ant k on a randomly selected edge

t ← 1 while t < max_it do, for i = 1 to N do, //for each ant

build a solution by applying a probabilistic transition

rule (e − 1) times. The rule is a function of τ and η //e is the number of edges on the graph G

end for eval the cost of every solution built if an improved solution is found, then update the best solution found

end if update pheromone trails

t ← t + 1 end while

end procedure

Page 191: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 191

3.6. Exemplo de Aplicação

• Considere o problema do caixeiro viajante (TSP) representado sob a forma de um

grafo.

• Neste problema, as formigas constroem as soluções movendo-se de um nó para

outro do grafo.

• A cada iteração, uma formiga k, k = 1,...N, constrói um caminho (rota) aplicando

uma regra de transição probabilística (e − 1) vezes.

• A transição de uma formiga da cidade i para a cidade j na iteração t irá depender de

três fatores:

o do fato da cidade já ter sido visitada ou não;

o do inverso da distância dij entre as cidades i e j, denominado de visibilidade

ηij = 1/dij; e

o da quantidade de feromônio τij na conexão ligando as cidades i e j .

Page 192: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 192

• Como no caso do TSP cada cidade não deve ser visitada mais do que uma vez, é

preciso armazenar informação sobre as cidades que já foram visitadas. Isso pode

ser feito empregando-se, por exemplo, uma lista tabu ou memória, que irá definir o

conjunto de cidades Jik que a formiga k ainda deve visitar enquanto na cidade i.

• A probabilidade de uma formiga k ir de uma cidade i para uma cidade j na iteração

t é dada pela seguinte regra de transição:

= ∑ ∈

contrário caso0

se][η.)]([τ

][η.)]([τ

)(ki

Jl ilil

ijij

kij

Jjt

t

tpki

βα

βα

onde τij(t) é o nível de feromônio na conexão (i,j), e ηij é a visibilidade da cidade j

quando na cidade i. Os parâmetros α e β são definidos pelo usuário e controlam o

peso relativo da intensidade da trilha (feromônio) e da visibilidade. Por exemplo, se

α = 0 cidades mais próximas tenderão a serem escolhidas, enquanto se β = 0, apenas

amplificação na quantidade de feromônio será considerada.

Page 193: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 193

• De forma similar ao algoritmo simples (S-ACO), quando uma formiga atravessa

uma conexão ela libera um pouco de feromônio. Neste caso, a quantidade de

feromônio liberada em cada conexão (i,j) pela formiga k, ∆τkij(t), depende de seu

desempenho:

=∆casos outros0

)(),( se)(/)(τ

tTjitLQt

kkkij

onde Lk(t) é o comprimento da rota Tk(t) percorrida pela formiga k na iteração t, e

Q é outro parâmetro definido pelo usuário.

• A regra de atualização de feromônio é a mesma do caso simples, porém leva em

consideração a quantidade diferenciada de feromônio liberada por cada formiga a

cada iteração:

τij(t) ← (1−ρ)τij(t) + ∆τij(t),

onde ρ ∈ [0,1) é a taxa de decaimento de feromônio, ∆τij(t) = ∑k ∆τkij(t), e

k = 1,…N é o índice das formigas.

Page 194: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 194

• Os proponentes do algoritmo sugerem a utilização de N = e, ou seja, a quantidade

de formigas igual à quantidade de cidades do grafo.

• Os autores também introduziram o conceito de “formigas elitistas”, responsáveis

por reforçar a melhor rota encontrada até o momento, adicionando b.Q/Lbest ao seu

valor de feromônio, onde b é a quantidade de formigas elitistas, e Lbest é o

comprimento da melhor rota encontrada até o momento.

• Alguns parâmetros sugeridos: α = 1, β = 5, ρ = 0.5, N = e, Q = 100, τ0 = 10−6, e

b = 5.

Escopo de aplicação

• Problemas de otimização combinatória em geral. Alguns autores sugerem que se

trata da melhor heurística para os problemas de ordenação sequencial (sequential

ordering), especificação quadrática (quadratic assignment), e está entre as

melhores alternativas para os problemas de roteamento de veículos e de rede.

Page 195: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 195

procedure [best] = AS-TSP(max_it)

initialize τij //usually every edge is initialized with the same τ0 place each ant k on a randomly selected city Let best be the best tour found from the beginning and Lbest its length

t ← 1 while t < max_it do, for i = 1 to N do, //for every ant

build tour Tk(t) by applying (e − 1) times the following step: At city i, choose the next city j with a given probability

end for eval the length of the tour performed by each ant if a shorter tour is found, then update best and Lbest end if for every city e do,

Update pheromone trails by applying the rule:

τij(t+1) ← (1−ρ)τij(t) + ∆τij(t) + b.∆τbij(t), where

∆τij(t) = ∑k ∆τkij(t), k = 1,…N;

=∆otherwise0

)(),( if)(/)(τ

tTjitLQt

kkkij , and

=∆otherwise0

),( if/)(τ

bestjiLQt bestb

ij .

end for

t ← t + 1 end while

end procedure

Page 196: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 196

• Outras aplicações: coloração de grafos, scheduling, multiple knapsack, e frequency

assignment.

Da Biologia para a Computação

Biologia Algoritmos ACO

Formiga Agente usado para construir soluções para o problema

Colônia de formigas População (colônia) de indivíduos cooperativos conhecidos como formigas artificiais

Trilha de feromônio Modificação do ambiente promovida pelas formigas artificiais com o objetivo de fornecer uma comunicação indireta com outras formigas da colônia

Evaporação do feromônio Redução do nível de feromônio de um dado ramo com o passar do tempo

Page 197: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 197

3.7. Clusterização de Corpos e Organização de Larvas

• Para limpar seus formigueiros, algumas espécies de formigas juntam corpos e

partes de corpos de formigas mortas em regiões específicas do formigueiro.

• O mecanismo básico por trás deste processo é uma atração entre os itens mortos

mediada pelas formigas. Pequenos amontoados se formam e vão crescendo

atraindo uma maior quantidade de corpos naquela região do espaço.

• Este comportamento pode ser modelado utilizando-se duas regras simples:

o Regra para pegar um item: se uma formiga encontra um item morto ela o pega e

passeia pelo ambiente até encontrar outro item morto. A probabilidade desta

formiga pegar o item morto é inversamente proporcional a quantidade de itens

mortos naquela região do espaço.

o Regra para largar um item: carregando um item a formiga eventualmente

encontra mais itens no caminho. A probabilidade desta formiga deixar este item

junto ao outro é proporcional à quantidade de itens mortos naquela região.

Page 198: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 198

• Como resultado destas simples regras comportamentais, todos os itens mortos irão,

eventualmente, ser agrupados na mesma região ou em regiões vizinhas do espaço.

Page 199: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 199

3.8. Clusterização por Colônias de Formigas

• A análise de cluster ou clusterização de dados pode ser definida como a

organização ou separação de um conjunto de dados ou padrões em grupos

denominados de clusters. Essa organização é feita baseada em algum critério de

similaridade.

• Os dados são geralmente representados por um vetor de medidas ou atributos que

corresponde a um ponto em um espaço multidimensional.

• Intuitivamente, dados em um mesmo cluster são mais semelhantes do que dados

que não pertencem ao mesmo cluster.

• O problema de clusterização de dados pode ser definido como a seguir:

o Seja um conjunto X de N amostras (dados), X = {x1,…,xN}, cada qual de

dimensão L, encontre um esquema de discriminação para agrupar (clusterizar)

os dados em c grupos denominados de clusters. O número de clusters e as

características de cada cluster devem ser determinados.

Page 200: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 200

• Para desenvolver um esquema de discriminação de forma a clusterizar os dados é

necessário definir uma métrica, geralmente uma medida de distância, que

quantifica o grau de similaridade (ou dissimilaridade) entre dois dados em um

determinado espaço métrico.

• A métrica mais comumente utilizada é a distância Euclidiana:

D2(xi,xj) = (∑k(xi,k − xj,k)2)1/2 = ||xi − xj||2.

• É importante salientar que clusterização envolve o agrupamento de dados não

rotulados, ou seja, dados cujas classes não são pré-conhecidas.

3.9. Algoritmo Simples de Clusterização (ACA)

• Neste algoritmo, uma colônia de “agentes formigas” movendo-se aleatoriamente

em um grid bidimensional tem a capacidade de pegar itens dentro do grid e movê-

los para outras posições do grid.

• A ideia geral é de que itens isolados devem ser pegos e movidos para locais do grid

onde se encontram mais itens daquele mesmo tipo.

Page 201: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 201

• Note, entretanto, que o grupo ao qual cada item pertence é desconhecido a priori.

• Assuma que existe um único tipo de item no ambiente, e que uma determinada

quantidade de agentes formiga cuja função é carregar itens de uma posição a outra

do grid está disponível.

• A probabilidade pp de que uma formiga “descarregada” se movendo aleatoriamente

pelo grid pegue um determinado item é:

2

1

1

+=

fk

kp p

onde f é a fração de itens percebidos na vizinhança da formiga, e k1 é uma

constante (threshold). Para f << k1, pp ≈ 1, ou seja, a probabilidade de uma formiga

pegar um item quando há poucos itens em sua vizinhança é grande.

• A probabilidade pd de uma formiga “carregada” movendo-se aleatoriamente pelo

ambiente deixar este item em uma determinada posição do grid é dada por:

Page 202: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 202

2

2

+=

fk

fpd

onde f é a fração de itens percebidos na vizinhança da formiga, e k2 é outra constante

(threshold). Para f << k2, pd ≈ 0, ou seja, a probabilidade de uma formiga deixar um

item quando há poucos itens em sua vizinhança é pequena.

• Para utilizar este modelo teórico como uma ferramenta de clusterização

(engenharia), ainda é necessário definir dois aspectos importantes:

o Qual o tipo de ambiente no qual as formigas vão se movimentar?

o Como definir a função f?

Definição do Ambiente

• No algoritmo padrão, as formigas movem-se em um grid bidimensional contendo

m×m células, e possuem a capacidade de perceber o ambiente em uma vizinhança

de sua posição atual Neigh(s×s).

Page 203: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 203

• Neste caso, os padrões de entrada são projetados em regiões aleatórias do grid e

devem posteriormente ser reposicionados de forma a preservar as relações de

vizinhança entre itens “vizinhos” no espaço original de atributos.

Page 204: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 204

Definição da Fração de Itens Percebidos f

• Note que f pode ser entendido como sendo a “visibilidade” de cada formiga.

• Assim como no caso da função de fitness em algoritmos evolutivos, f será uma

função do problema a ser tratado. Por exemplo, em um contexto de sistemas

robóticos, f foi definido como sendo o quociente entre a quantidade N de itens

Page 205: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 205

encontrados nas últimas T iterações do algoritmo e a maior quantidade possível de

itens que poderia ser encontrada neste período.

• Assumindo que as formigas se movem em um grid bidimensional, o algoritmo

padrão de clusterização baseado em colônias de formigas pode ser descrito como a

seguir:

Page 206: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 206

procedure [] = ACA(max_it,N,k1,k2) place every item i on a random cell of the grid place every ant k on a random cell of the grid unoccupied by ants

t ← 1 while t < max_it do, for i = 1 to N do, //for every ant

if unladen ant AND cell occupied by item xi, then compute f(xi) and pp(xi) pick up item xi with probability pp(xi)

else if ant carrying item xi AND cell empty, then compute f(xi) and pd(xi) deposit (drop) item xi with probability pd(xi)

end if move to a randomly selected neighboring and unoccupied

cell end for

t ← t + 1 end while print location of items

end procedure

Page 207: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 207

3.10. Exemplos de Aplicação

• Lumer & Faieta (1994) aplicaram o algoritmo padrão ao problema de análise

exploratória de dados, onde o objetivo era encontrar clusters em dados não

rotulados.

• Os dados foram tomados em um espaço Euclidiano de dimensão L, ℜL, e foi

utilizado um grid bidimensional com vizinhança unitária.

• A função f é dada por:

>

= ∑×∈

casos outros0

0 seα

),(1

1)(

)(Neigh2

)(

fd

sfr

ji

issjx

xx

x

onde f(xi) é uma medida da similaridade média do item xi em relação a outro item xj

na vizinhança de xi, α é um fator que define a escala de dissimilaridade, e d(xi,xj) é a

distância Euclidiana entre os dados xi e xj em seus espaços originais.

• As probabilidades de pegar e deixar um item foram dadas por:

Page 208: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 208

2

1

1

)()(

+=

i

ipfk

kp

xx

<=

skf

kffp

i

ii

id

2

2

)( if1

)( if)(2)(

x

xxx

• Embora o algoritmo ACA seja capaz de agrupar os dados, ele geralmente encontra

uma quantidade de grupos maior do que a existente na base de dados original.

Além disso, o algoritmo padrão não estabiliza em uma dada solução, ele fica

construindo e reconstruindo grupos constantemente.

• Para aliviar estes problemas, Vizine et al. (2005) propuseram três modificações no

algoritmo original:

o Um decaimento para o parâmetro k1;

o Um campo de visão progressivo que permite uma visão mais abrangente para as

formigas; e

Page 209: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 209

o A adição de feromônio aos itens carregados pelas formigas e possibilidade de

transferência de feromônio para o grid.

• Decaimento de k1:

o A cada ciclo (10.000 passos de formiga) k1 sofre um decaimento geométrico:

k1 ← 0.98×k1,

k1min = 0.001.

o Quando uma formiga percebe um grupo grande ela aumenta seu campo de visão:

If f(xi) > θ and s2 ≤ s2max,

then s2 ← s2 + ns

Sugestão dos autores: s2max = 7 × 7 and θ = 0.6

o Inspirados pelo processo de realimentação positiva via feromônio no processo

de construção de ninhos pelos cupins, os autores propuseram a adição de um

nível de feromônio ao grid φ(i), onde i é o índice da célula do grid:

Page 210: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 210

2

1

1

)()()(

1)(

+=

ifk

k

iifiPp φ

2

2 )(

)()()()(

+=

ifk

ifiifiPd φ

• Uma aplicação investigada: yeast galactose data (bioinformática: expressão de

genes).

o 205 amostras com 20 atributos divididas em 4 grupos distintos (obs.: dados não

rotulados)

o Parâmetros do algoritmo: nants = 10, tamanho do grid 35×35, α = 1.05, θ = 0.6,

k1 = 0.20, and k2 = 0.05.

Page 211: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 211

0

C 3

C 1 C 1

C 2

C 4

Page 212: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 212

Escopo de aplicação

• Os algoritmos de clusterização baseados em colônias de formigas são aplicáveis a

problemas de análise exploratória de dados, onde um conjunto de dados não

rotulados está disponível e alguma informação (grau de similaridade entre itens,

inferência sobre a pertinência de novos itens, etc.) deve ser extraída (inferida)

destes dados.

• Aspecto importante do algoritmo: redução da dimensionalidade e, portanto, a

capacidade de visualizar relações de vizinhança entre dados de elevada dimensão.

Page 213: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 213

Da Biologia para a Computação

Biologia (Ant Clustering) Algoritmo ACA

Ambiente (Arena) Grid bidimensional no qual os itens são projetados e as formigas se movem

Formiga Agente capaz de se mover no ambiente, pegar e larger items

Colônia de formigas População (colônia) de agentes cooperativos conhecidos como formigas artificiais

Corpos e larvas de formigas Itens (p.ex. dados de entrada)

Pilha (grupos) de corpos Clusters de itens

Visibilidade de uma formiga Fração de itens percebidos f

Page 214: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 214

4. Robótica de Enxame

• Em robótica autônoma, a chamada robótica coletiva ou robótica de enxame é

baseada em metáforas e inspiração tomada de sistemas biológicos, em particular de

insetos sociais, para o projeto de sistemas de controle distribuído ou estratégias de

coordenação para grupos de robôs.

• Comportamentos coletivos de insetos sociais fornecem fortes evidências de que

sistemas compostos por agentes simples são capazes de realizar tarefas complexas

específicas.

• Sabe-se, entretanto, que as capacidades cognitivas destes insetos são muito

restritas.

o Sendo assim, os comportamentos complexos que surgem devem ser

propriedades emergentes resultantes das interações entre os agentes e deles com

Page 215: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 215

seu ambiente, onde cada agente geralmente segue regras comportamentais

simples.

• Portanto, a robótica coletiva inspirada em insetos sociais é diferente das

abordagens de inteligência artificial clássica no sentido de que a robótica coletiva é

do tipo bottom-up: grupos de agentes simples seguindo regras comportamentais

simples (sistemas auto-organizados).

• Grupos de robôs móveis são projetados e construídos com o objetivo principal de

estudar características como arquitetura de grupo, origem de cooperação,

aprendizagem, resolução de conflitos, etc.

• O crescente interesse pela robótica coletiva nos últimos anos deve-se a vários

fatores:

o Algumas tarefas são inerentemente muito complexas (ou impossíveis) de serem

resolvidas por um único robô;

o Melhorias de desempenho podem ser conseguidas utilizando-se múltiplos robôs;

Page 216: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 216

o A construção e utilização de robôs simples é geralmente muito mais barata,

flexível e tolerante a falhas do que projetar um único robô com alta capacidade

de processamento de informação e sensores complicados;

o A queda nos preços de robôs comerciais simples, como os Kheperas®;

o O progresso da robótica móvel facilitou o estudo com grupos de robôs;

o Estudos em Vida Artificial contribuíram para um maior entendimento e

formalização de processos auto-organizados e fenômenos emergentes; e

o As características construtivas e sintéticas da robótica coletiva contribuem para

uma melhor compreensão de diversos fenômenos biológicos e sociais.

• Uma das características construtivas marcantes da robótica coletiva é a utilização

de vários robôs com regras comportamentais simples e individuais.

• Sendo assim, o comportamento coletivo será uma propriedade emergente do grupo.

Page 217: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 217

• Essa característica gera então uma dúvida importante: como poderemos prever que

o comportamento do grupo será apropriado para a realização de uma determinada

tarefa?

• Outra dificuldade da robótica coletiva é que, devido a falta de conhecimento global

do sistema, o sistema pode estagnar em algum ponto de sua operação.

• Existe uma grande quantidade de trabalhos em robótica coletiva, e descreveremos

quatro deles inspirados nos seguintes comportamentos biológicos das formigas:

o Coleta de alimento;

o Clusterização de corpos;

o Agrupamento em torno da fonte de alimento (recrutamento); e

o Transporte coletivo de presas.

• O enfoque desta parte curso será nas regras comportamentais de robôs individuais

que levam a comportamentos emergentes. Não serão apresentadas discussões sobre

os aspectos construtivos e detalhes de implementação dos robôs.

Page 218: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 218

4.1. Coleta de Alimento pelas Formigas

• Krieger et al. (2000) demonstraram que um sistema de alocação de tarefas

inspirado no comportamento de formigas coletando alimento fornece um

mecanismo simples, robusto e eficiente para regular as atividades de um grupo de

robôs.

• O objetivo é coletar “itens de alimento” sem que os robôs tenham informação

alguma sobre o ambiente e a quantidade de robôs na colônia. Uma quantidade

mínima de itens de alimento deve ser mantida no ninho para que a energia da

colônia seja mantida acima de um determinado limiar.

• A escolha deste mecanismo biológico deve-se a vários fatores:

o A coleta de alimentos é um dos problemas para o qual se possui um maior grau

de conhecimento sobre como se dá a divisão de tarefas;

o A eficiência da coleta de alimentos é um fator chave para a produtividade da

colônia; e

Page 219: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 219

o A coleta de alimentos é uma das tarefas que tem recebido maior atenção pela

comunidade de robótica coletiva.

• Seja um grupo de robôs em um “ninho” central e um conjunto de “itens de

alimentação”, todos dentro de uma arena finita.

• O experimento e as regras comportamentais podem ser resumidos como a seguir:

o Cada robô possui a capacidade de avaliar e alterar a energia da colônia;

o Enquanto no ninho, os robôs recebem informação sobre o nível de energia da

colônia através de mensagens de rádio;

o Os robôs saem do ninho sequencialmente apenas quando a energia da colônia

cai abaixo de um determinado limiar;

o Cada robô é programado para evitar colisões com obstáculos;

o Ao retornar ao ninho, cada robô renova sua energia decrementando a energia da

colônia, e descarrega o item de alimento coletado em uma cesta, aumentando a

energia da colônia; e

Page 220: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 220

o Em alguns experimentos os robôs foram programados para recrutar outros robôs

assim que eles encontram uma região da arena rica em alimento, imitando o

recrutamento em linha observado em algumas espécies de formigas.

• Em resumo, os robôs possuem informações gerais sobre o nível de energia da

colônia, evitam colisões, e em alguns casos, podem recrutar outros robôs para

coletar alimento.

• Os experimentos realizados mostraram, dentre outras coisas, que o recrutamento

em linha é uma forma eficiente de “explotar” itens agrupados (clusterizados) no

ambiente. Além disso, o sistema também mostrou ser capaz de manter uma energia

mínima no ninho.

Page 221: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 221

Page 222: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 222

4.2. Clusterização de Objetos

• Beckers et al. (1994) desenvolveram um sistema de robótica coletiva para juntar

itens dispersos em uma arena em um único cluster, simulando o comportamento de

clusterização de itens mortos em colônias de formigas.

• Os robôs foram projetados de forma que eles pudessem mover certa quantidade de

itens, e tal que a probabilidade de um item ser depositado em uma determinada

região da arena fosse diretamente proporcional à quantidade de itens naquela

região.

• Isso foi feito através da percepção de uma densidade local de itens utilizando um

mecanismo simples de disparo.

• Nestas simulações os robôs foram equipados com uma garra em forma de C com

um sensor capaz de detectar a presença de três ou mais itens em seu interior.

Page 223: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 223

• Neste caso, os robôs possuem apenas três regras comportamentais:

o Quando nenhum sensor é ativado, o robô executa seu comportamento padrão,

que corresponde a uma movimentação em linha reta até que um obstáculo seja

detectado ou um sensor (switch) seja ativado.

o Ao detectar um obstáculo, o robô executa um comportamento para evitar colisão

do tipo girar em torno do eixo com um ângulo aleatório, e o comportamento

padrão volta a ser executado. Se o robô está empurrando alguns itens quando ele

encontra um obstáculo, estes itens são retidos pela garra enquanto o robô faz a

manobra.

Page 224: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 224

o Quando a garra empurra três ou mais itens, um sensor é ativado resultando na

liberação dos itens, que consiste na abertura da garra seguida de uma marcha ré.

Feito isso, o robô gira com um ângulo aleatório em torno de seu eixo e volta a

seu comportamento padrão.

• Não existe nenhum tipo de comunicação explícita entre os robôs. Eles são

autônomos com todos os sensores, motores, e circuitos de controle independentes.

• Portanto, o comportamento resultante desta colônia de robôs é conseguido através

de um processo estigmérgico auto-organizado baseado na reação dos robôs à

configuração ambiental corrente.

• Os resultados apresentados mostraram que estas simples regras comportamentais

permitem o controle e coordenação de um grupo de robôs sem comunicação direta.

• Trata-se, portanto, de uma verificação de mundo real que comportamentos

estigmérgicos podem ser implementados em robôs para que eles realizem uma

determinada tarefa.

Page 225: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 225

Page 226: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 226

4.3. Transporte Coletivo de Presas

• Várias espécies de formigas são capazes de transportar coletivamente presas tão

grandes que estas jamais poderiam ser coletadas por uma única formiga.

• Se uma única formiga encontrar uma presa e for capaz de transportá-la sozinha

para o ninho, ela o fará.

• Entretanto, se ela não for capaz, esta formiga poderá recrutar outras formigas via

recrutamento em linha (comunicação direta) ou através da criação de trilhas de

feromônio (recrutamento em massa).

• Quando mesmo um grupo grande de formigas não é capaz de mover uma presa,

formigas trabalhadoras especializadas com grandes mandíbulas poderão ser

recrutadas de forma a cortar a presa em pedaços mais facilmente transportáveis.

• Apesar de muito estudados, estes fenômenos de transporte coletivo de presas ainda

não possuem modelo formal.

• Existem várias características interessantes do transporte coletivo por formigas:

Page 227: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 227

o Ele é mais eficiente do que o transporte individual, e a capacidade coletiva das

formigas cresce de forma não-linear com a quantidade de formigas envolvidas

na tarefa;

o A resistência ao transporte parece ser o fator determinante na forma como a

presa será transportada. Por exemplo: se ela será puxada ou arrastada, e se

haverá mais do que uma formiga envolvida nesta tarefa.

o Se uma única formiga tenta carregar uma presa e falha, mais formigas poderão

ser recrutadas. A formiga perde algum tempo tentando realinhar seu corpo sem

soltar a presa na esperança de quebrar a inércia e movê-lo. Caso o realinhamento

corporal não seja suficiente, a formiga também tenta se reposicionar em torno

da presa.

• Acredita-se que a quantidade de formigas envolvidas na coleta de presa é uma

função da dificuldade em movê-la, e não apenas do peso da presa.

• A resistência ao movimento estimula o recrutamento de mais formigas.

Page 228: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 228

• O sucesso em empurrar uma presa em uma determinada direção é seguido por

outras tentativas na mesma direção.

• O recrutamento é cessado quando as formigas envolvidas no transporte são

capazes de transportar a presa em uma direção bem definida.

• Em resumo:

o Se uma determinada presa não pode ser movida, as formigas iniciam tentando se

realinhar e se reposicionar em torno do item.

o Somente quando estas duas estratégias falham mais formigas são recrutadas.

• É importante notar que a coordenação no transporte coletivo parece ser mediada

pela presa, ou seja, o resultado da ação de uma formiga irá influenciar o estímulo

percebido pelas outras formigas.

Cooperative Box Pushing

• Inspirados por essas observações, Kube & Zang (1992) estudaram o problema de

transporte coletivo de presas visando uma implementação em robôs.

Page 229: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 229

• O problema por eles abordado – collective box pushing – é, em essência,

equivalente ao transporte coletivo de presas.

• Três tarefas foram estudadas:

o Empurrar uma caixa em qualquer direção;

o Empurrar a caixa em uma direção pré-especificada;

o Transportar a caixa para vários destinos pré-especificados.

• Os robôs possuem cinco comportamentos hierárquicos:

o Evitar colisões;

o Realizar a tarefa (objetivo);

o Reduzir a velocidade;

o Seguir o vizinho mais próximo;

o Encontrar a presa.

• Apenas três regras comportamentais foram implementadas:

Page 230: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 230

o Um único robô se esforça para puxar ou empurrar a presa tentando diversos

realinhamentos e reposicionamentos;

o Se ele não for bem sucedido, ele recruta outros robôs;

o O grupo de robôs irá tentar de forma coletiva e cooperativa mover a presa

(objeto) tentando se realinhar e reposicionar independentemente, até que uma

configuração satisfatória dos robôs resulte em uma movimentação do objeto.

• Assim como no exemplo anterior, nenhum mecanismo de comunicação direta é

utilizado no transporte do objeto.

• Verificou-se que na ausência de realinhamento e reposicionamento o sistema sofria

estagnação.

• Este sistema é considerado o único modelo existente para o respectivo fenômeno

biológico envolvido.

Page 231: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 231

Page 232: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 232

Recrutamento

• Um dos problemas envolvidos no transporte coletivo de presas grandes é o

recrutamento de formigas em torno da presa.

• Estudos teóricos sugerem dois tipos básicos de recrutamento baseado na emissão

de substâncias químicas: recrutamento de curto alcance via liberação de químicos

no ar (recrutamento de grupo) e recrutamento de longo alcance via trilhas de

feromônio (recrutamento em massa).

• Inspirados nestes (e outros) comportamentos, pesquisadores do MIT AI Lab

desenvolveram uma comunidade de micro-robôs para simular o que eles

denominaram de AntFarm.

• Este projeto possuía dois objetivos principais:

o Integrar diversos sensores e atuadores em micro-robôs; e

Page 233: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 233

o Estudar o comportamento de uma comunidade robótica estruturada a partir das

interações de vários robôs simples cuja comunicação se dá através de sensores

infravermelhos.

• Um dos comportamentos estudados foi o recrutamento de robôs em torno de

regiões do espaço ricas em alimento.

• Os robôs eram inicialmente espalhados de forma aleatória em uma arena e um item

de alimento colocado nesta arena.

• Três simples regras comportamentais foram definidas:

o Assim que um robô detecta alimento ele emite um sinal infravermelho dizendo

“Encontrei alimento”. Qualquer robô a um raio de 12” deste recrutador detectará

o sinal;

o Quando um robô detecta o sinal ele vai em direção ao chamado e propaga outro

sinal “Recebi um chamado de alimento”;

o Quando outro robô recebe a mensagem do segundo robô, ele recruta mais robôs.

Page 234: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 234

Page 235: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 235

Escopo da Robótica Coletiva

• Diversos pesquisadores em robótica coletiva sugerem que suas aplicações em

potencial requerem a miniaturização destes robôs.

• Micro- e nano-robôs que, por construção, possuem capacidades sensoriais e

cognitivas restritas, deverão operar em grandes grupos na realização de tarefas.

• Défago identifica quatro classes principais de aplicação para eles:

o Exploração: trabalhos em ambientes hostis, inacessíveis ou de difícil

comunicação (p. ex. superfície de outros planetas);

o Indústrias: grupos ou times de robôs deverão trabalhar em linhas de montagem;

o Medicina e cirurgia: existem diversas aplicações médicas que utilizam nano-

robôs, como micro-cirurgia e controle, e local de aplicação de drogas dentro do

organismo;

Page 236: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 236

o Materiais inteligentes: são materiais feitos a partir de diversos módulos

pequenos cada qual formando uma grande estrutura capaz de alterar sua forma e

propriedades físicas dinamicamente.

5. Adaptação Social do Conhecimento

• A técnica de otimização baseada em partículas (particle swarm optimization -

PSO) possui como uma de suas principais motivações criar uma simulação do

comportamento social humano, particularmente a capacidade humana de processar

conhecimento.

• Assim como todas as outras abordagens de inteligência de enxame, ela está

baseada em uma população de indivíduos capazes de interagir entre si e com o

meio ambiente.

• Comportamentos globais serão, portanto, resultados emergentes destas interações.

Page 237: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 237

• Uma teoria sociocognitiva muito simples está por trás do PSO:

o Cada indivíduo de uma população possui sua própria experiência e é capaz de

avaliar a qualidade desta experiência; e

o Como os indivíduos são sociais, eles também possuem conhecimentos sobre

como seus vizinhos se comportaram (desempenharam).

• Estes dois tipos de informação correspondem à aprendizagem individual

(cognitiva) e à transmissão cultural (social), respectivamente.

• Portanto, a probabilidade de um determinado indivíduo tomar uma certa decisão

será uma função de seu desempenho no passado e do desempenho de alguns de

seus vizinhos.

• Kennedy et al. (2001) utilizaram três princípios para resumir o processo de

adaptação cultural:

o Avalie: os indivíduos possuem a capacidade de sentir o ambiente de forma a

avaliar seu próprio comportamento;

Page 238: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 238

o Compare: os indivíduos usam uns aos outros como forma comparativa;

o Imite: a imitação é central em organizações sociais humanas e é importante para

a aquisição e manutenção das habilidades mentais.

5.1. Algoritmo de Otimização por Partículas

• No algoritmo PSO, os indivíduos que são candidatos a solução de um determinado

problema aprendem a partir de suas próprias experiências e da experiência de

outros.

o Eles se avaliam, comparam seus desempenhos com os de seus vizinhos e imitam

somente aqueles que são melhores do que eles.

• Os indivíduos da população são representados por pontos, denominados de

partículas, em um espaço ℜL.

• As variações nos atributos destes pontos levam a novos pontos no espaço, ou seja,

correspondem a movimentações no espaço.

Page 239: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 239

• Uma ideia inspirada em sistemas cognitivos é a de que estas partículas tenderão a

se mover em direção umas das outras e irão influenciar umas as outras.

• Em termos matemáticos, os principais componentes de um algoritmo PSO podem

ser representados como a seguir:

o A posição de uma partícula i é dada por xi (xi ∈ ℜL);

o Essa partícula irá se mover com uma velocidade vetorial vi;

xi(t+1) = xi(t) + vi(t+1).

• A inspiração tomada nas ciências sociais e na psicologia sugere que os indivíduos

sejam influenciados por suas próprias experiências prévias e pela experiência de

alguns de seus vizinhos.

• Entretanto, a vizinhança aqui corresponde a vizinhança topológica e não a

vizinhança no espaço de atributos de cada indivíduo (partícula).

• Sendo assim, a vizinhança de cada indivíduo é definida baseada em um arranjo

topológico.

Page 240: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 240

3 4 2 5 1 7 6 8

10 9

14 13 11

12

Figura 31: Possível topologia de vizinhança para o PSO.

• Existem diversas formas de se definir a vizinhança de um indivíduo.

• A maior parte dos algoritmos de PSO empregam dois princípios sociométricos:

o O primeiro, denominado de gbest (g = global), conecta conceitualmente todos os

membros de uma população entre si. Como consequência, o comportamento de

cada partícula é influenciado pelo comportamento de todas as outras partículas.

Page 241: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 241

o O segundo, denominado de lbest (l = local), cria uma vizinhança para cada

indivíduo composta por ele próprio e seus k-vizinhos mais próximos.

Figura 32: Vizinhança global e local.

• Uma partícula irá se mover em uma determinada direção que é função da posição

atual da partícula xi(t), de uma velocidade vi(t+1), da posição pi da partícula que

Page 242: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 242

levou ao seu melhor desempenho até o momento, e do melhor desempenho global

do sistema até o momento pg:

xi(t+1) = f(xi(t), vi(t), pi, pg).

• A velocidade da partícula será dada por:

vi(t+1) = vi(t) + ϕ1(pi − xi(t)) + ϕ2(pg − xi(t)),

onde ϕ1 e ϕ2 são constantes limitadas a um intervalo finito.

Obs.: primeiro atualiza-se a velocidade e depois a posição:

xi(t+1) = xi(t) + vi(t+1).

• Em Kennedy (1997) o autor denomina o penúltimo termo da Equação (3) como

sendo o termo “cognitivo” e o último como sendo o termo “social”.

• Para limitar a velocidade de uma partícula de forma que o sistema não exploda, são

impostos limites para seus valores:

If vid > vmax, then vid = vmax,

Else if vid < − vmax then vid = − vmax

Page 243: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 243

(Versão para Maximização) procedure [X] = PSO(max_it,ϕ1,ϕ2,vmax)

initialize X //usually every particle xi is initialized at random

initialize vi //at random, vi ∈ [-vmax,vmax]

t ← 1 while t < max_it do, for i = 1 to N do, //for each particle

if f(xi) > f(pi), then pi = xi, //best individual performance so far

end if for j = indexes of neighbors

if f(pj) > f(pg), then g = j, // best neighbor performance so far

end if end for

vi(t+1) = vi(t) + ϕ1(pi − xi(t)) + ϕ2(pg − xi(t)) vi ∈ [−vmax,vmax] xi(t+1) = xi(t) + vi(t+1)

end for

t ← t + 1 end while

end procedure

Page 244: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 244

5.2. Escopo de Aplicação

• As primeiras aplicações do algoritmo PSO foram na determinação de pesos e

arquitetura de redes neurais artificiais.

• Além disso, esta técnica também tem sido aplicada a problemas de otimização de

funções numéricas em geral.

• Aplicações em problemas de mundo real também existem na literatura, como,

análise de tremor humano, otimização de moinhos, otimização de misturas de

ingredientes, controle de potência e tensão reativa, estimação de carregamento de

baterias, e composição de música.

Page 245: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 245

5.3. De Sistemas Sociais a Enxames de Partículas

Sociocognição Algoritmo PSO

Indivíduo Partícula

População de indivíduos

Enxame de partículas

Esquecimento e aprendizagem

Incremento ou decremento nos valores de alguns atributos das partículas

Experiência própria de um indivíduo

Cada partícula possui algum conhecimento de sua história (desempenho) e emprega este conhecimento para direcionar seus próximos movimentos no espaço

Interações sociais Cada partícula também possui conhecimento sobre a vida (desempenho) de outras partículas e emprega este conhecimento para direcionar seus próximos movimentos no espaço

Page 246: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 246

Tópico 7: Geometria Fractal da Natureza

“Why is geometry often described as ‘cold’ and ‘dry’? One reason lies in its inability to

describe the shape of a cloud, a mountain, a coastline, or a tree. Clouds are not spheres,

mountains are not cones, coastlines are not circles, and bark is not smooth, nor does

lightning travel in a straight line. … The existence of these patterns challenges us to study

those forms that Euclid leaves aside as being ‘formless’, to investigate the morphology of

the ‘amorphous’.” (Mandelbrot, 1983, p.1)

Page 247: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 247

“In the past, mathematics has been concerned largely with sets and functions to which the

methods of classical calculus can be applied. Sets or functions that are not sufficiently

smooth or regular have tended to be ignored as ‘pathological’ and not worthy of study.

Certainly, they were regarded as individual curiosities and only rarely were thought of as

a class to which a general theory might be applicable. In recent years this attitude has

changed. It has been realized that a great deal can be said, and is worth saying, about the

mathematics of non-smooth objects. Moreover, irregular sets provide a much better

representation of many natural phenomena than do the figures of classical geometry.

Fractal geometry provides a general framework for the study of such irregular sets.

(Falconer, 2003, p. xvii)

Page 248: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 248

1. Introdução

• O grande avanço da computação gráfica tornou possível a visualização de diversos

modelos e estruturas de fenômenos naturais com grande realismo.

• As imagens, animações e sistemas resultantes são úteis como ferramentas

científicas, de pesquisa e educacionais em diversas áreas.

• As aplicações incluem o projeto e criação de paisagens naturais, plantas, predição

de fenômenos naturais (colheita), estudo de processos de desenvolvimento e

crescimento, modelagem e síntese de diversos padrões e formas naturais.

• Existem diversas técnicas de modelagem e síntese de padrões naturais. Por

exemplo: modelos de reação-difusão (reaction-diffusion models), modelos de

agregação de difusão limitados (diffusion-limited aggregation), autômatos

celulares, sistemas de Lindenmeyer (L-systems), sistemas de funções iterativas

(iterated function systems), sistemas de partículas (particle systems), etc.

Page 249: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 249

• Uma etapa marcante no processo de modelagem e síntese de padrões naturais foi o

reconhecimento de que a natureza é fractal, juntamente com o desenvolvimento da

geometria fractal.

• De forma simplificada, a geometria fractal pode ser vista como a geometria da

natureza, com toda a sua irregularidade e estruturas complexas e fragmentadas.

2. A Geometria Fractal da Natureza

• A geometria Euclidiana descreve formas ideais, como pontos, círculos, retas,

esferas, quadrados, cubos, etc.

• Entretanto, estas formas Euclidianas são geralmente encontradas apenas em

objetos produzidos por seres humanos.

• A natureza não possui formas suaves e uniformes e muitos padrões são irregulares

e fragmentados.

Page 250: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 250

• Qual a forma de um floco de neve? E de uma montanha? E de uma encosta,

nuvem, árvore e diversas outras formas da natureza?

• O termo fractal foi cunhado por Mandelbrot (1983) para identificar uma família de

formas que descrevem padrões irregulares e fragmentados da natureza.

• A geometria fractal é a geometria das formas irregulares encontradas na natureza.

o Genericamente, os fractais são caracterizados por detalhes infinitos,

comprimento infinito, autossimilaridade, dimensões fractais, e a ausência de

suavidade ou derivadas.

• Portanto os fractais são irregulares; eles possuem o mesmo grau de irregularidade

em todas as escalas.

• Os fractais parecem os mesmos quando observados à distância ou de muito perto

(autossimilaridade).

• Alguns exemplos de fractais na natureza:

Page 251: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 251

o Arbustos, costas marítimas, montanhas, couve-flor, brócolis, pulmões, cérebro,

rins, nuvens, etc.

2.1. Autossimilaridade

• Uma interpretação intuitiva de autossimilaridade:

Page 252: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 252

15cm 5.5cm

• Autossimilaridade estatística: quando as cópias (partes) menores são pequenas

variações de toda a estrutura.

• Autossimilaridade estrita × Autoafinidade (autossimilaridade estatística):

Page 253: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 253

Autossimilaridade estrita Autoafinidade

2.2. Alguns Fractais Pioneiros

• O primeiro fractal foi descoberto por K. Weierstrass em 1861. Ele descobriu uma

função contínua que não é diferenciável em ponto algum, ou seja, uma curva

constituída somente por “cantos”.

Page 254: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 254

• Outros fractais pioneiros foram descobertos por G. Cantor, H. von Koch e W.

Siepirnski, dentre outros.

• Estes fractais foram considerados “monstros matemáticos” devido a algumas

características não intuitivas que eles apresentavam.

O Conjunto de Cantor

Step 1 Step 2 Step 3 Step 4

• Propriedades interessantes:

o Não possui comprimento algum ou interior

o Cada uma de suas partes é constituída basicamente de buracos

o É totalmente formado por pontos desconexos

o Contém a mesma quantidade de pontos que a curva da qual ele é derivado

Page 255: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 255

o Cada um de seus pontos é um ponto limite, ou seja, existe uma quantidade

infinita de outros pontos do conjunto na sua vizinhança.

A Curva de Koch (Floco de neve)

• Propriedades interessantes:

o No limite a curva de Koch não possui segmento algum de reta; a curva é

inteiramente constituída por cantos.

Page 256: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 256

o Portanto a curva não apresenta derivada (tangente) em ponto algum.

o Embora ela se inicie a partir de uma reta de comprimento L, seu comprimento é

infinito.

o No passo t a curva possui 4t segmentos, cada qual com comprimento 1/3t.

Portanto, o comprimento total da curva é (4/3)t.

o Note que uma curva de comprimento infinito pode ser colocada em uma área

finita.

Page 257: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 257

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

Page 258: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 258

Step 1 Step 2 Step 3

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

Step 0 Step 1

Step 2 Step 3

Page 259: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 259

2.3. Dimensão e Dimensão Fractal

• Estruturas como a curva de Peano desafiavam o conceito de dimensão, pois curvas

eram sabidas terem dimensão 1, mas para preencher o espaço elas deveriam ser

percebidas como tendo dimensão 2.

• Pontos possuem dimensão 0, linhas e curvas possuem dimensão 1, planos e

superfícies possuem dimensão 2, sólidos possuem dimensão 3, etc.

• De forma simplificada, um conjunto possui dimensão d se d variáveis

independentes (coordenadas) são necessárias para descrever a vizinhança de cada

ponto. Esta noção de dimensão é denominada de dimensão topológica.

• No final do século 19 alguns matemáticos perceberam que um bom entendimento

da irregularidade ou fragmentação de algumas formas não pode ser alcançado

definindo-se dimensão como sendo um número de coordenadas.

• Por exemplo, a curva de Koch possui dimensão topológica 1, mas não pode ser

considerada uma curva sob a perspectiva da geometria Euclidiana: o comprimento

Page 260: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 260

entre quaisquer dois pontos da curva é infinito; nenhuma de suas partes é uma

linha ou um plano. De certa forma, é possível dizer que ela é muito grande para ser

uni-dimensional e ao mesmo tempo muito pequena para ser bi-dimensional. Talvez

sua dimensão deva ser um número entre 1 e 2...

• A dificuldade em se definir a dimensão de objetos como a curva de Koch, o

conjunto de Cantor e o triângulo de Sierpinski não é apenas um problema dos

fractais exemplificados aqui.

• Um fenômeno similar foi identificado pelo meteorologista inglês L. Richardson em

1961 em sua tentativa de medir o comprimento de várias costas marítimas,

incluindo a costa da Inglaterra.

• Ele percebeu que o comprimento aparente da costa parecia crescer sempre que o

comprimento do instrumento de medida era reduzido.

• Isso ocorria, pois quanto menor o comprimento do medidor maior a amplificação

dos detalhes.

Page 261: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 261

• Richardson concluiu que o comprimento da costa não é bem definido, e ele

também propôs uma lei empírica relacionando este aumento no comprimento da

unidade de medida com a quantidade de detalhes percebidos.

• Ele notou que quando o logaritmo do comprimento do instrumento de medida era

plotado em função do logaritmo do comprimento total da costa, os pontos tendiam

a se encontrar em uma linha reta.

• A inclinação da reta resultante media, de alguma forma, o grau de dobramento ou

fragmentação da costa.

• Mandelbrot (1983) encontrou o trabalho de Richardson e verificou que os fractais

poderiam ser classificados de forma similar.

• Como então medir a dimensão de um objeto?

• Para o caso de formas regulares, uma forma com dimensão d é composta por N

cópias de tamanho 1/m em relação ao tamanho original, onde N = m−d.

o m é conhecido como fator de redução.

Page 262: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 262

o Exemplo: quadrado.

m = 1/2 ⇒ N = 4; m = 1/3 ⇒ N = 9.

• A ideia da relação entre o logaritmo do número de cópias de um objeto e o

logaritmo do tamanho de suas cópias sugeriu uma generalização do conceito de

dimensão que permite valores fracionários.

o Essa dimensão é conhecida como dimensão de autossimilaridade:

N = (1/m)d ⇒ log(N) = log((1/m)d) ⇒ log(N) = d.log(1/m) ⇒ m

Nd

/1log

log=

• Portanto, a dimensão ds de uma forma autossimilar pode então ser dada por:

m

Nd

/1log

log= ,

Page 263: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 263

onde N é a quantidade de cópias do objeto e m é o fator de redução.

• Em 1919 Hausdorff estendeu a noção de dimensão de similaridade para que ela se

aplicasse a todo tipo de formas, além das formas autossimilares.

• A dimensão fractal serve para descrever a complexidade (fractal) de um objeto.

o Exemplos: a costa Britânica e a curva de Koch possuem dimensão fractal

aproximada de 1.26, enquanto uma nuvem típica possui dimensão 1.35.

• Embora o escopo da dimensão de Hausdorff seja geral, ela é difícil de ser

calculada na prática. Uma forma mais simples de medir a dimensão fractal de uma

curva é denominada de método da contagem de quadrados:

o Cubra com quadrados a forma cuja dimensão você pretende medir e verifique

como o número de quadrados varia em relação ao tamanho dos quadrados.

o No limite, para uma forma fractal, a taxa com a qual a proporção de quadrados

cheios decresce fornece a dimensão do método da contagem de quadrados.

Page 264: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 264

Line

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

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

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

Page 265: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 265

Filled-in square

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

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

• Para objetos mais complicados, como fractais, a relação entre N(m) e 1/m pode ser

uma potência: N(m) = k(1/m)d, resultando na definição da dimensão do método da

contagem de quadrados:

)/1log(

)log())(log(

m

kmNdb

−= .

Page 266: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 266

• Note que a equação acima define a dimensão como sendo o coeficiente angular da

reta formada entre log(N(m)) e log(1/m) e que intercepta o eixo y no ponto log(k).

• No limite para m → 0:

)/1log(

))(log(lim 0

m

mNd mb →= .

3. Autômatos Celulares

• Autômatos celulares (CAs) correspondem a uma classe de sistemas matemáticos

determinísticos discretos no espaço e no tempo, caracterizados por interações

locais e uma evolução inerentemente paralela no tempo.

• CAs são protótipos de sistemas complexos e processos que consistem em um

grande número de componentes simples, idênticos e sujeitos a interações locais.

Page 267: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 267

• O estudo dos autômatos celulares atraiu um grande interesse nos últimos anos

devido a sua capacidade de gerar um amplo espectro de padrões comportamentais

complexos a partir de conjunto(s) relativamente simples de regras.

• Além disso, eles parecem capturar a essência de comportamentos auto-organizados

complexos observados em sistemas naturais.

• Algumas características genéricas de CAs:

o Grid discreto de células: uni-, bi-, ou tridimensional.

o Homogeneidade: todas as células são equivalentes.

o Estados discretos: cada célula pode assumir um dentre um conjunto finito de

estados.

o Interações locais: cada célula interage apenas com células em sua vizinhança.

o Dinâmica discreta: a cada passo de tempo cada célula atualiza seu estado de

acordo com uma regra de transição que considera seu estado atual e o estado das

células em sua vizinhança.

Page 268: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 268

3.1. O Exemplo Mais Simples

• Um CA binário de uma dimensão, ou seja, o grid corresponde a uma linha de

células que podem assumir apenas os estados 0 ou 1.

• O estado si de uma célula i (i é o vetor que indica a posição da célula) é atualizado

em tempos discretos de acordo com regras determinísticas que dependem da

vizinhança da célula e de seu estado atual:

si(t + 1) = f(si−1(t), si(t), si+1(t)).

i−1 i i+1

000 → 0 100 → 1 001 → 1 101 → 1 010 → 1 110 → 0 011 → 0 111 → 0

Page 269: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 269

Tim e

3.2. Definição Formal

• Um autômato celular d-dimensional consiste em um grid finito de dimensão d com

células que podem assumir um entre um conjunto finito de valores (estados).

• O estado de cada célula no tempo t + 1 é função do estado de um conjunto de

células vizinhas no instante t.

• Formalmente, um CA pode ser definido como uma quíntupla:

C = (S,s0,G,d,f),

Page 270: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 270

onde S é um conjunto finito de estados, s0 ∈ S são os estados iniciais, G é a

vizinhança da célula, d ∈ Z+ é a dimensão de C, e f é o conjunto de regras locais de

interação, também conhecidas como regras ou funções de transição.

• Outros conceitos:

o Vizinhança: Gi = {i, i + r1, i + r2, …,i + rn}, onde n é o tamanho da vizinhança.

o Regra de transição: f : Sn → S

o Configuração do grid: C(t) = (s0(t), s1(t),…, sN−−−−1(t)), onde si é o estado da célula i

no instante t.

o Progressão: F : C(t) → C(t + 1), t = 0,1,…

• Exemplo de aplicação: geração de formas fractais.

000 → 0 100 → 1 001 → 1 101 → 1 010 → 1 110 → 1 011 → 1 111 → 0

Page 271: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 271

3.3. Escopo de Aplicação

• Computadores universais; estudo de vida artificial; modelagem de sistemas físicos,

químicos e biológicos; estudo de teoria de sistemas dinâmicos; estudos sobre

dinâmicas populacionais.

Page 272: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 272

4. Sistemas L (L-Systems)

• A. Lindenmayer introduziu em 1968 um formalismo para simular o

desenvolvimento de organismos multicelulares.

• Estes sistemas foram posteriormente denominados sistemas-L (L-systems) ou

algoritmos de desenvolvimento (developmental algorithms).

• O desenvolvimento multicelular consiste na geração de estruturas através da

divisão, crescimento, diferenciação e morte celular. Ele corresponde a uma série de

mudanças que os organismos sofrem durante sua passagem do estado embrionário

para a maturidade.

4.1. Conceitos sobre Sistemas de Produção e Gramáticas

• O formalismo por trás dos sistemas-L é baseado em sistemas de produção e uma

gramática específica.

Page 273: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 273

• Um sistema de produção, também conhecido como sistema baseado em regras,

emprega implicações como sua representação primária.

• Tipicamente seu elemento mais importante é um conjunto de regras de produção

ou simplesmente produções. Ex. se a então b.

Gramática

• Um alfabeto V é um conjunto finito de símbolos. O conjunto de todas as strings

finitas formadas pelo alfabeto V é denominado por V*.

• Uma palavra ou string w é uma sequência de elementos de V.

• A string vazia ou de comprimento zero, e, também faz parte de V*; V+ = V* − {e}.

• Uma linguagem L sobre um alfabeto V é qualquer subconjunto de V*; L ⊆ V*.

• Uma gramática é uma quádrupla G = ⟨V,T,P,S⟩, onde V é um conjunto finito

(alfabeto); T é um conjunto cujos elementos são denominados de terminais, os

elementos de N = S \ T são denominados de não-terminais (N ⊂ S); P é o conjunto

Page 274: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 274

de produções, e S é um símbolo não-terminal conhecido como axioma (ponto de

partida).

4.2. Sistemas DOL

• A ideia básica de um sistema-L está contida na natureza das linguagens formais.

• As formas geométricas (fractais) a serem estudadas são palavras em uma

linguagem formal paralela.

• As gramáticas em sistemas-L são similares às gramáticas formais apresentadas

anteriormente, porém as produções são aplicadas simultaneamente (paralelamente)

e não existe distinção entre símbolos terminais e não terminais.

• Exemplo de um sistema-L:

o Seja o alfabeto G = {a,b,c}, onde c é o axioma, e as seguintes produções:

1. a → c

2. b → ac

3. c → b

Page 275: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 275

o O processo de aplicação das regras é denominado de processo de derivação ou

de reescrita.

Iteration Word 0 1 2 3 4 5 6 7 8 9

10

c b ac cb bac accb cbbac bacaccb accbcbbac cbbacbacaccb bacaccbaccbcbbac

• A introdução dos sistemas-L reviveu o interesse na representação de imagens

utilizando sequências de caracteres.

Page 276: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 276

• Um sistema-OL é definido como sendo a tripla ordenada G = ⟨V,ω,P⟩, onde V é o

alfabeto do sistema, ω ∈ V+ é uma palavra de comprimento não-nulo denominada

de axioma, e P ⊂ V × V* é um conjunto finito de produções.

• Uma produção (a,χ) ∈ P é escrita como a → χ. A letra a e a palavra χ são

denominadas de predecessor e de sucessor da produção, respectivamente.

• É assumido que para cada letra do alfabeto existe pelo menos uma palavra do

conjunto V* tal que a → χ, ou seja, ∃ χ ∈ V* | a → χ, ∀ a ∈ V.

• Caso nenhuma produção for especificada para um determinado predecessor a,

a → a é assumido por default.

• Um sistema-OL é dito determinístico, sistema-DOL, se e somente se para cada

a ∈ V existe um único χ ∈ V* tal que a → χ.

• Seja µ = a1…am uma palavra arbitrária em V. A palavra ν = χ1…χm ∈ V* é

diretamente derivável (ou gerada a partir) de µ, µ ⇒ ν, se e somente se ai → χi,

i = 1,…,m.

Page 277: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 277

• Uma palavra ν é gerada por G em uma derivação de comprimento n se existe uma

sequência de desenvolvimento de palavras µ0, µ1,…, µn tais que µ0 = ω, µn = ν and

µ0 ⇒ µ1 ⇒…⇒ µn.

4.3. Gráfico Tartaruga (Turtle Graphics)

• Na descrição apresentada acima, o sistema-L foi utilizado para gerar uma

sequência de palavras.

• A interpretação geométrica destas palavras pode ser utilizada para gerar imagens

de diversos padrões naturais.

• Uma linguagem do tipo turtle graphics pode ser usada para fazer a interpretação

geométrica das palavras geradas pelo sistema-L.

• Idéia básica em 2-D:

o O estado da tartaruga é definido como sendo a tripla (x,y,α), onde as

coordenadas cartesianas (x,y) correspondem a posição da tartaruga, e o ângulo

Page 278: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 278

α, denominado de direção (heading), é interpretado como sendo a direção para a

qual a tartaruga aponta.

o Dado o tamanho do passo d e o incremento do ângulo δ, a tartaruga pode

responder a diversos comandos:

F Move forward a step of length d. The state of the turtle changes to (x’,y’,α),

where x’ = x + d.cosα, and y’ = y + d.sinα. A line segment between points (x,y)

and (x’,y’) is drawn.

f Move forward a step of length d without drawing a line.

+ Turn right by angle δ. The next state of the turtle is (x,y,α+δ). The positive

orientation of angles is clockwise.

− Turn left by angle δ. The next state of the turtle is (x,y,α−δ). The negative

orientation of angles is counterclockwise.

Page 279: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 279

• Dado um axioma ν, o estado inicial da tartaruga (x0,y0,α0) e os parâmetros d e δ, a

turtle interpretation de ν é a figura (conjunto de linhas) desenhada pela tartaruga

em resposta a ν.

• Exemplo: seja δ = 90o, d = 1, e a seguinte palavra FF+F−F.

− +

F

x

y

Page 280: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 280

4.4. Modelos de Arquiteturas de Plantas

• Em 1968, Lindenmayer estendeu os sistemas-L incluindo os colchetes {[,]} no

alfabeto dos sistemas-L, criando os bracketed L-systems.

• A motivação foi a de descrever formalmente estruturas ramificadas observadas em

plantas, algas, árvores, etc.

• Os dois novos símbolos ‘[’ e ‘]’ são interpretados pela tartaruga como a seguir:

[ Save the current state (x,y,α) of the turtle for later use onto a stack of saved

states.

] Remove the last saved state from the stack and use it to restore the turtle’s last

state. No line is drawn, although in general the position of the turtle changes.

• Exemplo: V = {F,G,[,],+,−}, axioma ω = F, δ = 45o, produções:

p1: F → G[−F]G[+F]F

p2: G → GG

p3: [ → [

Page 281: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 281

p4: ] → ]

Iteration Word

0

1

2

F

G[−F]G[+F]F

GG[−G[−F]G[+F]F]GG[+G[−F]G[+F]F] G[−F]G[+F]F

• F: seta tracejada; G: seta sólida.

p2

p1

Page 282: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 282

procedure [word] = DOL_turtle(max_it,ω,P,d,δ) word ← ω t ← 1 while t < max_it do,

word ← rewrite(word,P)

t ← t + 1 end while

turtle(word,d,δ); end procedure

Page 283: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 283

• Exemplos de plantas geradas com sistemas L.

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

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

Page 284: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 284

4.5. Escopo dos Sistemas L

• Projeto de paisagens, ornamentações, ilustrações botânicas, desenvolvimento de

organismos, reconstrução de plantas extintas, modelos estruturais de plantas,

projeto de novas variedades de plantas, predição de colheita, descrição de

florescência, simulação de crescimento de fungos, etc.

5. Sistemas de Funções Iterativas

• Os sistemas de funções iterativas (IFS – iterated function systems) foram

desenvolvidos por J. Hutchinson, M. Barnsley e S. Demko como uma ferramenta

para a geração de fractais através do uso de um conjunto de transformações,

também denominadas de mapeamentos contrativos, de uma imagem sobre si

própria.

• Os IFS consistem basicamente da aplicação recursiva de um conjunto de

transformações afins a um conjunto de pontos iniciais (imagem).

Page 285: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 285

• Após um determinado número de iterações, o conjunto final ou limite, irá definir

certa configuração geométrica.

5.1. Fundamentos Teóricos

• Um espaço X é um conjunto, e os pontos do espaço são elementos do conjunto.

• Um espaço métrico (X,d) é um espaço X juntamente com uma função real

d : X × X → ℜ que mede a distância entre pares de pontos x, y ∈ X.

• A função d, denominada de métrica, deve obedecer às seguintes propriedades:

1. d(x,y) = d(y,x) ∀ x,y ∈ X

2. 0 < d(x,y) < ∞ ∀ x,y ∈ X, x ≠ y

3. d(x,x) = 0 ∀ x ∈ X

4. d(x,y) ≤ d(x,z) + d(z,y) ∀ x,y,z ∈ X

• Seja (X,d) um espaço métrico. Uma transformação sobre X é uma função

f : X → X que especifica exatamente um ponto f(x) ∈ X a cada ponto x ∈ X.

Page 286: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 286

• Uma transformação w : ℜ2 → ℜ2 da forma w(x1,x2) = (ax1 + bx2 +e, cx1 + dx2 + f),

onde a, b, c, d, e, e f são números reais é denominada de transformação afim

(bidimensional).

• Em notação matricial:

tAxx +=

+

=

=

f

e

x

x

dc

ba

x

xww

2

1

2

1)(

• Estas transformações possuem propriedades algébricas e geométricas importantes.

• As quatro principais transformações afins são:

o Translação, escalonamento, reflexão e rotação.

Translation

Page 287: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 287

Scaling

Reflection

Rotation

Page 288: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 288

5.2. Sistemas de Funções Iterativas (IFS)

• Uma transformação f : X → X sobre um espaço métrico (X,d) é denominada

contrativa, ou mapeamento contrativo, se existe uma constante 0 ≤ s < 1 tal que:

d( f(x), f(y)) ≤ s.d(x,y), ∀x, y ∈ X,

onde s é chamado de fator de contratividade para f.

• Uma propriedade importante de contrações é que independentemente do ponto

inicial, a aplicação iterativa do mapeamento contrativo resulta sempre na

convergência para o mesmo ponto, denominado de atrator.

• Um sistema de funções iterativas consiste em um espaço métrico completo (X,d)

juntamente com um conjunto finito de mapeamentos contrativos wn : X → X (com

os respectivos fatores de contratividade sn, n = 1,2,…N).

• Vamos nos restringir ao caso de IFS da forma {ℜ2; wn : n 1,2,…,N}, onde cada

mapeamento contrativo corresponde a uma transformação linear.

Page 289: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 289

Sistema determinístico de funções iterativas (deterministic IFS – DIFS).

• Este algoritmo é baseado na ideia de calcular diretamente uma sequência de

conjuntos {An = Wοn(A)} a partir de um conjunto inicial A0.

• Seja {X; w1, w2,…, wN} um IFS. Escolha um conjunto compacto A0 ⊂ ℜ2 que

servirá de condição inicial para o DIFS. Em seguida calcule sucessivamente

An = Wοn(A) de acordo com:

)(11 njNjn AwA =+ ∪= , n = 1,2,…

• Assim, uma sequência {An : n = 0,1,2,...} será construída e {An} convergirá para o

atrator do IFS de acordo com o teorema do mapeamento contrativo.

• Metáfora para o DIFS: multiple reduction copy machine (MRCM).

An MRCM An+1 A0

Page 290: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 290

Page 291: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 291

Sistema aleatório de funções iterativas (random iterated function system – RIFS).

• Seja {X; w1, w2,…, wN} um IFS onde uma probabilidade pi > 0 é atribuída a cada

mapeamento wi, i = 1,…,N, ∑i pi = 1.

• Escolha x0 ∈ X e depois escolha recursivamente e independentemente

xn ∈ {w1(xn−1), w2(xn−1),…, wN(xn−1)}, ∀n

onde a probabilidade de um evento xn = wi(xn−1) ocorrer é pi.

• Portanto, construa uma sequência {xn : n = 0,1,2,…} ⊂ X.

procedure [] = RIFS(max_it,x0,W,p)

x ← x0;

t ← 1 while t < max_it do,

j ← select(p) //select a mapping j with probability pj

x ← wj(x) //apply mapping j to x draw(x) //plot point x on the screen

t ← t + 1 end while

end procedure

Page 292: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 292

• Exemplo: Arbusto de Barnsley

w a b c d e f p

1 0 0 0 0.16 0 0 0.01 2 0.85 0.04 −0.04 0.85 0 1.6 0.85 3 0.2 −0.26 0.23 0.22 0 1.6 0.07 4 −0.15 0.28 0.26 0.24 0 0.44 0.07

Page 293: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 293

5.3. Autosimilaridade e Autoafinidade Revisitadas

Page 294: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 294

6. Movimento Browniano

• Para modelar regiões costeiras, montanhas, etc., são necessárias curvas que

parecem diferentes quando amplificadas, mas que ainda apresentam a mesma

impressão característica.

Page 295: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 295

6.1. Fractais Aleatórios na Natureza e Movimento Browniano

• Uma caminhada aleatória (random walk) é um caminho que pode ser gerado por

um processo aleatório.

x(t+1) = x(t) + ∆x

y(t+1) = y(t) + ∆y

onde ∆x e ∆y podem ser distribuições Gaussianas de média zero e desvio padrão 1.

Random Walk – First 100 Steps Random Walk – 10,000 Steps

Page 296: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 296

• Este tipo de caminhada aleatória está intimamente relacionada ao movimento

Browniano, que é encontrado no movimento de partículas em líquidos e gases, e

em ruído branco, comumente usado para descrever outros fenômenos gerados por

caminhadas aleatórias.

• Depósitos eletroquímicos constituem um exemplo típico de movimento

Browniano.

o Por exemplo, colocando-se uma solução de sulfato de zinco coberta com uma

camada fina de n-butil-acetato em uma placa de Petri e aplicando-se uma

corrente contínua ao conjunto é possível investigar o crescimento de estruturas

fractais de eletro-depósitos e suas mudanças morfológicas.

o Experimentos desta natureza são importantes em ciências de polímeros, ciência

dos materiais, imunologia e várias outras áreas.

Page 297: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 297

• Um modelo matemático de depósito de zinco que apresenta um comportamento do

tipo movimento Browniano pode ser simulado com uma técnica denominada de

DLA (diffusion limited aggregation):

o Gere um grid quadrado de células;

o Fixe uma única célula, chamada semente, em uma dada posição do grid (p. ex.

no centro);

o Selecione uma vizinhança de interesse centrada em torno da semente (p. ex.

usando uma vizinhança de Moore) e introduza uma nova partícula em

movimento nesta vizinhança;

o Se a partícula em movimento sair da vizinhança, então ela é substituída por uma

nova aleatoriamente gerada; senão, se a partícula em movimento encontrar a

semente ou alguma partícula agregada à semente, então ela se une ao cluster

tornando-se uma partícula estática.

Page 298: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 298

Page 299: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 299

procedure [] = DLA(seed)

C ← generate_C //generate Grid

Cr ← select_region(seed) //region around seed

p ← new_particle(Cr) //new particle within Cr

cs ← 1 //cluster size while not_stopping_criterion do,

p ← move_particle //moving particle if p meets cluster, then attach p to cluster

cs ← cs + 1

p ← new_particle(Cr) else

if p leaves Cr

p ← new_particle(Cr) end if

end if end while

end procedure

Page 300: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 300

• Em uma dimensão o movimento Browniano é caracterizado por um processo

aleatório X(t), que corresponde a uma função X de uma variável real t (tempo),

cujos valores são variáveis aleatórias X(t1), X(t2), … , onde o incremento X(t2) −

X(t1) possui uma distribuição Gaussiana e os incrementos quadráticos médios têm

uma variância proporcional à diferença entre os tempos:

E[ | X(t2) − X(t2) |2 ] ∝ |t2 − t1|.

• Os incrementos de X são estatisticamente autossimilares no sentido que:

X(t0 + t) − X(t0) e ( ))()(1

00 tXrttXr

−+ ,

possuem as mesmas funções de distribuição conjuntas para quaisquer t0 e r > 0.

• Assumindo, por exemplo, t0 = 0 e X(t0) = 0, ambas as funções aleatórias

X(t) e ( ))(1

rtXr são estatisticamente indistinguíveis; a segunda sendo uma

versão apropriadamente reescalonada da primeira.

Page 301: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 301

• Um método popular para gerar movimento Browniano é conhecido como

algoritmo recursivo da subdivisão (recursive subdivision algorithm), também

conhecido como algoritmo do deslocamento aleatório do ponto médio (random

midpoint displacement algorithm - RMD).

• O RMD opera como a seguir:

o Se o processo X(t) deve ser computado para o tempo t ∈ [0, 1], então comece

definindo X(0) = 0 e escolhendo X(1) como uma amostra de um valor Gaussiano

de média 0 e variância σ2.

o No primeiro passo, o ponto médio entre t = 0 e t = 1 é dado pela média entre

X(0) e X(1), mais um desvio D1 de média zero e variância 21∆ :

X(½) − X(0) = ½(X(1) − X(0)) + D1.

o Como uma amostra de uma variável aleatória Gaussiana possui média 0 e

variância σ2, é esperado que:

var(X(t2) − X(t1)) = |t2 − t1|σ2.

Page 302: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 302

o Além disso, a cada iteração o número de fragmentos dobra, e o desvio Dn no

tempo n deve ter variância:

21

2 σ2

1+

=∆nn .

0.25 0.5 0.75 1.0 t 0.5 1.0 t

D1

D2,1

D2,2

X(t) X(t)

Page 303: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 303

6.2. Movimento Browniano Fracionário

• O termo movimento Browniano fracionário (MBF) foi introduzido para se referir a

uma família de funções Gaussianas capazes de gerar modelos de séries temporais

naturais.

• Muitas extensões e variações foram propostas para modelar uma vasta gama de

fenômenos naturais, de paisagens montanhosas a nuvens.

Page 304: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 304

• O MBF é uma generalização do movimento Browniano definido como um

processo aleatório X(t) com incrementos Gaussianos e

var(X(t2) − X(t1)) ∝ |t2 − t1|2H,

onde 0 < H < 1.

• Neste caso genérico, os incrementos de X são estatisticamente auto-similares, com

parâmetro H, no sentido que:

X(t0 + t) − X(t0) e Hr

tXrttX )()( 00 −+

possuem as mesmas funções de distribuição conjuntas para quaisquer t0 e r > 0.

• Tomando-se, por exemplo, t0 = 0 e X(t0) = 0, ambas as funções aleatórias

X(t) e ( ))(1

rtXr H são estatisticamente indistinguíveis; a segunda sendo uma

versão apropriadamente reescalonada da primeira.

• Para aplicar o algoritmo RMD ao caso mais geral de MBF é necessário que:

Page 305: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 305

var(X(t2) − X(t1)) = |t2 − t1|2H σ2.

• O deslocamento do ponto médio torna-se então

)21()2(

σ 222

22 −−=∆ H

Hnn .

• O parâmetro H, denominado coeficiente de Hurst, descreve a ‘rugosidade’ da

fração em pequenas escalas.

H = 0.1

H = 0.3

H = 0.5

H = 0.7

H = 0.9

Page 306: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 306

• A extensão deste algoritmo (RMD) para três ou mais dimensões é direta e resulta

em algoritmos capazes de gerar paisagens montanhosas realistas.

• A ideia envolve aplicar o algoritmo RMD a um grid até que uma determinada

granularidade seja obtida.

• O algoritmo opera como a seguir:

o Determine os pontos centrais do grid atual;

o Perturbe verticalmente cada um dos novos vértices usando uma distribuição

Gaussiana apropriada;

o Repita para cada novo quadrado reduzindo a perturbação a cada passo.

Page 307: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 307

Page 308: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 308

6.3. Escopo do MBF

• Virtualmente, todo processo dinâmico na natureza envolve movimento Browniano,

do movimento das borboletas ao movimento de partículas em um líquido ou meio

gasoso.

• Aplicações também são encontradas em economia (por exemplo, na simulação do

comportamento dos preços de ações e outros bens), ecologia, ciência dos materiais,

imunologia, etc.

• Em se tratando de computação gráfica, MBF pode ser usado para simular o leito de

rios, nuvens, costas marítimas, dobramento e desdobramento de materiais (p. ex.

papel), projeto de simuladores de vôo, geração de tráfego e animação

comportamental em geral.

Page 309: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 309

© K. Musgrave, Pandromeda.com

Page 310: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 310

7. Sistemas de Partículas

• Alguns fenômenos naturais envolvem a participação de diversos elementos básicos

(partículas) como, por exemplo, o movimento de líquidos, gases, nuvens,

explosões, fogos, etc.

• Os sistemas de partículas (particle systems) podem ser usados para modelar uma

grande variedade de fenômenos desta natureza.

• Um sistema de partículas consiste basicamente em uma coleção de partículas

(objetos) com algumas propriedades fundamentais e algumas regras de

comportamento que elas devem seguir.

• A definição precisa destas propriedades e leis dependerá do fenômeno que se

deseja modelar.

Page 311: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 311

7.1. Conceitos Básicos

• Uma partícula é um ponto no espaço, geralmente tridimensional, que possui uma

série de atributos (propriedades) como posição, velocidade, cor, tempo de vida,

tamanho e transparência.

• Um sistema de partículas (PS) é uma coleção de partículas que em conjunto

representam um objeto.

• As partículas mudam dinamicamente com o tempo em função de forças externas

ou outros processos.

• Os sistemas de partículas foram introduzidos por Reeves em 1983 para modelar o

que ele denominou de objetos fuzzy, como nuvens, fumaça, água e fogo.

• A representação de sistemas de partículas difere em três aspectos básicos da

representação geralmente utilizada em síntese de imagens:

Page 312: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 312

o Um padrão ou forma é representado por uma coleção de partículas (objetos

primitivos) que irão definir seu volume ao invés de serem representados por um

conjunto de elementos primitivos de superfície;

o As partículas são dinâmicas, ou seja, elas podem se mover, nascer e morrer;

o Um padrão representado por partículas não é determinístico, ou seja, sua forma

não é completamente pré-especificada.

• Algumas propriedades interessantes:

o Uma partícula é uma primitiva muito simples

o A definição do modelo é procedural e envolve processos estocásticos

o Os sistemas de partículas modelam padrões e formas dinâmicas, como

queimadas e nuvens em movimento.

o O nível de detalhes pode ser facilmente controlado regulando, por exemplo, a

quantidade de partículas.

Page 313: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 313

7.2. Modelo Básico

• Em um determinado período de tempo, partículas são geradas e inseridas no

sistema, se movem e mudam dentro do sistema, morrem e são removidas do

sistema.

• Os atributos das partículas e suas regras comportamentais dependem da aplicação.

• Na proposta original de PS, Reeves aplicou um sistema de partículas para gerar

uma parede de fogo que foi utilizada no filme Star Trek II: The Wrath of Khan.

• Neste caso, as partículas possuíam os seguintes atributos:

o Posição e Velocidade

o Cor e Transparência

o Tempo de vida ou idade

o Forma

o Tamanho

Page 314: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 314

• O procedimento para computar cada frame (intervalo de tempo) em uma sequência

envolve os seguintes passos:

o Geração de partículas

o Determinação dos atributos das partículas

o Morte de partículas

o Atualização das partículas

o Renderização das partículas

procedure [] = PS(max_it,d,o) initialize X; //generate particles and assign their attributes

t ← 1 while t < max_it do,

X ← destroy(X,d) //destroy all particles older than d

X ← dynamics(X,o) //change each remaining particle render(X) //draw (render) particles X and plot initialize X’ //generate new particles

X ← insert(X,X’) //insert the new particles into X

t ← t + 1 end while

end procedure

Page 315: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 315

7.3. Simulando Fogos de Artifício

• Uma partícula será lançada e explodirá após um determinado tempo de vôo.

o A explosão gera um conjunto de novas partículas.

o Todas as partículas estão sujeitas à força da gravidade.

• Atributos das partículas:

o Posição: p = (x,y).

o Velocidade: (v,θ), v = velocidade e θ = ângulo de disparo.

o Cor: a cor inicial pode ser diferente da cor após a explosão e durante a queda.

o Tempo de vida: a partícula inicial ‘vive’ até que ela exploda, momento em que

novas partículas são geradas e têm seus períodos de vida definidos.

o Forma: todas as partículas podem ter a mesma forma.

o Tamanho: após a explosão as partículas terão a metade do tamanho da partícula

antes da explosão.

o Transparência: ‘ao gosto do freguês’.

Page 316: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 316

v = v + a

p = p + v

onde v é a velocidade da partícula e a = (0,−a) é a força atuando sobre a partícula.

Page 317: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 317

7.4. Escopo dos Sistemas de Partículas

• Sistemas de partículas têm sido usados para modelar quedas d’água, ondas, fogo,

nuvens, fontes, fogos de artifício, explosões, cardumes de peixes, estrelas, arco-

íris, dinâmica de fluidos, plantas, grama, florestas, tornados, etc.

8. Da Geometria Natural à Geometria Fractal

Page 318: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 318

Page 319: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 319

9. Escopo da Geometria Fractal

• Já foi discutido neste curso que a natureza é cheia de “regras”, e agora verificamos

que estas regras envolvem irregularidade e autossimilaridade: a natureza possui

uma geometria fractal.

• Curvas como o conjunto de Cantor e a curva de Koch não são a exceção, mas

predominam na natureza.

• Variações do conjunto de Cantor ocorrem, por exemplo, em frequências de

palavras e letras em linguagem e em ruídos em linhas telefônicas.

• As curvas de Koch servem de modelo para nuvens, costas marítimas, etc.

• Organismos também são fractais. Nossos pulmões, sistema circulatório, cérebro,

rins e vários outros sistemas e órgãos são fractais.

• O escopo e importância dos fractais e da geometria fractal vai muito além disso:

Page 320: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 320

o Incêndios em florestas possuem fronteiras fractais; fractais estão sendo

utilizados para modelar a dinâmica do HIV; fractais vêm sendo usados na

economia...

• Sistemas-L e sistemas de funções iterativas são úteis para o desenho e modelagem

de paisagens naturais, ornamentais e ilustrações botânicas.

• Outras aplicações:

o Reconstrução de espécies extintas de plantas

o Identificação de respostas de plantas a ataques

o Desenvolvimento de modelos estruturais de plantas integrados com ecosistemas

complexos

o Síntese de conchas e outros padrões naturais

o Modelagem de processos de desenvolvimento e crescimento (sistemas-L)

o Classificação de padrões de ramificação em plantas e animais

o Predição de colheitas

Page 321: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 321

o Modelagem de fractais

o Descrição de inflorescências

o Aplicações rurais diversas

• Em particular, os sistemas de funções iterativas têm tido muito sucesso no

processo de compressão de dados (imagens): compressão fractal.

• Sistemas de partículas têm sido usados para modelar quedas d’água, ondas, fogo,

nuvens, fontes d’água, fogos de artifício, explosões, cardumes de peixes, estrelas,

arco-íris, dinâmica de fluidos, plantas, árvores, grama, furacões, tempestades de

areia, etc. Eles também têm sido usados como descanso de tela de computador e

em diversos filmes e desenhos animados como Tornado e o Príncipe do Egito.

Page 322: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 322

Tópico 8: Vida Artificial

1. Introdução

1.1. Algumas Definições

“Artificial Life is the study of man-made systems that exhibit behaviors

characteristic of natural living systems. It complements the traditional biological

sciences concerned with the analysis of living organisms by attempting to

synthesize life-like behaviors within computers and other artificial media. By

extending the empirical foundation upon which biology is based beyond the

carbon-chain life that has evolved on Earth, Artificial Life can contribute to

theoretical biology by locating life-as-we-know-it within the larger picture of

life-as-it-could-be.” (Langton, 1988; p. 1)

Page 323: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 323

“Artificial Life (AL) is the enterprise of understanding biology by constructing

biological phenomena out of artificial components, rather than breaking natural

life forms down into their component parts. It is the synthetic rather than the

reductionist approach.” (Ray, 1994)

“Alife is a constructive endeavor: Some researchers aim at evolving patterns in a

computer; some seek to elicit social behaviors in real-world robots; others wish

to study life-related phenomena in a more controllable setting, while still others

are interested in the synthesis of novel lifelike systems in chemical, electronic,

mechanical, and other artificial media. Alife is an experimental discipline,

fundamentally consisting of the observation of run-time behaviors, those

complex interactions generated when populations of man-made, artificial

creatures are immersed in real or simulated environments.” (Ronald et al., 1999)

Page 324: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 324

• Ideias importantes embasando a vida artificial:

o A Vida é vista como um processo dinâmico com algumas características

universais que independem da matéria. Assim, a Vida é uma propriedade

emergente da organização da matéria, e não uma propriedade da matéria

propriamente dita.

o A Vida Artificial (ALife) emprega uma abordagem sintética para o estudo e

criação da vida.

o ALife envolve o estudo de fenômenos sintetizados por humanos e não pela

natureza, independente do meio usado para esta síntese.

• A vida artificial pode ser definida como uma abordagem sintética ou virtual para

o estudo de padrões, formas, comportamentos, sistemas e organismos.

• Abordagens de vida artificial:

o Sintética: estudo da vida empregando matéria-prima natural ou artificial que

permita a criação de padrões e comportamentos similares aos naturais.

Page 325: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 325

o Virtual ou computacional: realização, emulação ou simulação de fenômenos

e organismos naturais em computador. Embora os organismos virtuais

possam ser sistematicamente interpretados como se estivessem vivos, eles

não são organismos reais, pois vivem em um ambiente virtual.

1.2. Weak ALife × Strong ALife

• Weak ALife: considera que as propostas representam certos aspectos de fenômenos

vivos. Ênfase em ações e comportamentos.

• Strong ALife: nesta abordagem objetiva-se e defende-se a criação de organismos

artificiais com vida própria.

Page 326: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 326

2. Conceitos e Características da ALife

2.1. ALife e Computação Inspirada na Natureza

• Várias técnicas de computação inspirada na natureza, como redes neurais e

algoritmos evolutivos, são usadas no desenvolvimento de projetos de vida

artificial.

• Entretanto, as duas áreas podem ser distinguidas pelo seu enfoque:

o Enquanto a computação inspirada na natureza (CIN) tem como principal

objetivo a resolução de problemas, a vida artificial busca um maior

entendimento da vida como ela é através da emulação e simulação de

fenômenos naturais.

o Portanto, a CIN tem uma ênfase mais tecnológica (de engenharia) e a ALife

enfatiza o desenvolvimento científico e a compreensão da natureza.

Page 327: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 327

• Uma similaridade importante: ambas envolvem sistemas complexos e

comportamentos emergentes.

2.2. Vida e Organismos Artificiais

• Uma questão central em ALife é como avaliar se um dado sistema é uma

simulação, emulação, realização ou nova forma de vida.

• Definir ‘vida’ é muito difícil e várias propostas já foram feitas, mas sem um

consenso geral.

O que é vida?

life, n., pl. lives (Dictionary.com)

a) A propriedade ou qualidade que distingue organismos vivos de organismos

mortos ou matéria inanimada, manifestada em funções como metabolismo,

crescimento, reprodução e resposta a estímulos ou adaptação interna ou

orgânica ao ambiente.

b) O estado característico ou condição de um organismo vivo.

Page 328: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 328

\Vida\ subst.; 1. O estado que começa com a geração, nascimento ou

germinação, e termina com a morte; o tempo durante o qual este estado

continua; aquele estado de um animal ou planta no qual alguns ou todos os seus

órgãos são capazes todas ou algumas de suas funções; -- usada para descrever

organismos animais e vegetais.

Algumas definições poéticas de vida:

“A vida é um longo processo de ficar cansado.” (Samuel Butler)

“A vida é um conto dito por um idiota, cheia de coerências e fúrias, mas que não

significa nada.” (Shakespeare, Macbeth V. v.)

• Apesar das diversas tentativas de se definir vida, existem basicamente duas

vertentes em vida artificial:

Page 329: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 329

o Propor uma lista de características de seres vivos e verificar se um “candidato”

apresenta estas características; e

o Verificar relações entre um elemento artificial e um natural.

• Algumas características dos seres vivos:

o A vida é um padrão no espaço e no tempo

o A vida envolve autoreprodução

o Armazenagem de uma representação de si próprio

o Metabolismo

o Interações funcionais com o ambiente

o Interdependência de partes

o Robustez a pequenas perturbações

o Capacidade de evoluir

• Algumas possíveis relações entre um elemento artificial e um natural:

o Relação genética

Page 330: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 330

o Relações funcionais

o Relações de composição

• Independentemente de considerarmos um sistema vivo ou não devido a presença

de qualquer uma destas características, ou devido a alguma relação com um

organismo natural, o que é importante é reconhecer que é possível desenvolver

instâncias não incorporadas de (propriedades específicas de) vida em sistemas ou

meios artificiais.

• Separar a(s) propriedade(s) da vida que se deseja estudar das outras

complexidades dos seres naturais facilita a manipulação e observação dos

fenômenos de interesse.

• Esta capacidade é uma ferramenta poderosa da vida artificial.

2.3. Vida Artificial e Biologia

• A biologia se concentra amplamente na base material da vida.

Page 331: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 331

• Ela possui um enfoque analítico na maioria de suas vertentes, embora haja

algumas biociências envolvidas em pesquisa sintética, como a engenharia

genética.

• Na maioria dos casos a biologia é reducionista, ou seja, investiga um dado

fenômeno ou organismo fragmentando-o em suas partes componentes:

o Sociedade → organismo → órgãos → tecidos → células → moléculas.

• A vida artificial, por sua vez, é uma abordagem sintética que tenta reproduzir

padrões, comportamentos e organismos a partir de suas unidades elementares.

• Várias subáreas da biologia contribuem para a pesquisa em vida artificial, como

genética, microbiologia, teoria evolutiva, ecologia, etc.

• Estudos em biologia teórica também fornecem ideias e modelos empregados em

vida artificial.

Page 332: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 332

• A biologia também influencia os problemas estudados em vida artificial, uma vez

que diversos modelos de vida artificial fornecem respostas a problemas intratáveis

pelos métodos tradicionais ou pela biologia teórica.

• A vida artificial estuda a natureza (vida) desde o nível químico até o nível social e

planetário.

• Os mais primitivos fenômenos estudados pela vida artificial são a auto-

organização e a emergência.

o Isso pode envolver a interação entre células, organismos, a influência do

ambiente, etc.

• A vida artificial complementa a biologia teórica através da exploração de novos

meios de estudo da vida e da síntese de novas formas de vida.

• Alguns pesquisadores consideram a vida artificial uma generalização da biologia

(Moreno, 2000).

Page 333: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 333

2.4. Modelos e Características da Vida Artificial Computacional

• Diferentemente das técnicas de computação inspirada na natureza, não existe uma

estrutura de projeto para vida artificial.

• Se o objetivo é reproduzir algum fenômeno natural conhecido, o primeiro passo é

identificar os elementos, mecanismos, processos, propriedades e princípios que

fundamentam o sistema natural em estudo.

• O segundo passo envolve a incorporação de tudo isso em um sistema

computacional no qual apenas instruções de baixo nível (regras locais) são

explicitadas, de forma que novos padrões e comportamentos sejam propriedades

emergentes.

• É preciso ser cuidadoso para não incorporar no projeto aspectos comportamentais

intrínsecos ao fenômeno.

o Apenas leis físicas gerais, regras locais, princípios de seleção natural,

interações entre elementos, etc., devem ser considerados.

Page 334: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 334

• Algumas características essenciais de simulações de vida artificial:

o Baseadas em população: operam com agregados ou conjuntos de programas,

agentes, ou especificações.

o Distributividade: não há um único agente ou programa que direciona os

outros agentes.

o Reatividade local: cada agente reage localmente e individualmente.

o Descentralização: não há regras globais.

o Emergência: qualquer fenômeno em um nível superior ao individual deve ser

emergente.

2.5. Vida Artificial como Sistemas Complexos Adaptativos

• Grande parte dos sistemas que apresentam padrões e comportamentos naturais são

sistemas complexos compostos por vários elementos interagindo entre si e com o

meio ambiente.

Page 335: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 335

• A abordagem de vida artificial para o estudo destes tipos de sistemas é a

construção de um sistema complexo adaptativo do tipo bottom-up, a iteração dos

modelos e a observação dos comportamentos emergentes resultantes.

3. Exemplos de Projetos de Vida Artificial

3.1. Coletivos: Revoadas, Grupos e Cardumes

• Produzir uma animação gráfica de comportamentos sociais de uma revoada de

pássaros, grupos de animais terrestres e cardumes de peixes, não é tarefa fácil.

• Tradicionalmente, isso seria feito através de um script que especifica precisamente

o comportamento de cada animal.

• Entretanto, essa abordagem além de muito custosa computacionalmente, torna-se

infactível quando a quantidade de agentes no ambiente é muito grande.

• Reynolds (1987) demonstrou que o aparentemente intencional e centralizado

comportamento de alguns grupos de animais pode ser descrito por uma pequena

Page 336: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 336

quantidade de regras que governam apenas o comportamento individual dos

agentes, atuando somente baseado em informações e percepções locais.

• O comportamento global resultante emerge das interações locais entre os agentes,

e entre eles e o ambiente.

• Reynolds verificou que pássaros em uma revoada têm, dentre outros, dois

comportamentos conflitantes: permanecer coesos e evitar colisões.

• Ele verificou que este comportamento do grupo também ocorre com outros

animais, como cardumes de peixes e grupos de animais terrestres.

• Reynolds denominou de boids os agentes utilizados em vida artificial para emular

este tipo de comportamento coletivo.

• Para criar um comportamento de revoada, Reynolds propôs o seguinte conjunto de

regras a serem aplicadas a cada boid:

o Evitar colisão e separação

o Igualar velocidade e alinhar

Page 337: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 337

o Centralização com a revoada ou coesão

• Reynolds propôs uma técnica de “desviar para evitar” (steer to avoid) com o

objetivo de evitar colisões.

• Principal aplicação: computação gráfica/animação comportamental.

• Alguns filmes onde a proposta de Reynolds foi empregada:

o Batman Returns, O Rei Leão, O Corcunda de Notre Dame.

Page 338: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 338

3.2. Biomorphs (Bioformas)

• Com um programa chamado Blind Watchmaker, R. Dawkins (1986) propôs um

algoritmo evolutivo para gerar figuras compostas por pontos, linhas e outras

primitivas básicas.

• Os organismos artificiais criados com o blind watchmaker foram denominados de

bioformas (biomorphs).

procedure [] = evolution()

initialize; t ← 1 while not_stopping_criterion do, reproduction //insert one mutation in each offspring development //draw the biomorph selection //the user chooses the new parent

t ← t + 1 end while

end procedure

Page 339: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 339

Page 340: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 340

• Considere as bioformas com os seguintes 15 genes:

o Genes 1-8: controlam a forma geral da bioforma.

o Gene 9: controla a profundidade da recursão.

o Genes 10 a 12: controla a cor da bioforma.

o Gene 13: controla o número de segmentações da bioforma.

o Gene 14: controla o tamanho da separação entre os segmentos.

o Gene 15: controla a forma usada para desenhar a bioforma (p. ex. oval, linha,

retângulo, etc.)

Birds Chandelier I Eagle Beast face

Page 341: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 341

Tank Chandelier II Christmas tree Dry tree

Frog Crab Gang with glasses Queen (chess)

Transformer Spider Hen (from the back) Fat face

Page 342: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 342

• Depoimento do R. Dawkins:

“Quando eu escrevi o programa, eu nunca imaginava que ele iria evoluir algo

que fosse além de uma variedade de formas do tipo plantas...Nada em minha

intuição de biólogo, nada em meus 20 anos de experiência como programados

e nada em meus sonhos mais distantes, me preparou para o que realmente

surgiu na tela do computador. Não me lembro quando eu percebi que seria

possível evoluir algo que lembrasse um inseto. Com grande surpresa eu

comecei a criar, geração após geração, bioformas variadas que lembravam

diversas formas de vida conhecidas.” (Dawkins, 1986; p. 73)

Page 343: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 343

3.3. Vírus Computacionais

• Um vírus biológico é um tipo de parasita submiscroscópico de planta, animais e

bactérias que geralmente causa doença, e que é constituído essencialmente por um

núcleo de DNA ou RNA envolto por uma camada de proteína.

• A palavra vírus origina-se da palavra virus em Latim, que significa veneno.

• As infecções virais se espalham pelos vírus que injetam seu conteúdo nas células

de outro organismo.

• As células infectadas se transformam em fábricas biológicas produzindo cópias do

vírus.

• O nome vírus de computador foi inspirado pelo seu análogo vírus biológico.

• O vírus computacional é um fragmento de código de computador que implanta

uma cópia de seu código em um ou mais programas hospedeiros (host programs)

quando ativado.

Page 344: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 344

• Sendo assim, um vírus de computador pode ser definido como um programa

(software) capaz de infectar outros programas ou modificando o programa

hospedeiro ou o ambiente que este habita. Uma versão possivelmente mutada do

vírus é adicionada ao programa hospedeiro.

• Os vírus podem atuar de várias formas:

o Destruindo dados;

o Roubando tempo de CPU;

o Reduzindo a funcionalidade dos programas infectados; e

o Adicionando novas, não necessariamente maléficas, capacidades ao programa

infectado.

• Diferentemente de um verme computacional, um vírus não é capaz de infectar

outro computador sem ajuda externa como, por exemplo, um meio de transporte

como discos flexíveis, CDs, etc.

• Existem basicamente três formas de um vírus infectar outros códigos:

Page 345: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 345

o Eles podem se tornar o código original do hospedeiro (e o programa original se

torna um subrotina do código viral);

o Eles podem se adicionar ao final de um código hospedeiro; e

o Eles podem substituir parte ou todo o código original pelo código viral.

• Os vírus computacionais devem ser executados para que eles possam se proliferar

e infectar outros programas.

• Um problema encontrado pelos vírus é a repetida infecção do hospedeiro,

resultando em uma tomada total da memória do computador e a rápida detecção.

• Para evitar isso, muitos vírus implantam uma assinatura específica que sinaliza

que um arquivo está infectado.

• Levando-se em consideração as características da vida estudadas anteriormente,

verifica-se que os vírus computacionais apresentam praticamente todas elas:

o É representado por um padrão de código de computador;

o Pode se reproduzir (copiar para outros programas e computadores);

Page 346: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 346

o O código que define o vírus corresponde a sua representação;

o Os vírus necessitam de energia elétrica par sobreviver;

o São capazes de sentir o hospedeiro, alterando interrupções, examinando discos e

memória, e podem se esconder para reproduzir e manter sua vida;

o Geralmente o código de um vírus não pode ser quebrado sem que o vírus seja

destruído;

o Podem ser executados em diferentes máquinas e sistemas operacionais; e

o Podem evoluir via intervenção humana.

3.4. Síntese de Comportamentos Emocionais

• D. Dörner (1999) propôs uma teoria para relacionar o comportamento humano às

emoções.

• Por exemplo, quando uma pessoa está irritada, ela se torna mais ativa (p. ex. fala

mais rápido e move o corpo mais rapidamente), fica mais extrovertida e menos

precisa e fica mais enfocada.

Page 347: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 347

• A teoria de Dörner identifica quatro diferentes moduladores que descrevem o

comportamento direcionado pelo objetivo:

o Ativação: energia gasta para atingir um objetivo.

o Externalidade: tempo usado em atividades externas.

o Precisão: cuidado tomado na busca de objetivo.

o Foco: atenção dispensada ao objetivo.

• Exemplos de relações entre comportamentos e emoções:

o Ansiedade: alta ativação, precisão, foco e introversão.

o Tristeza: precisão, foco, introversão, inativação.

o Medo: alta ativação, externalidade, foco e imprecisão.

o Raiva: alta ativação, externalidade, foco e imprecisão.

o Alegria: ativação, externalidade, imprecisão e pouco foco.

Page 348: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 348

• K. Hille (2001) projetou um agente virtual, denominado ‘Alie’, com

comportamento variável em relação aos quatro moduladores: ativação,

externalidade, precisão e foco.

• O objetivo era verificar se a animação virtual dos moduladores poderia ser

identificada como emoções.

• O Alie é um organismo virtual que consiste em um círculo com cinco pequenos

círculos em seu interior.

Page 349: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 349

• Seis emoções foram incorporadas ao Alie: raiva, excitação, alegria, ansiedade,

medo e tristeza:

o Alta ativação: pulsação rápida dos círculos internos.

o Alta externalidade: movimento rápido do Alie.

o Precisão: movimento lento dos círculos internos.

Page 350: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 350

o Foco: concentração (agrupamento) dos círculos internos.

• Para testar a teoria das emoções como moduladoras comportamentais foram feitos

experimentos com 70 alunos.

o Eles tiveram como tarefa identificar o estado emocional do Alie conhecendo

apenas seu comportamento normal e tendo algumas informações simples

sobre a estrutura do Alie.

3.5. O Robô Cachorro AIBO da Sony®

• A palavra AIBO provém de Artificial Intelligence Robot, que significa

companheiro, colega em japonês.

• Especificações:

Page 351: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 351

Page 352: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 352

• O AIBO responde a estímulos externos usando diversos sensores, como sensores

de toque, uma câmera CCD, microfones estéreos, etc.

3.6. Construção de Ninhos de Abelhas e Vespas

• A maioria dos ninhos de abelhas e vespas são feitos de fibras de plantas mascadas

e coladas usando secreções salivares.

• A ‘cartolina’ resultante é moldada para construir as várias partes do ninho.

• No caso das vespas, a unidade funcional de um ninho é uma célula geralmente

hexagonal, mas algumas vezes circular.

• Cada célula fornece o container para o desenvolvimento de um filho.

• Há três componentes arquiteturais principais que resultam em estruturas

sofisticadas:

o Agrupamentos de células isoladas formando pentes.

o Um pedicel, que liga os pentes a um substrato.

o Um envelope que protege os pentes.

Page 353: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 353

• Sob uma perspectiva de busca por alimento e arquitetônica, é mais barato e

eficiente produzir células adjacentes que estão em contato, compartilhando uma

parede comum e organizadas em pentes, do que construir células isoladas

espalhadas pela superfície.

• O pedicel e o envelope têm um papel de proteção contra predadores e regulação

térmica.

Page 354: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 354

• Se o objetivo é desenvolver um algoritmo para construir ninhos de abelhas e

vespas, é preciso entender o comportamento (algoritmo) de construção destes

insetos.

• Este algoritmo inclui diversos fatos, sendo o primeiro deles geralmente o uso ou

não de um pedicel.

• Aparentemente a colocação das primeiras células do ninho segue sempre a mesma

regra para uma dada espécie de vespa.

o Em seguida, as vespas iniciam o ninho construindo duas células em ambos os

lados de uma extensão linear do pedicel.

o As próximas células são adicionadas à circunferência externa dos pentes,

cada qual entre duas células previamente construídas.

o Quando mais células são adicionadas à estrutura em desenvolvimento, elas

eventualmente formam linhas paralelas empacotadas de células e o ninho

Page 355: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 355

geralmente possui uma simetria radial ou bi-lateral em torno das células

iniciais.

o Um aspecto importante é que as vespas tendem a terminar uma linha antes de

começarem outra e as linhas são iniciadas pelas células centrais.

Page 356: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 356

Page 357: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 357

3.7. Criaturas

• Creatures é um software comercial de entretenimento que fornece um ambiente

simulado com agentes virtuais, as ‘criaturas’, que o usuário pode interagir em

tempo real.

• A arquitetura interna das criaturas é inspirada em organismos naturais contendo:

o Código genético de tamanho variável: necessário para definir as

características comportamentais e químicas da criatura. Também define a

evolução das criaturas através de processos consecutivos de reprodução

sexuada.

o Uma rede neural: responsável pelo controle motor, seleção de

comportamentos e aprendizagem;

o Uma bioquímica: para modelar um metabolismo simples e um sistema

hormonal que interage com a rede neural e influencia o desenvolvimento da

criatura.

Page 358: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 358

• As criaturas possuem visão, audição, tato e são bípedes, embora pequenas

variações morfológicas possam ocorrer com o amadurecimento.

• O comportamento de cada criatura é um resultado de sua interação com outras

criaturas e com o ambiente, incluindo com o usuário.

• Brinquedo virtual × jogo de computador.

Page 359: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 359

3.8. Peixes Artificiais

• Terzopoulos et al. (1994) implementaram um ambiente virtual habitado por

diversos peixes artificiais.

“Na presença de correntes marinhas os peixes empregam seus músculos e nadadeiras

para nadarem suavemente em torno de obstáculos imóveis e entre plantas aquáticas e

outros peixes. Peixes predadores se alimentam de peixes menores no ambiente

aparentemente calmo. Os peixes presa nadam tranquilamente até avistarem um predador,

o que faz com que eles fujam. Quando um predador perigoso aparece a distância,

espécies similares de presas formam cardumes para aumentar suas chances de

sobrevivência. Assim que o predador se aproxima de um cardume, os peixes se espalham.

Uma perseguição é iniciada na qual o predador escolhe as vítimas e as consome até que

ele fique saciado. Algumas espécies de peixes parecem não atrair a atenção dos

predadores. Elas encontram nichos confortáveis e se alimentam de plânctons flutuantes

quando sentem fome. Motivados pela libido, eles fazem rituais elaborados de

acasalamento para garantir a reprodução.” (Terzopoulos et al., 1994)

Page 360: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 360

• O sistema proposto por Terzopoulos et al. (1994) visava emular a aparência,

movimento e comportamento de peixes individuais, assim como comportamentos

coletivos de cardumes em ambientes aquáticos.

• Cada peixe foi modelado de maneira holística, ou seja, como um agente autônomo

situado no ambiente.

• Cada peixe possui:

o Um corpo 3D com músculos internos e barbatanas que deformam e se

movem de acordo com princípios biomecânicos e hidrodinâmicos.

o Sensores, incluindo olhos, que enxergam o ambiente.

o Um cérebro com centros motores, de percepção, comportamental e de

aprendizagem.

• Dentre os possíveis comportamentos dos peixes artificiais destacam-se:

o Locomoção, desvio de obstáculos, busca por alimento, formação de cardumes

e reprodução.

Page 361: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 361

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

comportamento e motor.

Page 362: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 362

3.9. Tartarugas, Cupins e Engarrafamentos de Trânsito

• M. Resnick (1994) desenvolveu uma nova ferramenta computacional denominada

StarLogo com o objetivo de permitir o estudo de sistemas e processos auto-

organizados.

• O StarLogo foi projetado como uma linguagem massivamente paralela com um

ambiente capaz de acomodar uma grande quantidade simultânea de agentes,

denominados tartarugas.

• As tartarugas possuem diversas capacidades, como atuar e sentir o ambiente.

• O ambiente no qual as tartarugas estão inseridas, denominado mundo, também é

ativo, e é dividido em células ou patches.

• Sendo assim, os patches podem armazenar informação sobre seu estado e também

executar instruções, assim como as tartarugas.

• Exemplos de projetos:

o Presa-predador

Page 363: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 363

o Cupins

o Engarrafamentos de trânsito

o Slime mold

3.10. Simulações com Autômatos Celulares

O Jogo da Vida (Game of Life)

• No final da década de 1960, John Conway estendeu o trabalho de von Neumman

sobre autômatos celulares e propôs um jogo individual denominado “Jogo da

Vida”, ou simplesmente “Vida”.

• Grid bidimensional (d = 2); vizinhança n = 9, r = 1; S = {0,1}.

• Vizinhança:

Page 364: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 364

• s = 1: célula “viva”

• s = 0: célula “morta”

• Regras do jogo da vida:

o Nascimento: uma célula “nasce” (0 → 1) se exatamente 3 vizinhos estão vivos

o Morte: células vivas com não mais do que um vizinho vivo morrem; células

vivas com mais do que 3 vizinhos vivos morrem

o Sobrevivência: células vivas com 2 ou 3 vizinhos vivos sobrevivem

• Destino de algumas condições iniciais:

Morte após poucas iterações

Bloco

Page 365: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 365

Blinker

Beehive

Page 366: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 366

Langton’s Loops

• Langton (1984) propôs uma estrutura compacta que faz um uso duplo da

informação contida na descrição do sistema para se reproduzir.

• Ele usou um autômato celular bi-dimensional com vizinhança do tipo Von

Neumann e oito estados possíveis por célula.

Page 367: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 367

• A estrutura consiste de um caminho fechado (loop) com um braço que se projeta

sobre si próprio.

• Os laços consistem em corredores, dentro dos quais circula a informação

necessária à construção de um novo laço (loop).

• A descrição consiste em uma sequência de máquinas de estado virtuais (VSM) que

fazem ciclos pelo laço.

• Quando um VSM encontra a junção entre o corpo de um laço e um braço ele é

replicado, com uma cópia propagando de volta em torno do laço e uma outra cópia

propagando de volta para o braço, onde ela é transformada em uma instrução ao

encontrar o final do braço.

Page 368: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 368

Sierpinski Gasket

• Grid unidimensional (d = 1); vizinhança n = 3, r = 1; S = {0,1}.

Page 369: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 369

• Regras de transição

000 → 0 100 → 1 001 → 1 101 → 1 010 → 1 110 → 1 011 → 1 111 → 0

CAFUN

• CAFUN (Cellular automata fun) é um software desenvolvido com base nos

fundamentos dos autômatos celulares.

• Uma diferença entre CAFUN e um autômato celular convencional é que no

CAFUN ao invés de um conjunto geral (global) de regras de transição, cada tipo

de célula possui um conjunto de regras próprias.

Page 370: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 370

Page 371: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 371

3.11. Framsticks

• O objetivo inicial do projeto Framsticks é estudar a evolução de criaturas

artificiais em um ambiente simulado 3D com condições de vida similares às

encontradas na Terra.

• Os framsticks são construídos com:

o Um cérebro com neurônios artificiais com receptores, efetores e conexões

neurais; e

o Um corpo composto de partes conectadas por juntas ou articulações elásticas.

• Tanto o corpo quanto o cérebro do framstick podem ser evoluídos por um

algoritmo evolutivo.

• Várias formas de interação entre os framsticks e o ambiente são possíveis:

o Fricção estática e dinâmica, forças de ação e reação, perda de energia após

deformações, gravidade, força de empuxo (em ambientes aquáticos), etc.

Page 372: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 372

4. Escopo da Vida Artificial

• Os exemplos apresentados aqui ilustram aplicações de vida artificial em contextos

variados, como educação, entretenimento, estudos científicos, etc.

• A vida artificial é importante para os biólogos, pois ajuda a esclarecer diversos

fenômenos naturais. Também é relevante para cientistas da computação e

engenheiros, pois oferece novas metodologias para gerar comportamentos

complexos difíceis de serem gerados com técnicas convencionais.

• A vida artificial também envolve vários aspectos das ciências cognitivas, artes,

física, química, biologia e até ética.

• A maior ambição da vida artificial é construir novas formas de vida a partir de

partes sem vida, ou seja, desenvolver a vida artificial forte (strong artificial life).

Page 373: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 373

Tópico 9: Computação de DNA

1. Introdução

• A computação de DNA é uma das subáreas de uma linha de pesquisa mais ampla

denominada de computação molecular.

• Em linhas gerais, a computação molecular emprega (bio)moléculas e operações

para a manipulação destas (bio)moléculas para resolver problemas e realizar

computação.

• Questões importantes a serem verificadas:

o Qualquer algoritmo pode ser “simulado” via computação de DNA?

o Quais as dificuldades em se projetar um computador de DNA?

• Diversos modelos de computação de DNA vêm sendo propostos para responder

estas e outras questões. Estes modelos podem ser divididos em dois grandes

grupos:

Page 374: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 374

o Modelos baseados em filtragem

o Modelos formais

• De maneira simplificada a computação de DNA emprega moléculas de DNA como

estrutura de dados e manipula estas moléculas de forma a realizar computação.

1.1. Computação de DNA x Computadores Tradicionais

• A computação de DNA utiliza DNA como estrutura de dados. Alfabeto quaternário

{A,C,T,G} ao invés de binário {0,1}.

• Computadores de DNA operam de forma massivamente paralela.

• A computação de DNA opera em nível molecular, um limite que talvez jamais será

atingido pela indústria de semicondutores.

• Os computadores de DNA demandam muito pouca energia e são altamente

econômicos na armazenagem de informação.

• Os computadores de DNA são eficientes na resolução de problemas NP-completos.

Page 375: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 375

2. Conceitos Básicos de Biologia Molecular

2.1. A Molécula de DNA

• Toda a informação genética em organismos celulares está armezanada no DNA,

que consiste em cadeias de polímeros, usualmente conhecidas como cadeias de

DNA.

gene gene

gene

Dupla hélice de DNA

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

Page 376: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 376

• As cadeias de DNA são formadas por quatro unidades de ácidos nucleicos,

chamados de deoxyribonucleotídeos ou simplesmente nucleotídeos.

• Existem quatro nucleotídeos no DNA, e cada nucleotídeo é composto por três

partes: uma molécula base, um açúcar e um grupo fosfato.

• As quatro bases são: adenina (A), citosina (C), guanina (G), e timina (T).

• Como os nucleotídeos diferem apenas pelas bases, eles são geralmente

denominados de bases.

• Números de 1′ a 5′ são usados para denotar os cinco átomos de carbono do açúcar

do nucleotídeo. O grupo de fosfato se liga ao átomo de carbono 5′, e a base se liga

ao átomo de carbono 1′.

• Cada cadeia possui, por convenção química, um terminal 5′ e um terminal 3′.

Portanto, cada cadeia possui uma orientação.

Page 377: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 377

Fosfato Açúcar Base

5′ 4′ 3′

2′ 1′

Base

Fosfato P O CH2

O C C

C C H H

OH H

5′

CH3

O

HN

CH C

C

N

C

O

4′ 3′ 2′

1′

Figura 34: Estrutura química do nucleotídeo e uma de suas representações.

• Os nucleotídeos podem se ligar de duas formas distintas:

o O grupo de fosfato 5′ de um nucleotídeo se junta ao grupo de hydroxil 3′ de

outro nucleotídeo formando uma ligação covalente;

Page 378: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 378

o A base de um nucleotídeo interage com a base de outro para formar uma ponte

de hidrogênio, que é uma ligação mais fraca do que uma ligação covalente.

• Uma característica importante da ligação de nucleotídeos (ligação covalente) é que

qualquer nucleotídeo pode se ligar para formar uma sequência.

• Por outro lado, as ligações entre as bases só ocorrem pela atração entre pares

específicos de bases:

o A se liga com T

o C se liga com G

• Estas ligações são denominadas de complementaridade de Watson-Crick.

Page 379: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 379

A

T

C

G

A

T

C

G

T

A

G

C

T

A

G

C

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

Page 380: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 380

• Algumas representações alternativas:

C

T

G

A

G

A

C

T

5′

3′

5′

3′

5′ − T C G A T T G A A C C − 3′ 3′ − A G C T A A C T T G G − 5′

5′ − T C G A T T G A − 3′

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

Page 381: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 381

2.2. Manipulando o DNA

• Todas as técnicas de computação de DNA envolvem a aplicação de um conjunto

específico de operações biológicas a um conjunto de moléculas.

o Desnaturação: separa cadeias de DNA (separa as bases)

o Annealing: junta cadeias de DNA (une pelas bases)

o Extensão de polimerase: completa cadeias incompletas

o Degradação por nuclease: encurta cadeias de DNA

o Endonucleases: corta moléculas de DNA (separa pelas ligações covalentes)

o Ligação: une moléculas de DNA (une pelas ligações covalentes)

o Modificação de nucleotídeos: insere ou deleta pequenas sequências

o Amplificação (PCR): multiplica moléculas de DNA

o Eletroforese de gel: mede o comprimento de moléculas de DNA

o Filtragem: separa ou extrai moléculas específicas

o Síntese: cria moléculas de DNA

o Sequenciamento: lê a sequência de uma molécula de DNA

Page 382: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 382

C

T

G

A

G

A

C

T

5′

3′

5′

3′

C

T

G

A

G

A

C

T

5′

3′

5′

3′

Annealing

Denaturing (melting)

5′ − T C G A T T G A A − 3′ (single strand) 3′ − A A C T T C − 5′ (single strand)

↓ (Annealing)

5′ − T C G A T T G A A − 3′ 3′ − A A C T T C − 5′

Figura 36: Desnaturação e annealing.

Page 383: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 383

5′ − T C G A T T − 3′ (primer) 3′ − A G C T A A C T T − 5′ (template)

↓ 5′ − T C G A T T G − 3′ 3′ − A G C T A A C T T − 5′

↓ 5′ − T C G A T T G A − 3′ 3′ − A G C T A A C T T − 5′

↓ 5′ − T C G A T T G A A − 3′ 3′ − A G C T A A C T T − 5′

5′ − T C G A T T G A A − 3′ 3′ − A G C T A A C T T − 5′

↓ 5′ − T C G A T T G A − 3′ 3′ − G C T A A C T T − 5′

↓ 5′ − T C G A T T G − 3′

3′ − C T A A C T T − 5′ ↓

5′ − T C G A T T − 3′ 3′ − T A A C T T − 5′

(a) (b)

Figura 37: (a) Extensão de polimerase. (b) Degradação por nuclease.

5′ − T G A A T T C C G − 3′ 3′ − A C T T A A G G C − 5′

↓ 5′ − T G − 3′ 5′ − A A T T C C G − 3′ 3′ − A C T T A A − 5′ 3′ − G G C − 5′

5′ − T G C C C G G G A − 3′ 3′ − A C G G G C C C T − 5′

↓ 5′ − T G C C C − 3′ 5′ − G G G A − 3′ 3′ − A C G G G − 5′ 3′ − C C C T − 5′

Figura 38: Corte por endonuclease.

Page 384: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 384

OH P 5′ − T C G A T T G A A − 3′ 3′ − A G C T A A C T T − 5′

P OH ↓↓↓↓

OH P 5′ − T C G A T T G A A − 3′ 3′ − A G C T A A C T T − 5′

P OH ↓↓↓↓

5′ − T C G A T T G A A − 3′ 3′ − A G C T A A C T T − 5′

Figura 39: Ligação.

Page 385: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 385

a b c

a b c

Denaturation

Denaturation

Template Primers

a c

a c

a

c

c

a

c

a

a

c

Polymerase extension

Figura 40: PCR (Polymerase Chain Reaction).

Page 386: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 386

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

Page 387: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 387

3. Modelos Baseados em Filtragem

• Em todos os modelos baseados em filtragem, um grande conjunto de strings é

gerado e diversos processos de filtragem são aplicados de forma a filtrar strings

que não podem ser solução do problema.

3.1. O Experimento de Adleman

• O primeiro experimento bem sucedido na utilização de moléculas de DNA e

técnicas de manipulação de DNA na solução de problemas foi apresentado por

Adleman em 1994.

• Neste trabalho, Adleman resolveu uma pequena instância de um problema de

caminho Hamiltoniano (HPP).

o Um grafo direcionado G com os nós de entrada e saída definidos, vin e vout,

possui um caminho Hamiltoniano se e somente se existe uma sequência de

ramos direcionados e1, e2,…,ez (caminho) que inicia em vin e termina em vout.

Page 388: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 388

2

0

6

1

3

4 5

Figura 42: Grafo usado no experimento de Adleman.

• O HPP pode ser resolvido de forma exaustiva e, embora haja algoritmos capazes

de resolver instâncias específicas de forma eficiente, todos os algoritmos de

solução possuem complexidade exponencial no pior caso.

o Portanto, na prática o HPP é um problema intratável usando as técnicas

tradicionais de computação.

Page 389: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 389

o Com a proposta de Adleman usando computação de DNA, o número de

operações em laboratório a serem empregadas na solução do HPP é linear em

função do tamanho do grafo (número de vértices), embora o problema continue

sendo NP-completo.

• Algoritmo para resolver o problema:

Passo 1: gere caminhos aleatórios pelo grafo.

Passo 2: mantenha apenas aqueles que iniciam em vin e terminam em vout.

Passo 3: se o grafo possui n vértices, mantenha somente aqueles caminhos de

comprimento n.

Passo 4: mantenha apenas aqueles que passam por cada nó uma única vez.

Passo 5: se um caminho permanecer, aceite; caso contrário rejeite.

• Antes de aplicar o algoritmo determinístico acima para resolver este problema, é

necessário “codificar” os possíveis caminhos utilizando moléculas de DNA.

Page 390: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 390

• Adleman codificou cada nó do grafo utilizando uma sequência de nucleotídeos

(single strand) de comprimento 20.

• A codificação foi escolhida aleatoriamente e o comprimento de 20 bases foi

adotado para garantir uma codificação diferente para cada nó.

• Uma grande quantidade de nucleotídeos foi gerada via PCR e colocada em um

tubo de ensaio.

• Os ramos foram codificados da seguinte forma:

Page 391: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 391

v1 = 5′ − T G A A T T C C G A | C G T C C A G T G A − 3′ v2 = 5′ − A T G A A C T A T G | G C A C G C T A T C − 3′ v3 = 5′ − C A T A G T C C G A | T T A G C A G T A G − 3′

e1→2 = 3′ − G C A G G T C A C T | T A C T T G A T A C − 5′ e2→1 = 3′ − C G T G C G A T A G | A C T T A A G G C T − 5′ e1→3 = 3′ − G C A G G T C A C T | G T A T C A G G C T − 5′

(a)

T G A A T T C C G A C G T C C A G T G A A T G A A C T A T G G C A C G C T A T C G C A G G T C A C T T A C T T G A T A C

(b)

v1 v2

e1→2

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

Page 392: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 392

Método de Solução

Passo 1: gere caminhos aleatórios pelo grafo.

• Para ligar os vértices de modo a formar caminhos, oligonucleotídeos Ōi

complementares aqueles representando os nós (Oi) são gerados.

• Para unir as ‘single strands’ e gerar os caminhos aleatórios pelo grafo foi feito o

annealing e foi utilizada uma reação de ligação.

Passo 2: mantenha apenas aqueles caminhos que iniciam em vin e terminam em vout.

• Em seguida, uma PCR empregando Ō0 e Ō6 como primers é utilizada para

amplificar o resultado do passo anterior.

• Dessa forma, apenas as moléculas que iniciam no nó 0 e terminam no nó 6 foram

amplificadas.

• Um processo de filtragem separa estas moléculas das demais.

Page 393: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 393

Passo 3: se o grafo possui n vértices, mantenha somente aqueles caminhos de

comprimento n.

• A eletroforese de gel é utilizada para separar as moléculas (double stranded) de

acordo com seus comprimentos.

• Apenas as cadeias com comprimento 140 pares base (7 vértices) foram mantidas.

• Ao final deste passo existem diversas moléculas que iniciam no nó 0, terminam no

nó 6 e passam por 7 nós.

Passo 4: mantenha apenas aqueles que passam por cada nó uma única vez.

• Com um passo para cada vértice, foi possível verificar se as moléculas restantes

possuíam estes vértices. (filtragem)

Passo 5: se um caminho permanecer, aceite; caso contrário rejeite.

Page 394: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 394

Discussão

• Adleman demorou 7 dias para completar seu experimento.

o Entretanto, a quantidade de nucleotídeos necessária para resolver o problema

cresce linearmente com o número de nós do problema.

• Portanto, um problema NP-completo que requer mais tempo de processamento

quanto maior o tamanho do problema, pode ser resolvido em tempo linear devido

ao paralelismo da computação de DNA.

• Uma das dificuldades do procedimento adotado por Adleman está relacionada a

quantidade de single strands que devem ser geradas para codificar os diversos

caminhos possíveis no grafo.

• Como o HPP é um problema NP-completo e ele foi resolvido por uma técnica de

computação de DNA, em teoria é possível utilizar esta mesma estratégia para

resolver qualquer problema da classe NP.

Page 395: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 395

• Entretanto, isso não significa que qualquer instância de um problema NP possa ser

resolvida de forma factível por computação de DNA.

• Adleman resolveu o problema HPP usando a força bruta: ele projetou um sistema

capaz de gerar e avaliar todas as possíveis soluções para uma dada instância do

HPP.

• A característica marcante do experimento de Adleman foi o paralelismo massivo

das moléculas de DNA.

• Em 1994, quando Adleman executou seu experimento, um computador do tipo

desktop comum era capaz de executar 106 operações por segundo e o

supercomputador mais rápido conhecido podia executar aproximadamente 1012

operações por segundo.

o O computador de DNA de Adleman era capaz de executar 1014 operações por

segundo, assumindo que cada ligação corresponde a uma operação. Escalonando

o passo de ligação poderia elevar este número para 1020.

Page 396: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 396

o Além disso, a quantidade de energia consumida era muito baixa, da ordem de

2 × 1019 operações por joule, um valor próximo do limite proposto pela segunda

lei da termodinâmica (34 × 1019).

o Os supercomputadores modernos operam na casa de 109 operações por joule.

o Por último, em um computador de DNA um bit de informação pode ser

armazenado em um nanômetro cúbico de DNA, que é aproximadamente 1012

vezes mais eficiente que os dispositivos de armazenagem conhecidos na época.

o Em resumo, um computador de DNA podia ser, em 1994, 1.200.000 vezes mais

rápido do que o supercomputador mais rápido conhecido, além de permitir um

armazenamento de informação 1012 vezes mais eficiente e consumir 1010 vezes

menos energia que os computadores existentes.

3.2. A Solução de Lipton para o Problema SAT

• Lipton mostrou como empregar procedimentos de DNA para resolver o problema

denominado de satisfiability problem for propositional formulas (SAT).

Page 397: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 397

• SAT é um problema de busca NP-completo que pode ser definido como a seguir.

• Dado um conjunto finito de variáveis lógicas E = {e1, e2,…, en}, defina um literal

como sendo uma variável, ei, ou seu complemento ēi. Se ei é verdadeira, então ēi é

falsa, e vice-versa.

• Seja uma cláusula Cj um conjunto de literais {e1j, e2

j,…, elj}.

• Uma instância I do problema SAT consiste em um conjunto de cláusulas, mais

especificamente, uma fórmula Booleana da forma C1 ∧ C2 ∧ … ∧ Cm, onde cada

cláusula é uma proposição que pode ser construída a partir de variáveis

proposicionais ei, i = 1,…, e conectivos lógicos AND (∧), OR (∨), e NOT (¬).

• O problema SAT corresponde portanto a especificar um valor Booleano para cada

variável ei ∈ E, i = 1,…,n, tal que toda a fórmula seja verdadeira.

• Um aspecto chave explorado por Lipton foi o fato de podermos representar o

problema SAT como um problema de busca em grafos.

Page 398: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 398

e10 e2

0 e30 en–1

0 en0

v0 v1 v2 . . . vn–1 vn e1

1 e21 e3

1 en–11 en

1

Figura 44: Representação em grafo do problema SAT.

• De acordo com a figura acima, um caminho genérico pode ser representado por

uma sequência v0e1i1v1e2

i2… vn–1eninvn, onde a variável ej pode assumir o valor

verdade ij, j = 1,…n.

• Neste grafo, todos os caminhos que iniciam em v0 e terminam em vn correspondem

a uma string binária.

o Por exemplo, o caminho v0e11v1e2

0v2e30…vn–1en

1vn codifica a string binária

100…1.

Page 399: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 399

• Assim como a solução de Adleman, Lipton também propôs um método composto

por duas fases principais:

o Gerar todas as soluções possíveis (caminhos no grafo)

o Filtrar aquela(s) que satisfaz(em) o problema

• Lipton propôs codificar os grafos em um tubo de ensaio como feito por Adleman e

utilizou o mesmo esquema de codificação.

• Por outro lado, a forma de solução proposta por Lipton foi diferente em essência.

• Ele propôs trabalhar com operações em tubos de ensaio.

• Para exemplificar, foi verificada a seguinte expressão: F = (e1 ∨ e2) ∧ (ē1 ∨ ē2).

e10 e2

0

v0 v1 v2 e1

1 e21

Page 400: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 400

• Lipton construiu uma série de tubos de ensaio, onde o primeiro tubo t0

supostamente contém todas as possíveis soluções do problema.

• Ele propôs, dentre outras, uma operação de extração E(t,i,a) que extrai todas as

sequências no tubo t cujo i-ésimo bit é a, a ∈ {0,1}.

• Em seguida, ele propôs o seguinte algoritmo para resolver o problema:

Passo 1: Seja t1 o tubo correspondente a E(t0,1,1). O tubo contendo o restante é t1′, e

t2 é E(t1′,2,1). Junte o conteúdo de t1 e t2 produzindo o tubo t3.

Passo 2: Seja t4 o tubo correspondente a E(t3,1,0). O tubo com o conteúdo restante é

t4′, e t5 é E(t4′,2,0). Junte o conteúdo de t4 e t5 produzindo o tubo t6.

Passo 3: Verifique se há alguma molécula de DNA no último tubo. Caso afirmativo,

aceite; caso contrário, rejeite.

Page 401: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 401

Tubo de ensaio

Strings presentes

t0 00, 01, 10, 11 t1 10, 11 t1′ 00, 01 t2 01 t3 01, 10, 11 t4 01 t4′ 10, 11 t5 10

Caso Genérico

• Qualquer problema SAT com n variáveis e m cláusulas pode ser resolvido com, no

máximo, O(m) operações de extração e uma operação de detecção.

• Sejam C1, C2,…, Cm as m cláusulas de uma fórmula proposicional.

• Construa m tubos, t0, t1,…, tm, de forma que tk seja o conjunto de números com n-

bits tal que C1(e) = C2(e) = … = Ck(e) = 1, onde Ci(e) corresponde ao valor verdade

da cláusula Ci sobre o conjunto de variáveis e.

Page 402: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 402

• Para t0 use todas as combinações possíveis de cláusulas.

• Dado tk, construa tk+1 da seguinte forma. Assuma que Ck+1 está na forma disjuntiva:

o1 ∨ ... ∨ ol, onde oi é um literal e ōi é o complemento de um literal.

• Para cada literal opere da seguinte forma:

o Se oi = ej, então gere E(tk,j,1).

o Senão, se oi = ēj, gere E(tk,j,0).

• Cada operação de extração é efetuada e o restante é colocado em um outro tubo.

• Junte todos os tubos e faça uma detecção. Se sobrar algo, então a fórmula é

satisfeita.

Discussão

• Em essência, nenhum método é melhor do que a busca exaustiva na solução do

SAT.

Page 403: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 403

• Neste sentido, o método utilizado pela computação de DNA não é melhor do que

os de busca exaustiva, porém ele faz uso do paralelismo massivo das moléculas de

DNA e suas técnicas de manipulação.

• Um dos principais resultados da solução proposta por Lipton foi a verificação de

que seu procedimento permite resolver qualquer problema SAT de n variáveis e m

cláusulas com, no máximo, m passos de extração e uma detecção.

3.3. Linguagem de Programação de Tubos de Ensaio

• Os aspectos práticos das propostas de Lipton e Adleman dependem das tecnologias

de manipulação de DNA disponíveis.

• Até mesmo os algoritmos utilizados para resolver os problemas poderiam ser

mudados.

• O que é importante neste caso é provar que a computação é factível.

Page 404: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 404

• Meios puramente bioquímicos foram empregados para resolver problemas NP-

completos em um tempo linear em relação a quantidade de operações de

laboratório.

• Estas operações, em uma formulação abstrata, constituem outra grande

contribuição da proposta de Adleman e sua filosofia, resultando em uma espécie de

linguagem de programação de tubos de ensaio baseada em moléculas de DNA

colocadas em tubos de ensaio e mecanismos para manipulação destas moléculas.

O Modelo Irrestrito

• Um tubo de ensaio é um conjunto de moléculas de DNA, ou seja, um multi-

conjunto de strings finitas construídas a partir de um alfabeto {A,C,G,T}.

• Dado um tubo, é possível realizar quatro operações básicas:

Page 405: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 405

1. Separate (extract) dado um tubo t e uma palavra w (cadeia de símbolos

w pertencentes ao alfabeto {A,C,G,T}), produza dois tubos +(t,w) e −(t,w),

onde +(t,w) consiste de todas as cadeias de DNA em t que contêm w como

sub-sequência, e −(t,w) consiste de todas as cadeias de DNA em t que não

contêm w como sub-sequência.

2. Merge: dado um conjunto de tubos t1, t2, …, tm, produza um tubo com o

conteúdo de todos os outros tubos: ∪(N1,N2,…,Nm) = N1 ∪ N2 ∪…∪ Nm.

3. Detect: dado um tubo t, aceite se t contém pelo menos uma molécula de

DNA, e rejeite caso contrário.

4. Amplify: dado um tubo t, produza duas cópias t1 e t2: t = t1 = t2.

• Estas quatro operações podem ser empregadas para escrever programas que

recebem como entrada um tubo e produzem como saída uma resposta aceite

(YES), rejeite (NO) ou um conjunto de tubos.

Page 406: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 406

• Além destas operações, o experimento de Adleman utiliza a complementaridade de

Watson-Crick e as seguintes modificações da operação separate:

1. Length-separate: dado um tubo t e um inteiro n, produza o tubo (t, ≤ n)

que consiste de todas as cadeias em t de comprimento menor ou igual a n.

2. Position-separate: dado um tubo t e uma palavra w, produza um tubo

B(t,w) que possui todas as cadeias em t que iniciam com a palavra w; ou

produza o tubo E(t,w) que contém todas as cadeias em t que terminam com a

palavra w.

• Exemplos de aplicação:

Page 407: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 407

procedure [out] = extract(t,A,T,G)

t ← −(t,T) t ← −(t,G) t ← −(t,A) out ← detect(t)

end procedure

o O que o programa acima faz?

Page 408: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 408

procedure [out] = HPP(t,vin,vout)

t ← B(t,vin)

t ← E(t,vout)

t ← (t,≤ 140) for i=1 to 5 do

t ← +(t,si) end for

out ← detect(t) end procedure

• Na proposta de Lipton para o problema SAT, uma operação extract E(t,i,a) que

extrai todas as sequências de um tubo t cujo i-ésimo bit é igual a a, foi definida:

E(t,i,a) = +(t,eia),

E−(t,i,a) = −(t,eia),

onde E−(t,i,a) extrai todas as sequências no tubo t cujo i-ésimo bit é complementar

a a.

Page 409: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 409

procedure [out] = SAT(t)

t1 ← +(t,e11)

t1’ ← −(t,e11) t2 ← +(t1’,e2

1)

t3 ← merge(t1,t2)

t4 ← +(t3,e10)

t4’ ← −(t3,e10) t5 ← +(t4’,e2

0)

t6 ← merge(t4,t5)

out ← detect(t6) end procedure

A Linguagem Pascal-DNA

• Com o objetivo de fornecer um modelo em alto nível para a computação

molecular, foi introduzida uma outra linguagem de programação combinando

elementos de Pascal com operadores de manipulação de DNA.

• Nesta linguagem, denominada de DNA Pascal, tubos de ensaio com moléculas de

DNA foram mapeados em variáveis contendo palavras do alfabeto {0,1}.

Page 410: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 410

o Initialization: preenche um conjunto de variáveis t com {0,1}n,

t := In(n).

o Empty word: t :={ε}.

o Union: união de dois conjuntos de variáveis t1 e t2, t := t1 ∪ t2.

o Extraction: filtra todas as palavras de um conjunto de variáveis t1 que

possuem um padrão especial. Os autores propuseram dois tipos de

procedimentos de extração: 1) uma extração de bits, e 2) uma extração de sub-

palavras.

o Bit extraction: procura um bit especial b em uma posição particular k,

t := Bx(t1,b,k).

o Sub word extraction: a extração procura uma palavra sub-palavra

especial w em qualquer lugar da palavra, t := Sx(t1,w).

o Concatenation: a concatenação de dois conjuntos de variáveis t1 e t2 é

t := t1.t2.

Page 411: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 411

o Right cut: t := t1/, onde t1/ = {z/ | z ∈ t1} e za/ = z ∀a ∈ {0,1} e ε/ = ε.

o Left cut: t := /t1, onde /t1 = {/z | z ∈ t1} e /za = z ∀a ∈ {0,1} e /ε = ε.

o Right append: t := t1.a, onde t1.a = {z.a | z ∈ t1}.

o Left append: t := a.t1, onde a.t1 = {a.z | z ∈ t1}.

• Alguns testes condicionais também foram propostos:

o Subset test: t1 ⊆ t2.

o Detect test: t = 0.

o Membership test: x ∈ t.

4. Um Breve Resumo dos Modelos Formais

• Virtualmente cada pesquisador em computação de DNA possui sua própria forma

de utilizar DNA para computar.

• Isso indica que esta linha de pesquisa ainda está explorando as diversas

possibilidades de implementar um computador de DNA.

Page 412: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 412

• Entretanto, diversos modelos formais, alguns introduzidos antes do experimento de

Adleman, têm sido propostos com o objetivo de fornecer um estudo teórico sobre a

computação de DNA. Dentre eles é possível citar os:

o sticker systems: Roweis et al. (1996) introduziram um modelo de computação de

DNA chamado de sticker model. Assim como os modelos de filtragem, este

modelo emprega cadeias de DNA como o substrato físico para armazenar e

processar informação. O modelo de stickers possui uma memória de acesso

aleatório que não requer a extensão de cadeias de DNA, não utiliza enzimas, e

(em teoria) utiliza material reaproveitável.

o splicing systems ou sistemas H: De forma simples, cortar (splice) duas strings

corresponde a parti-las em pontos específicos e concatenar os fragmentos

obtidos de uma forma similar a feita com cromossomos durante um crossover.

Este modelo é baseado em linguagens formais e a operação de splicing.

Page 413: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 413

o insertion/deletion systems: As operações de inserção e deleção são fundamentais

em linguagens formais. Dado um par de palavras (x,y), denominado contexto,

um operador de inserção permite inserir uma palavra v entre x e y.

o modelo PAM (parallel associative memory model): Este modelo basicamente

descreve um operador de ligação paralela e associativa. Ele também utiliza

operadores comuns em computação de DNA como união, extração e deleção.

Page 414: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 414

5. Computadores Universais de DNA

• A verificação da capacidade de computação universal de um computador de DNA

tem sido feita de várias formas utilizando diferentes computadores universais,

como máquinas de Turing, autômatos celulares, circuitos Booleanos, e gramáticas

de Chomsky.

• Como uma máquina de Turing universal pode, em princípio, computar qualquer

função computável, projetar uma máquina de Turing universal utilizando DNA

constitui um passo importante na direção de provar a universalidade da

computação de DNA.

• Neste caso, é preciso especificar um computador molecular capaz de manter um

estado e uma memória, e capaz de executar uma quantidade indefinida de

transições de estados.

Page 415: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 415

• D. Beaver projetou uma máquina de Turing consistindo de uma única molécula de

DNA onde os mecanismos químicos para a transição de estados permitem uma

computação paralela, sincronizada e heterogênea.

• A cada passo do modelo proposto, uma molécula de DNA codifica uma

configuração da máquina de Turing: o conteúdo da fita, seu estado atual e a

posição do cabeçote.

• Cada transição de estado requer um esforço O(1) em termos de passos de

laboratório a serem executados.

• Como uma única cadeia de DNA é utilizada para codificar a configuração de uma

máquina de Turing, Beaver primeiramente mostrou como implementar uma

substituição dependente de contexto em uma molécula de DNA.

o Isso foi feito porque simular uma computação (passo) de uma MT

corresponde a substituir uma parte da configuração de uma MT.

Page 416: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 416

• A idéia é substituir a porção de DNA que irá sofrer a transição de estado. (ver

figura)

• Configuração: C = (x1…xk−1qxkxk+1…xm)

• Codificação: Ce = e(x1,1)…e(xk−1,k−1)e(q,k)e(xk,k)…e(xm,m), onde e(xk,k) indica

que o símbolo xk ∈ ∑ está na k-ésima posição da fita e e(q,k) indica o estado atual

da máquina.

• Note que neste esquema o conteúdo da máquina de Turing, juntamente com o

estado q atual da máquina são codificados um a um e concatenados para formar

uma cadeia de DNA que codifica a configuração da máquina.

• Para que ocorra uma transição, a molécula é isolada em um tubo de ensaio de

acordo com o estado q, posição do cabeçote k, símbolo xk sendo lido atualmente e

os símbolos xk−1 a esquerda e xk+1 a direita do cabeçote.

• Os valores de q e xk determinam a transição de estados a ser realizada:

o δ(q,xk) = (q′,xk′,L) movimento para a esquerda

Page 417: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 417

o δ(q,xk) = (q′,xk′,R) movimento para a direita

• Beaver (1995) também estendeu este método para simular máquinas de Turing

não-determinísticas.

C = (xk−1qxkxk+1); e(xk−1,k−1)e(q,k)e(xk,k)

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

. . . . . .

q

xk−2 xk−1 xk xk+1

q′

xk−2 xk−1 xk′ xk+1

. . . . . .

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

Page 418: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 418

Polymerase extension Ligation

L A U E R

Ā Ō Ē R Mix

Anneal

U L A E R

Ā Ē Ō

R

Ā Ē Ō

R

U L A E R

L Ā Ē

Ō R

U L A E R

L

L Denaturing

Mix with L Anneal

L A O E R

L Ā Ō Ē R

Polymerase extension Destruction of the original strand

Figura 46: Substituição molecular de uma sequência de DNA empregada como transição de estados de uma “máquina de Turing de DNA”. Exemplo: substituir U por O.

Page 419: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 419

6. Escopo da Computação de DNA

• A computação de DNA foi inicialmente proposta para resolver problemas e

demonstrou ser bem sucedida na solução de problemas NP-completos.

• Como qualquer instância de um problema NP-completo pode ser expressa em

termos de outro problema NP-completo, as soluções baseadas em computação de

DNA apresentadas fornecem implicitamente um poder computacional suficiente

para resolver qualquer problema na classe NP.

• Exemplos de outros problemas que podem ser resolvidos por DNA:

o Graph coloring

o Shortest common superstring

o Integer factorization

o Protein conformation

o Maximum clique

o Etc.

Page 420: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 420

• Também são encontrados trabalhos na literatura aplicando DNA para a geração de

memórias associativas, solução de problemas criptográficos, desenvolvimento de

algoritmos baseados em DNA para adição de números e multiplicação de matrizes,

máquinas paralelas, e implementação em computadores de DNA ou hibridização

de diversos paradigmas de computação natural.

• O paralelismo massivo e a miniaturização do DNA sugerem uma vasta gama de

problemas que são candidatos em potencial a serem resolvidos pela computação de

DNA.

• Além destas aplicações computacionais da computação de DNA, ela também pode

ser aplicada no domínio da biologia. Exemplos:

o Processamento de DNA: sequenciamento e fingerprinting

o Decodificação de material genético

o Criação e busca em bases de dados de DNA

o Detecção de mutações

Page 421: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 421

• Possíveis resultados desta pesquisa em problemas da biologia:

o Erradicação de doenças

o Identificação de criminosos, dentre outras

o Desenvolvimento de biochips implantáveis

7. Discussão

• O experimento de Adleman foi rapidamente seguido por uma grande quantidade de

generalizações e extensões para solução de outros problemas NP-completos.

• Entretanto, é interessante notar que boa parte dos autores não implementou a

computação de DNA em laboratório como feito por Adleman.

• Na verdade, boa parte das propostas de soluções baseadas em DNA é de cunho

teórico, uma atividade denominada de menmology (mental molecular biology) por

Rozenberg.

Page 422: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 422

• As questões em aberto sobre a computação de DNA não mais dizem respeito ao

seu poder de processamento.

o Ao invés disso, a principal questão que permanece é quanto ao projeto e

construção de um computador de DNA.

o Neste sentido são dois os problemas centrais: correção de erros e realização

e automação das técnicas de manipulação de DNA.

• Um dos grandes problemas da computação de DNA é que erros são muito comuns

em reações e processos biológicos. As operações de extração, annealing, merge e

muitas outras são imprecisas.

• Tem sido grande o esforço no sentido de aproveitar conceitos de matemática e

biologia molecular para projetar computadores de DNA.

• No estado atual, a computação molecular possui diversos desafios:

o O material utilizado (DNA, RNA ou proteínas) não é reutilizável

o Os componentes moleculares são especializados

Page 423: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 423

o Correção de erros

o Para que um computador de DNA seja eficiente, o algoritmo a ser utilizado

deve ser o mais paralelizável possível

o A interface de entrada/saída é um tanto complicada

o O tempo experimental ainda é grande, mas isso pode ser remediado com um

aprofundamento dos conhecimentos e tecnologias em biologia molecular e

engenharia genética

• Entretanto, algumas características da computação de DNA servem para

contrabalançar as dificuldades de projeto de um computador de DNA:

o Alta velocidade de processamento paralelo quando automatizado (permite o

uso da força bruta)

o É economicamente barato sob o ponto de vista de consumo de energia,

armazenagem e processamento de informação

Page 424: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 424

Tópico 10: Computação Quântica

1. Princípios de Mecânica Quântica

1.1. A Notação de Dirac

• Um vetor é representado por |x⟩, onde x é o rótulo do vetor.

• A notação |⋅⟩, conhecida como ket, indica que x é um vetor coluna. Cada ket possui

um bra ⟨x| dual, que corresponde ao conjugado transposto do ket |x⟩: ⟨x| = |x⟩†.

• O estado de um sistema quântico é descrito por um vetor de norma unitária em um

espaço de Hilbert, ou seja, um espaço vetorial complexo de dimensão n, Hn, que

corresponde ao espaço de estados do sistema.

• O espaço de estados de um sistema quântico, conhecido como espaço de estados

quântico, pode ser descrito em termos de vetores e matrizes ou usando uma

notação padrão denominada de notação bracket (bra-ket) ou notação de Dirac.

Page 425: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 425

• A terminologia bracket deve-se ao fato de que o produto interno de dois estados é

representado por um bracket: ⟨y||x⟩ = ⟨y|x⟩, cujo resultado é um número complexo.

• O produto externo de |x⟩ e ⟨y|, representado por |x⟩⟨y|, resulta numa matriz.

• Exemplo: Seja a base ortonormal do espaço formada pelos vetores |x⟩ e |y⟩,

{|0⟩,|1⟩}. Na notação usual da álgebra linear esta base poderia ser expressa por

{(1,0)T,(0,1)T} ou, alternativamente, {(0,1)T,(1,0)T}. No primeiro caso, o produto

interno ⟨0|1⟩ entre os vetores ⟨0| e |1⟩ é ⟨0|1⟩ = 0; e o produto interno entre os

vetores ⟨0| e |0⟩ é ⟨0|0⟩ = 1.

• O produto externo dos vetores |1⟩ e ⟨0| é:

A = |1⟩⟨0| =

01

00.

• Note que o resultado do produto externo é uma matriz A, ou seja, uma

transformação nos estados quânticos que irá ditar o que acontece com os vetores

base.

Page 426: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 426

o Por exemplo, o produto externo |1⟩⟨0| mapeia |0⟩ em |1⟩ e |1⟩ em (0,0)T.

1.2. Superposição Quântica

• Qualquer estado de um sistema quântico pode ser escrito como uma combinação

linear de um certo número de estados base ou vetores base:

c1|x1⟩ + c2|x2⟩ + … + cn|xn⟩,

onde ci, i = 1,…,n são números complexos, denominados de amplitudes, e

∑i |ci|2 = 1, ∀i.

• Note que xi, i = 1,…,n, correspondem a observáveis de um objeto físico.

o Por exemplo, x1 pode representar a velocidade de uma partícula e x2 pode

representar seu momento.

1.3. Produtos Tensores

• O produto tensor de |x⟩ e |y⟩, representado por |x⟩⊗|y⟩, também abreviado por

|x⟩|y⟩ ou |xy⟩, é uma forma de unir espaços vetoriais na construção de espaços

vetoriais maiores; ele permite combinar estados quânticos.

Page 427: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 427

• Portanto, o espaço de estados de um sistema composto é o produto tensor dos

espaços de estado dos sistemas físicos componentes.

• Exemplo: Dados os estados base {|0⟩,|1⟩} = {(1,0)T,(0,1)T}, temos os seguintes

produtos tensores:

|0⟩⊗|0⟩ = |00⟩ = (1 0 0 0)T. |0⟩⊗|1⟩ = |01⟩ = (0 1 0 0)T

.

|1⟩⊗|0⟩ = |10⟩ = (0 0 1 0)T. |1⟩⊗|1⟩ = |11⟩ = (0 0 0 1)T

.

• Para um escalar arbitrário c pertencente ao campo e alguns vetores x, x1, x2, y, y1,

e y2, pertencentes aos espaços apropriados, o produto tensor satisfaz as seguintes

propriedades básicas:

c(|x⟩⊗|y⟩) = (c|x⟩)⊗|y⟩ = |x⟩⊗(c|y⟩); (|x1⟩+|x2⟩)⊗|y⟩ = |x1⟩⊗|y⟩ + |x2⟩⊗|y⟩; |x⟩⊗(|y1⟩+|y2⟩) = |x⟩⊗|y1⟩ + |x⟩⊗|y2⟩.

Page 428: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 428

1.4. Emaranhamento (Entanglement)

• Dois bits clássicos podem ser unidos (combinados) em um sistema composto da

forma 00, 01, 10, 11. O valor de qualquer combinação pode ser escrito como o

produto dos bits individuais.

• Há alguns sistemas quânticos compostos que não podem ser escritos como o

produto tensor dos estados de seus sistemas componentes, uma propriedade

chamada de emaranhamento.

• O espaço de Hilbert de um sistema composto por dois sistemas A e B é HA⊗HB; ou

seja, é o produto tensor dos respectivos espaços.

• Assumindo que o primeiro sistema está em um estado arbitrário |x⟩A e o segundo

em um estado arbitrário |y⟩B, se o estado do sistema composto não puder ser

escrito como o produto tensor |x⟩A⊗|y⟩B, então os estados são ditos emaranhados;

caso contrário, eles são ditos separáveis, decomponíveis, ou estados produto.

• A forma geral do estado de um sistema composto HA⊗HB é:

Page 429: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 429

∑ ⟩⟩yx xy yxc

,|| BA .

• Exemplos de estados emaranhados com dois qubits são os estados de Bell:

( )ABAB ⟩+⟩=⟩ 11|00|2

1| 0x ; ( )ABAB ⟩+⟩=⟩ 10|01|

2

1| 1x ;

( )ABAB ⟩−⟩=⟩ 11|00|2

1| 2x ; ( )ABAB ⟩−⟩=⟩ 10|01|

2

1| 3x .

• Um exemplo de um estado decomponível é aquele formado pela combinação

linear de todos os estados base em H4: ½(|00⟩+|01⟩+|10⟩+|11⟩).

o Isso pode ser verificado encontrando-se os coeficientes a1, a2, b1, b2, tal que:

½(|00⟩+|01⟩+|10⟩+|11⟩) = (a1|0⟩+a2|1⟩)(b1|0⟩+b2|1⟩) =

= a1b1|00⟩ + a1b2|01⟩ + a2b1|10⟩ + a2b2|11⟩.

o Neste caso a1b1 = a1b2 = a2b1 = a2b2 = ½, ou seja, a1 = a2 = b1 = b2 = 2/1 .

Page 430: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 430

1.5. Evolução (Dinâmica)

• A evolução de um sistema quântico corresponde a sua dinâmica, ou seja, como ele

varia ao longo do tempo. Se um sistema quântico não está interagindo com outro

sistema (é fechado), sua evolução pode ser descrita por uma transformação

unitária representada por uma matriz.

• Em outras palavras, o estado |x1⟩ de um sistema no instante de tempo t1 está

relacionado ao estado |x2⟩ no instante de tempo t2 por uma transformação unitária

A que é função de t1 e t2:

|x2⟩ = A|x1⟩.

• A ação da transformação unitária A sobre o estado x é descrita pela

correspondente rotação do vetor |x⟩ no espaço de Hilbert apropriado. Portanto, a

transformação unitária corresponde a operação da mecânica quântica e também a

uma rotação unitária.

Page 431: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 431

• Note que a ordem de aplicação de uma transformação influencia o resultado final:

A.B ≠ B.A, onde A e B são transformações unitárias. Além disso, uma

transformação unitária significa que a evolução no tempo de um sistema quântico

é inversível (reversível), ou seja, |x1⟩ pode ser perfeitamente recuperado a partir de

|x2⟩.

• Exemplos de transformações unitárias são as matrizes de Pauli:

σ0 = I =

10

01 σ1 = X =

01

10

σ2 = Y =

− 0

0

i

i σ3 = Z =

−10

01

• A aplicação do operador X aos vetores base {|0⟩,|1⟩} mapeia |0⟩ em |1⟩ e |1⟩ em

|0⟩, respectivamente; agindo, portanto, como uma espécie de porta NOT.

• Portanto, é possível concluir que um operador unitário pode ser visto como uma

espécie de porta quântica (quantum gate).

Page 432: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 432

1.6. Medição

• Em várias ocasiões é necessário medir ou observar o comportamento do sistema.

Uma medição quântica é descrita por um conjunto de operadores que atuam sobre

o espaço de estados do sistema sendo observado.

• Qualquer dispositivo de medição de um sistema quântico possui uma base

ortonormal associada em relação a qual a medição será feita. O resultado será a

projeção do estado do sistema antes da medição no subespaço do espaço de

estados compatível com os valores medidos; ou seja, a medição projeta (promove

o colapso) o estado quântico em um dos estados base associados ao dispositivo de

medição.

• Exemplo: Seja um estado arbitrário |x⟩ representado pela combinação linear dos

estados base |0⟩ e |1⟩: |x⟩ = c1|0⟩ + c2|1⟩, onde c1 e c2 são números complexos.

• A medição do estado |x⟩ = c1|0⟩ + c2|1⟩ resulta em |0⟩ com probabilidade |c1|2 e em

|1⟩ com probabilidade |c2|2. Observar |x⟩ implica em interagir com |x⟩, o que possui

Page 433: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 433

o efeito de promover um colapso do estado do sistema em um dos estados base.

Portanto, de acordo com o princípio da incerteza de Heisenberg, observar um

estado quântico causa uma perturbação no mesmo.

1.7. Teorema ‘No-Cloning’

• O teorema chamado de no-cloning afirma que não é possível criar cópias idênticas

de um estado quântico arbitrário desconhecido, ou seja, não há uma máquina para

se copiar estados quânticos.

• Para provar o teorema, assuma um sistema quântico A ∈ H2 com estados base |0⟩A

e |1⟩A. Um estado arbitrário |x⟩A deste sistema quântico pode ser escrito como uma

combinação linear dos estados base: |x⟩A = c1|0⟩A + c2|1⟩A.

• Suponhamos que o objetivo seja copiar o estado |x⟩A. A máquina para copiar

estados quânticos deverá receber como entrada |x⟩A e apresentar como saída |x⟩A

duas vezes. Para fazer a cópia, um sistema B com um espaço de Hilbert idêntico e

Page 434: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 434

um estado inicial arbitrário |s⟩B é tomado. O estado inicial |s⟩B do sistema B será

transformado no estado a ser copiado.

• O seguinte estado inicial resulta da máquina de copiar estados:

|x⟩A|s⟩B.

• O sistema composto pode ser observado, o que promoveria um colapso para um

dos estados base do medidor, ou ser submetido a uma transformação unitária

arbitrária A que seria responsável por copiar o estado |x⟩A:

A(|x⟩A|s⟩B) = |x⟩A|x⟩B = (c1|0⟩A + c2|1⟩A) (c1|0⟩B + c2|1⟩B) =

= (c12|0⟩A|0⟩B + c1c2|0⟩A|1⟩B + c2c1|1⟩A|0⟩B + c2

2|1⟩A|1⟩B).

• No caso particular em que queremos copiar os estados-base de um sistema

quântico bidimensional:

A(|0⟩A|s⟩B) = |0⟩A|0⟩B. A(|1⟩A|s⟩B) = |1⟩A|1⟩B.

Page 435: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 435

• Aplicando a copiadora ao estado genérico |x⟩, assumindo a linearidade da

transformação A, e considerando a Equação (10), tem-se:

A(|x⟩A|s⟩B) = A(c1|0⟩A + c2|1⟩A)|s⟩B = A(c1|0⟩A|s⟩B + c2|1⟩A|s⟩B) =

= A(c1|0⟩A|s⟩B) + A(c2|1⟩A|s⟩B) = c1|0⟩A|0⟩B + c2|1⟩A|1⟩B.

• Que é diferente da Eq. (9). Portanto, genericamente A(|x⟩A|s⟩B) ≠ |x⟩A|x⟩B.

2. Informação Quântica

2.1. Bits e Bits Quânticos

• Em computação e teoria da informação, a unidade mais básica de informação é o

dígito binário ou bit, que corresponde a uma entidade abstrata que pode assumir

um dos valores lógicos ‘0’ ou ‘1’.

• A informação é fisicamente armazenada como bits nos computadores clássicos e

os dispositivos que implementam os bits podem ser uma combinação de

transistores ou outros elementos de circuitos integrados com uma distribuição de

Page 436: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 436

carga que determina o estado do bit. Os bits podem ser organizados em strings de

comprimento n, permitindo a representação de uma quantidade maior de

informação e as cadeias binárias podem ser manipuladas para realizar

computação, por exemplo, implementar algoritmos. É possível acessar certo

endereço de memória de um computador clássico e observar (ler) seu conteúdo.

• Quando a informação é armazenada em escala atômica, os efeitos quânticos

aparecem e o resultado é um cenário completamente diferente. Neste caso, um bit

quântico, ou qubit, pode assumir ambos os valores ‘0’ e ‘1’ simultaneamente.

• Os qubits são objetos matemáticos (entidades abstratas) com propriedades

específicas e correspondem as unidades mais básicas de informação em

computação quântica. Eles são representados por um sistema quântico ideal de

dois estados, como fótons polarizados, elétrons, átomos, íons ou spins nucleares.

A informação quântica é descrita por um estado em um sistema quântico com dois

estados básicos nomeados, por convenção, |0⟩ e |1⟩.

Page 437: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 437

• Estes estados particularmente formam uma base ortonormal de um espaço vetorial

complexo bi-dimensional (um espaço de Hilbert H2) e, portanto, são conhecidos

como estados computacionais base (computational basis states).

• Sendo assim, é possível fazer combinações lineares dos estados base,

denominadas superposição, que correspondem a um estado de um qubit puro:

|x⟩ = c1|0⟩ + c2|1⟩,

onde c1 e c2 são números complexos.

• Na prática, a superposição de estados quânticos significa que uma quantidade

infinita de informação pode, potencialmente, ser codificada em um único qubit.

Basta definir apropriadamente os coeficientes c1 e c2.

2.2. Múltiplos Bits e Qubits

• Na computação clássica, N bits podem ser usados para representar 2N estados

distintos.

Page 438: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 438

• Um sistema quântico com N qubits possui N estados computacionais base,

denotados por:

∑=

⟩=⟩1...11

000

||...x

x xcy ,

onde cx são números complexos tais que ∑x |cx|2 = 1.

• Portanto, N qubits podem representar qualquer vetor complexo unitário em um

espaço de Hilbert de dimensão 2N, possuindo uma dimensão para cada estado

clássico.

o Ou seja, qualquer vetor neste espaço de dimensão 2N pode ser representado por

uma combinação linear dos estados base.

o Isso corresponde a um crescimento exponencial do número de possíveis estados

de um sistema quântico em comparação aos sistemas clássicos.

o Um sistema ordenado de N qubits é conhecido como um registrador quântico.

Page 439: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 439

• Os estados quânticos são combinados através de produtos tensores, responsáveis

pelo crescimento exponencial do número de estados possíveis.

• Exemplo:

• Considere o espaço de estados de um sistema quântico com dois qubits, cada qual

com uma base computacional clássica {|0⟩,|1⟩}.

• A base do espaço de estados resultante é {|0⟩⊗|0⟩, |0⟩⊗|1⟩, |1⟩⊗|0⟩, |1⟩⊗|1⟩},

também representada por {|00⟩, |01⟩, |10⟩, |11⟩}.

• Assumindo a base padrão da álgebra linear em H2, a base em H4 torna-se:

=⟩

0

0

0

1

00|,

=⟩

0

0

1

0

01|,

=⟩

0

1

0

0

10|,

=⟩

1

0

0

0

11|.

Page 440: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 440

2.3. Portas Lógicas e Portas Quânticas

• As operações elementares para manipular bits em computadores clássicos são

chamadas de funções ou operações lógicas. Uma porta lógica é um dispositivo

eletrônico usado para realizar uma função lógica simples e para construir sistemas

lógicos maiores. As operações realizadas pelas portas lógicas clássicas geralmente

são não-inversíveis.

• Exemplo:

AND NOT

OR NAND

XOR NOR

a

b

a

b

a

b

a

a

b

a

b

Page 441: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 441

a b a AND b a b a OR b a b a XOR b

0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 1 1 1 0 0 1 0 1 1 0 1 1 1 1 1 1 1 1 1 0

a NOT a a b a NAND b a b a NOR b

0 1 0 0 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 1 0 0 1 1 0 1 1 0

Figura 47: Portas lógicas dos computadores clássicos e suas respectivas tabelas-verdade.

• As portas quânticas constituem as unidades básicas dos algoritmos quânticos e,

portanto, dos computadores quânticos.

• O exemplo mais simples de uma porta quântica que atua em um único qubit é a

porta NOT quântica, que faz o seguinte mapeamento: |0⟩ → |1⟩ e |1⟩ → |0⟩:

Page 442: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 442

NOT |0⟩ = X|0⟩ = =

=

1

0

0

1

01

10|1⟩,

NOT |1⟩ = X|1⟩ = =

=

0

1

1

0

01

10|0⟩.

• Esta operação (NOT) é representada pela matriz X.

• Qualquer transformação matricial unitária pode ser usada como uma porta

quântica e, portanto, as portas quânticas são reversíveis (inversíveis).

• A necessidade da unitariedade da transformação vem do fato de que dado um

estado quântico arbitrário |y′′′′⟩ = c1′′′′|0⟩ + c2′′′′|1⟩ obtido a partir de |y⟩ = c1|0⟩ + c2|1⟩,

os coeficientes |c1′′′′|2 + |c2′′′′|

2 = 1.

• As matrizes de Pauli estudadas na revisão matemática correspondem a portas

quânticas conhecidas.

σ0 = I =

10

01 σ1 = X =

01

10 σ2 = Y =

− 0

0

i

i σ3 = Z =

−10

01

Page 443: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 443

• I: porta identidade; X: porta NOT e Z: porta mudança de fase.

• Outras portas quânticas:

Raiz quadrada do NOT:

NOT |0⟩ = ½(1+i)|0⟩ + ½(1−i)|1⟩,

NOT |1⟩ = ½(1−i)|0⟩ + ½(1+i)|1⟩,

+−

−+=

ii

ii

11

11

2

1NOT ,

NOT . NOT = NOT.

Porta de Hadamard:

H =

−11

11

2

1.

Obs.: quando aplicada a N bits individualmente, a porta de Hadamard gera uma

superposição de todos os 2N possíveis estados:

Page 444: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 444

H|0⟩ = )1|0(|2

1

1

1

2

1

0

1

11

11

2

1⟩⟩+=

=

− ,

H|1⟩ = )1|0(|2

1

1

1

2

1

1

0

11

11

2

1⟩⟩−=

−=

− .

NOT controlado:

CNOT =

0100

1000

0010

0001

.

Dado um estado de entrada |x1x2⟩, x1, x2 ∈ {0,1}, a saída produzida pela porta

CNOT é |x1x3⟩, x3 = x1 ⊕ x2, onde ⊕ é a adição módulo 2 (operação XOR).

CNOT |00⟩ = |00⟩ CNOT |01⟩ = |01⟩

CNOT |10⟩ = |11⟩ CNOT |11⟩ = |10⟩

Page 445: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 445

Uma propriedade importante da parta CNOT é que ela pode ser usada para criar

emaranhamento. Exemplo:

CNOT 2

1(|00⟩ + |10⟩) = 2

1(|00⟩ + |11⟩).

Porta de Toffoli ou controlled-controlled-NOT:

CCNOT |000⟩ = |000⟩ CCNOT |001⟩ = |001⟩ CCNOT |010⟩ = |010⟩ CCNOT |011⟩ = |011⟩ CCNOT |100⟩ = |100⟩ CCNOT |101⟩ = |101⟩ CCNOT |110⟩ = |111⟩ CCNOT |111⟩ = |110⟩

=

01000000

10000000

00100000

00010000

00001000

00000100

00000010

00000001

CCNOT

Page 446: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 446

2.4. Circuitos Quânticos

• Circuitos quânticos correspondem a descrições gráficas de uma ou mais

transformações quânticas.

• Exemplo:

|x⟩ |x⟩

|y⟩ |x⊕y⟩

Figura 48: Circuito quântico para a porta CNOT.

• É possível combinar a porta CNOT de várias maneiras.

• Exemplo:

⊕ ⊕

|x⟩ |x⟩ |(x⊕y)⊕x⟩ = |y⟩ |y⟩

|y⟩ |x⊕y⟩ |x⊕y⟩ |y⊕(x⊕y)⟩ = |x⟩ ⊕

• O que o circuito acima faz?

Page 447: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 447

• Outras representações para circuitos quânticos específicos:

H S T

Figura 49: Circuitos quânticos para as portas de Hadamard, mudança de fase e Toffoli.

• Os estados Bell, também denominados de pares EPR, podem ser gerados por uma

combinação de uma porta Hadamard aplicada ao primeiro qubit seguido de uma

porta controlled-NOT:

H x y

|βxy⟩

Figura 50: Circuito quântico para gerar os estados Bell (pares EPR).

Page 448: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 448

Estado inicial H(primeiro qubit, x) CNOT(primeiro qubit, x)

|00⟩ ( ) ⟩⟩⟩+ 0|1|0|21 ( )⟩⟩+ 11|00|21

|01⟩ ( ) ⟩⟩⟩+ 1|0|1|21 ( )⟩⟩+ 01|10|21

|10⟩ ( ) ⟩⟩⟩− 0|1|0|21 ( )⟩⟩− 11|00|21

|11⟩ ( ) ⟩⟩⟩− 1|1|0|21 ( )⟩⟩− 10|01|21

3. Exemplos de Aplicação

• A Codificação Densa (dense coding) e o Teletransporte (teleportation) servem

para ilustrar o uso de portas quânticas simples.

• Ambos os exemplos assumem o mesmo cenário inicial:

o Alice e Bob nunca se comunicaram e querem fazê-lo.

o Para isso eles usam um aparato que gera pares emaranhados de qubits (estados

Bell) como, por exemplo,

Page 449: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 449

( )⟩⟩+=⟩ 11|00|2

1| 0x .

o Um qubit é enviado a Alice e outro a Bob. Alice só pode aplicar transformações

em seu respectivo qubit e Bob em seu, até que uma partícula seja transmitida.

3.1. Codificação Densa

• A codificação densa corresponde ao método pelo qual Alice pode comunicar dois

bits clássicos enviando apenas um qubit a Bob.

• Dois qubits estão envolvidos, mas Alice enxerga apenas um deles.

• Alice recebe dois bits clássicos e codifica os números 0, 1, 2 e 3.

• Estes números corresponderão a uma das quatro transformações unitárias

{I,X,Y,Z}, e atuarão no primeiro bit do par emaranhado da Alice x0.

I =

10

01 X =

01

10 Y =

− 01

10 Z =

−10

01

Page 450: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 450

Valor codificado Estado inicial Transformação Novo estado

0

|x0⟩ = ( )⟩⟩+ 11|00|2

1

(I ⊗ I) |x0⟩ ( )⟩⟩+ 11|00|21

1 (X ⊗ I) |x0⟩ ( )⟩⟩+ 01|10|21

2 (Y ⊗ I) |x0⟩ ( )⟩⟩+− 01|10|21

3 (Z ⊗ I) |x0⟩ ( )⟩⟩− 11|00|21

• Em seguida Bob aplica uma porta CNOT nos pares emaranhados resultantes,

obtendo um conjunto de pares decomponíveis.

• Desta forma, Bob pode medir o segundo qubit sem perturbar o estado quântico.

• Aplicando uma porta Hadamard no primeiro qubit resultante da aplicação do

CNOT torna-se possível identificar os bits enviados.

Page 451: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 451

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

|x0⟩ = ( )⟩⟩+ 11|00|21 ( ) ( ) ⟩⟩⟩+=⟩⟩+ 0|1|0|2110|00|21 |0⟩

|x1⟩ = ( )⟩⟩+ 01|10|21 ( ) ( ) ⟩⟩⟩+=⟩⟩+ 1|0|1|2101|11|21 |0⟩

|x2⟩ = ( )⟩⟩+− 01|10|21 ( ) ( ) ⟩⟩⟩+−=⟩⟩+− 1|0|1|2101|11|21 |1⟩

|x3⟩ = ( )⟩⟩− 11|00|21 ( ) ( ) ⟩⟩⟩−=⟩⟩− 0|1|0|2110|00|21 |1⟩

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

x

y

|β00⟩

H

H Meas

Meas

T x

y

Figura 51: Circuito quântico para realizar a codificação densa.

Page 452: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 452

3.2. Teletransporte Quântico

• Assuma que Alice quer comunicar um qubit desconhecido |x⟩ a Bob.

o Devido ao teorema no-cloning, estados quânticos não podem ser copiados e

enviados sem serem destruídos.

o Além disso, se |x⟩ é desconhecido, qualquer tentativa de medi-lo irá destruí-lo.

o Portanto, a única forma de transmitir |x⟩ a Bob parece ser enviando um bit

clássico.

• O teletransporte quântico constitui uma forma de realizar esta tarefa.

o Ele corresponde ao processo pelo qual Alice comunica um único qubit

desconhecido |x⟩ a Bob enviando apenas informação clássica.

• Assuma que Alice e Bob possuem, cada um, um qubit de um par EPR, e que Alice

controla o primeiro qubit do par EPR e Bob o segundo.

Page 453: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 453

• Alice interage o qubit a ser transmitido |x⟩ com sua metade do par EPR e depois

mede os dois qubits que ela possui, obtendo um de quatro possíveis resultados

{00,01,10,11}.

o Esta informação é posteriormente enviada a Bob através de um canal clássico,

que executa uma das quatro operações {I,X,Y,Z} na sua metade do par EPR, o

que o permite recuperar a informação enviada |x⟩.

• Seja |x⟩ = c1|0⟩ + c2|1⟩, |c1|2 + |c2|

2 = 1, o estado quântico desconhecido a ser

enviado e |x0⟩ = ( )⟩⟩+ 11|00|21 o par EPR que eles possuem.

• O estado de entrada do sistema é o produto tensor entre |x⟩ e |x0⟩:

|x0⟩|x⟩ = (c1|0⟩ + c2|1⟩) ( )⟩⟩+ 11|00|21 =

( ))11|00(|1|)11|00(|0|21 21 ⟩⟩+⟩+⟩⟩+⟩ cc =

( )⟩+⟩+⟩+⟩ 111|100|011|000|21 2211 cccc .

Page 454: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 454

• Alice aplica agora o passo de decodificação da codificação densa – uma porta

CNOT seguida de uma porta Hadamard – ao qubit desconhecido e a seu membro

do par emaranhado, o que corresponde a transformação (H⊗I⊗I)⋅(CNOT⊗I):

(H⊗I⊗I)(CNOT⊗I)(|x0⟩|x⟩) =

( )[ ]⟩+⟩+⟩+⟩⊗⊗ 101|110|011|000|21)( 2211 ccccIIH =

( )[ ])01|10(|1|)11|00(|0|21)( 21 ⟩⟩+⟩+⟩⟩+⟩⊗⊗ ccIIH =

[ ])01|10)(|1|0(|)11|00)(|1|0(|21 21 ⟩⟩+⟩⟩−+⟩⟩+⟩⟩+ cc =

(23)

[])0|1|(11|)1|0|(10|

)0|1|(01|)1|0|(00|21

2121

2121

⟩−⟩⟩+⟩−⟩⟩+

+⟩+⟩⟩+⟩+⟩⟩

cccc

cccc.

• Em seguida Alice mede seus dois qubits, promovendo um colapso do estado em

uma das quatro possibilidades {00,01,10,11}.

Page 455: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 455

• Este resultado é enviado a Bob, que o usa para descobrir qual das quatro

operações {I,X,Y,Z} ele deve aplicar a seu qubit para colocá-lo no estado

superposto |x⟩ = c1|0⟩ + c2|1⟩:

Bits recebidos Estado Transformação

00 c1|0⟩ + c2|1⟩ I

01 c1|1⟩ + c2|0⟩ X

10 c1|0⟩ − c2|1⟩ Z

11 c1|1⟩ − c2|0⟩ Y

|β00⟩

H ⊕

H Meas

Meas

|x⟩ T

|x⟩

Figura 52: Circuito quântico para realizar teletransporte.

Page 456: 2012: Computação Natural - Slides do Curso

Fundamentos de Computação Natural

Copyright© Leandro Nunes de Castro 456

• Nota: a palavra teletransporte ou teleporte é usada em ficção científica para

descrever o processo de mover objetos de um ambiente a outro codificando

informação sobre os objetos, transmitindo esta informação a outro local e depois

criando uma cópia dos objetos originais no novo local. O teletransporte quântico

possui este nome porque ele possui estas características em comum com a noção

fictícia de teletransporte: a) bits quânticos são codificados como bits clássicos; b)

a informação a ser transmitida é destruída durante o processo (devido a

observação); e c) o qubit transmitido é reconstruído a partir dos bits clássicos e do

par EPR.