Permutazione gioco redux


20

Questa è una riaffermazione di una domanda precedente .

Considera il seguente gioco imparziale perfetto tra due giocatori, Alice e Bob. Ai giocatori viene data una permutazione degli interi da 1 a n. Ad ogni turno, se la permutazione attuale aumenta, il giocatore attuale perde e vince l'altro giocatore; in caso contrario, il giocatore corrente rimuove uno dei numeri e il gioco passa all'altro giocatore. Alice gioca per prima. Per esempio:

  • (1,2,3,4) - Bob vince immediatamente, per definizione.

  • (4,3,2,1) - Alice vince dopo tre turni, indipendentemente dal modo in cui qualcuno gioca.

  • (2,4,1,3) - Bob può vincere al suo primo turno, indipendentemente da come Alice giochi.

  • (1,3,2,4) - Alice vince immediatamente rimuovendo il 2 o il 3; in caso contrario, Bob può vincere al suo primo turno rimuovendo il 2 o il 3.

  • (1,4,3,2) - Alice alla fine vince se prende l'1 nel suo primo turno; in caso contrario, Bob può vincere al suo primo turno non rimuovendo l'1.

Esiste un algoritmo a tempo polinomiale per determinare quale giocatore vince questo gioco da una data permutazione iniziale, presupponendo un gioco perfetto ? Più in generale, poiché si tratta di un gioco imparziale standard, ogni permutazione ha un valore Sprague-Grundy ; ad esempio, (1,2,4,3) ha valore * 1 e (1,3,2) ha valore * 2. Quanto è difficile calcolare questo valore?

L'ovvio algoritmo di backtracking viene eseguito nel tempo O (n!), Sebbene questo possa essere ridotto al tempo O(2npoly(n)) tramite la programmazione dinamica.


4
Mi sembra che l'algoritmo ingenuo venga eseguito nel tempo O (2 ^ n⋅poly (n)).
Tsuyoshi Ito,

Dai tuoi esempi, è ovvio che Alice vince sempre se la sequenza è decrescente e Bob vince sempre se la sequenza è crescente. Questo problema mi ricorda di analizzare gli algoritmi di ordinamento, che sono stati ampiamente studiati e consentono di utilizzare un ampio arsenale di strumenti.
Chazisop,

1
@chazisop: "Alice vince sempre se la sequenza sta scendendo": questo è il caso se e solo se n è pari.
Tsuyoshi Ito,

@ Jɛ ff E nel caso 3, come vince Bob nel suo primo turno?
Suresh Venkat,

2
@Suresh: Nel caso di (2,4,1,3), la rappresentazione grafica è il grafico lineare su 4 vertici (2-1-4-3). Se Alice rimuove un nodo finale, questo lascia il grafico lineare su 3 vertici; Bob vince rimuovendo il vertice centrale (quindi 3 ha una risposta di 1 e 2 ha una risposta di 4). Se Alice rimuove un nodo interno, questo lascia due vertici collegati e un nodo isolato; Bob vince rimuovendo uno dei due vertici collegati (quindi 1 ha una risposta di 3 o 4 e 4 ha una risposta di 1 o 2).
mjqxxxx,

Risposte:


7

Il "gioco di permutazione" è isomorfo al seguente gioco:

Disconnect. Giocatori rimuovono alternativamente vertici di un grafo . Il giocatore che produce un grafico completamente disconnesso (cioè un grafico senza bordi) è il vincitore.G

Il grafico corrispondente ad una particolare permutazione iniziale π S n contiene solo quei bordi ( i , j ) per i quali i - j e π ( i ) - π ( j ) hanno segni opposti. Cioè, ogni coppia di numeri nel tortoGππSn(i,j)ijπ(i)π(j)l'ordine nella permutazione è associato a un bordo. Chiaramente le mosse consentite sono isomorfe a quelle nel gioco di permutazione (rimuovi un numero = rimuovi un nodo) e anche le condizioni di vincita sono isomorfe (nessuna coppia in ordine decrescente = nessun bordo rimanente).

