Um Estudo Preliminar da Teoria dos Jogos --- Introdução à Rede e Introdução Social

Os jogos estão por toda parte, são tão pequenos quanto ir ao mercado todos os dias para comprar comida, marcar encontros com amigos em shopping centers, bem como conflitos de interesse entre países, dissuasão nuclear e assim por diante. A " Bíblia dos jogos " dá a definição de teoria dos jogos: nos referimos à teoria de que os animais usam as almas viciadas da natureza para formar uma teoria relativamente equilibrada no espaço esperado pelos tomadores de decisão, que é chamado de teoria dos jogos.

Três elementos da teoria dos jogos:

1 Participantes: Refere-se a indivíduos que tomam decisões relevantes no jogo. Devido à interdependência, há pelo menos dois jogadores no jogo.

2 O conjunto de estratégias de cada participante: refere-se a um plano completo ou critério de decisão, que define as ações que os participantes devem escolher em diferentes estados. Em vez de listar as ações opcionais do participante, descreva como as ações do participante dependem das ações que ele observou que outros participantes tomaram.

3 Função de utilidade: meça os benefícios obtidos pelos participantes em cada combinação de estratégias Os participantes estão sempre dispostos a escolher altos retornos em vez de baixos retornos.

Equilíbrio de Nash: se nenhum participante puder aumentar a renda agindo sozinho sob certas circunstâncias, essa combinação de estratégia será chamada de Equilíbrio de Nash.

Vamos discutir o dilema do prisioneiro especificamente:

O dilema do prisioneiro reflete que a melhor escolha para os indivíduos não é a melhor para os grupos. Ou em um grupo, os indivíduos fazem escolhas racionais, mas geralmente levam à irracionalidade coletiva. O domínio da solução ideal local não é a solução ideal global.

1. Tragédia nos Comuns

2. Problema de carona

3. Dilema do voluntariado

......

Os dilemas acima são essencialmente o mesmo dilema. A cooperação de todos pode produzir os melhores resultados, mas esse tipo de cooperação não atingiu o equilíbrio de Nash; portanto, a situação da cooperação não é estável.

A teoria dos jogos nos permite analisar o problema de uma perspectiva completamente nova e descobrir as causas reais. Ao mesmo tempo, podemos fornecer algumas novas estratégias para nos ajudar a resolver problemas.

1. A posição ganha é inalterada e a posição é alterada se você perder.

2. Introduza um participante adicional.

3. Forme algumas formas de reciprocidade.

4. Limite suas escolhas futuras, se você trapacear, não receberá nada.

5. Forneça confiança.

6. A formação de tal situação que nenhuma parte possa retirar-se da cooperação de forma independente, sem perdas.

7. Use pagamentos pontuais para criar e manter sinergia colaborativa.

8. Distribua efetivamente itens, responsabilidades, trabalho e punição, para que ninguém fique com ciúmes ou injustiça sobre esse resultado.

9. Divida o grupo que está jogando em pequenos grupos.

Pode resolver problemas na vida

——————————————————

Fui à Wikipedia e procurei o dilema do prisioneiro, que falava sobre a melhor estratégia para repetir o dilema do prisioneiro, foi muito inspirado e colo diretamente abaixo:

1. Simpatia: A condição mais importante é que a estratégia seja "amigável", o que significa que você não deve trair antes de seu oponente. Quase todas as estratégias de pontuação alta são amigáveis. Portanto, uma estratégia completamente egoísta é apenas por razões egoístas e nunca atingirá seu oponente primeiro.

2. Perdão: Outra qualidade de uma estratégia bem-sucedida é a necessidade de perdoar. Embora eles não retaliam, se o oponente não continuar a trair, eles recuarão para a cooperação repetidamente. Isso interrompeu a retaliação e contra-retaliação a longo prazo e maximizou os pontos marcados.

3. Sem ciúmes: a última qualidade é sem ciúmes, o que significa que você não se esforça para obter uma pontuação mais alta que o seu oponente ( isso também é impossível para uma estratégia "amigável", o que significa que uma estratégia "amigável" nunca pode ficar alta Devido à pontuação do oponente).

Pode-se ver que a atitude do povo chinês em relação ao povo desde os tempos antigos é realmente muito inspiradora para nós agora.

——————————————————

A seguir, é apresentada uma descrição da estratégia ideal de um jogo de busca com o jogo Nim:

Jogo de Nimm : Existem três pilhas de vários itens, e duas pessoas se revezam para retirar qualquer número de itens de uma pilha.Está estipulado que pelo menos um item deve ser retirado de cada vez.

Essa situação é a mais interessante. Está intimamente relacionada ao binário. Usamos ( a, b, c) para representar uma determinada situação. Primeiro, ( 0, 0, 0) é obviamente uma situação estranha. Não importa quem enfrenta uma situação estranha, ela inevitavelmente falhará. . A segunda situação singular é ( 0, n, n), desde que o oponente pegue o maior número possível de itens, acabará por levar a ( 0, 0, 0). Uma análise mais detalhada mostra que ( 1, 2, 3) também é uma situação singular: não importa como o oponente o tome, ele pode se tornar ( 0, n, n).

