Algorytmy: znajdź najlepszy stół do gry (problem stojącego gracza)

11

Przedmowa

To nie jest kod golfowy. Patrzę na ciekawy problem i mam nadzieję na uzyskanie komentarzy i sugestii od moich rówieśników. To pytanie nie dotyczy zliczania kart (wyłącznie), chodzi raczej o określenie najlepszej tabeli do włączenia na podstawie obserwacji. Załóżmy, że wykonasz implant mózgu, który sprawi, że najgorszy przypadek złożoności czas / przestrzeń (dla dowolnej architektury) będzie przenośny dla ludzkiego umysłu. Tak, to jest dość subiektywne. Załóż francuską talię bez użycia dzikich kart.

tło

Niedawno odwiedziłem kasyno i widziałem więcej osób postronnych niż graczy na stole i zastanawiałem się, jaki proces selekcji zamienił osoby postronne w zakłady bukmacherskie, biorąc pod uwagę, że większość osób postronnych miała środki do gry (żetony w ręku).

Scenariusz

Wchodzisz do kasyna. Widzisz n stołów grających w wariant blackjacka , a y gra w ponton . Każdy stół gra z nieokreśloną liczbą talii kart, próbując zaciemnić przewagę kasyna .

Każdy stół ma różny minimalny zakład. Twoja osoba ma walutę Z. Chcesz znaleźć tabelę, w której:

  • Używana jest najmniejsza liczba talii kart
  • Minimalny zakład jest wyższy niż stół z większą liczbą talii, ale chcesz zmaksymalizować liczbę gier, w które możesz grać z Z.
  • Straty netto na gracza są najniższe (zdaję sobie sprawę, że w większości odpowiedzi uważa się to za przypadkowy hałas, ale może to ilustrować zepsuty tasak)

Problem

Możesz magicznie obserwować każdy stół. Próbujesz X rund, aby podjąć decyzję. W tym celu każdy gracz potrzebuje nie więcej niż 30 sekund.

Jakiego algorytmu (-ów) byś użył (a) by rozwiązać ten problem i jaka jest ich najgorsza złożoność? Czy ty:

  • Zagraj w Pontoon lub Blackjack?
  • Który stół wybierasz?
  • Ile rund musisz obserwować (jaka jest wartość X), biorąc pod uwagę, że kasyno może użyć nie więcej niż 8 talii kart w każdej z gier? Każdy stół ma od 2 do 6 graczy.
  • Jak długo stałeś przy znalezieniu stołu?

Nazywam to „ problemem stałego gracza ” z powodu braku lepszego terminu. Uściślij ją.

Dodatkowy

Gdzie byłoby to przydatne, gdyby nie w kasynie?

Finał

Nie szukam magicznej kuli hazardu. Właśnie zauważyłem problem, który stał się kością, której mój mózg po prostu nie przestaje żuć. Szczególnie interesują mnie aplikacje wykraczające poza odwiedzanie kasyna.

Tim Post
źródło
Ciekawe pytanie. Nie jestem pewien, czy jest to odpowiednia strona do tego. Nie wiem, dlaczego i gdzie lepiej by to pasowało, po prostu nie czuje się tutaj. Być może się mylę ...
Walter
@ Walter - ja też nie byłem pewien. Istnieją witryny poświęcone różnym grom, ale użytkownicy tych witryn nie rozumieją złożoności ani nawet algorytmu. To zbyt „meta” dla SO, zastanawiam się, czy może tu znaleźć dom.
Tim Post
Nie wiem, to brzmi jak proces Poissona. Może ludzie w witrynie math.stackexchange.com mogą to wiedzieć.
Conrad Frix
@ Conrad, być może. Podejrzewam jednak, że ktoś tutaj może mieć jakieś pomysły, które zakończyły moją debatę na temat pytania :)
Tim Post
1
Przepraszam, ale nie widzę nawet problemu. Mogę tylko założyć, że problemem jest maksymalizacja wygranych, a zatem zadawane pytania nie są ważne dla algorytmu. Nie dbam o to, ile rund obserwuję, po prostu obserwuję, aż będę miał przewagę nad domem, a następnie popchnę tę krawędź. Jeśli zawsze mogę poczekać, aż będę mieć krawędź i zawsze przełączyć tabele na tabelę o najlepszej krawędzi, algorytm jest bardzo prosty.
Jeremy

Odpowiedzi:

2

Jeśli mogę jednocześnie badać wszystkie stoły nawet podczas gry:
Biorąc pod uwagę, że wszystkie gry postępują z tą samą prędkością dla uproszczenia ... (mogę to zmienić)


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

wciąż są tam jakieś błędy i nie uwzględniają WSZYSTKIEGO, ale rozumiesz, dokąd idę

jest o wiele większa szansa na wygraną

liczba graczy powinna być minimalnie trafna (więcej graczy == szybsze spalanie talii)

czy mniej graczy oznacza, że ​​mogę grać więcej rąk jednocześnie (wymagałoby to większej wagi pod względem liczby graczy)

dodatkowo próg zliczania można zdefiniować za pomocą miernika apetytu na ryzyko.

RobotHumans
źródło