Contando pares de inversión

14

Una aplicación clásica de divide y vencerás es resolver el siguiente problema:

Dada una matriz de elementos distintos y comparables, cuente el número de pares de inversión en la matriz: pares modo que e .( i , j ) a [ i ] > a [ j ] i < ja[1n](i,j)a[i]>a[j]i<j

Un enfoque para esto es hacer una Clasificación de fusión, pero también contar el número de pares de inversión en los subproblemas. Durante el paso de fusión, contamos el número de pares de inversión que abarcan los (dos) subproblemas y los sumamos a los recuentos de los subproblemas.

Si bien esto es bueno y proporciona un algoritmo de tiempo , esto confunde la matriz.O(nlogn)

Si tenemos la restricción adicional de que la matriz es de solo lectura, entonces podemos hacer una copia y manejar la copia, o usar una estructura de datos adicional como un árbol binario equilibrado de estadísticas de orden para hacer el recuento, los cuales usan espacio.Θ(n)

La pregunta actual es intentar mejorar el espacio, sin afectar el tiempo de ejecución. es decir

¿Existe un algoritmo de tiempo para contar el número de pares de inversión, que funciona en una matriz de solo lectura y usa espacio sub-lineal (es decir, )?o ( n )O(nlogn)o(n)

Suponga un modelo RAM de costo uniforme y que los elementos ocupan espacio y la comparación entre ellos es .O ( 1 )O(1)O(1)

Una referencia servirá, pero una explicación será mejor :-)

Intenté buscar en la web, pero no pude encontrar ninguna respuesta positiva / negativa para esto. Supongo que esto es solo una curiosidad.

Aryabhata
fuente
3
Chan y Pătraşcu dan un algoritmo de tiempo , pero, por lo que puedo deducir, al rozar el papel, necesitan espacio . Ω ( n )o(norteIniciar sesiónnorte)Ω(norte)
Raphael
2
Además, Ajtai et al. demuestre que cualquier algoritmo de transmisión de tiempo (exacto) necesita espacio . Sin embargo, parece haber aproximaciones que se ajustan a sus criterios. Ω ( n )O(norte)Ω(norte)
Raphael
1
@Raphael: ¡Gracias! Si no recibe una respuesta, su comentario sería la mejor respuesta hasta ahora.
Aryabhata
Por cierto, estoy un poco confundido acerca de que Ajtai et al. Límite inferior. El teorema 8 dice "cualquier algoritmo", pero el límite inferior para mí parece estar en contra de los algoritmos de transmisión exacta de un solo paso, un modelo muy restringido
Sasho Nikolov
@SashoNikolov: Creo que globalmente configuraron su modelo a algoritmos de transmisión, por lo que "cualquiera" estaría restringido a esos. Espero que mi corolario, cualquier algoritmo de tiempo exacto, sea correcto, es decir, que cualquier algoritmo de tiempo lineal se pueda expresar como un algoritmo de transmisión con muchos pases constantes. Ya veremos . O(norte)
Raphael

Respuestas:

3

Aquí está la respuesta de Raphael:

Chan y Pătraşcu dan un algoritmo de tiempo , pero, por lo que puedo deducir del descremado, necesitan espacio Ω ( n ) . Además, Ajtai et al. demuestre que cualquier algoritmo de transmisión de tiempo O ( n ) (exacto) necesita espacio Ω ( n ) . Sin embargo, parece haber aproximaciones que se ajustan a sus criterios.o(norteIniciar sesiónnorte)Ω(norte)O(norte)Ω(norte)

Yuval Filmus
fuente
Gracias por responder. Sin embargo, le daré más tiempo. El tráfico parece estar acelerando.
Aryabhata