Ho chiesto questo problema in MathOverflow , senza alcuna risposta soddisfacente.
Considera il seguente gioco a due giocatori, che è una semplificazione del gioco di carte chiamato Vincitore . (La seguente formulazione è stata presa da un commento di Guillaume Brunerie su MathOverflow.)
Ci sono due giocatori A e B. Ogni giocatore ha un mazzo di carte (un sottoinsieme di ), visibili da entrambi i giocatori. Lo scopo del gioco è sbarazzarsi delle proprie carte. Il primo giocatore gioca qualsiasi carta sul tavolo, quindi l'altro giocatore deve giocare una carta (rigorosamente) più grande, e così via fino a quando uno dei giocatori non può giocare o decide di passare. Quindi le carte sul tavolo vengono scartate e l'altro giocatore ricomincia giocando una qualsiasi carta (che sarà seguita da una carta più grande). E così via fino a quando uno dei due giocatori esaurisce le carte e vince la partita.
Voglio conoscere la migliore strategia per i giocatori (se può vincere).
Definizione formale
Indica con la configurazione del gioco in cui l'insieme delle carte del primo giocatore è , l'insieme delle carte del secondo giocatore è e la carta più grande sul tavolo è , dove significa che non ci sono carte sul tavolo. Vorrei calcolare un algoritmo, dato , se il primo giocatore ha una strategia vincente nella configurazione .
Formalmente, vorrei un algoritmo per calcolare la funzione definita come segue:
Lascia che , .
Funzione
dove
Strategie sbagliate
Ecco alcune strategie sbagliate:
- Gioca sempre la carta più piccola. Sia , la strategia vincente per il giocatore A nella configurazione è giocare la carta . Se il giocatore A gioca la carta 1, perderà.
- Gioca la carta più piccola a meno che l'altro giocatore non abbia una sola carta. È una strategia più forte della strategia 1, ma è anche sbagliata. Pensa solo alla configurazione . Se il giocatore A usa la strategia 2, perderà: , quindi il giocatore A perde.