Intercambiar la tercera carta más grande entre 222 manos de cartas

Introducción al "juego"

Hay 2 jugadores y 2 norte tarjetas, etiquetadas 1 , 1 , 2 , 2 , 3 , 3 , 4 , 4 , , norte , norte . ( 2 de cada carta de 1 a norte )

En primer lugar, el 2 norte cada jugador recibe norte cartas al azar. Más específicamente, un orden aleatorio de los 2 norte se consiguen cartas y el primer jugador obtiene la primera norte cartas, el segundo jugador recibe el otro norte tarjetas Podemos suponer que cada jugador puede ver todas las cartas.

En cada turno, cada jugador ordenará su mano de cartas. Etiqueta las cartas en las manos. a 1 , a 2 , a 3 , , a norte , b 1 , b 2 , b 3 , , b norte .

Los jugadores encuentran un par de cartas. a i b i . Luego intercambian las cartas. a i y b i . Después de lo cual, el turno termina.

Claramente, si a i = b i para todos i , entonces a i = b i = i , y el "juego" termina.

Ejemplo

Dejar norte = 4 . llamamos al 2 jugadores A , B . Al comienzo del juego, reciben:

A : 1 , 1 , 2 , 2

B : 3 , 3 , 4 , 4

Turno 1: Deciden intercambiar la primera carta.

A : 3 , 1 , 2 , 2

B : 1 , 3 , 4 , 4

Antes de que comience el segundo turno, ordenan sus cartas.

A : 1 , 2 , 2 , 3

B : 1 , 3 , 4 , 4

Turno 2: Esta vez, deciden intercambiar la tercera carta. No pueden intercambiar la primera tarjeta ya que los números en la primera tarjeta son los mismos.

A : 1 , 2 , 4 , 3

B : 1 , 3 , 2 , 4

Clasifican sus tarjetas.

A : 1 , 2 , 3 , 4

B : 1 , 2 , 3 , 4

El "juego" termina cuando ambos jugadores tienen 1 , 2 , 3 , 4 . Este juego termina en 2 vueltas

Preguntas sobre este "juego"

¿Terminará? (La respuesta es sí, y se agregará una idea de un límite basado en la monovariante como respuesta).

¿En cuántos movimientos (como máximo) se necesita para un 2 norte juego de cartas para terminar? ¿Qué arreglos harán que tarde tanto en terminar?

Suponiendo que los jugadores eligen la siguiente carta para intercambiar al azar (entre todos los movimientos posibles, elija un movimiento válido, cada movimiento válido con la misma probabilidad), ¿cuál es el número esperado de movimientos para que termine el juego?

Ideas sobre la pregunta:

Como sugiere hardmath:

Si restringimos a los jugadores a tomar la carta más baja que funcione o la carta más alta que funcione, el juego definitivamente terminará como máximo norte 1 vueltas Ambos casos son simétricos, por lo que trabajamos en lo más alto.

Caso base: si norte = 1 , no hay que hacer ningún movimiento. De lo contrario, norte > 1 .

Procedemos ahora al paso inductivo. Supongamos que las cartas más altas de los jugadores son diferentes. Si son iguales, las borramos, reduciéndolas a la norte 1 caso, que se puede hacer como máximo norte 2 se mueve De lo contrario, un jugador tiene la carta más alta. Cuando se hace el movimiento, se entrega una copia de la carta más alta al otro jugador. Ahora, ambos jugadores tienen la carta más alta y se puede eliminar. En total, hay 1 + ( norte 2 ) = norte 1 se mueve para esto.

De esto, podemos obtener que en promedio, el juego termina en O ( norte 2 ) vueltas, ya que toma (en promedio) O ( norte ) turnos para intercambiar la carta más alta.

Código (para referencia):

Ejecuté una simulación Monte Carlo de juegos aleatorios. una simulación de 1000 juegos de 1000 tarjetas dieron un número promedio de intercambios de 1310.703 .

Código C++ para referencia:

#include <cstdio>
#include <algorithm>
#include <cmath>
using namespace std;
int N;
int K;
int maxCounter = 0;
int sumCounter = 0;
int counter;
int arr[999999];
/** Results:
(X cards, 10^6 rounds)
1 -> 0 0
2 -> 1 0.334546 (guess: 1/3)
3 -> 2 0.733746
4 -> 3 1.180559
5 -> 5 1.667006 (guess: 5/3)
6 -> 6 2.179321
7 -> 8 2.721661
8 -> 9 3.283566
9 -> 10 3.867299
10 -> 12 4.471352
Other things I tried: (cards, rounds)
100 1000 -> 143 84.411
200 1000 -> 307 197.332
300 1000 -> 503 319.691
500 1000 -> 960 580.373
1000 1000 -> 1910 1310.703
**/
int main(void) {
    srand(23);
    printf("Number of cards: ");
    scanf("%d", &N);
    for (int i=0;i<N;i++) {
        arr[i] = arr[i+N] = i;
    }
    printf("Number of rounds: ");
    scanf("%d", &K);
    for (int j=0;j<K;j++) {
        random_shuffle(arr, arr+2*N);
        counter = 0;
        while (counter>=0) {
            sort(arr, arr+N);
            sort(arr+N, arr+2*N);
            int pass = 1;
            for (int i=0;i<N;i++) {
                if (arr[i] != arr[i+N]) {
                    pass = 0;
                    break;
                }
            }
            if (pass) break;
            counter++;
            int theMove = rand()%N;
            while (arr[theMove] == arr[theMove+N]) theMove = rand()%N;
            int temp = arr[theMove];
            arr[theMove] = arr[theMove+N];
            arr[theMove+N] = temp;
        }
        //printf("%d ", counter);
        maxCounter = max(maxCounter, counter);
        sumCounter += counter;
        if (j%(K/100) == 0) printf("Done: %d\n", j);
    }
    printf("Maximum: %d\nAverage: %lf\n", maxCounter, sumCounter/(double)K);
    return 0;
}

