Economia Política: Os benefícios da inteligência coletiva
O conceito de inteligência em si, vem da faculdade individual de pensar, de conhecer, de compreender e de aprender, sucessiva e constantemente. Solução para problemas do presente, via experiência do passado e/ou, dum futuro vislumbrado, de forma lógico-intuitiva. Ou seja, a capacidade de compreender e resolver novos problemas e conflitos e de adaptar-se às novas situações, mesmo que comparativamente, tendo sua origem, em aprendizados, via experiências bem sucedidas do passado. Trata-se então, em parte, do passado, do presente e do futuro também. Já que, se acredita que o ser humano não pensa, mas sim, compara: tempos, lugares e formas.
A ideia de inteligência parte da capacidade que muitos de nós temos para processar informações que são ativadas no ambiente cerebral acerca de experiências ou visões, em que vislumbramos, e como nossas habilidades são desenvolvidas e utilizadas para resolver os problemas que essas informações nos propõem. Portanto, inúmeros são os tipos e formas de inteligência, entre as quais:
1) Inteligência lógico-matemática;
2) Inteligência linguística;
3) Inteligência visual;
4) Inteligência interpessoal;
5) Inteligência intrapessoal;
6) Inteligência espacial;
7) Inteligência corporal-cinestésica;
8) Inteligência musical;
9) Inteligência política;
10) Inteligência emocional;
11) Inteligência Coletiva;
No caso em tela – Inteligência Coletiva – segundo o dicionário colaborativo mundial – Wikipédia: Trata-se dum conceito de um tipo de inteligência compartilhada que surge da colaboração de muitos indivíduos em suas “adversidades” e/ou complementariedades, porém que poderão vir a ser uma boa solução coletiva. É uma inteligência distribuída por toda parte, na qual todo o saber está na humanidade, e não somente no indivíduo, já que ninguém sabe tudo, porém todos sabem alguma coisa, ou tem algo a colaborar com a solução do problema.
O termo Inteligência Coletiva, aparece na sociologia, na ciência política e em contextos específicos como dinâmicas de revisão paritária e aplicações de crowdsourcing. Essa definição mais ampla envolve processos como formação de consenso, capital social, tomada de decisão e capital intelectual, todos no âmbito coletivo. Diferentes ações em cooperação, desde um partido político, um sistema econômico, uma cooperativa de crédito, implantação duma Moeda Social… podem ser descritas como uma forma de inteligência coletiva.
Contraditoriamente, vivemos num tempo em que se exacerba o individualismo sistêmico, incentivado pela mão invisível, controladora, expropriante. O umbigo como sendo o mundo! Num tempo e lugar, que ilusoriamente, “cabe” num celular dos bilhões de iguais, que se sentem equivocadamente tão diferentes.
Oxímoro gritante, dado a contradição em repetição-sistêmica imposto tal modelo à bilhões de indivíduos, no mundo.
Matéria muito bem estudada pela teoria da sequência lógica e da computação, no caso clássico denominado:
O PROBLEMA DO JANTAR DOS FILÓSOFOS.
No qual, cinco filósofos estavam sentados em uma mesa redonda para jantar. Cada filósofo tinha à sua frente, um prato com macarrão compriiiidos, do tipo espaguete. Cada prato e respectivo filósofo, possuía um único garfo para pegar o espaguete. Imagine que o espaguete é muito escorregadio e, para que cada filósofo consiga comer, seu longo espaguete, seria necessário utilizar dois garfos. Ou seja, dependia de cada um, da colaboração de outro e/ou outrem.
E nesse sentido, cada filósofo alterna entre duas tarefas: comer ou pensar. Quando um filósofo fica com fome, ele tenta pegar os garfos à sua esquerda e à sua direita; um de cada vez, independente da ordem. Caso ele consiga pegar dois garfos, ele come durante um determinado tempo e depois recoloca os garfos na mesa. Em seguida ele volta a pensar.
O problema-dilema em questão é:
Você é capaz de propor um algoritmo (modelo de solução lógica replicável) que resolva o caso de cada filósofo, de modo que cada um deles execute as tarefas de comer e pensar sem nunca
Nas seções a seguir iremos passar por 4 soluções possíveis para o problema do Jantar dos Filósofos.
De forma incremental iremos entender como solucioná-lo e porque esse problema não é tão simples quanto parece, se não compreendermos o fundamento por trás da Inteligência Coletiva.
Em cada uma das 3 primeiras abordagens entenderemos onde a solução não evita que o dilema dos filósofos fique travado.
SOLUÇÃO JANTAR DOS FILÓSOFOS 1:
Primeiramente, podemos imaginar então, de forma bem simples, que um programa de computador, por exemplo, para fazer essas tarefas deve apenas tentar pegar um garfo qualquer. Caso não consiga, fique aguardando. Em seguida faz o mesmo para o segundo garfo. Uma vez com os garfos nas mãos começa a comer. Ao final devolve um garfo e depois o outro.
O grande problema nesse algoritmo é que existem momentos em que se todos os filósofos pegarem um garfo ao mesmo tempo, atitude individual, em contradição a coletividade… todos irão ficar parados para sempre aguardando o segundo garfo ficar disponível; gerando assim um Deadlock ou Impasse! Ou seja, não é uma solução completa e capaz de solucionar o problema.
Esta opção representa a execução individual de cada Filósofo. Imagine que eles têm execução paralela, simultânea. Nessa primeira implementação o método take_fork tem um laço/loop infinito aguardando até que o garfo esteja disponível.
Note que ao ficar rodando infinitamente, em algum momento o programa irá cair na condição de deadlock em que todos os filósofos estarão com um garfo nas mãos e como consequência irão aguardar para sempre o segundo garfo; ficando assim travados para sempre.
SOLUÇÃO JANTAR DOS FILÓSOFOS 2:
Vamos imaginar então uma solução em que toda vez que um filósofo pegar o primeiro garfo e em seguida não conseguir pegar o segundo garfo, ele devolva o primeiro à mesa e aguarde um tempo fixo para tentar tudo novamente. Abrindo mão assim, temporariamente da individualidade, para tentar uma solução para o problema.
Nesse novo caso, o filósofo poderá morrer de fome. Ele não ficará travado, mas irá ficar tentando fazer a mesma operação de pegar e depois devolver o garfo para sempre. A consequência individual, será nunca conseguir comer.
SOLUÇÃO JANTAR DOS FILÓSOFOS 3:
A terceira solução é uma pequena variação da segunda em que colocaremos um fator aleatório para dificultar a possibilidade de que um filósofo morra de fome (starvation). Com tempos aleatórios de espera para tentar pegar novamente um garfo a probabilidade de starvation é mínima. No entanto, não é impossível! Logo, ainda não temos uma solução completa.
SOLUÇÃO JANTAR DOS FILÓSOFOS 4:
A quarta solução é baseada na lógica dos semáforos. O semáforo irá garantir que haja exclusão mútua, onde apenas um filósofo estará com um determinado garfo por vez. As soluções anteriores também garantem a exclusão mútua, mas o semáforo irá garantir a completude do programa.
Não haverá starvation nem deadlock
No problema do Jantar dos filósofos a seção crítica da execução de um filósofo é a operação de comer, que necessariamente, precisa utilizar os dois garfos. Nessa nova implementação iremos representar cada garfo como um mutex. Eles serão controlados pelas instruções lock_guard que irão trabalhar na forma do nosso semáforo. Logo após o filósofo terminar de comer os dois garfos que estavam com ele, serão liberados. O sistema adotado garantirá que outras threads interessadas no recurso liberado sejam escalonadas para executar e tentar pegar os garfos livres.
Vamos começar pela nossa classe Table cujos garfos estarão contidos. Na mesa teremos 5 garfos representados por um vetor de 5 mutexes.
Nossa nova execução principal, que se resume à existência de um filósofo, não irá mais ter métodos separados para tentar pegar os garfos.
O método think é muito simples. Ele apenas coloca a thread para dormir durante um tempo randômico.
O método eat por sua vez, antes de mais nada tenta pegar os dois garfos para comer. Essa operação se traduz em tentar adquirir (lock acquire) o lock de cada garfo. Ao fazê-lo em uma única chamada do método lock, ele garante que não haverá deadlock. A sequência somente passará para as próximas etapas quando a thread corrente conseguir adquirir os dois locks (garfos) necessários para executar a operação de comer.
Em seguida, utilizamos o método lock_guard que irá garantir que ao final da execução do bloco ambos mutexes serão liberados sem que explicitamente você tenha que chamar um método unlock. Assim, tão cedo os garfos são adquiridos o filósofo irá começar a comer. Essa operação é simulada fazendo a thread dormir por um tempo randômico. A implementação do método eat pode ser visto abaixo:
ANÁLISE SISTÊMICA:
Vamos fazer uma breve análise. Além de garantir que não aconteçam Deadlocks e nem Starvation de threads ou Filósofos, essa implementação garante que em média, todos os filósofos executem aproximadamente a mesma quantidade de vezes cada operação: Pensar e Comer.
Nesse sentido, foi rodado um experimento deixando essa implementação em execução durante um certo tempo. Depois computados, através da sequência de execução, as quantidades de vezes que cada filósofo passou ou pensando ou comendo. O gráfico abaixo mostra o resultado computado do experimento:
Note que não houve uma grande diferença entre o número de vezes em que cada filósofo comeu ou pensou. Ou seja, a solução do problema do Janta
CONCLUSÃO:
Vimos o problema do Jantar dos Filósofos. Esse problema é tipicamente apresentado quando estamos estudando Sistemas Operacionais. Ele é considerado um problema de sincronização de processos/threads. Foi proposto e solucionado por Edsger W. Dijkstra na década de 60.
Ainda hoje, muitas sociedades estão paradas no tempo, sem avançar no seu desenvolvimento socioeconômico, dado a ganância individual, miopia e cegueira da maioria, via individualismo, comumente explorados pela Mão Invisível vinda de fora.
Nesse artigo vimos 4 tipos diferentes de implementação. A primeira à qual existe um problema de Impasse/Deadlock. A segunda e terceira com problema de morrer de fome/Starvation. A quarta solução e definitiva faz o uso de semáforos (democracia) para garantir a execução sincronizada entre as threads que compõem nosso programa.
Fizemos uma implementação simulada da solução para que o leitor consiga acompanhar o raciocínio passo a passo. Um experimento exemplar, executado que permitiu criar um gráfico mostrando o número de vezes em que cada filósofo comeu ou pensou. Ou seja, abrindo mão da condição individual, poder-se-ia resolver muitos problemas e entraves coletivos, como por exemplo, a distribuição de renda para se criar um grandioso mercado consumidor interno, via grandes parques industriais, país a fora; e não apenas, continuar sendo um “país-colônia monocultor’’ exportador agrícola, o qual o grande Agronegócio, sequer paga impostos de exportação e ainda exige sem pagar por isso, uma rede logística perfeita, a qual é preciso muitos recursos e inteligência coletiva para edificá-la.
As vezes é preciso dar um passo atrás, para destravar o jogo e poder consequentemente, dar muitos passos à frente, até que apareça o próximo obstáculo.
Nota:
Artigo baseado na publicação correlata do site https://blog.pantuza.com/
O site Ipiau Online tem diversos outros artigos de foro regional que poderão trazer informações e debates de grande valia para a sua vida e/ou negócio. Não deixe de ler e compartilhar nossas publicações, acessando o site https://ipiauonline.com.br/
Além disso, não esqueça de deixar seu feedback nos comentários abaixo. Sua avaliação, crítica e contra argumentação é muito importante para nosso ajuste em prol duma maior assertividade, aprofundamento e aprimoramento de cada tema abordado;
Para os mais astutos, sugerimos assistirem aos vídeos abaixo, (disponíveis no YouTube) como reflexão complementar a leitura.
As opiniões e valores expressos nos vídeos a seguir, são de inteira responsabilidade dos seus respectivos autores. Todos os vídeos são públicos e estão disponíveis na plataforma do YouTube;
Da redação: Elson Andrade – que é arquiteto, urbanista, empresário e pós-graduado pelo Instituto de Economia da Unicamp.
Veja mais notícias no Ipiaú Online e siga o Blog no Google Notícias