Infelizmente, a legislação de Problemópolis ainda prevê a pena de morte, e o rei atual é particularmente sanguinário: dez prisioneiros deverão ser executados hoje.
Por outro lado, o artigo sobre pena de morte contém um certo parágrafo, não visto na maioria dos outros países:
- Toda vez que um certo número de prisioneiros tiver que ser executado, o seguinte procedimento deverá ser seguido. O carrasco os colocará em fila indiana, todos virados para a frente da fila, de modo que o último da fila veja todos os outros prisioneiros, o penúltimo veja todos exceto o último, e assim por diante: o prisioneiro no início da fila não verá ninguém. Em seguida, o carrasco lhes colocará chapéus pretos e brancos, da maneira que quiser, podendo até escolher aleatoriamente; a única restrição é que seja colocado exatamente um chapéu em cada condenado. Não deve ser permitido a nenhum deles ver seu próprio chapéu; apenas os chapéus dos prisioneiros que estão à sua frente, na fila.
- O carrasco fará as execuções de trás para a frente da fila, começando com o prisioneiro que pode ver todos os outros. A cada um, antes de morrer, deve-se perguntar a cor de seu chapéu. Se responder corretamente, será poupado; incorretamente, e será morto. Todos os prisioneiros deverão ouvir, claramente, todas as respostas, bem como o resultado de cada uma (morte ou salvação).
- Na noite anterior à execução, todos os prisioneiros deverão encontrar-se para discutir.
Que estratégia os dez prisioneiros devem adotar, para salvarem-se em maior número possível? No mínimo quantos serão salvos, no pior caso? E no melhor caso?
Se considerarmos Problemópolis como uma Atenas moderna, com sua preocupação com as coisas da mente, então Infinitópolis, cidade vizinha, certamente é Esparta: sua legislação é muito mais severa. Eis aqui os parágrafos correspondentes:
- Em Infinitópolis, não será desperdiçado dinheiro público nas preparações para a execução de um número finito de pessoas. Somente infinitas pessoas são executadas de cada vez. Porém, devido a limitações de espaço, somente um infinito enumerável de pessoas serão executadas de cada vez.
- Quando infinitos prisioneiros tiverem que ser executados, eles deverão ser postos em bijeção com os números naturais, configuração também conhecida como “fila indiana”. Todos os prisioneiros devem estar virados para o lado interminável da fila: o de número 1, último da fila, podendo ver todos os demais à sua frente; o de número 2, penúltimo, vendo todos exceto o de número 1, etc. Não haverá “primeiro da fila”: isto seria uma exaltação indevida do indivíduo, numa sociedade coletivista como a nossa.
- O carrasco colocará um chapéu em cada prisioneiro, preto ou branco, como melhor lhe aprouver. A escolha poderá ser aleatória. Nenhum prisioneiro poderá ver nenhum chapéu, exceto os daqueles prisioneiros que estiverem à sua frente.
- O carrasco iniciará a execução pelo fim da fila, no prisioneiro de número 1. A cada prisioneiro perguntará a cor de seu chapéu; matará os que errarem, e poupará os que acertarem. Não é permitido a nenhum prisioneiro ouvir as respostas dos outros, nem saber o resultado. Isto é assunto do Estado.
- Na noite anterior à discussão, os prisioneiros poderão se reunir para discutir.
Como o leitor pode ver, em Infinitópolis a vida é mais difícil. Porém, graças a este ambiente hostil, a população evoluiu certas adaptações, que auxiliam a sobrevivência. Uma delas é excelente visão: o prisioneiro de número 1 consegue mesmo enxergar a fila toda, e cada um dos outros enxerga toda a parte que se estende à sua frente. Outra adaptação é a memória: cada infinitopolita consegue guardar uma quantidade ilimitada de informação.
Existe uma estratégia que os prisioneiros podem adotar, que garante mais do que 50% de sobrevivência?
(A questão de como definir porcentagens pro caso infinito é sutil; aqui há algumas possibilidades. Por exemplo, salvar todos os prisioneiros de número par seria admirável, mas ainda “50%” no sentido da Wikipedia. Salvar todos os prisioneiros, exceto aqueles cujo número é um quadrado perfeito, seria salvar “100%” — é, em conjuntos infinitos a probabilidade é um pouco diferente. Salvar todos exceto os de número primo também seria “100%”, mas um pouco pior que o 100% anterior, pois a densidade dos primos entre 1 e N é aproximadamente , para N grande, enquanto a densidade dos quadrados é . Tente apenas fazer o melhor que vc puder.)
Exploring the loopholes:
Já que você não restringiu isso, o primeiro prisioneiro poderia responder:
“Olha, seu carrasco, a cor do _meu_ chapéu eu não sei, mas as cores de todos os outros são: (…)”. Assim 9 sempre vivem e o primeiro sempre morre. 😛
Assumindo que as únicas respostas válidas sejam “branco” e “preto”:
Uma estratégia simples é que a cada grupo de dois prisioneiros, digamos Pn e Pn-1, Pn responda com a cor de Pn-1 (que ele vê) e Pn-1 responda com a cor que Pn disse. Assim, para 10 prisioneiros, pelo menos 5 seriam sempre salvos. Os outros 5 podem ou não se salvar, dependendo da distribuição de chapéus que o carrasco escolheu. Particularmente se ele gostar de chapéus alternados, todos os outros 5 morrem. 😛
Thiago, esses loopholes sempre escapam. E olha que eu tive o cuidado de incluir a cláusula “eles podem decidir uma estratégia de antemão” pra evitar críticas de que, sem nada combinado, nada poderia ser feito… :o)
A sua solução é boa, pois garante 50% de salvação, com os outros 50% sendo aleatórios (caso o carrasco escolha chapéus aleatoriamente). Bem melhor do que todo mundo falar coisas aleatórias! Porém, há uma estratégia ainda melhor para o caso finito.
Relacionadamente, vc consegue dar um limite *inferior* sobre quantos prisioneiros vão morrer, no pior caso? (De qualquer estratégia.)
Btw, há uma estratégia muito surpreendente para o caso infinito.
Consegui achar a solução ótima (ou me lembrar dela, porque acho que eu já conhecia o problema) para os prisioneiros de Problemópolis.
Quanto a Infinitópolis, se eles não podem trocar informação alguma (pois “Não é permitido a nenhum prisioneiro ouvir as respostas dos outros, nem saber o resultado”), como é que definir uma estratégia pode alterar alguma coisa no resultado? Dar um exemplo disso seria entregar a resposta de bandeja?
Sim, incrivelmente, há algo que pode ser combinado que altera substancialmente o resultado. Este algo depende de modo crucial do fato de serem infinitas pessoas.
Intuitivamente, quando há N pessoas na fila, a pessoa na posição k enxerga N-k pessoas, que, em algum sentido, é “menos informação” do que saber toda a fila de N. Porém, com infinitas, cada pessoa vê “infinita informação”, que é a mesma “quantidade” da fila toda. (A quantidade de aspas deve alertá-lo de que tudo isto é muito informal.)
Talvez eu tenha sido um pouco misleading no enunciado do problema, falando sobre as diversas noções de “tamanho” pra um subconjunto dos naturais. A estratégia que tenho em mente não usa muito estas noções combinatórias e quantitativas; é mais qualitativa.
Intuitivamente, me parece que apostar na cor com maior “densidade natural” seria a resposta. Cada prisioneiro diria que a cor de seu chapéu é aquela mais predominante no restante visível da fila. Restaria calcular a expectiva de pessoas salvas com essa política, ou simplesmente provar que mais de 50% se salvariam assim. Vou tentar trabalhar em cima disso…
Esta estratégia deve superar dois obstáculos: primeiro, nem todo subconjunto de N tem uma densidade natural, como o artigo da Wikipedia mostra. E, obviamente, se um subconjunto não tem densidade natural, tampouco tem o seu complementar. Uma solução seria trabalhar com densidades inferior ou superior.
Segundo, se o carrasco colocasse chapéus alternadamente brancos e pretos, ambos teriam densidade 1/2. Como decidir, neste caso? Note que qualquer decisão unânime neste caso resultaria em 50% de salvação.
Esta explicação é meio simples, mas explicar em palavras ficara dificil, eu mostrarei exemplos ate o 5º, você vai ver que todos do 2º ao último irão sobreviver, e o primeiro tera 50% de sobreviver, e neste caso, podemos supor também que todos os prisoneiros apenas sabem as cores e não sabem se morreram ou viveram.
Aqui vai :
Devemos associar valores para cada cor, exemplo:
P= Preto
B= Branco
Preto = 2
Branco = 1
Preto = Par
Branco = Impar
Vamos supor que o carrasco coloque essa ordem de cores:
1 2 3 4 5 6 7 8 9 10
P P B P B B P B B P
————-
1º vê (PBPBBPBBP) que equivale à (2+1+2+1+1+2+1+1+2) = Número ímpar.
Como Branco é igual à ímpar, 1º fala para o carrasco Branco (50% de acertar)
————-
2º então sabe que a soma de todos os números que ele vê* + o dele é = à um número ímpar porque o primeiro somou todos e respondeu ao carrasco Branco, ou seja, a soma é ímpar.
a = [Números que ele vê* = (1+2+1+1+2+1+1+2) = Ímpar]
b = [Ao próprio número = ele não sabe se é par ou ímpar]
a (3º ao 10º) + b (2º) + c (Nenhum) = 2º ao 10º [Soma de todos, que o 1º falou, ou seja ímpar]
a + b = Impar
Ímpar + b = Impar
b = Impar – Impar
b = Par
b = Preto
2º = Preto (100%)
————
3º então sabe que a soma de todos os números que ele vê* + o dos anteriores (sem contar o 1º) + o dele é = à um número ímpar porque o primeiro somou todos e respondeu ao carrasco Branco, ou seja, a soma é ímpar.
a = [Números que ele vê* = (2+1+1+2+1+1+2)= Par]
b = [Ao próprio número = ele não sabe se é par ou ímpar]
c = [Números anteriores# que ele ouviu (sem contar o 1º) = 2º = Par]
a (4º ao 10º) + b (3º) + c (2º) = 2º ao 10º [Soma de todos, que o 1º falou = ímpar]
a + b + c = Impar
Par + b + Par = Impar
b = Impar – 2 Par
b = Impar
b = Branco
3º = Branco (100%)
————
4º então sabe que a soma de todos os números que ele vê* + o dos anteriores (sem contar o 1º, neste caso apenas o 2º e o 3º) + o dele é = à um número ímpar porque o primeiro somou todos e respondeu ao carrasco Branco, ou seja, a soma é ímpar.
a = [Números que ele vê* = (1+1+2+1+1+2)= Par]
b = [Ao próprio número = ele não sabe se é par ou ímpar]
c = [Números anteriores# que ele ouviu (sem contar o 1º) = 2º + 3º = Ímpar]
a (5º ao 10º) + b (4º) + c (2º e 3º) = 2º ao 10º [Soma de todos, que o 1º falou, ou seja ímpar]
a + b + c = Impar
Par + b + Ímpar = Impar
b = Impar – Impar – Par
b = Par
b = Preto
4º = Preto (100%)
————
5º então sabe que a soma de todos os números que ele vê* + o dos anteriores (sem contar o 1º, neste caso apenas o 2º, o 3º e o 4º) + o dele é = à um número ímpar porque o primeiro somou todos e respondeu ao carrasco Branco, ou seja, a soma é ímpar.
a = [Números que ele vê* = (1+2+1+1+2)= Ímpar]
b = [Ao próprio número = ele não sabe se é par ou ímpar]
c = [Números anteriores# que ele ouviu (sem contar o 1º) = 2º + 3º + 4º = Ímpar]
a (6º ao 10º) + b (5º) + c (2º, 3º e 4º) = 2º ao 10º [Soma de todos, que o 1º falou, ou seja ímpar]
a + b + c = Impar
Impar + b + Ímpar = Impar
b = Impar – Impar – Impar
b = Impar
b = Branco
5º = Branco (100%)
————
E assim vai…
Caso tenha alguma dúvida deixa um comentario que eu explico, ou caso veja um erro comente para que o próximo que leia veja o erro, porque as chances de eu errar nas palavras é muito facil (de tanto falar de pares, impares, +1 +2)…
Podemos dizer que ficamos meia hora para resolver…
e mais 1 hora para poder explicar aqui 😀
Sucesso, é isso mesmo! :o)
Um follow-up interessante: vcs conseguem resolver o mesmo problema se os chapéus tiverem 3 possíveis cores diferentes (e.g. preto, branco e vermelho)? Ou k cores, em geral?
sim, tbm dá, eu fiz mas eskeci de colocar aqui… axo que eu me lembre era assim :
faz do msm jeito que eu fiz antes, mas substituindo os valores das cores para
Branco – 0
Vermelho – 2
Preto – 6
e o primeiro (o que vai ter 50% de morrer) conta os que ele vê
e diz qual o ultimo algarismo (unidades):
Vermelho – 0 e 2
Preto – 4 e 6
Branco – 8
o carrasco coloca BVPBBPBBVV
ex:o primeiro vê
VPBBPBBVV = 18, e fala Branco(8), entao o da frente ja sabe que a soma dele mais os 8 que esta vendo dará algum numero terminado em 8, então ele soma o que ele vê (PBBPBBVV) que = 16, entao o unico numero que pode chegar a 8 é 2=Vermelho, então diz Preto e se salva….