Há séculos o homem vem observando o mundo natural e propondo ideias de como a natureza funciona. Sistemas de sonares, sistemas de imageamento infravermelho, a evolução biológica, velcros, o eletromagnetismo e a termodinâmica são exemplos de conhecimentos extraídos a partir do estudo e da observação da natureza. A computação natural é isso: a natureza sendo utilizada como fonte de inspiração para o desenvolvimento de novas técnicas computacionais que são utilizadas para resolver problemas complexos. Dentro da computação natural, existem três subáreas: Simulação e Emulação da Natureza, Computação com Materiais Naturais e a Computação Inspirada pela Natureza ou Bio-inspirada. Neste texto, abordaremos a Computação Inspirada pela Natureza. Quais tipo de problemas podemos resolver com esse tipo de computação? Quais são suas as aplicações no mundo real?

Os objetivos e a simplificação dos modelos

A computação inspirada pela natureza possui dois objetivos bem definidos. O primeiro deles é criar modelos de fenômenos naturais e simulá-los no computador. Com isso, pretende-se derivar modelos teóricos fiéis o suficiente a um processo natural para reproduzir de forma qualitativa e quantitativa algumas funções. Esses modelos são utilizados na biologia, ecologia, farmacologia, nutrição, etc. O segundo objetivo da computação inspirada pela natureza é o estudo de processos naturais para o desenvolvimento de sistemas computacionais e algoritmos para resolver problemas complexos e que não podem ser resolvidos por técnicas tradicionais.

Quando falamos sobre resolver problemas, não precisamos nos preocupar com a fidelidade ao fenômeno modelado. Aviões voam, mas não batendo asas como os pássaros. Submarinos nadam, mas não com nadadeiras como os peixes. Da mesma forma, podemos observar os processos naturais e reproduzi-los sem precisar imita-los exatamente. Geralmente, os modelos finais tem pouca semelhança com o processo natural que o motivou. A forma com que as formigas buscam seu alimento resultou em algoritmos para resolução de problemas de roteamento em redes de comunicação. Nesse caso, seria totalmente inviável modelar todo o funcionamento de um formigueiro (extremamente complexo) sendo que somente a forma de buscar alimentos das formigas foi o suficiente para resolver o problema. As abstrações e simplificações são necessárias. Como diz o matemático Ian Stewart em seu livro ‘Does God Play Dice?’:

“A ciência frequentemente tem feito progresso ao estudar abstrações simples quando modelos mais realistas são muito complicados e confusos.”

E quando é que eu utilizo as abordagens desse tipo de computação?

A computação inspirada pela natureza é, na sua grande maioria, composta por métodos probabilísticos e estocásticos. Portanto, os problemas que podem ser resolvidos com esse tipo de computação geralmente precisam de um grande número de variáveis, muitas potenciais soluções e não linearidade.

A melhor aplicação para exemplificar tudo isso é o Problema do Caixeiro Viajante. Esse problema tenta determinar a menor rota possível para percorrer um número de cidades passando uma única vez em cada uma delas e, depois, retornar à cidade de origem. Esse problema abrange de entrega de comida e mercadorias a projeto de placas de circuito. A princípio, pode parecer um problema simples. Mas apesar de ser simples de definir, é difícil resolver e, quando o número de cidades envolvidas é grande, transforma-se em um problema enorme e complexo. Observem a tabela abaixo:

Tabela com a relação cidades x rotas possíveis.

Para vocês terem dimensão do problema, vamos imaginar um computador que seja capaz de analisar 120 rotas por segundos. Se o problema do caixeiro viajante tiver 3 cidades, esse computador resolve o problema em menos de 1 segundo. Se tiver 4 e 5 cidades, em 1 segundo. Agora se tivesse 27 cidades no problema, o tempo que o computador levaria para resolver o problema seria de 350.000.000.000.000.000.000 ANOS! O método de força bruta (testar todas as possibilidades) seria inviável nesse problema. As melhores soluções até agora vieram dos algoritmos genéticos. Esses algoritmos foram inspirados na biologia evolutiva e possuem as mesmas características naturais: hereditariedade, mutação, seleção natural e recombinação por meio de crossover. Como são processos estocásticos, a evolução é observada de acordo com o tempo. E, com o tempo, o algoritmo vai chegando nas melhores rotas sem precisar processar todas elas.

Conclusão

A computação inspirada pela natureza é uma área que, com o tempo, veio se monstrando útil na resolução de problemas complexos. Hoje, plantações inteiras são monitoradas e pulverizadas com diversos drones que funcionam como um enxame. Todos são integrados e conversam entre si, são auto-organizáveis e se um indivíduo apresentar um problema de funcionamento, os outros membros da rede não são afetados.

Drones monitorando uma plantação.

O mesmo pretende-se com carros autônomos no futuro, formar uma rede de carros que conversam entre si e que tomam decisões baseadas nos dados obtidos. A natureza é um grande solucionador de problemas. Não só podemos nos inspirar nela, como devemos fazê-lo. A inteligência foi desenvolvendo-se na natureza de diversas formas e ao longo de bilhões de anos. A evolução biológica e os processos naturais (como fenômenos naturais) vem transformando e moldando o mundo há muito tempo. Buscar inspiração e motivação na natureza para resolver problemas é um caminho que tem se mostrado acertado e com muito potencial.