sábado, 3 de setembro de 2016

Recursividade na delegação de tarefas e distribuição de recursos


Link do fonte atualizado:
https://docs.google.com/document/d/1lmaFIwqoUWGNt14HvlsXuxuQPzBfwhxaIslKcJmY0fo/edit?usp=sharing


A recursividade é a característica principal de tudo o que está vivo. Com uma diferença das dos cristais: consomem recursos do exterior para manter sua estrutura e funcionamento interno corretos e liberam dejetos prejudiciais ao seu organismo interno. Assim são as bactérias, protozoários,  plantas, fungos, nos, as cidades...

Um dos objetivos dos seres, que dependem do meio, por conhecer que a matéria e mesmo o espaço podem ser limitados, deveriam conhecer e estabelecer um limite, preferencialmente, muito a abaixo da taxa da de renovação natural dos recursos (podendo em caso de necessidade extrema o uso desse acumulado para investir no reequilíbrio).


O cenário - Imagem
 
Existiam dois grupos, os vermelhos e os azuis, que para sobreviver decidem montar uma estrutura que permita a delegação de tarefas e ocupação de espaço dentro de um território.

Cada um deles habitavam sua região sem interferência.

Os ambos os grupos tem o objetivo de levar suas próprias vidas através destes territórios fazendo construindo canais ou estradas que levem recursos ate a distancia necessária para obter a população  mínima capaz de estabelecer o ciclo de consumo e reciclagem. As fontes de origem devem ser mais largas e terão maior volume de água que as da periferia. 


Para que tal ação fosse executada, cada grupo aceitou seguir certas medidas de crescimento dividindo-se o plano de expansão em ângulos de 360°/numero de filiais:
Os pertencentes ao grupo aceitavam a hierarquização das sua estruturas, mas
     os vermelhos teriam
        somente 4 filiais por região
    os azuis teriam
        somente 3 filiais por região


Modelo 1 - organização dos vermelhos

Os vermelhos tinham o objetivo de não deixar nenhuma localidade sem ocupação. Algo arriscado. Mas não produzem nem dão manutenção ao seu sistema de canais.  A distribuição dos recursos dos vermelhos somente terão sucesso, se ela conseguir terceirizar a fabricação de sua infraestrutura. Poderá ser ruim se existir monopólio do sistema de irrigação no mercado. E se seu, seu rendimento ter que que cobrir sua manutenção comprando do exterior, dentro de um mercado monopolizado, poderá sofrer chantagem económica. E não tendo espaço interno para investir em inovação, poderá falir.


Modelo 2 - organização dos azuis

Os azuis, também tinham a intenção de levar vida ao máximo da parcela de seu território, mas não queria se tornar dependente de meios exteriores e nem sofrer chantagens econômicas. Para isso reservou outra parcela, para a produção de tecnologias que forneçam formas e materiais mais eficientes para todo todo o seu território (partes de espaços). Na mesma proporção, foram separados espaços para outros seguimentos. Assim:

inicialmente de separar 2 partes de espaços para:
alimentação (azul)

industrialização, produção de energia, manutenção, áreas de reciclagem, Mineração, revitalização  (Verde)

Mas sugere-se separar outros 2 como para:
escritórios de projetos, salas de aula, comércios, bibliotecas, gerência
Moradias, Lazer, descanso, cinema, comida, esportes



Todos respeitando a quantidade permitida a ser absolvida do rio se a taxa de renovação dos recursos estiver constante ou crescente encontráramos o equilíbrio.

Cada filial deve aprender a replicar a regra, os conceitos de segurança e administração e ensinar a regra para suas filiais




Os Azuis aparentemente são mais sábios. Sabiam que podiam tornar o pouco do território tão rentável e vivo quanto todo o território ocupado pelos vermelhos. Mas para isso, seria necessário investimento. Algumas perdas aconteceriam e eles previram isso. E assim, se criou um território verde, vindo do mesmo rio, para se especializar no suprimento de qualquer problema dentro de seu território. O território verde é um pouco menor que o ocupado pelo azul, mas funcionava como garantias.







Apesar de acreditar que devemos encontrar uma formula para transferir o conhecimento, a imagem é só um exemplo de como podemos visualizar a transferência de ideias e recursos dentro do sistema. A verdade é que acredito que deveríamos interferir o mínimo possível dentro dos espaços da Terra.



Javascript do teste:

As espessuras dos canos é determinado por pela variável t.


