El signo de una permutación $\sigma\in \mathfrak{S}_n$ , escrito ${\rm sgn}(\sigma)$ se define como +1 si la permutación es par y -1 si es impar, y viene dada por la fórmula
$${\rm sgn}(\sigma) = (-1)^m$$
donde $m$ es el número de transposiciones en la permutación cuando se escribe como un producto de transposiciones.
Alternativamente el signo es -1 si, cuando expresamos $\sigma$ como producto de ciclos disjuntos, el resultado contiene un número impar de ciclos de longitud par. En caso contrario, el signo es +1.
Mis permutaciones se expresan como tuplas $(\sigma_1,\dots,\sigma_n)$ por lo que ni la expresión de la tupla como producto de ciclos disjuntos ni como producto de transposiciones están inmediatamente disponibles para mí.
Esto sugiere dos algoritmos elevados para calcular el signo de una permutación:
-
Expresa la permutación como un producto de transposiciones y cuenta el número de transposiciones.
-
Expresa la permutación como un producto de ciclos disjuntos y cuenta el número de ciclos pares.
¿Cuáles son los algoritmos típicos para llevar a cabo estas tareas, y cómo varían en el tipo de ejecución dependiendo de $n$ ? ¿Existen algoritmos más eficaces para calcular el signo de una permutación?
Información adicional
La motivación es decidir rápidamente si las instancias del quince rompecabezas son solucionables. Quiero generar un gran número de instancias resolubles de los quince rompecabezas para probar algunos algoritmos de búsqueda. Por el momento genero una instancia aleatoria, y pruebo si es solucionable intentando resolverla con la búsqueda de profundidad primero, lo cual es bastante lento, y no se generaliza bien a rompecabezas más grandes (rompecabezas de 24, rompecabezas de 35...) debido a las limitaciones de tiempo y memoria. Dado que las instancias resolubles del rompecabezas quince están en correspondencia 1-1 con elementos pares de $\mathfrak{S}_{16}$ Me imagino que debe haber una forma más rápida de generar instancias resolubles.
Se me acaba de ocurrir que una forma mejor de generar instancias resolubles del puzzle podría ser generar un número par de transposiciones y multiplicarlas para generar una permutación par. Preferiría un algoritmo que garantizara una distribución par sobre $\mathfrak{S}_n$ Sin embargo, y de hecho ahora estoy lo suficientemente interesado en la respuesta a esta pregunta por derecho propio.
7 votos
La paridad de una permutación es también el número de inversiones en la permutación módulo $2$ . Dado que el número de inversiones puede calcularse en $O(n \log n)$ tiempo, la paridad puede ser ciertamente. Es una cuestión interesante si son posibles algoritmos aún más rápidos. De la parte superior de mi cabeza, no puedo pensar en ninguna razón por la que $O(n)$ algoritmo es imposible. (Esta es la mejor referencia que he podido sacar ahora mismo para encontrar inversiones: stackoverflow.com/questions/6523712/ .)
2 votos
Parece que la situación es más complicada. La respuesta de PengOne en la otra pregunta dice que hay una $O(n \frac{\log n}{\log \log n})$ y un reciente $O(n \sqrt{\log n})$ algoritmo para contar las inversiones. En realidad, creo que esta pregunta también encajaría bien en cstheory.SE.
0 votos
¡Siéntase libre de poner votos para moverse!
1 votos
Creo que puedes encontrar esto en Knuth. (No, no sé dónde, sólo me parece que está ahí en alguna parte).
3 votos
Probablemente deberías especificar qué codificación de una permutación estás utilizando (en notación de ciclo, ¿no deberías poder calcular la paridad en $O(n)$ tiempo?).
0 votos
Buen punto. Estoy codificando la permutación como una tupla $(\sigma_1,\dots,\sigma_n)$ . Lo añadiré a la pregunta.
1 votos
Ver también mathoverflow.net/questions/72669/
0 votos
Lo que se llama la paridad de una permutación es el número que se suele llamar la firma o el signo de la permutación.
1 votos
Gracias Didier. Una rápida búsqueda en Google sugiere que el término "paridad" se utiliza para un mapeo del conjunto de permutaciones al conjunto {Even, impar} mientras que "signo" y "firma" se utilizan para denotar mapeos al conjunto{+1, -1} así que efectivamente quise decir firma o signo.
0 votos
También puedes calcular el determinante de la matriz de permutación.