Tive um professor de computação neural uma vez que apontou um excelente exemplo de como técnicas "analógicas" poderiam ser usadas em problemas embaraçosamente paralelos para reduzir o limite assintótico de uma computação:
Pegue um pacote de palitos de tamanhos diferentes. Existem muitas maneiras algorítmicas de classificar esse pacote de paus do maior para o menor com O (n * log (n)). Uma maneira "analógica" de classificar esse pacote de paus seria colocá-los em pé e deixar os paus descansar um fim em uma mesa (1 passo). Agora você tem todos os palitos com uma extremidade no mesmo nível contra a mesa. Pegue sua mão e coloque-a em cima - ela atingirá o máximo, remova o manche e repita para N passos. Este processo é O (N + 1), que é O (N). A chave aqui era empilhar as varas nas extremidades - uma solução massivamente paralela para ordenar as outras extremidades das varetas ao longo do eixo z (para cima).
Este é um experimento interessante e pode dar uma idéia de como as soluções analógicas podem reduzir o limite assintótico de um algoritmo de uma maneira simples. Duas advertências enormes aqui:
1) Não levamos um problema de NP a um problema de P com este exemplo (mais sobre isso mais tarde) e
2) se você usasse N processadores para classificar N itens, poderia classificar os números no tempo O (log n) (com uma grande constante), para que a redução não seja mágica. Às vezes, os recursos analógicos necessários resolvem um problema de maneira altamente paralela são baratos. Outro exemplo de recurso barato seria neurônios (biológicos) para aprendizado complexo e reconhecimento de padrões.
Os neurônios também podem colocar em perspectiva o NP => P aparente. Os problemas de NP são NP para encontrar a solução ideal . Você pode encontrar uma solução "suficientemente boa" no tempo P que funcione bem na natureza. O Evolution seleciona soluções altamente eficientes que são "suficientemente boas". Pense em como a pessoa comum é boa em identificar objetos em quase O (1) tempo. Isso ocorre porque há muito processamento paralelo em andamento, e seu cérebro nem sempre apresenta a solução ideal. Por exemplo, ilusões de ótica ou esquecer onde você coloca suas chaves (o que seria facilmente O (1) para um computador!).
Outro ponto com NP vs P na natureza: resolver o NP para encontrar a solução ideal não é o mesmo que identificar a solução ideal. A identificação de uma solução ideal para um problema de NP pode ser feita em tempo P. Novamente, o reconhecimento de uma solução "suficientemente boa" funcionará em vez de uma solução ideal. Tomemos o exemplo da dobragem de proteínas - este é um exemplo da natureza que faz todas as opções acima. Ele tira proveito das forças de interação molecular que funcionam em paralelo (não há necessidade do "algoritmo" natural de dobramento abordar um átomo de cada vez, como faz um algoritmo computacional). Além disso, não há garantia de que a solução (funcionalmente) ideal para a dobra de proteínas seja encontrada.
Existem muitos exemplos de doenças devido ao desdobramento de proteínas. Como o @PeterShor apontou às vezes, o algoritmo "natural" não funciona (levando a uma solução termodinamicamente ótima, mas não funcional). É aí que as proteínas acompanhantes entram - elas guiam a dobra para a forma funcional correta (um local termodinâmicomínimo). As proteínas formadas corretamente também interagem com outras proteínas para serem transportadas para o local correto, de modo que as "ruins" (onde o algoritmo heurístico realmente não resolveu o problema do NP) são frequentemente degradadas sem serem transportadas para lugar nenhum. Todos esses transportes e mecanismos de dobragem estão acontecendo com enormes tubos paralelos. Múltiplos mecanismos de transcrição e processamento estão convertendo simultaneamente DNA-> RNA-> Proteína em diferentes pontos da sequência de um gene. Cada célula do seu corpo está fazendo o mesmo (mas com diferentes mensagens químicas sobre o que produzir).
Então, resumindo: como a natureza faz isso? Truques e paralelismo. Geralmente, na verdade, não está transformando um problema de NP em P, apenas fazendo com que pareça fácil.