Cómo saber el número total de inversión en una permutación

No he tratado con inversiones de permutaciones antes, así que tuve que buscar la definición. Según Wolfram Alpha, el número de inversiones en una permutación se puede obtener sumando los elementos del vector de inversión. El número de elementos mayor que [math] i [/ math] a la izquierda de [math] i [/ math] da el elemento [math] i [/ math] th del vector de inversión.

Para su ejemplo (4 3 1 2), construyamos el vector de inversión. Primero miramos el primer número 4. Queremos elementos que sean mayores que 4 ya la izquierda de 4. Pero no hay elementos a la izquierda de 4, por lo que el primer elemento del vector de inversión es (y siempre lo será) 0. Ahora mire el segundo número 3. Queremos elementos a la izquierda de 3 y mayores que 3. 4> 3, por lo que hay 1 elemento de este tipo, y el segundo elemento del vector de inversión es 1. Pase a la tercer elemento: 1. A la izquierda de 1 hay 4> 1 y 3> 1, por lo que el tercer elemento del vector de inversión es 2 porque hay dos números mayores que 1 a la izquierda de 1. Finalmente, tenemos el 2. A la izquierda de 2, los únicos elementos mayores que 2 son 4> 2 y 3> 2, por lo que el último elemento del vector de inversión es 2. Por lo tanto, el vector de inversión es (0, 1, 2, 2), y tomando el sum produce 0 + 1 + 2 + 2 = 5 inversiones. Estos serían (4, 3), (4, 1), (4, 2), (3, 1) y (3, 2).

Otro ejemplo con la permutación (6 5 7 3 8). Nada a la izquierda de 6. 6> 5. Nada mayor que 7 a la izquierda de 7. 6> 3, 5> 3, 7> 3. Nada mayor que 8 a la izquierda de 8. Entonces, el vector de inversión es (0, 1, 0, 3, 0), lo que hace que el número total de inversiones sea 0 + 1 + 0 + 3 + 0 = 4.

El número de inversiones es el mismo que el número de intercambios de números consecutivos necesarios para organizarlos en su orden natural. Por ejemplo,

[matemáticas] (4 3 1 2) \ rightarrow (4 1 3 2) \ rightarrow (1 4 3 2) \ rightarrow (1 4 2 3) \ rightarrow (1 2 4 3) \ rightarrow (1 2 3 4) [ / matemáticas] cinco intercambios son necesarios aquí.

Esto parece uno de esos “Por favor, haga mi tarea por mí”. problemas. Pero en realidad hay una pregunta interesante que acecha aquí. A saber, “¿Cuál es una manera eficiente de determinar la paridad de una permutación?” Contar las inversiones es una forma de hacerlo, pero su complejidad es O ([matemáticas] n ^ 2 [/ matemáticas]). Resulta que hay una solución O ([matemática] n [/ matemática]). Para hacer eso, necesita encontrar la representación de la permutación como un conjunto de ciclos, y luego contar el número de ciclos pares. Ver permutación

Adjunto una infografía útil para contar el número de inversiones en una matriz modificando ligeramente Merge-Sort. También puede consultar otras preguntas de la entrevista sobre estructuras de datos y algoritmos desde mi blog.