[Perca a timidez e mande também seu post para o RNAm. Mande email pela página de contato]
– Post escrito por Daniel Ferrari
Olá para todos, eu me chamo Daniel, sou formado em ciência da computação, fiz meu mestrado em sistemas inteligentes, e atualmente estou tentado fazer doutorado. Fui convidado pelo Rafael para escrever um pouco sobre a área na qual realizo minhas pesquisas: a computação natural; mas primeiro vamos falar rapidamente sobre ciência da computação.
A ciência da computação é responsável por estudar algoritmos para resolução de problemas, utilizando o computador como ferramenta no processo. Mas, o que é um algoritmo? O algoritmo é um procedimento detalhado que diz ao computador o que fazer para resolver um problema. Por exemplo, como fazemos para somar os números de 1 a 10? Uma pessoa pode fazer de cabeça ou usar uma calculadora, mas o computador precisa de um procedimento para resolver este problema. Este é um caso simples, mas imaginem a sofisticação do algoritmo do Google para realizar pesquisas tão rápidas e precisas na imensidão e confusão da internet. Este algoritmo é um segredo bem guardado.
Bom, voltando ao nosso assunto, a computação natural é uma linha de pesquisa da ciência da computação fortemente ligada à natureza, utilizando-se de fenômenos naturais como inspiração para desenvolvimento de algoritmos, ou criando algoritmos para simulação destes fenômenos, ou até mesmo usando materiais naturais para realizar computação.
A área que tenho mais contato é a pesquisa e desenvolvimento de algoritmos inspirados na natureza ou bio-inspirados. Aqui, os pesquisadores observam o comportamento dos fenômenos naturais e se utilizam desta observação como inspiração para novas formas de abordagem aos problemas. Como o próprio termo sugere a inspiração não quer dizer que o fenômeno é reproduzido, mas serve como base para novas ideias e pode fornecer diferentes visões de um problema.
Para dar um exemplo de como a observação inspira um algoritmo vou falar das formigas. Todos as conhecem, sabem do que são capazes na sua cozinha e como são persistentes, e também podemos ver que são indivíduos simples que executam tarefas complexas. As formigas são capazes, dentre muitas outras coisas, de encontrar o melhor caminho entre uma fonte de alimento e o ninho. Elas realizam esta tarefa através de uma varredura do ambiente que é direcionada pela da comunicação entre as formigas.
Este comportamento, em particular, inspirou pesquisadores a desenvolver o algoritmo ACO (Ant Colony Optimization) que pode ser aplicado em problemas de roteamento de veículos. Para eu e você é como encontrar o caminho de casa até o trabalho, para uma empresa é qual é a melhor rota para entregar seus produtos. Pelo dinamismo inerente ao comportamento das formigas, o algoritmo é capaz de se ajustar a obstáculos durante o trajeto, como vias interditadas ou até mesmo tráfego intenso, basta fornecer as informações necessárias.
Existem muitos, mas muitos, algoritmos bio-inspirados alguns famosos e outros nem tanto. Redes neurais artificiais, algoritmos genéticos, sistemas imunológicos artificiais, algoritmos de enxames (abelhas, formigas, morcegos, baratas, etc.), inteligência coletiva, sistemas nebulosos (fuzzy systems), química artificial; estes são alguns exemplos de áreas de pesquisa de algoritmos bio-inspirados.
Utilizar o computador para simular a natureza, podemos dizer que é algo que já estamos mais habituados a ouvir. Os computadores ajudam pesquisadores desta área a compreenderem melhor a natureza, seus fenômenos, suas particularidades e seus perigos. Podemos ver isso em ação no jornal diário com a previsão do tempo, em simulações de furacões, e outras tentativas de se prever o comportamento da natureza. Mas o que mais pode ser simulado e para quê?
A computação gráfica se utiliza de algoritmos para simulação de movimento de animais e desenho de formas. Um dos algoritmos que acho mais interessantes é responsável por simular a movimentação em enxame ou bando (insetos, pássaros, peixes, espermatozoides, etc.) e é conhecido como algoritmo de boids. Este algoritmo possui regras básicas que atuam em cada um dos indivíduos, que na coletividade se comportam com uma massa coesa em continua movimentação. Outra área muito interessante de simulação são os fractais utilizados para desenhar formas naturais como plantas, linhas costeiras, nuvens, montanhas; vejam este vídeo bem interessante sobre o assunto.
Já, a computação com materiais naturais é relativamente nova e tenta “contornar” a Lei de Moore, que já foi comentada aqui anteriormente. Os processadores são feitos baseados em silício e este material tem um limite físico de miniaturização, então os cientistas começaram a pensar em outros materiais e formas para realizar computação. Duas linhas são fortes nesta área: computação molecular e a computação quântica. O conhecimento molecular e quântico não me é tão familiar assim, mas vou tentar passar uma ideia.
A computação molecular utiliza técnicas desenvolvidas na biologia molecular para resolver problemas, ou seja, as moléculas são a memória e o processador de um computador. Acredito que a área mais forte nesta linha é a computação com DNA, mas já vou deixar claro aqui que não é, necessariamente, utilizando o DNA. A ideia é usar a base quaternária (A, C, T, G) ao invés da base binária dos computadores, para desenvolver algoritmos, onde as operações são procedimentos de laboratório biol
ógico (PCR, sequenciamento, etc.) e tudo ocorrendo dentro de um tubo de ensaio.
É óbvio dizer que a computação molecular tem muitos desafios a serem superados, como a reutilização das moléculas e até mesmo custo destes procedimentos, mas eu acho que esta área pode ajudar no desenvolvimento de tratamentos mais eficientes, remédios mais eficazes, e até mesmo cooperar na compreensão da interação das moléculas nos organismos. Outro trunfo desta área está no imenso paralelismo das reações moleculares que reduz o tempo de resposta aos problemas que são extremamente complexos.
O computador quântico baseia-se na mecânica quântica, devo confessar que é algo tirado de um filme de ficção, já tive algumas aulas sobre o assunto que sempre me deixam um pouco confuso. A ideia é usar átomos (elétrons, fótons, nêutrons, entre outros) para computar, ou seja, ao invés de usarmos os bits tradicionais passaremos a usar os bits quânticos (qubits). O bit sempre é “0” ou “1”, já o qubit pode ser “0” ou “1” ou uma sobreposição. Para tentarmos entender melhor esta dualidade temos o paradoxo do gato de Schrödinger, que diz que um gato em uma caixa com veneno é dado como vivo e morto ao mesmo tempo até que ele seja observado e seu estado definido como vivo ou morto.
A dificuldade de trabalhar em escala atômica é controlar e observar estes átomos, o LHC (Large Hadron Collider) já mostra o grande desafio que é trabalhar em escalas tão pequenas, muitos menores que uma célula. Mas mesmo assim, a computação quântica tem atraído muitos pesquisadores através de simulações quânticas nos computadores atuais. Isto é, os algoritmos quânticos estão sendo simulados em computadores de silício permitindo que pesquisadores estudem o software antes do hardware existir. As simulações também ajudam os pesquisadores a pensar como será um computador quântico, sua viabilidade, seu funcionamento, e tudo mais que envolve o desenvolvimento de uma nova tecnologia.
Bom pessoal, isto é a computação natural, uma linha de pesquisa interdisciplinar que buscas novas formas de resolver antigos e novos problemas. Se algum dia você encontrar uma criança observando as formigas ou uma revoada de pássaros, lembre-se de que você pode estimulá-lo a se tornar um pesquisador. Espero ter colocado uma pulga atrás da orelha de alguns, caso queriam saber mais fica a dica de dois livros para iniciação na área: Computação Natural – Uma Jornada Ilustrada e Biologia Digital.
Até a próxima.