Dilema Do Prisioneiro

7
O problema do Dilema do Prisioneiro no Contexto de Teoria dos Jogos sob a forma de Java Applets Rosane Caldeira Depto. de Engenharia Elétrica, FEIS, UNESP 15385-000, Ilha Solteira, SP E-mail: [email protected] Sérgio Azevedo de Oliveira Depto. de Engenharia Elétrica, FEIS, UNESP 15385-000, Ilha Solteira, SP E-mail: [email protected] RESUMO O objetivo do trabalho é dar uma idéia geral a respeito do estudo da Teoria dos Jogos, bem como sua aplicação ao Problema do Dilema do Prisioneiro no contexto dos jogos não-cooperativos, apresentando-a na forma de um programa computacional. Como definição formal, tem-se que a Teoria dos Jogos é a análise matemática de qualquer situação que envolva um conflito de interesses com o intuito de indicar as melhores opções que, sob determinadas restrições, conduzirão aos objetivos desejados [2]. Desenvolvida como ferramenta para compreender comportamento econômico e depois estratégias nucleares, a Teoria dos Jogos é, atualmente, usada em diversos campos acadêmicos, como: Biologia, Ciência Política, Ética, Filosofia, Jornalismo, Psicologia e áreas de Ciência da Computação, Lógica, Matemática e Engenharia. Os jogos estudados pela Teoria dos Jogos são objetos matemáticos bem definidos. Para caracterizar um jogo é necessário descrever cinco elementos básicos, que são: os jogadores, o conjunto de regras do jogo, a estratégia do jogo, o resultado do jogo e a função de utilidade dos jogadores. Dependendo da forma como os jogadores se comportam os jogos subdividem-se em não-cooperativos e cooperativos. Em jogos não-cooperativos, cada jogador defende seus próprios interesses, montando estratégias para alcançar o maior benefício, enquanto que nos jogos cooperativos, o conjunto de ações possíveis está associado a grupos de jogadores (ou coalizões). Há duas formas de representação dos jogos que são a Forma Normal e a Forma Extensiva. A forma normal é uma matriz que mostra os jogadores, estratégias e pagamentos. Os pagamentos são registrados no seu interior. O primeiro número é o pagamento recebido pelo jogador da linha e o segundo é o pagamento para o jogador da coluna. Quando um jogo é apresentado, presume-se que cada jogador atue simultaneamente ou, pelo menos, sem conhecer a ação dos outros. Se os jogadores passam a ter alguma informação acerca das escolhas dos outros jogadores, o jogo é habitualmente apresentado na forma extensiva, que normalmente é especificada através de uma estrutura chamada árvore do jogo, como um grafo direto com número finito de nós N, conectados através de arcos que definem as ações dos jogadores. Cada vértice representa um ponto de decisão para um jogador. O jogador é especificado no vértice. Os pagamentos podem ser especificados na parte inferior da árvore. O dilema do prisioneiro é um exemplo clássico sobre Teoria dos Jogos não-cooperativos que será mostrado sob a forma normal de representação, assim como a simulação do jogo sob a forma de java applets (pequenos programas em Java) programado na linguagem de programação Java.

Transcript of Dilema Do Prisioneiro

Page 1: Dilema Do Prisioneiro

O problema do Dilema do Prisioneiro no Contexto de Teoria dos Jogos sob a forma de Java Applets

Rosane Caldeira Depto. de Engenharia Elétrica, FEIS, UNESP

15385-000, Ilha Solteira, SP E-mail: [email protected]

Sérgio Azevedo de Oliveira Depto. de Engenharia Elétrica, FEIS, UNESP

15385-000, Ilha Solteira, SP E-mail: [email protected]

RESUMO

