Zadałem ten problem w MathOverflow , bez zadowalającej odpowiedzi.
Rozważ następującą grę dla dwóch graczy, która jest uproszczeniem gry karcianej o nazwie Zwycięzca . (Poniższe sformułowanie zostało zaczerpnięte z komentarza Guillaume Brunerie na temat MathOverflow.)
Jest dwóch graczy A i B. Każdy gracz ma zestaw kart (podzbiór ), widoczne z obu graczy. Celem gry jest pozbycie się własnych kart. Pierwszy gracz zagrywa dowolną kartę na stole, a następnie drugi gracz musi zagrać (ściśle) większą kartę i tak dalej, dopóki jeden z graczy nie będzie mógł zagrać lub zdecyduje się spasować. Następnie karty na stole są odrzucane, a drugi gracz zaczyna od nowa, zagrywając dowolną kartę (po której nastąpi większa karta). I tak dalej, dopóki jeden z dwóch graczy nie skończy kart i nie wygra gry.
Chcę poznać najlepszą strategię dla graczy (jeśli uda mu się wygrać).
Formalna definicja
Oznacz przez konfiguracja gry, w której znajduje się zestaw kart pierwszego gracza , zestaw kart drugiego gracza to , a największa karta na stole to , gdzie oznacza, że na stole nie ma karty. Chciałbym algorytm obliczyć, podany, czy pierwszy gracz ma zwycięską strategię w konfiguracji .
Formalnie chciałbym, aby algorytm obliczył funkcję zdefiniowane w następujący sposób:
Pozwolić , .
Funkcjonować
gdzie
Złe strategie
Oto kilka niewłaściwych strategii:
- Zawsze graj najmniejszą kartą. Pozwolić, zwycięska strategia dla gracza A w konfiguracji jest grać w karty . Jeśli gracz A zagrywa kartę 1, przegrywa.
- Zagraj najmniejszą kartą, chyba że inny gracz ma tylko jedną kartę. Jest to strategia silniejsza niż strategia 1, ale jest również błędna. Pomyśl tylko o konfiguracji. Jeśli gracz A zastosuje strategię 2, przegra:, więc gracz A przegrywa.