Algoritmos: Encontre a melhor mesa para jogar (problema do jogador em pé)

11

Prefácio

Este não é um código de golfe. Estou olhando para um problema interessante e esperando solicitar comentários e sugestões de meus colegas. Esta questão não se refere à contagem de cartas (exclusivamente), mas sim à determinação da melhor tabela a ser realizada com base na observação. Suponha que você deseje algum tipo de implante cerebral que torne a pior complexidade de tempo / espaço (em qualquer arquitetura) portátil para a mente humana. Sim, isso é bastante subjetivo. Suponha um baralho francês sem o uso de curingas.

fundo

Visitei recentemente um cassino e vi mais espectadores do que jogadores por mesa e me perguntei qual processo de seleção transformou os espectadores em apostadores, já que a maioria dos espectadores tinha dinheiro para jogar (fichas na mão).

Cenário

Você entra em um cassino. Você vê n tabelas jogando uma variante do Blackjack , com y jogando Pontoon . Cada mesa joga com uma quantidade indeterminada de baralhos de cartas, em um esforço para ofuscar a vantagem da casa .

Cada mesa tem uma aposta mínima variável. Você tem moeda Z na sua pessoa. Você deseja encontrar a tabela em que:

  • A menor quantidade de baralhos de cartas está em uso
  • A aposta mínima é maior que uma mesa usando mais decks, mas você deseja maximizar a quantidade de jogos que pode jogar com Z.
  • As perdas líquidas, por jogador, são mais baixas (percebo que, na maioria das respostas, é considerado um ruído incidental, mas pode ilustrar um embaralhador quebrado)

Problema

Você pode observar magicamente todas as mesas. Você tem X rodadas para provar, para basear sua decisão. Para esse fim, todo jogador não leva mais que 30 segundos para jogar.

Que algoritmo (s) você usaria para resolver esse problema e qual é a pior complexidade deles? Você:

  • Tocar Pontoon ou Blackjack?
  • Qual tabela você seleciona?
  • Quantas rodadas você precisa observar (qual é o valor de X), considerando que o cassino não pode usar mais do que 8 baralhos de cartas para cada jogo? Cada mesa tem entre 2 e 6 jogadores.
  • Quanto tempo você ficou parado enquanto encontrava uma mesa?

Estou chamando isso de " problema do jogador em pé " por falta de um termo melhor. Por favor, sinta-se livre para refiná-lo.

Adicional

Onde isso seria útil se não estivesse em um cassino?

Final

Não estou procurando uma bala mágica de jogo. Acabei de notar um problema que se tornou um osso que meu cérebro simplesmente não para de mastigar. Estou especialmente interessado em aplicativos que vão muito além de visitar um cassino.

Tim Post
fonte
Quesiton interessante. Não tenho certeza se este é o site certo para isso. Não sei por que ou onde seria melhor, simplesmente não parece bem aqui. Talvez eu esteja errado ...
Walter
@ Walter - Eu também não tinha certeza. Existem sites dedicados a vários jogos, mas não é provável que os usuários desses sites entendam a complexidade ou mesmo o que é um algoritmo. É muito 'meta' para SO, estou me perguntando se ele pode encontrar uma casa aqui.
Tim Post
Não sei, parece um processo de Poisson. Talvez as pessoas em math.stackexchange.com possam saber.
Conrad Frix
@Conrad, talvez. No entanto, eu suspeito que alguém aqui possa ter algumas idéias, que encerraram meu debate sobre a pergunta em primeiro lugar :) #
1001 Tim Tim
1
Desculpe, mas eu nem vejo uma declaração de problema. Só posso supor que o problema é maximizar os ganhos, então as perguntas que você faz não são importantes para o algoritmo. Não ligo para quantas rodadas observo, apenas observo até ter uma vantagem contra a casa e depois a empurro. Se eu sempre posso esperar até ter uma vantagem e sempre alternar as tabelas para a tabela com a melhor vantagem, o algoritmo é muito simples.
Jeremy

Respostas:

2

Se eu puder examinar simultaneamente todas as mesas enquanto estiver jogando, então:
Dado que todos os jogos progridem na mesma velocidade para simplificar ... (eu poderia ajustar isso)


while(not satisfied with winnings)
 keepcurrenttable == 1 || Wait for positive count threshold on any one table  
  if Z/(min bet)>%chance of win*payout  
    next  
  else  
    Play hand according to standard counting rules.  
  endif
if (%chance of win on another table*payout on another table > same for current) && Z/(min bet)>%chance of win*payout
  change tables  
 elseif currenttable %chance of win*payout >
  keepcurrenttable=1
 else
  keepcurrenttable=0
 endif
next

ainda tem alguns bugs lá e não conta TUDO, mas você chega onde eu vou

há muito mais% de chance de ganhar

o número de jogadores deve ser minimamente pertinente (mais jogadores == gravação mais rápida nos decks)

menos jogadores significam que eu posso jogar mais mãos simultaneamente? (isso exigiria um peso maior na contagem de jogadores)

Além disso, o limiar de contagem pode ser definido com um medidor de apetite ao risco.

RobotHumans
fonte