Share via


Swarm Intelligence e Comunidades

Falei de darwinismo outro dia e me lembrei do sentimento que tive quando entrei na Microsoft em 99. Nesta época existia uma disputa no grupo de produtos entre qual equipe teria o repositório de dados: o time do Exchange, o grupo do SQL ou outro que não me lembro mais. Parecia que haveria uma unificação e, daí, a competição.

Vendo este e outros casos, cheguei a uma conclusão: a Microsoft usa um modelo darwinista, altamente competitivo (interna e externamente), com o benefício da diversidade, e este benefício deveria ser maior que os eventuais malefícios decorrentes da redundância.

Tempos depois descobri outro tipo de algoritmo, de certa forma semelhante aos algoritmos genéticos: os algoritmos de enxames baseados no conceito de swarm intelligence . Imagine uma superfície em 3 dimensões e o problema de achar um pico. Neste tipo de algoritmo, jogamos pontos aleatórios na superfície, damos a eles uma direção também aleatória, e fazemos um pequeno movimento. Neste momento, cada ponto, como abelhas, avalia seu novo estado e também consulta o estado de seus vizinhos. Se algum de seus vizinhos está em melhor posição, ele copia algum de seus valores (como a direção) e o usa para a próxima iteração. Caso não haja vizinho em melhor condição, ele joga os dados para mudar seu estado e continua. Você pode encontrar uma descrição mais completa no livro Swarm Intelligence.

Ainda não utilizei este algoritmo, mas dizem que, com o tempo, são formados diferentes enxames de pontos que caminham em direção aos vários picos da superfície. A chance de um deles chegar ao topo máximo é grande.

Outro fato importante: a velocidade com que encontramos o maior pico costuma ser mais rápida do que a que conseguimos com algoritmos genéticos.

Ao compreender este algoritmo mudei de idéia: a Microsoft, como a toda comunidade (a de tecnologia inclusive), parece ser um grande enxame, onde cada designer ou programador faz seu movimento olhando também para o lado para ver o que está acontecendo ao redor; checar o que funciona ou não, e reavaliar seu próprio comportamento ou design. Este não parece ser uma exclusividade da Microsoft. Outras empresas e mesmo a comunidade Open Source parece seguir estes princípios, entendo eu.

Para mim, isto só reforça a importância das comunidades, troca de idéias e respeito às diferenças. Daí a pergunta:

- E você, já participa de alguma?