Una vista complementare si ottiene considerando la possibilità di giocare un gioco "doppio" sul complemento grafico , che contiene quei bordi ( i , j ) per i quali i e j sono nell'ordine corretto nella permutazione. Il doppio gioco da disconnettere è:Gπc=GR(π)(i,j)ij

Reconnect. Giocatori rimuovono alternativamente vertici di un grafo . Il giocatore che produce un grafico completo è il vincitore.G

A seconda della particolare permutazione, uno di questi giochi può sembrare più semplice dell'altro da analizzare. Il vantaggio della rappresentazione grafica è che è chiaro che i componenti disconnessi del grafico sono giochi separati e quindi si spera in una certa riduzione della complessità. Rende anche più evidenti le simmetrie della posizione. Sfortunatamente, le condizioni vincenti non sono standard ... il gioco di permutazione finirà sempre prima che tutte le mosse siano esaurite, dandogli qualcosa di un personaggio misere . In particolare, il valore nim non può essere calcolato come somma nim (XOR binario) dei valori nim dei componenti disconnessi.


Per Disconnect, non è difficile vedere che per qualsiasi grafico e qualsiasi n pari , il gioco G ˉ K n è equivalente a G (dove ˉ K n è il grafico senza bordi su n vertici). Per dimostrarlo, dobbiamo dimostrare che la somma disgiuntiva G + G ˉ K n è una vittoria per secondo giocatore. La prova è per induzione su | G | + n . Se GGnGK¯nGK¯nnG+GK¯n|G|+nGè senza bordi, quindi il primo giocatore perde immediatamente (entrambi i giochi sono finiti). Altrimenti, il primo giocatore può muovere in una delle , e il secondo giocatore può copiare la sua mossa nell'altra (riducendo a G + G ¯ K n con | G | = | G | - 1 ); oppure, se n 2 , il primo giocatore può muovere nel pezzo disconnesso, e il secondo giocatore può fare lo stesso (riducendo a G + G ˉ K n - 2 ).GG+GKn¯|G|=|G|1n2G+GK¯n2

Questo mostra che ogni grafo è equivalente a H K p , dove H è la parte di G senza vertici scollegati, e p = 0 o 1 è la parità del numero di vertici disconnessi G . Tutti i giochi in una classe di equivalenza hanno lo stesso valore NIM, e inoltre, i punti di equivalenza relazione all'operazione dell'Unione: se G ~ H K p e G ' ~ H 'K p ' allora GGHKpHGp=01GGHKpGHKp . Inoltre, si può vedere che i giochi in [ H K 0 ] e [ H K 1 ] hanno valori nim diversi a meno che H nonsia il grafico null: quando si gioca a H + H K 1 , il primo giocatore può prendere l'isolato vertice, lasciando H + H , quindi copia le mosse del secondo giocatore da quel momento in poi.GG(HH)Kpp[HK0][HK1]HH+HK1H+H

Non conosco alcun risultato di decomposizione correlato per Riconnetti.


Due tipi speciali di permutazioni corrispondono a giochi heap particolarmente semplici.

  1. La prima è una sequenza crescente di discese , ad esempio . Quando π assume questa forma, il grafico G π è un'unione di cricche disgiunte e il gioco di Disconnect si riduce a un gioco a heap: i giocatori rimuovono alternativamente un singolo bean da un heap fino a quando tutti i heap hanno dimensioni 1 .32165487πGπ1
  2. La seconda è una sequenza discendente di salite , ad esempio . Quando π assume questa forma, il grafico G c π è un'unione di cricche disgiunte e il gioco di Ricollegamento si riduce a un gioco a cumuli: i giocatori rimuovono alternativamente un singolo fagiolo da un mucchio fino a quando rimane solo un mucchio .78456123πGπc

