In matematica, una permutazione σ dell'ordine n è una funzione biiettiva dagli interi 1 ... n a se stessa. Questo elenco:
2 1 4 3
rappresenta la permutazione σ tale che σ (1) = 2, σ (2) = 1, σ (3) = 4 e σ (4) = 3.
Una radice quadrata di una permutazione σ è una permutazione che, se applicata a se stessa, dà σ . Ad esempio, 2 1 4 3
ha la radice quadrata τ = 3 4 2 1
.
k 1 2 3 4
τ(k) 3 4 2 1
τ(τ(k)) 2 1 4 3
perché τ ( τ (k)) = σ (k) per tutti 1≤k≤n.
Ingresso
Un elenco di n > 0 numeri interi, tutti compresi tra 1 e n inclusi, che rappresentano una permutazione. La permutazione avrà sempre una radice quadrata.
È possibile utilizzare un elenco di 0 ... n-1 invece purché l'input e l'output siano coerenti.
Produzione
La radice quadrata della permutazione, anche come matrice.
restrizioni
L'algoritmo deve essere eseguito in tempo polinomiale in n . Ciò significa che non puoi semplicemente passare in rassegna tutte le n ! permutazioni dell'ordine n .
Sono ammessi tutti i builtin.
Casi test:
Si noti che molti ingressi hanno più possibili uscite.
2 1 4 3
3 4 2 1
1
1
3 1 2
2 3 1
8 3 9 1 5 4 10 13 2 12 6 11 7
12 9 2 10 5 7 4 11 3 1 13 8 6
13 7 12 8 10 2 3 11 1 4 5 6 9
9 8 5 2 12 4 11 7 13 6 3 10 1