segunda-feira, 27 de setembro de 2010

Desapego material

Eu acho fantástica a maneira como o nosso sistema educacional forma pessoas desapegadas da realidade material. O que acontece no mundo real não afeta a maneira como as pessoas formam suas convicções políticas, econômicas e cotidianas.

As eleições deste ano seguem o padrão exasperador de ignorância militante. De tanto escutar falar mal do Bolsa Família e sobre como ela é culpada pela carga tributária, resolvi partir para minha atividade favorita: conferir os números.

Conforme o Ministério do Desenvolvimento Social, os benefícios variam de R$22 a R$200 para famílias com renda de até R$140 por pessoa. Considerando que o salário mínimo é de R$510, já vai ser dificil me convencer de que alguém vai deixar de trabalhar por isso. Lendo um pouco mais, descobri que o maior benefício seria concedido a uma família com pelo menos 3 crianças e 2 adolescentes. São 6 pessoas, no mínimo, porque se não tivessem mãe, os menores estariam numa instituição (ou na rua). Então, são R$33 por pessoa por mês.

Se uma criança passar toda a vida ganhando o benefício, pode esperar ganhar R$3.960 até os 15 anos e mais R$972 até os 17. São R$22 por mês antes dos 15 anos de idade e R$33 até os 17.

Segundo o IPEA (Instituto de Pesquisa Econômica Aplicada), a carga tributária para uma família que ganha até dois salários mínimos é de 48,9%. Então, uma criança que tenha passado toda a vida (204 meses) ganhando o benefício e, ao completar 17 anos, conseguir um trabalho com carteira assinada, pagará de volta o que recebeu em 19 meses.

Faixa de RendaCarga Tributária
Até 2 Salários Mínimos48,9%
De 2 a 5 Salários Mínimos35,9%
De 5 a 10 Salários Mínimos31,8%
De 10 a 15 Salários Mínimos30,5%
De 15 a 20 Salários Mínimos28,5%
De 20 a 30 Salários Mínimos28,7%
Acima de 30 Salários Mínimos26,%


Pensando bem, nem precisa ter carteira assinada, porque vai pagar apenas impostos sobre o consumo, já que não vai ter renda suficiente para pagar imposto de renda.

Enquanto isso, o orçamento anual da UFRGS é de R$874.369.261,58. São 42.054 alunos e, portanto, o custo anual de cada um é de R$20.791,58.

Um curso de 5 anos custa, então, R$103.957,90. Digamos que o recém-formado seja muito sortudo e consiga um emprego com salário de R$10.000,00. Segundo o IPEA, a carga tributária dele será de 28,7%. Serão 36 meses até que ele consiga pagar em impostos o que recebeu. Acho que R$3.000 ainda seria uma expectativa otimista de salário médio para um recém-formado e com isso seriam precisos 108 meses para retornar aos cofres públicos o custo do curso (sua carga tributária seria de 31,8%).

Talvez a universidade, mesmo sendo tão cara, esteja nos falhando, porque escuto muita gente que melhorou de vida graças a ela reclamar do Bolsa Família com argumentos falaciosos. Não sei bem se é falta de sensibilidade social ou falta de intimidade com os números e a lógica.

De qualquer forma, não excluo a possibilidade de que existam argumentos inteligentes contra os programas sociais vigentes e que, a qualquer momento, alguém sacará o trunfo da manga.

sexta-feira, 24 de setembro de 2010

O original

La Paz é uma cratera lunar no coração da América do Sul. É uma cidade improvável criada para lembrar aos sul-americanos o seu verdadeiro caráter.

Os índios têm pouco e com isso eram ricos. Os espaços enormes, a abundância de água, comida e árvores são a riqueza do sul-americano. O homem branco trouxe a propriedade particular e com ela a miséria.

Uma gringa com muito esforço subiu uma ladeira de La Paz para fazer compras num mercado a céu aberto. Encontrou um aparelho de DVD da Sony por uma pechincha, mas o aparelho não estava lacrado. Do Japão até a Bolívia, ela queria que o lacre garantisse a pureza tecnológica do aparelho.

Ela pediu, um amigo traduziu e o índio deu de ombros. Ele olhou ao redor e logo enfiou a mão numa caixa; dela tirou uma aparelho de lacrar com uma fita que monotonicamente repetia "SONY SONY SONY SONY".

A gringa não deve ter percebido, porque não poderia conceber, mas o aparelho fora produzido na Zona Franca de Manaus. Do meio da selva, surgiu uma aparelho japonês que um índio boliviano vendeu a uma loira americana desconfiada.

Esta noite vou ter que assistir ao correspondente internacional da Globo comentar as últimas da Venezuela desde Nova Iorque. Os gringos nacionais querem que vejamos e ouçamos com os olhos e ouvidos dos gringos originais as notícias que chegam lacradas desde a fonte. Mas será que no meio do caminho não há um lacrador espúrio?

