Esto puede parecer una pregunta frecuente (por ejemplo, otra publicación con básicamente el mismo título ), pero estoy interesado en un método para encontrar un orden de una matriz de permutación arbitraria, suponiendo que a veces la matriz es tan grande que no es práctico para inspeccionar las longitudes manualmente.
Esto será, por ejemplo, útil para escribir una función de programación de computadora que tome cualquier matriz de permutación P y escupa el orden de P (es decir, ).
Un método es un enfoque de fuerza bruta, donde mantenemos aumentar hasta que lleguemos . Sin embargo, me pregunto si hay un método más inteligente.
Así es como puede hacerlo, suponga que la matriz es .
Obtener la permutación dónde es igual a la fila tal que .
Descomponer permutación en ciclos haciendo una búsqueda sobre el dígrafo con vértices y bordes .
El orden de la matriz es igual a la de todas las longitudes de ciclo.
10 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0
requiere 30 multiplicaciones de matriz (alrededor de 30,000 operaciones) en el método de fuerza bruta, pero más como 100 accesos a memoria y solo unas pocas multiplicaciones y restos en tu método.
Asinomás
CAQ