Para ver o fonte funcionar, é necessário copia-lo e salva-lo com a extensão HTML. Para saber o que estou falando clique Aqui !


 
<html>
<head>
<script>

    // escreva tudo isso em vermelho no bloco de notas e salve com o nome de script.html
    // Atenção! Não é pra salvar com o nome de script.html.txt
    // se vc ver o símbolo do navegador no arquivo é pq deu certo.
    // Se vc ver o símbolo do bloco de notas é pq vc não sabe mudar a
    // extensão do arquivo.
    // se não souber como faz pra mudar a extensão do arquivo: procura no google
    // lembre-se dos espaços e das quebras de linha.

    manterLimites = function(angulo)
    {
        while(angulo>=360)
        {
            angulo=angulo-360;
        }
        while(angulo<0)
        {
            angulo=angulo+360
        }
        return angulo;
    }


    getSenCos = function(angulo)
    {   
        angulo = manterLimites(angulo);
        seno =    Math.sin(angulo * Math.PI / 180);
        cose =    Math.cos(angulo * Math.PI / 180);
        return [cose, seno];
    }

    rioVermelho = function(ctx, x1, y1, tamanho, angulo, poda, stroke)
    {
        var senCos= getSenCos(angulo)   
        var tx = x1+tamanho*senCos[0]
        var ty = y1+tamanho*senCos[1]
        ctx.lineWidth = 1;   
        ctx.beginPath();

        ctx.strokeStyle= stroke;
        ctx.moveTo(x1,y1);
        ctx.lineTo(tx,ty);
        ctx.stroke();
        r = 0.5;

        if( poda>1 )
        {
            // momento em que acrescentamos novos ramos (Novas somas)
            rioVermelho(ctx, tx, ty, tamanho*r,    angulo+90,poda-1 , stroke)
            rioVermelho(ctx, tx, ty, tamanho*r,    angulo, poda-1 , stroke)
            rioVermelho(ctx, tx, ty, tamanho*r,    angulo-90,poda-1 , stroke)
            rioVermelho(ctx, tx, ty, tamanho*r,    angulo+180,poda-1 , stroke)
        }
    }

    rios = function(ctx, x1, y1, tamanho, angulo, poda, array, strokes)
    {
        var senCos= getSenCos(angulo)
        ctx.lineWidth = poda/3;   
        ctx.beginPath();
        ctx.strokeStyle= strokes[array];
        var tx = x1+tamanho*senCos[0]
        var ty = y1+tamanho*senCos[1]
        ctx.moveTo(x1,y1);
        ctx.lineTo(tx,ty);
        ctx.stroke();
        if( poda>1 )
        {
            poda=poda-1;
            // momento em que acrescentamos novos ramos (Novas somas)
            rios(ctx, tx, ty, tamanho*r,     angulo-120,poda , array, strokes )
            rios(ctx, tx, ty, tamanho*r,     angulo    +0,poda , array, strokes )
            rios(ctx, tx, ty, tamanho*r,     angulo+120,poda , array, strokes )
        }

        if(strokes.length>array+1)
            rios(ctx, x1, y1, tamanho*0.5,     angulo-180, poda, array+1, strokes );
    }


    grupoAzul = function(t)
    {
        var c = document.getElementById("myCanvas");
        var ctx = c.getContext("2d");
        //filhos, suas garantias e delegações
        strokes = [ "#0000FF" , "#00FF00", "#FF0000" ]
        //strokes = [ "#0000FF" , "#00FF00"]
        rios(ctx, 740, 320, 145,     30, t, 0, strokes );
        rios(ctx, 740, 320, 145,    150, t, 0, strokes );
        rios(ctx, 740, 320, 145,    270, t, 0, strokes );
    }


    grupoVermelho = function(t)
    {
        var c = document.getElementById("myCanvas");
        var ctx = c.getContext("2d");
        //filhos
        rioVermelho(ctx, 250, 250, 145,    0, t, "#FF0000");
        rioVermelho(ctx, 250, 250, 145,   90, t, "#FF0000");
        rioVermelho(ctx, 250, 250, 145,  180, t, "#FF0000");
        rioVermelho(ctx, 250, 250, 145,  270, t, "#FF0000");
    }

    setBacktroundColor = function( color )
    {
        var c = document.getElementById("myCanvas");
        var ctx = c.getContext("2d");
        ctx.fillStyle=color;
        ctx.fillRect(0,0,1000,500);
    }

    load = function()
    {
        setBacktroundColor("#000000")
        numero_de_decendentes=7
        grupoVermelho(numero_de_decendentes)

        grupoAzul(numero_de_decendentes)
    }

</script>
</head>
<body onload="load();">
<canvas id="myCanvas" width="1000" height="500" style="border:1px solid #000000;">
</canvas>
</body>
</html>?

Nenhum comentário:

Postar um comentário