segunda-feira, 20 de setembro de 2010

Otimizando a niqueleira II

Tendo já descoberto que uma moeda de dois centavos ajudaria a reduzir a quantidade de moedas em circulação em 20%, resolvi procurar as configurações ótimas para a niqueleira.

Estendi o programa para testar todas as possibilidades de n moedas. Comecei com quatro e fui até seis. A única restrição foi que todos os conjuntos tivessem a moeda de um centavo, para que todos os valores entre 1 e 99 pudessem ser representados.

Se o Banco Central produzisse apenas quatro moedas, a combinção ótima teria as seguintes moedas:
  • 1, 3, 11 e 37 ou
  • 1, 3, 11 e 38
Essas duas opções requerem apenas 410 moedas para representar todos os valores. Isso já é melhor que o produzido pelas cinco moedas em circulação (50, 25, 10, 5 e 1). Aposto que haveria inúmeras reuniões noite adentro até que o comitê decidisse por 37 ou 38.

Se produzisse 5 moedas, o Banco Central teria mais opções e o comitê nunca ia achar uma solução que agradasse a todos:
  • 45, 20, 8, 3 e 1
  • 45, 18, 7, 3 e 1
  • 44, 20, 8, 3 e 1
  • 44, 18, 7, 3 e 1
  • 41, 16, 7, 3 e 1
  • 40, 16, 7, 3 e 1
Essas seis combinações produzem uma soma agregada de 346 moedas para representar todos os valores entre 1 e 99. Em média, portanto, seriam precisas 3,49 moedas.

Finalmente, a busca da melhor combinação de seis moedas levou quase um dia inteiro. São 67 milhões de combinações. As campeãs, com uma soma agregada de 313 são:
  • 65, 29, 13, 5, 2 e 1
  • 64, 29, 13, 5, 2 e 1
  • 63, 25, 11, 5, 2 e 1
  • 62, 25, 11, 5, 2 e 1
Nenhuma combinação de seis moedas, portanto, produz uma média menor que três. Gostei da moeda de 65 centavos, porque com ela só me faltaria uma nota de R$3 para pagar a lotação.

quinta-feira, 16 de setembro de 2010

Otimizando a niqueleira

Sinto falta de uma nota de R$3 e de uma moeda de 15 centavos. Uma tarifa de lotação custa R$3,65 e a melhor combinação de valores é R$2+R$1+R$0,50+R$0,10+R$0,05.

Reparei que a seqüência de valores das moedas é diferente da de notas. Vou fazer de conta que a moeda de R$1 é uma nota.

Então, temos as seguintes moedas: 1, 5, 10, 25, 50. Mas as notas são 1, 2, 5, 10, 20, 50 e 100. Se existe uma combinação ótima, ela deveria ser usada nas duas seqüências, não?

Resolvi descobrir qual seqüência produz a menor contagem agregada para todos os valores entre 1 e 99. Para as moedas, seriam os valores entre 1 centavo e 99 centavos. Para as cédulas, seriam os valores entre R$1 e R$99.


my @moedas=(50,25,10,5,1);

my $total=0;
for my $valor (1..99) {
print "\n";
my $soma=$valor;
print "$valor =>";
for my $moeda (@moedas) {
if($soma>=$moeda) {
$n=int($soma/$moeda);
$total+=$n;
$soma-=$n*$moeda;
print "$n*$moeda; ";
}
}
}

print "\n$total\n";

O programa imprime na tela as melhores combinações para cada valor. O algoritmo é simples: ele vai da maior moeda para a menor, tentado maximimar o uso de cada uma.

Encontrei que a seqüência das notas tem uma contagem agregada de 340 (em média, são necessárias 3,43 notas) e a das moedas precisa de 420 (em média são necessárias 4,24 moedas). No entanto, a seqüência das notas tem a vantagem de ter um elemento a mais. A nota de R$2 faz toda a diferença e trocar 25 por 20 não altera em nada a contagem.

Então, sugiro que o Banco Central comece a emitir moedas de 2 centavos.

Brincando um pouco com os valores, descobri que uma nota de R$35 (ou R$30) e outra de R$15 baixariam a contagem agregada das notas para 300. Será que há uma combinação que tenha uma contagem menor que 300?

sábado, 11 de setembro de 2010

O olho do camelo

Amina riu quando finalmente encontrou o templo. Um neon vermelho iluminava uma pequena porta com as palavras "Digital Guru". Mesmo para a Índia, era demais.

Seguindo o som de música, ela subiu uma escada estreita que desembocava imediatamente num quarto. Quando seus olhos finalmente alcançaram o nível do chão, viu um homem magro e sem camisa flutuando a cinco centímetros do chão. Ela gritou um grito muito curto e agudo e o homem imediatamente abriu os olhos de uma maneira ainda mais assutada.