Resultados del código:

El número promedio de movimientos parece crecer más rápido que O ( norte ) .

Como se formuló, los dos jugadores "deciden" cuál de sus cartas clasificadas aún no idénticas intercambiar. ¿Ha considerado la versión del "juego" en la que el intercambio siempre se realiza en las cartas clasificadas más altas (o más bajas) posibles?
Tenga en cuenta que, independientemente de cómo se decida la elección de un intercambio, una vez que las cartas de mayor rango sean iguales (resp. las cartas de menor rango sean iguales), esto seguirá siendo así durante todo el juego. Así, el caso se reduce esencialmente a norte 1 cartas después de ese punto.
@hardmath Esencialmente tuve lo mismo después de pensarlo un poco. Sin embargo, lo agregué, podría ayudar con el problema. He encontrado un caso promedio enlazado con él.
i i a i + i b i no disminuirá. ¿Siempre aumentará?
@Michael, editado.

Respuestas (2)

Aquí hay un plano con O ( norte registro norte ) se mueve
Empezar con norte = 2 metro 1 . Deja que una mano sea 1 , 1 , 2 , 2 , . . . , 2 metro 1 , entonces la otra mano comienza con la otra 2 metro 1 .
En ( norte 1 ) / 2 = 2 metro 1 1 se mueve, intercambie las cartas en la fila del medio cada vez.
Terminarás con ambas tarjetas etiquetadas 2 metro 1 en el medio, con las cartas más altas formando una estructura similar arriba 2 metro 1 y las cartas inferiores formando una estructura similar debajo 2 metro 1 . Entonces, una mano tiene el cuartil más bajo de cartas y la otra mano tiene el cuartil más alto de cartas. Por ejemplo, tendrías 1 , 1 , 2 , 4 , 5 , 5 , 6 en una mano y 2 , 3 , 3 , 4 , 6 , 7 , 7 en el otro.
Luego repita el proceso, para las cartas más altas y para las cartas más bajas. El número total de movimientos es METRO ( metro ) = 2 METRO ( metro 1 ) + 2 metro 1 1 .
2 movimientos son posibles para norte = 3 , entonces METRO ( metro ) = ( metro 3 2 ) 2 metro 1 + 1 para norte = 2 metro 1 .

Esta no es una respuesta completa a la pregunta todavía.

La monovariante i ( a i + b i ) fue sugerido por Michael en los comentarios.

Cuando se realiza el intercambio, la monovariante sigue siendo la misma.

La monovariante aumentará cuando cualquiera de los 2 las listas se desordenan después del intercambio. Tratamos de demostrar que este es el caso.

irrumpimos en 2 casos:

Caso 1: | a i b i | > 1

Consideramos dónde están las tarjetas etiquetadas a i + 1 están situados. O existen como tarjetas a j dónde j > i o b k dónde k < i . En ambos subcasos del caso 1, habrá un reordenamiento ya que las manos no están ordenadas después del intercambio.

Caso 2: | a i b i | = 1

Sin pérdida de generalidad, sea a i b i = 1 . Entonces consideramos las tarjetas etiquetadas a i y b i . Para mayor comodidad, etiquete las tarjetas X , X + 1 .

A : X + 1 B : X

Ahora consideramos las posiciones de los otros 2 tarjetas etiquetadas X , X + 1 .

Teniendo en cuenta todas las tarjetas etiquetadas 1 , 2 , 3 , , X 1 , hay un número par de tales tarjetas. Todas estas cartas deben aparecer antes de las cartas X , X + 1 en ambas listas.

Para los no colocados X , X + 1 , si solo uno aparece antes del i ª posición, entonces hay un número impar de posiciones para un número par de cartas, lo cual es imposible.

Por lo tanto, o ambos aparecen ante el i ª posición o después de la i ª posición.

Hay 2 casos (azul: tarjetas para intercambiar, rojo: después del intercambio):

A : X + 1 X + 1 B : X X A : X X + 1 B : X + 1 X

A : X + 1 X + 1 B : X X A : X + 1 X B : X X + 1

Agotar ambos casos prueba la monovariante.

Por lo tanto, se ha probado que esto termina.

El valor final de la monovariante es i ( 2 i ) = norte ( norte + 1 ) ( 2 norte + 1 ) 3 .

El valor inicial de la monovariante es al menos 2 i ( norte + 1 i ) (las 2 manos son norte , norte 1 , norte 2 , , 3 , 2 , 1 , que es mínimo por la desigualdad de reordenamiento).

Dado que las dos manos están ordenadas, el mínimo podría provenir de una mano siendo 1,1,2,2,3,3,...