Un piccolo pensiero mostra che questi due diversi giochi sui cumuli (possiamo chiamarli 1-Heaps e One-Heap , a rischio di confusione) sono, in effetti, essi stessi isomorfi. Entrambi possono essere rappresentati da un gioco su un diagramma Young (come inizialmente proposto da @domotorp) in cui i giocatori si alternano rimuovendo un quadrato in basso a destra fino a quando rimane una sola riga. Questo è ovviamente lo stesso gioco di 1-Heap quando le colonne corrispondono a heap e lo stesso gioco di One-Heap quando le righe corrispondono a heap.

Un elemento chiave di questo gioco, che si estende a Disconnect e Reconnect, è che la durata è correlata allo stato del gioco finale in modo semplice. Quando è il tuo turno, vincerai se il gioco ha un numero dispari di mosse rimanenti, inclusa quella che stai per fare. Poiché ogni singolo movimento viene rimosso da un solo quadrato, ciò significa che il numero di quadrati rimanenti alla fine del gioco deve avere la parità opposta rispetto a quella attuale. Inoltre, il numero di quadrati avrà la stessa parità in tutti i tuoi turni; così sai fin dall'inizio quale parità vuoi avere il conteggio finale. Possiamo chiamare i due giocatori Eva e Otto, a seconda che il conteggio finale debba essere pari o dispari affinché possano vincere. Eva si muove sempre in stati con parità dispari e produce stati con parità pari, e Otto è l'opposto.

Nella sua risposta, @PeterShor fornisce un'analisi completa di One-Heap. Senza ripetere la prova, il risultato è il seguente:

  • Otto ama heaps e 2- heaps e può tollerare un singolo heap più grande. Vince se riesce a fare heap di tutte le dimensioni tranne una 2 , almeno senza dare a Eva una vittoria immediata del modulo ( 1 , n ) . Una strategia ottimale per Otto è quella di prendere sempre dal secondo heap più grande, tranne quando lo stato è ( 1 , 1 , n > 1 ) , quando dovrebbe prendere dal n . Otto perderà se ci sono troppi fagioli in grossi cumuli per cominciare.122(1,n)(1,1,n>1)n
  • A Eva non piace heaps. Vince se riesce a fare heap di tutte le dimensioni 2 . Una strategia ottimale per Eva è quella di prendere sempre da un 1- heap, se ce ne sono, e non prendere mai da un 2- heap. Eve perderà se ci sono troppi 1- heap per iniziare.12121

Come notato, questo fornisce strategie ottimali anche per 1-Heap, anche se sono un po 'più difficili da pronunciare (e potrei fare un errore nella "traduzione" da primaria a doppia). Nel gioco di 1-Heaps:

  • 11(1,1,,1,2)
  • A Eva non piace il divario tra il cumulo più grande e il secondo più grande. Vince se riesce a fare in modo che i due cumuli più grandi abbiano le stesse dimensioni. Una strategia ottimale per Eva è quella di prendere sempre dal mucchio più grande, se è unico, e mai se ci sono esattamente due delle dimensioni più grandi.

Come osserva @PeterShor, non è chiaro come (o se) queste analisi possano essere estese ai giochi più generali di Disconnect e Reconnect.


2
Penso che questo tipo di giochi sia collettivamente definito "giochi di eliminazione dei vertici". Ma sono d'accordo con te sul fatto che la condizione vincente è piuttosto non standard in quanto si riferisce alla proprietà globale del grafico anziché a proprietà locali come il grado di un vertice.
Tsuyoshi Ito,

4
Il grafico costruito è chiamato un grafico di permutazione ( en.wikipedia.org/wiki/Permutation_graph ) in letteratura. Alcune proprietà strutturali potrebbero aiutare.
Yoshio Okamoto,

1
@Yoshio: è un buon punto. Il gioco di permutazione è isomorfo al gioco grafico, ma i grafici di partenza non sono arbitrari. Quindi, anche se il gioco grafico generale è difficile da analizzare, è possibile che, se limitato a questa sottoclasse di grafici, diventi più semplice.
mjqxxxx,