O objetivo do trabalho é dar uma idéia geral a respeito do estudo da Teoria dos Jogos, bem como sua aplicação ao Problema do Dilema do Prisioneiro no contexto dos jogos não-cooperativos, apresentando-a na forma de um programa computacional. Como definição formal, tem-se que a Teoria dos Jogos é a análise matemática de qualquer situação que envolva um conflito de interesses com o intuito de indicar as melhores opções que, sob determinadas restrições, conduzirão aos objetivos desejados [2]. Desenvolvida como ferramenta para compreender comportamento econômico e depois estratégias nucleares, a Teoria dos Jogos é, atualmente, usada em diversos campos acadêmicos, como: Biologia, Ciência Política, Ética, Filosofia, Jornalismo, Psicologia e áreas de Ciência da Computação, Lógica, Matemática e Engenharia. Os jogos estudados pela Teoria dos Jogos são objetos matemáticos bem definidos. Para caracterizar um jogo é necessário descrever cinco elementos básicos, que são: os jogadores, o conjunto de regras do jogo, a estratégia do jogo, o resultado do jogo e a função de utilidade dos jogadores. Dependendo da forma como os jogadores se comportam os jogos subdividem-se em não-cooperativos e cooperativos. Em jogos não-cooperativos, cada jogador defende seus próprios interesses, montando estratégias para alcançar o maior benefício, enquanto que nos jogos cooperativos, o conjunto de ações possíveis está associado a grupos de jogadores (ou coalizões). Há duas formas de representação dos jogos que são a Forma Normal e a Forma Extensiva. A forma normal é uma matriz que mostra os jogadores, estratégias e pagamentos. Os pagamentos são registrados no seu interior. O primeiro número é o pagamento recebido pelo jogador da linha e o segundo é o pagamento para o jogador da coluna. Quando um jogo é apresentado, presume-se que cada jogador atue simultaneamente ou, pelo menos, sem conhecer a ação dos outros. Se os jogadores passam a ter alguma informação acerca das escolhas dos outros jogadores, o jogo é habitualmente apresentado na forma extensiva, que normalmente é especificada através de uma estrutura chamada árvore do jogo, como um grafo direto com número finito de nós N, conectados através de arcos que definem as ações dos jogadores. Cada vértice representa um ponto de decisão para um jogador. O jogador é especificado no vértice. Os pagamentos podem ser especificados na parte inferior da árvore. O dilema do prisioneiro é um exemplo clássico sobre Teoria dos Jogos não-cooperativos que será mostrado sob a forma normal de representação, assim como a simulação do jogo sob a forma de java applets (pequenos programas em Java) programado na linguagem de programação Java.

Page 2: Dilema Do Prisioneiro

Exposição do Problema Considere a seguinte situação:

Dois suspeitos acusados de uma violação da lei são mantidos em celas separadas. A cada um é dito que se ele confessar e o outro não, ele será libertado, enquanto que o outro irá para a prisão. Se ambos confessarem, ambos irão para a prisão. Se nenhum confessar, a polícia pode sentenciar ambos por acusações menos graves. Esta é a exposição do jogo do Dilema do Prisioneiro. Formulação do Problema

Jogo Estratégico (Strategic Game)

Um jogo estratégico consiste de um conjunto finito de jogadores, onde para cada jogador existe um conjunto não vazio e uma relação de preferência sobre o conjunto [1]. Definição:

onde,

J é um conjunto finito de jogadores; para cada jogador i J, existe um conjunto não-vazio Ai de ações disponíveis para o jogador i; para cada jogador i J existe uma relação de preferências sobre o conjunto

A = Ai que define uma função utilidade ui: A Ν que associa o ganho do jogador a cada perfil

i J de estratégias.

Exemplo Prático: Na situação em que dois ladrões, Al e Bob, são capturados e acusados de um mesmo crime. Presos em celas separadas e sem poderem se comunicar entre si, o delegado de plantão faz a seguinte proposta: cada um pode escolher entre confessar ou negar o crime. Se nenhum deles confessar, ambos serão submetidos a uma pena de 1 ano. Se os dois confessarem, então ambos terão pena de 5 anos. Mas se um confessar e o outro negar, então o que confessou será libertado e o outro será condenado a 10 anos de prisão (Figura 1).

Figura 1: Ilustração do Problema do Dilema do Prisioneiro.

Page 3: Dilema Do Prisioneiro

Definição do Problema:

J = {Al, Bob}

AAl = {confessar, negar}

ABob = {confessar, negar}

A = {(confessar, confessar), (confessar, negar), (negar, confessar), (negar, negar)}

Função de Utilidade de Al uAl = A Ν

