estoy tratando de escribir un simple algoritmo que genera diferentes conjuntosalgoritmo para generar diferentes órdenes
(cba) (cabina) (BAC) (BCA) (ACB) de (abc)
haciendo dos operaciones:
intercambio primero y segundo elementos de entrada (abc), Así que tengo (BAC)
después desplazar primer elemento a durar => entrada es (b a c), la salida es (a c b)
por lo que la salida final de este procedimiento es (a c b).
Por supuesto, este método solo genera un c b y a b c. Me preguntaba si el uso de estas dos operaciones (tal vez usando 2 intercambios seguidos y luego un cambio, o cualquier variación) es suficiente para producir todos los diferentes ordenamientos.
Me gustaría encontrar un algoritmo simple, que no use> < o +, simplemente intercambiando repetidamente ciertas posiciones (por ejemplo, siempre intercambiando las posiciones 1 y 2) y siempre cambiando ciertas posiciones (por ejemplo, cambie el primer elemento a último).
Dado que no hace su pregunta en un idioma en particular, tal vez sería más adecuado para http://cstheory.stackexchange.com/ – Ali
Para tres elementos, puede hacerlo con intercambios simplemente alternando dos diferentes intercambios y enumerará las seis permutaciones. Para cuatro elementos, una solución es (21) (32) (43) (32) (43) (32) (21) (32) todos repiten tres elementos donde (32) significa intercambiar los elementos en el segundo y tercer posición. Sin embargo, no conozco una solución general. – Neil