Quando finalmente chegou perto do guru, Amina percebeu a madeira que surgia da parede e o sustentava, aparententemente, no ar.

-Você é um charlatão! Que truque barato!
-Eu coloquei uma madeira num buraco na parede e sentei sobre ela. Os suecos venderiam isso por muito dinheiro numa loja IKEA. Porque eu sou indiano, sou charlatão?

Amina desculpou-se e logo apresentou sua dúvida:

-Guru digital, por que não há soluções inteiras para a enésima raiz da soma de inteiros elevados à enésima potência?

O guru mostrou-se impaciente:

-Você quer uma solução simples para um problema que precisa de tantas palavras? Vocês filhos de Abraão sempre procuram uma singularidade. Na Índia, temos 36 milhões de Deuses e todo dia nasce um novo Deus. Para cada problema, temos um Deus. Temos tanto de tudo, que não nos interessa a simplicidade. A beleza, a procuramos na complexidade. Olhe no olho do camelo e veja todos os Deuses que existem entre 2 e 3.

Amina compreendeu imediatamente. Voltando ao hotel, escreveu o seguinte em seu computador:


use GD;

my $img=new GD::Image(255,255);

my @colours=();

for my $c (0..255) {
$colours[$c]=$img->colorAllocate($c, $c, $c),
};

my $index=0;
for(my $i=2; $i<=3; $i+=0.05) {
for my $a (1..255) {
for my $b (1..255) {

my $c=($a**$i+$b**$i)**(0.5);

my $d=int(255*($c-int($c)));
$img->setPixel($a, $b, $colours[$d]);
}
}
open(IMAGE, sprintf(">still%02d.gif", $index));
binmode IMAGE;
print IMAGE $img->gif;
close IMAGE;
$index++;
}

Esse programa gerou 20 imagens, com tons de cinza indicando a diferença entre cada c e sua parte inteira.

Usando gifsicle, ela juntou as imagens numa animação.


gifsicle --loop --delay 20 still*.gif > anim.gif


Existem muitos Deuses, mas como na Índia, nenhuma solução. Amina contentou-se em admirar a complexidade.

domingo, 5 de setembro de 2010

Ciclos à toa

Ontem escutei que a "natureza é sábia" e imediatamente retruquei que não é, porque faz tudo por tentativa e erro. Só vemos os sucessos; os erros não sobrevivem por muito tempo.

Resolvi procurar algum problema simples que possa ser resolvido por força bruta, mas nada tão sofisticado como programação genética. Então, montei um pequeno programa em Perl para procurar as melhores frações para determinado número. Para tornar o exercício um pouco mais interessante, o programa produz as melhores frações de até n dígitos.

my $n=$ARGV[0];

for my $d (1..5) {
my $v=0;
my $vx, $vy;

for my $x (1..(10**$d-1)) {
for my $y (1..(10**$d-1)) {
my $t=$x/$y;
($v,$vx,$vy)=($t,$x,$y) if abs($n-$t)<abs($n-$v);
print "$x/$y ($v)\r";
last if $t<$n-0.1;
}
}
print "Melhor opção de $d dígitos: $vx/$vy ($v)\n";
}

O programa recebe um número $n pela linha de comando e compara cada tentativa $t com o vitorioso $v. Para otimizar um pouco a busca, o laço do $y termina quando o número estiver ficando menor que o alvo.

Não procurei otimizar mais, porque preciso de tempo para o café e o computador não reclama mesmo.

Para cada tentativa, o programa imprime os valores de $x e $y testados e a melhor fração até o momento.

Com o número e obtive o seguinte:

>fracoes.pl 2.71828183
Melhor opção de 1 dígitos: 8/3 (2.66666666666667)
Melhor opção de 2 dígitos: 87/32 (2.71875)
Melhor opção de 3 dígitos: 878/323 (2.71826625386997)
Melhor opção de 4 dígitos: 2721/1001 (2.71828171828172)
Melhor opção de 5 dígitos: 72396/26633 (2.7182818308114)

E com pi, antes de terminar a execução:

>fracoes.pl 3.1415926535
Melhor opção de 1 dígitos: 3/1 (3)
Melhor opção de 2 dígitos: 22/7 (3.14285714285714)
Melhor opção de 3 dígitos: 355/113 (3.14159292035398)
Melhor opção de 4 dígitos: 355/113 (3.14159292035398)
18425/1295 (3.14159292035398)

Nenhuma opção de 4 dígitos é melhor que a de 3, então o 355/113 saiu repetido.

Buscar os 5 dígitos é um pouco demorado, mas ainda é melhor do que procurá-los com nanquim e papel. E uma fração de 6 dígitos seria difícil de memorizar, logo teria pouca utilidade prática.