Artigos > Data Science

Vingadores - Visualizando diversos futuros simultaneamente

Guilherme Silveira
Guilherme Silveira

Durante a principal batalha contra Thanos o Doutor Estranho decide qual caminho escolher: um entre 14 milhões de futuros, aquele que os levará a vitória, e o Nerdologia Tech discute o assunto.

Mas como ele é capaz de visualizar tudo ao mesmo tempo? Tentaremos resolver o problema com Python e Data Science. Demonstraremos como ele foi capaz de visualizar todos os resultados em menos de um minuto.

O trabalho original

Nosso trabalho é baseado naquele do Gabriel Schade. Os heróis são: Ironman, Spiderman, Nebula, Peter Quill, Drax, Mantis e Doctor Strange.

Cada round alguém bate em alguém: heróis batem em Thanos em uma de 3 estratégias. Depois Thanos em um dos heróis aleatoriamente. Isso gera 3 * 7 possibilidades. Com mais dois rounds são 3^2*7^2, possibilidades crescendo exponencialmente com o número de rounds.

O trabalho original faz o teste de uma heurística específica, que nos leva a resultados super interessantes. Aqui queremos ver o que o Doutor Estranho viu. Exatamente o que ele viu? Vamos ver... ele viu todos os futuros ao mesmo tempo? Poderia ser, mas para isso o computador teria que simular todas as possibilidades sequencialmente?

Nossa implementação

Simularemos diretamente todas as possibilidades ao mesmo tempo. Para isso faremos uso de um truque tradicional de algoritmos e maratonas de programação: nem todos os estados futuros são únicos. Por exemplo, para o primeiro round:

a) 1/3 de chance, homem de ferro bate com bônus 1 => Thanos não sente nem cócegas, continua com 500hp 
b) 1/3 de chance, homem de ferro bate com bônus 2 => Thanos não sente nem cócegas, continua com 500hp 
c) 1/3 de chance, homem de ferro bate com bônus 3 => Thanos fica com 450hp

Opa... esses 3 futuros podem ser resumidos em 2 estados: (66% 500hp, 33% 450hp). O mesmo ocorre com os estados futuros. Portanto podemos discretizar os futuros e armazená-los na memória junto com a probabilidade de cada um deles ocorrer. Agora a cada round rodamos um round ao mesmo tempo em todos os futuros ao mesmo tempo.

Aqui a visualização após um turno:

Aqui a visualização da distribuição de probabilidades após 2 turnos. Note que as probabilidades reforçam que os Avengers perdem energia mais rapidamente do que Thanos. As barras vão se aproximando do 0 no eixo dos Avengers, mas ficam muito próximas do 100% no eixo Thanos.

Aqui a visualização da distribuição de probabilidades após 10 turnos... Thanos se dando bem na maior parte dos casos:

Aqui a visualização da distribuição de probabilidades após 23 turnos:

Aqui a visualização da distribuição de probabilidades após 70 turnos:

O que o Doutor Estranho viu?

Aqui o vídeo de todos os futuros acontecendo ao mesmo tempo.

Note com o passar do tempo as chances dos Avengers causarem dano aumentando, mas a chance de ganharem fica praticamente invisível a olho nu. Enquanto isso a chance de perderem é muito óbvia:

Detectamos uma possibilidade de 0.00798543% dos Avengers ganharem a batalha. A chance é tão pequena que não aparece na renderização. Mas mesmo

Trabalho futuro:

O código pode ser atualizado para memorizar os melhores caminhos, ajudando o Doutor a percorrer o desejado.

O principal avanço seria efetuar uma busca de parâmetros iniciais (hp, ataque, defesa etc) que resultaria em exatamente 1 único sucesso e 14 milhões de estados futuros.

Desafios ao nosso estudo

Os gráficos usam surfaces para facilita a visualização mas deveriam ser pontos para ser mais realista, sem extrapolação. Os pontos, porém, não ficam fáceis de serem visualizados os personagens escolhidos pelo trabalho original, sinta-se a vontade para mudá-los e recomendar alterações.

As estatísticas dos personagens, sinta-se a vontade para mudá-las e recomendar alterações, a batalha é mesmo baseada em turnos? Em filmes, costuma ser, não há perda de poder de ataque e defesa a medida que um personagem perde energia, assumimos que o futuro é decidido somente pelo resultado de uma batalha e os pesonagens envolvidos na mesma.

Pode ser que o universo dos Vingadores não seja real, e o filme não represente o universo em que vivemos. Nesse caso é possível que os futuros encontrados não sejam futuros de verdade, mas sim um plot 3d de um jupyter notebook no cloud.

Todo o código fonte do projeto pode ser encontrado aqui no meu github.

Leia também:

Artigos de Tecnologia e Negócios > Data Science

Cursos profissionais de Data Science é na Alura, comece agora!

  • 1245 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

Premium

  • 1245 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$75
à vista R$900
Matricule-se

Premium Plus

  • 1245 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$100
à vista R$1.200
Matricule-se

Max

  • 1245 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$120
à vista R$1.440
Matricule-se
Conheça os Planos para Empresas

Acesso por 1 ano

Estude 24h/dia onde e quando quiser

Novos cursos todas as semanas