Número mínimo de 'movimientos' requeridos para reordenar una lista de números

Considere el siguiente 'juego'. tienes una lista de norte números enteros ordenados en orden descendente de norte a 1 . El objetivo del juego es ordenar la lista de nuevo en orden ascendente.

Normas:

  • Solo puede comparar 2 números a la vez.

  • Al comparar dos números en la lista, si norte i Es mas grande que norte j (dónde i < j ) entonces norte j se mueve 'arriba' en la lista a norte j 1 .

  • De lo contrario, no hay cambio.

Mi intuición me dice que la cantidad mínima de movimientos necesarios para reordenar la lista en orden ascendente es la misma que la cantidad de movimientos que requiere un algoritmo de clasificación de burbujas. Esta lista de enteros de norte a 1 es la peor posición inicial posible para una ordenación de burbujas, por lo que requeriría norte 2 se mueve ¿Estoy en lo correcto?

Cuando las comparaciones se eligen al azar

La pregunta anterior sobre el número mínimo de movimientos se aplica cuando puedes elegir qué 2 números comparar y el orden en el que eliges los pares de números para comparar. Pero, ¿qué pasa si extiendo la pregunta para decir que no tienes elección sobre cómo se hacen las comparaciones? Es decir, i y j (es decir, los índices que estamos comparando) se eligen aleatoriamente en cada movimiento (aunque i < j todavía se aplica). ¿Hay alguna forma de calcular cuánto tiempo tomaría en promedio volver a una lista ordenada ascendente? ¿Hay alguna manera de demostrar que se necesitaría un número finito de movimientos? Además, ¿cómo depende el tiempo que tarda en norte ? Este parece un problema realmente interesante, ¿se ha estudiado antes?

Resultados de la simulación

He intentado escribir un código para investigar esto. por ejemplo, para norte = 10 , toma mi script (que usa un generador de números aleatorios para elegir los índices i y j para comparar) alrededor de 350 movimientos para alcanzar el orden ascendente. Como referencia, calculé el 'ordenamiento' usando la fórmula de esta respuesta: https://math.stackexchange.com/a/3201037/668220 .

ingrese la descripción de la imagen aquí

Pero para norte = 30 se necesitan alrededor de 10,000 movimientos

ingrese la descripción de la imagen aquí

Para norte = 100 parece tomar más de 100,000 movimientos

ingrese la descripción de la imagen aquí

Me interesaría mucho saber si hay una manera de describir matemáticamente este comportamiento.

Esto parece estar preguntando cómo descomponer una permutación específica de un conjunto en piezas de dos elementos.

Respuestas (1)

El orden óptimo requerirá norte ( norte 1 ) 2 pasos, no norte 2 . Para probarlo podemos contar el número de pares ( i , j ) tal que i < j pero norte i > norte j . Inicialmente este número es norte ( norte 1 ) 2 , al final es 0 , y cada paso lo disminuye como máximo 1 .

Si elegimos elementos para comparar al azar, puede tomar un tiempo arbitrario, ya que puede haber un ciclo: orden inicial 3 , 2 , 1 , llevar i = 1 , j = 3 - obtenemos 3 , 1 , 2 . Entonces toma de nuevo i = 1 , j = 3 - volvemos al orden inicial.

Sin embargo, la matriz se ordenará con probabilidad 1 después de un número finito de movimientos. Por ejemplo, número norte nunca se mueve a la izquierda, por lo que eventualmente llegará a la última posición. Después de eso, tenemos que ordenar el resto norte 1 elementos (pasos cuando j = norte no hará nada), y se hará en un número finito de pasos casi con seguridad.

Esto también da un límite superior en promedio de movimientos que necesitamos: si F ( norte ) es el número promedio de pasos que necesitamos para ordenar la peor (que requiere el número máximo de pasos en promedio) permutación de norte elementos, entonces F ( norte ) norte 3 + norte norte 2 F ( norte 1 ) : menos que norte 3 pasos que involucran norte en promedio (como probabilidad de que un paso se mueva norte a la derecha es al menos 1 norte 2 , y necesitamos como máximo norte 1 tales pasos), y después de eso necesitamos F ( norte 1 ) pasos que no involucran norte - y probabilidad de paso para no involucrar norte es norte 2 norte . Este límite es, por supuesto, muy malo: es probable que no terminemos con la peor secuencia después de movernos norte a la última posición.

Presumiblemente OP significa O ( norte 2 ) .