# Computação natural

Computação natural é um ramo da ciência da computação destinado a estudar, compreender e aplicar, padrões complexos encontrados na natureza, utilizando-os como base para resolução de problemas, desenvolvimento de novas tecnologias e aperfeiçoamento de sistemas já existentes. Dentre as tecnologias criadas tendo como base conceitos encontrados na natureza, podemos citar o velcro (plantas), sonares (morcegos), submarinos (peixes), entre outros. Além de exemplos práticos, a observação da natureza permitiu também o desenvolvimento de teorias a respeito de como a natureza opera, como, por exemplo, as leis da termodinâmica. Computação natural nada mais é do que uma versão computacional do processo citado anteriormente, em que ideias são obtidas através da observação da natureza.

## Características

Dentre as muitas características da computação natural, e de mecanismos que a utilizam, podemos citar:
* O processamento de informações biológicas pode ser complementado pelo papel exercido por estruturas dinâmicas em funções biológicas, facilmente observadas na natureza.
* Os componentes elementares (como os utilizados em computação quântica) são mais lentos quando comparados ao tempo de resposta de componentes não-elementares, de estado sólido. Porém, possuem a capacidade de implementar operações com um nível mais alto de abstração.
* A possibilidade de implementação sem DER planejada é explorada pelas arquiteturas naturais, permitindo que a computação seja guiada pela energia ou entropia do sistema, ao invés de suas restrições.
* No nível quântico, operações microfísicas podem contribuir para o processamento de sinais.

## Especializações

A computação natural é comumente dividida em três grandes áreas focadas em aplicações especificas, são elas:

### Computação inspirada na natureza

Este primeiro ramo da computação natural é também o mais antigo e bem consolidado. Ele abrange a todos os mecanismos desenvolvidos com base em algum caso observado na natureza. Surgiu pois, com o passar do tempo e a descoberta de novos princípios e teorias que visam implementar modelos computacionais, pesquisadores perceberam a possibilidade de utilizar princípios encontrados na natureza para solucionar problemas e otimizar processos. Assim surgiu a computação inspirada na natureza, que tem como principais áreas de atuação: redes neurais artificiais, algoritmos evolutivos, sistemas imunológicos artificiais, entre outros. O próprio pensamento humano representa um mecanismo natural altamente importante.
A computação inspirada na natureza agrega a computação bioinspirada, que tem como inspiração processos da vida para criar algoritmos, a computação evolutiva e a inteligência de enxames, ambas baseados nas teorias de seleção natural e evolução natural de Darwin.

### Estudos sobre a natureza através da computação

Nesta área da computação natural, são utilizadas estruturas computacionais para sintetizar condutas naturais, padrões e processos similares àqueles vistos na natureza. Tem duas principais linhas de atuação: a vida artificial e a geometria fractal.
Vida artificial é a ciência que estuda a vida natural, de maneira abrangente, bem como características específicas da mesma, na tentativa de recriá-la em meios “artificiais”, como computadores. Ao contrário da biologia tradicional, em que o enfoque do estudo é analítico, a vida artificial enfoca seu estudo sinteticamente, complementando a ciência anteriormente citada. A vida artificial traz benefícios não somente para a biologia, estudando seus fenômenos, mas também para a computação (tanto em hardware quanto em software), robótica, nanotecnologia, medicina e em algumas áreas da engenharia.
Fractais são figuras da geometria não euclidiana e a geometria fractal é a responsável por estudar as particularidades de tais figuras. Expõe diversas situações que a geometria euclidiana não pôde explicar facilmente e foram aplicadas em arte gerada por computador. A computação natural estuda os fractais por tais figuras retratarem formas e fenômenos da natureza.

### Computação com mecanismos naturais

Refere-se à criação de computadores ou sistemas computacionais, que se baseiam em princípios naturais e orgânicos, utilizando-se das qualidades dos preceitos naturais nas tecnologias computacionais. A exemplo, os computadores de DNA e quânticos. Computadores de DNA tem sua arquitetura baseada no processamento e armazenagem de informações em cadeias genéticas de um DNA, utilizando-se de seu ínfimo tamanho para gerar computadores de alta performance. Computadores Quânticos tem sua arquitetura baseada na mecânica quântica, e com isso podendo se utilizar não apenas o 0 e o 1, mas também a possibilidade de ser o 1 e o 0 ao mesmo tempo, se valendo do Princípio da incerteza de Heisenberg. A necessidade de desenvolver essa nova ideia de tecnologia surgiu a partir da observação de Gordon E. Moore, que constatou que o crescimento da quantidade de transistores irá um dia chegar a seu limite, a partir disso não havendo mais possibilidades de aumento no poder de processamento, surgindo ai a necessidade de criar novas tecnologias a respeito de transmissão de dados.

## Objetivos e aplicações

A computação natural tenta impor novos paradigmas que visam suplementar e/ou complementar os computadores atuais baseados em tecnologia de silício e arquitetura de Von Neumann.
Tendo diversos objetivos, a computação natural pode ser vista como uma versão computacional dos processos de análise e síntese da natureza, visando o desenvolvimento de sistemas artificiais, isto é, sistemas desenvolvidos por seres humanos, e não obtidos diretamente através da evolução das espécies.
Dentre os objetivos da computação natural, destacam-se:
* Fornecimento de técnicas alternativas para solucionar problemas que ainda não foram resolvidos através de técnicas ditas “tradicionais”, não só dentro da computação, mas em diversas áreas do conhecimento.
* Derivar modelos teóricos computacionais fiéis o suficiente aos mecanismos naturais para, assim, poder simular, emular, modelar e reproduzir algumas de suas funções.
* Fornecer um melhor entendimento de fenômenos naturais que estejam sendo modelados.
* Utilizar mecanismos naturais, como cadeias de DNA e técnicas de engenharia genética, como novos paradigmas de computação.
Tendo objetivos que podem ser utilizados em diversas áreas do conhecimento, a computação natural possui diversas possibilidades de aplicação, variando desde o estudo de redes neurais artificiais até a observação de qual a melhor rota a ser tomada no trânsito de uma grande cidade.
Dentre as áreas de aplicação, se destacam:
* Otimização
* Robótica
* Classificação de dados
* Predição de séries temporais
* Reconhecimento de padrões em big datas
Um dos mais famosos algoritmos bio-inspirados desenvolvidos é o ACO (Ant Colony Optimization). Ele se baseia no fato de que as formigas tem a capacidade de, entre outras coisas, sempre encontrar o caminho mais eficiente entre uma fonte de alimento e o formigueiro. Elas são capazes de realizar esta tarefa através de uma varredura realizada no ambiente, direcionada pela comunicação ativa existente entre os membros da colônia. Tendo em vista esse comportamento dinâmico, o ACO é capaz de, quando aplicado ao roteamento de veículos, por exemplo, guiar o motorista através do caminho mais eficiente entre seu trabalho e sua casa, ou ainda otimizar rotas utilizadas por transportadoras, visando o menor consumo de seus veículos, e menor tempo de execução para cada entrega, se adequando a obstáculos que possam aparecer no caminho, como vias interditadas e tráfego intenso.
Existem também muitos algoritmos baseados na movimentação de enxames, tendo em vista a simulação do movimento dos mesmos. Estes algoritmos possuem regras básicas que atuam em cada um dos indivíduos permitindo que, quando o coletivo é analisado, se comportem de maneira coesa e contínua.