¿Existe un mapeo limpio de los ordenamientos de N objetos en la recta numérica?

Sí.

Entonces quieres enumerar las permutaciones. Y puede hacerlo de manera que 1234567 sea lo primero, y 1234576 a continuación, 1234657 lo tercero … así es cómo hacerlo recursivamente:

Para las primeras 720 permutaciones, solo déjelos ser 1XXXXXX, donde las X son permutación de 2, 3, 4, 5, 6, 7 y sabe cómo enumerar esas permutaciones de 6 elementos, por recursión. Para las siguientes 720 permutaciones, permítales ser 2YYYYYY, donde Y son solo permutación de 1, 3, 4, 5, 6, 7. etc.

Las últimas 720 de las 5040 permutaciones son solo de la forma 7ZZZZZZ, donde las Z son permutación de 1, 2, 3, 4, 5, 6.

Entonces, ¿cuál es la 3754a permutación [matemática] \ pi [/ matemática] de 1, 2, 3, 4, 5, 6, 7 aquí? Bien. Divide (0, 5040] en 7 segmentos de longitud 720 y 3754 = 5 * 720 + 154, por lo que [math] \ pi [/ math] tiene la forma 6XXXXXX, y será la 154a permutación de 1, 2, 3, 4, 5, 7. Un cálculo similar da 154 = 1 * 120 + 34, y por lo tanto [math] \ pi [/ math] tiene la forma 62XXXXX. Continúe con el cálculo a continuación y verá [math ] \ pi [/ math] = 6234715.

([matemáticas] 3754 = 5 * 6! + 1 * 5! + 1 * 4! + 1 * 3! + 2 * 2! [/ matemáticas].)

Y si 3451267 es la [matemática] i [/ matemática], ¿cuál es [matemática] i [/ matemática]?

[matemáticas] i = 2 * 6! + 2 * 5! + 2 * 4! + 0 * 3! [/ Matemáticas] [matemáticas] + 0 * 2! + 0 * 1! + 0 * 0! = 1728. [/ Matemáticas]

(Tiene que romper las líneas para que el modo matemático funcione correctamente).

Sí:

7 x 6 x 5 x 4 x 3 x 2 x 1 = 5040 permutaciones posibles sin repetición.

Hoy existen muchos algoritmos para enumerar las posibles permutaciones del número 1234567. En cuanto a la indexación de cada permutación, uno podría simplemente aplicar cualquier algoritmo comparativo, como el algoritmo de clasificación rápida que enumeraría cada índice como el mismo número para cada iteración.

La forma “más limpia” podría ser escribir cada permutación como un producto mínimo de 2 ciclos, luego enumerarlas en orden de longitud y luego elementos.

Puede escribir un algoritmo para decir que 3451267 es el número uno, sin enumerar el conjunto completo. Además habrá i-1 menos que eso.

El truco consiste en convertir este número int factorial base, donde la primera columna es binaria, y las columnas posteriores aumentan en uno. Entonces, este número es un número base 7, queremos tener un dígito 3 y un número base 6 con dígitos 124567. Podemos normalizar esto restando 1 de cada lugar mayor que 3.

Restamos uno de cada lugar para obtener 2340156, y luego 1 de cada dígito más grande que el plomo

3451267 da el primer 2340156. Este es el número de base 7 correspondiente en la misma posición. Mantenemos los dos y obtenemos una base 6 nr 340156, pero para normalizarla, restamos 1 de cada dígito mayor que 2, a saber, 230145.

Repetimos en la base 5, quitando el 2 y restando 1 de cada lugar (de modo que los dígitos van de 01345 a 01234), da 2 r 20134.

Esto proporciona 2 restos 0123, luego 0 restos 012, luego 0 restos 01 y luego 0 r 0

¡Entonces el número factorial que mantenemos es 222000, en base!

Para encontrar la expansión decimal, puede ser 2; * 6 + 2 = 14; * 5 + 2 = 72; * 4 + 0 = 288; * 3 + 0 = 864; por 2 + 0 = 1728.

Hay 1728 números más pequeños que este, y este es el 1729.