2
D'altra parte, la formulazione più generale potrebbe essere più facile da dimostrare difficile. Le varianti dei giochi di eliminazione dei vertici sono note per essere difficili da PSPACE, ad esempio: emis.ams.org/journals/INTEGERS/papers/a31int2005/a31int2005.pdf
Jeffε

2
Ho aggiunto una domanda su questo tipo di gioco specificatamente su math.SE ( math.stackexchange.com/questions/95895/… ). Per inciso, poiché i grafici di permutazione sono grafici a cerchio, una formulazione alternativa è la seguente: I giocatori a turno rimuovono gli accordi da un set iniziale; il giocatore che lascia una serie di accordi non intersecanti è il vincitore.
mjqxxxx,

7

ihihihisono 3,3,2,1. Ho provato a dare l'analisi di questo gioco nei commenti alla risposta di domotorp, ma (a) ho sbagliato e (b) non c'è abbastanza spazio nei commenti per dare una prova reale.

st=i2,hi>2hi2

  1. ts2

  2. ts

ts

Per finire dimostrando che ciò è corretto, dobbiamo dimostrare che da qualsiasi posizione che non sia nella categoria (1) o (2), il primo giocatore può in una mossa raggiungere una posizione nella categoria (1) o (2), o vinci direttamente.

Esistono due casi:

  1. ts1s>0tss=0ts

  2. ts1tsts2

Ho provato a generalizzare questa strategia al gioco originale e non ho capito come farlo.


1
Nella mia risposta, ho notato che avere una soluzione a questo caso speciale risolve anche il caso speciale con una serie crescente di sequenze decrescenti, giocando nella posizione "doppia" ottenuta trasponendo il diagramma Young. In particolare, la strategia ottimale di Eva diventa "prendere dal mucchio più grande, a meno che non ce ne siano esattamente due di quella dimensione", e la strategia ottimale di Otto diventa "prendere dal mucchio più piccolo".
mjqxxxx,

Sono sicuro che questo approccio porterà a una soluzione perfetta, ma al momento c'è ancora un piccolo errore, ad esempio (3,1) non sta perdendo e (3,1,1) lo è. Il problema è che la definizione di 2. dovrebbe escludere questo caso, poiché possiamo raggiungere una posizione di un heap in un solo passaggio. Ma penso che questo sia l'unico problema con 2. e spero che non sia difficile correggerlo.
domotorp,

1

Certo, ho dimenticato quella parte alla fine ... Quindi questo gioco è risolto!
domotorp,

1
Non è una risposta completa, ma vale comunque la taglia.
Jeffε

3

O(2nn)

@ Jɛ ff E È successo che (1,4,3,2) ha valore * 1, non * 2 come hai suggerito.


Oops, errore mio. Risolto il problema: g (1,3,2) = mex {g (1,3), g (1,2), g (3,2)} = mex {0, 0, * 1} = * 2.
Jeffε

n10n

@maldini: dà speranza che il gioco abbia delle belle proprietà, che potrebbero renderlo trattabile. Mi chiedo cosa succede al gioco generalizzato ai grafici o al gioco generalizzato ai grafici perfetti.
Peter Shor,

3

Modifica 5 gennaio: In effetti il ​​gioco One Heap descritto di seguito è un caso speciale del problema, vale a dire quando i numeri si susseguono in un modo specifico in modo che il primo gruppo sia più grande del secondo gruppo che è più grande del terzo ecc. e i numeri in ciascun gruppo stanno aumentando. Ad esempio 8, 9, 4, 5, 6, 7, 2, 3, 1 è una tale permutazione. Quindi propongo di risolvere prima questo caso speciale.

Disclaimer: non pretendo più che la dimostrazione di seguito sia corretta, vedere ad esempio il commento di Tsuyoshi che mostra che l'eliminazione di un numero da una permutazione darà un diagramma non ottenibile eliminando un quadrato dal diagramma della permutazione. Ho lasciato la risposta qui per dimostrare che questo approccio non funziona, in più perché contiene un altro gioco semplice.