Nos algoritmos de computador, existe uma operação chamada adição módulo a bit 2, também denominada XOR. Utilizamos um símbolo ( +) para indicar esta operação. A diferença entre esta operação e a adição geral é 1 + 1 = 0. Look ( 1, 2, 3) por bits modulo dois resultado disso:

1 = binário 01

2 = binário 10

3 = 11 binário ( +)

0 = 00 binário (nota para não carregar)

O mesmo vale para situações singulares ( 0, n, n), e o resultado também é 0.

Qualquer situação singular ( a, b, c) tem a ( +) b ( +) c = 0.

Se nos deparamos com uma situação não singular ( a, b, c), como podemos nos tornar uma situação singular? Assumindo a <b <c, só precisamos alterar c para a ( +) b, porque existem os seguintes resultados de cálculo : a ( +) b ( +) (a ( +) b) = (a ( +) a) ( +) (b ( +) b) = 0 ( +) 0 = 0. Para transformar c em a ( +) b, basta subtrair c- ( a ( +) b) de c .

Exemplo 1: ( 14, 21, 39), 14 ( +) 21 = 27, 39-27 = 12, portanto, tirar 12 objetos de 39 pode alcançar uma situação bizarra ( 14, 21, 27).

Exemplo 2: ( 55, 81, 121), 55 ( +) 81 = 102, 121-102 = 19, portanto, pegar 19 itens de 121 cria uma situação estranha ( 55, 81, 102).

Exemplo 3: ( 29, 45, 58), 29 ( +) 45 = 48, 58-48 = 10, tire 10 de 58 e torne-se ( 29, 45, 48).

Exemplo 4: Vamos dar uma olhada no jogo real:

A : (7,8,9) -> (1,8,9) situação estranha

B : (1,8,9) -> (1,8,4)

A : (1,8,4) -> (1,5,4) situação estranha

B : (1,5,4) -> (1,4,4)

A : (1,4,4) -> (0,4,4) situação estranha

B : (0,4,4) -> (0,4,2)

A : (0,4,2) -> (0,2,2) situação estranha

B : (0,2,2) -> (0,2,1)

A : (0,2,1) -> (0,1,1) situação estranha

B : (0,1,1) -> (0,1,0)

A : (0,1,0) -> (0,0,0) situação estranha

Uma vitória.

Para este grupo popular "Fetch Stone Game",

19 010011

7 000111

5 000101

3 000011

010010 (18) 10

50-18=32

Portanto, pela primeira vez, apenas 32 pedras podem ser retiradas da quinta pilha de pedras , de modo que, após receber 32 pedras , é uma situação estranha, ou seja, o resultado da operação XOR é 0.

A seguir, é apresentado um programa em C para fazer um jogo de pedra

N pilhas de pedras , as duas (jogador e computador ) se revezam em qualquer pilha , o computador leva primeiro e a última pedra vence .

#include <stdio.h>

não assinado int a [11];

int n;

void init1 ()

{int i;

printf ("entrada n (2--10):"); scanf ("% d", & n);

para (i = 1; i <= n; i ++)

{printf ("número da entrada% d Número de pedras: \ n", i);

scanf ("% d", & a [i]);}

}

status nulo ()

{int i;

printf ("Agora restante: \ n");

para (i = 1; i <= n; i ++) printf ("No.% d rem:% u \ n", i, a [i]);

}

unsigned int sum1 ()

{unsigned int s; int i;

s = 0;

para (i = 1; i <= n; i ++) s + = a [i];

retorno s;

}

unsigned int xorall ()

{unsigned int s; int i;

s = 0;

para (i = 1; i <= n; i ++) s ^ = a [i];

retorno s;

}

a Principal()

{unsigned int t;

int i, s, e;

init1 ();

while (sum1 ())

{if (xorall () == 0)

{para (i = 1; i <= n; i ++)

se (a [i]> 0)

{printf ("o computador pega 1 do No.% d \ n", i);

a [i] -; vá para loop2;}

}

outro

para (i = 1; i <= n; i ++)

{s = a [i] - (xorall () ^ a [i]);

se (s> 0)

{printf ("o computador tira% u do No.% d \ n", s, i);

a [i] ^ = xorall ();

vá para loop2;}

}

loop2 :;

if (soma1 () == 0)

{printf ("vitória do computador!"); quebrar;}

status ();

enquanto (1)

{printf ("Insira sua seleção

(exemplo 1 2 significa tirar 2 do número 1): \ n ");

scanf ("% d% u", & e, & t);

if ((e> = 1) && (e <= n) && (a [e]> = t))

{a [e] - = t; vá para loop1;}

outro

printf ("erro de dados! reinsira ... \ n");

}

loop1:;

if (soma1 () == 0)

{printf ("você venceu!"); quebrar;}

}

}

 

Acho que você gosta

Origin www.cnblogs.com/owczhlol/p/12671118.html
Recomendado
Clasificación