uAl (confessar, confessar) = 5; uAl (confessar, negar) = 0; uAl (negar, confessar) = 10; uAl (negar, negar) = 1;

Função de Utilidade de Bob

uBob = A Ν uBob (confessar, confessar) = 5; uBob (confessar, negar) = 10; uBob (negar, confessar) = 0; uBob (negar, negar) = 1; Na Tabela 1, a seguir, é mostrado o problema do dilema do prisioneiro na forma de repesentação normal.

Tabela 1: Representação normal do Dilema do Prisioneiro.

Al

Bob

confessar Negar

confessar ( 5 , 5 ) ( 0 , 10 )

negar ( 10 , 0 ) ( 1 , 1 )

Solução Computacional

O ambiente de desenvolvimento Eclipse [4] foi adotado como IDE (Integrated Development Environment) por ser uma proposta de um consórcio de empresas renomadas como a IBM, Borland, entre outras que apóiam o uso de uma arquitetura aberta para construção de aplicações web e em aplicações integradas. Numa visão geral do ambiente de desenvolvimento utilizado na elaboração do programa computacional para o problema do dilema do prisioneiro, a Figura 2 mostra os seguintes frames:

1. O package explorer, como um visualizador simples e elegante dos projetos.

2. O editor de texto que denota as palavras-chave de Java TM.

3. O console, como terminal para entrada e saída de dados.

4. Outline que funciona como visualizador da estrutura interna dos arquivos.

Page 4: Dilema Do Prisioneiro

Figura 2: Visão Geral do Ambiente Eclipse.

Java foi criada pela Sun Microsystems e é introduzida como uma linguagem de programação orientada a objetos cujo princípio fundamental resume-se na palavra: portabilidade, ou seja, a capacidade de gerar produtos independente da plataforma de execução [3]. Java é simples, orientada a objetos, robusta, segura, distribuída e independente de plataforma devido a um componente chamado Java Virtual Machine ou JVM. O compilador traduz as instruções para um código neutro padronizado pela Sun, chamado “bytecode”. UML é a abreviação de Linguagem de Modelagem Unificada, uma notação para modelagem de sistemas, usando conceitos de orientação a objetos. UML padroniza artefatos e notação, mas ela não define um processo-padrão de desenvolvimento [6]. O presente trabalho foi feito sob um processo de desenvolvimento iterativo e incremental desde as fases de análise e projeto até as fases de construção e instalação assim como testes de validação e correções. Para criar o software de uma aplicação, é necessária uma descrição do problema e dos requisitos – o que é o problema e o que o sistema deve fazer. A análise enfatiza uma investigação do problema, de como uma solução é definida. Faz-se necessário também ter descrições de alto nível e descrições detalhadas da solução lógica e de como ela atende os requisitos e as restrições. A essência da análise e do projeto orientados a objetos é enfatizar a consideração de um domínio de problema e uma solução lógica, segundo a perspectiva de objetos. Há uma ênfase na descoberta e na descrição dos objetos ou conceitos do domínio do problema. Um sistema (do mundo real ou de software) é, de modo geral, excessivamente complexo, portanto é necessário decompô-lo em pedaços que podem ser representados como modelos que descrevem e abstraem aspectos essenciais do sistema [6]. No domínio do problema do Dilema do Prisioneiro, alguns dos conceitos incluem usuário, prisioneiro e estratégia. O programa computacional simula a execução do jogo “Dilema do Prisioneiro”, exemplo bastante disseminado no contexto da Teoria dos Jogos não-cooperativos.

Page 5: Dilema Do Prisioneiro

A interface gráfica do programa chama-se ENGTJ e possui a seguinte tela principal de simulação do jogo mostrada na Figura 3.

Figura 3: Tela inicial do ENGTJ.