Il gioco ha un'altra formulazione molto semplice grazie a Young Tableaux. Sono sicuro che può essere analizzato da lì come altri giochi e produrrà un algoritmo di tempo lineare.

Per prima cosa definisci il seguente gioco su Young Diagrams: Ad ogni turno, se il diagramma corrente è orizzontale (tutti i quadrati in una riga), il giocatore corrente perde e l'altro giocatore vince; in caso contrario, il giocatore corrente rimuove una delle caselle in basso a destra e il gioco passa all'altro giocatore.

Ora ordina la sequenza di numeri in un giovane tableau. L'affermazione principale è che il vincitore del gioco originale è lo stesso del vincitore del gioco del diagramma che inizia con questa forma. Per vedere questo, nota che ogni volta che i giocatori cancellano un numero, il diagramma della nuova sequenza può essere ottenuto cancellando un quadrato in basso a destra del diagramma. Inoltre, qualsiasi diagramma di questo tipo può essere ottenuto cancellando il numero dal rispettivo quadrato in basso a destra. Queste dichiarazioni derivano dalla teoria standard dei Young Tableaux.

Sebbene questo gioco di diagrammi sia abbastanza semplice, è banalmente equivalente al seguente gioco, che sembra più standard:

One Heap Game: ai giocatori vengono dati alcuni cumuli con alcuni ciottoli in ciascuno. Ad ogni turno, se è rimasto solo un heap, il giocatore corrente perde e l'altro giocatore vince; in caso contrario, il giocatore corrente rimuove un sasso da un mucchio e il gioco passa all'altro giocatore.

Se esiste una soluzione semplice al gioco heap (e credo fermamente che ce ne sia uno) otteniamo anche una soluzione al gioco originale: basta inserire la sequenza in un giovane tableau e trasformare il suo diagramma in cumuli.

Sfortunatamente non vedo quali posizioni dell'heap stanno vincendo / come determinare i valori Sprague-Grundy. Ho controllato alcuni casi a mano e le seguenti sono le posizioni perdenti con al massimo 6 ciottoli:

un mucchio; (1,1,1); (2,2); (3,1,1); (2,1,1,1); (1,1,1,1,1); (4,2); (3,3); (2,2,2).

Chiunque può risolvere questo gioco?

Modifica: Peter Shor può, vedere la sua risposta!


1
Puoi dare almeno un esempio che mostra come una particolare permutazione viene trasformata in un giovane tableau e come lo stesso gioco (rimozione del numero fino a quando non viene raggiunta una sequenza crescente) viene giocato sul tableau? In particolare non capisco cosa significhi rimuovere "uno dei quadrati in basso a destra".
mjqxxxx,

5
Ecco un controesempio a un'affermazione più debole secondo cui la rimozione di un numero da una permutazione corrisponde alla rimozione di una delle celle in basso a destra dal diagramma Young corrispondente (anziché dal tableau Young ). Sia n = 5 e considera una posizione specificata dalla permutazione [4,1,3,5,2] (ovvero σ (1) = 4, σ (2) = 1 e così via), quindi rimuovi 3 da. Il diagramma Young corrispondente prima dello spostamento è 5 = 3 + 1 + 1, ma il diagramma Young corrispondente dopo lo spostamento è 4 = 2 + 2, che non si ottiene rimuovendo una cella da 3 + 1 + 1.
Tsuyoshi Ito,

5
E la permutazione [5,4,1,2,3] ha lo stesso diagramma Young di [4,1,3,5,2], ma non puoi raggiungere il diagramma Young 4 = 2 + 2 da esso. Quindi il gioco dipende più dalla forma del tableau Young.
Peter Shor,

2
Evviva per incomprensioni costruttive!
Jeffε

3
@ Jɛ ff E: Sì, questo è molto più utile di una prova della mera esistenza di incomprensioni.
Tsuyoshi Ito,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.