João Araujo
Dr. en Informatique, Université de Versailles, França.

Dilema dos prisioneiros

G. Bauer foi convocado pelo C. Nascimento para ajudar no interrogatório de dois supostos terroristas. Quando se apresentou, G. Bauer perguntou “Esta linha é segura? Quero 24 horas”, C. Nascimento foi logo dizendo: ”24 horas, seu G. Bauer? Então o senhor quer 24 horas… o senhor é um fanfarrão, seu G. Bauer. O senhor tem é 24 minutos!” O tempo passa e G. Bauer, apesar de usar técnicas avançadas de interrogatório como quebra de falanges e afogamento sustentado, depois muito tempo de entrevista com os dois, não conseguiu obter nenhuma confissão. O tempo já está em 21min! Temendo a reação de C. Nascimento, G. Bauer, apesar de relutar a essas modernidades, concordou, finalmente, em usar uma técnica mais psicológica, depois de consultar a Wikipedia

Os prisioneiros foram separados e oferecido um acordo a cada um deles: se aceitassem depor contra o outro, teriam liberdade imediata e o outro, se não confessasse, pegaria 10 anos de prisão em Bangu 1. Se ambos ficarem em silêncio, cada um deles será condenado a 1 ano de prisão. Se ambos confessarem, os dois pegam 5 anos. A decisão tem que ser tomada sem saber a decisão do outro. Qual é a melhor decisão?

A situação pode ser resumida no quadro seguinte:

Prisioneiro B fica em silêncioPrisioneiro B trai
Prisioneiro A fica em silêncioCada um pega 1 anoA fica preso 10 anos. B fica livre
Prisioneiro A trai A fica livre.B fica preso 10 anosAmbos ficam 5 anos na prisão

Considere que este problema é proposto diversas vezes aos prisioneiros. Faça um programa que simule uma série de decisões dos prisioneiros para tentar avaliar qual a melhor estratégia.

Estratégias

O computador deve escolher uma estratégia aleatória. Você entra sua decisão pelo teclado, sem saber qual estratégia o computador está usando

Estratégia do Computador
1 sempre trair
2 sempre cooperar
3 trair e cooperar alternativamente
4 cooperar e trair alternativamente
5 cooperar até ser traído, então trair sempre
6 cooperar na primeira jogada e depois repetir a última decisão do outro
7 Usar a estratégia 6, mas com uma probabilidade aleatória entre 1% e 5% perdoar a traição do outro e cooperar
n invente outras estratégias

A sua entrada será pelo teclado, sendo interativa com o computador, ou seja, entrando 0 você trai, entrando 1, permanece em silêncio. A cada entrada, o computador coloca as duas respostas, sua e dele, e dá o resultado em anos de prisão para cada um, além do acumulado dos diversos jogos. Quando entrado o valor 9, o program pára.

Cada rodada deve ser guardada numa lista encadeada. Quando entrado o valor 3, deve ser mostrada na tela a seqüência anterior de jogadas, percorrendo esta lista do primeiro ao último lance. Quando decidida uma estratégia a ser seguida pelo computador, deve-se usar um ponteiro para função e não um switch para chamar a função (item 5.11 do livro texto).

Linha de comando

O programa deve poder ser chamado com um parâmetro -h, que fornece as regras do jogo, e/ou um parâmetro -n, onde n é o número da estratégia que ele vai usar. O parâmetro -e mostra as estratégias programadas e seus números de referência.

Bônus

Use o parâmetro -p para escolher uma das estratégias numeradas. Assim, se for digitado -p o programa usa uma estratégia de sua escolha (que não sabemos qual é) para jogar. Serão feitas entre 20 e 100 rodadas numa disputa entre todos os alunos da turma, num esquema cada por si e contra todos. Aquele que conseguir a estratégia mais eficiente na disputa com a turma ganha 0,5 pt na média final.

Se você não tem idéia sobre onde começar… Deve estudar o livro. Não adianta chorar pelo leite derramado. A não ser que o leite seja do G. Bauer… Aí você está ferrado!

Resultado

Lys ganhou meio ponto na média, por escolher a estratégia vencedora da turma.

Classificação final depois de 20 rodadas:

Lys: 256 anos. (colaborar até ser traído, então trair sempre)

Patrick e Rodrigo Ferreira com 347 anos. (colaborar e repetir última jogada do adversário com chances de perdão)

Wellington com 385 anos. (Trair sempre)

Rodrigo Soares com 622 anos e (Trair e colaborar, alternativamente)

Uillas com 659 anos. (Colaborar e trair, alternativamente).

Outros ou erraram na programação de sua estratégia, preferiram não participar ou simplesmente escolhiam uma estratégia sem executar nenhum código.

trabalho_2007-2.txt · Última modificação: 10/12/2007 09:30:30 (edição externa)
geomatica Creative Commons License Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0