No lado superior esquerdo da tela está o jogador Al, que pode escolher entre duas estratégias que são: confessar ou não-confessar o crime. E no lado direito estão as opções para o jogador Bob. Tanto para o jogador Al como o jogador Bob existe uma área de texto que mostra cada uma das estratégias do jogo. Antes de executar o jogo, é preciso realizar uma pré-configuração que consiste na escolha da estratégia desejada, do número de rodadas (interrogatórios) pelos quais os prisioneiros irão passar. Após a configuração dos parâmetros do jogo, então é hora de jogar. Ao selecionar o botão Jogar o jogo é processado e então serão exibidos os seguintes resultados: o cálculo de soma das penas, a média das penas e as penas em anos, meses e dias de cada prisioneiro, como mostra a Figura 4. O usuário poderá reiniciar o jogo até no máximo três vezes, pressionando o botão Reiniciar, assim o mesmo terá limitado as tentativas de “enganar” o programa para levar vantagem (conseguir menores penas) na escolha das opções. Depois de cumprido o total de três tentativas o jogo será encerrado e o usuário não poderá mais interagir com o programa. Contudo, o usuário poderá ler a moral do jogo na caixa de diálogo exibida na tela, conforme mostrado na Figura 5, onde são apresentadas as penas obtidas de acordo com a estratégia escolhida.

Page 6: Dilema Do Prisioneiro

Figura 4: Tela de processamento do ENGTJ.

Figura 5: Tela de explicação do ENGTJ. Assim o usuário pode inferir sobre os conceitos da Teoria dos Jogos apresentados pela simulação e ao pressionar o botão OK aparecerá a tela da Figura 6 finalizando aquele jogo.

Figura 6: Tela de finalização do jogo.

Page 7: Dilema Do Prisioneiro

No desenvolvimento da interface gráfica ENGTJ, está previsto outros jogos cooperativos e não-cooperativos que, em conjunto, dotarão o programa de outros conceitos da Teoria dos Jogos para a inferência do usuário, bem como de um Tutorial com as definições formais destes conceitos que poderão ser acessados a qualquer momento. Conclusões Situações de conflito, tomadas de decisão e desenvolvimento de estratégias reunem-se nesse fascinante campo de estudo chamado “Teoria dos Jogos”. Ao propor utilizar jogos de estratégia para analisar o mundo social, John von Neumann e Oskar Morgenstern [5] retornaram a uma prática milenar para entender e estudar o mundo. Ambos contribuíram para a criação de uma ciência com grande capacidade de generalização e precisão matemática. Na resolução de problemas de engenharia em geral existem diversas metodologias que podem ser aplicadas, e normalmente estas metodologias envolvem novos conceitos, às vezes, inéditos em termos de aplicação. A Teoria dos Jogos promete tornar-se um prisma poderoso sob o qual as relações humanas podem ser analisadas. Praticantes e acadêmicos, rodeados rotineiramente pelos conflitos e complexidade da sociedade somente têm a ganhar com essa visão. Ou, como disse certa vez o fundador da Atari, Alan Bushnell: “A área de negócios é um bom jogo – muita competição e um mínimo de regras”. Assim, neste trabalho, com o desenvolvimento da interface gráfica ENGTJ, o usuário pode inferir os conceitos relacionados a jogos não-cooperativos simulando diversas jogadas no exemplo do Problema do Dilema do Prisioneiro. Em sua forma final, com a inclusão de outros jogos não-cooperativos e cooperativos e de um tutorial sobre a Teoria dos Jogos, pretende-se que a interface gráfica permita ao usuário a inferência de novos conceitos desta teoria. Referências [1] H. J. Bortolossi; G. Garbagio; B. Sartini. “Uma introdução à teoria econômica dos jogos.”

COLÓQUIO BRASILEIRO DE MATEMÁTICA, 26, 2007, Rio de Janeiro. Colóquio Brasileiro de Matemática. Rio de Janeiro: Editora IMPA, p. 185, 2007.

[2] D. R. De Vasconcelos. “Análise de estratégias utilizando verificação formal de modelos.” Tese de

mestrado. Pontifícia Universidade Católica do Rio de Janeiro, 2003. [3] H. M. Deitel; P. J. Deitel. “Java: como programar.” Porto Alegre: Bookman Companhia, p. 1102,

2001 [4] E. Gonçalves. “Dominando Eclipse.” Rio de Janeiro: Editora Ciência Moderna, 2006. [5] J. Neumann; O. Morgenstern. “Theory of games and economics behaviour”. Cambridge: Harvard

University Press, 1972. [6] B. J. Rumbaugh. “Visual modeling with rational rose and UML”. New York: Addison Wesley

Longman, Inc., 1998.