La permutación es una disposición de objetos en un orden específico. El orden de disposición de los objetos es muy importante. El número de permutaciones en un conjunto de n elementos viene dado por n!. ¡Por ejemplo, hay 2! = 2*1 = 2 permutaciones de {1, 2}, a saber, {1, 2} y {2, 1}, ¡y 3! = 3*2*1 = 6 permutaciones de {1, 2, 3}, a saber, {1, 2, 3}, {1, 3, 2}, {2, 1, 3}, {2, 3, 1} , {3, 1, 2} y {3, 2, 1}.
Método 1 (retroceso)
Podemos utilizar la solución recursiva basada en retroceso que se analiza aquí .
Método 2
La idea es extraer todos los elementos uno por uno, colocarlos en la primera posición y repetir para la lista restante.
Python3
# Python function to print permutations of a given list def permutation(lst): # If lst is empty then there are no permutations if len(lst) == 0: return [] # If there is only one element in lst then, only # one permutation is possible if len(lst) == 1: return [lst] # Find the permutations for lst if there are # more than 1 characters l = [] # empty list that will store current permutation # Iterate the input(lst) and calculate the permutation for i in range(len(lst)): m = lst[i] # Extract lst[i] or m from the list. remLst is # remaining list remLst = lst[:i] + lst[i+1:] # Generating all permutations where m is first # element for p in permutation(remLst): l.append([m] + p) return l # Driver program to test above function data = list('123') for p in permutation(data): print (p)
Producción:
['1', '2', '3'] ['1', '3', '2'] ['2', '1', '3'] ['2', '3', '1'] ['3', '1', '2'] ['3', '2', '1']
Método 3 (Función directa)
Podemos hacerlo simplemente usando la función de permutación incorporada en la biblioteca itertools. Es la técnica más corta para encontrar la permutación.
Python3
from itertools import permutations l = list(permutations(range(1, 4))) print(l)
Producción:
[(1, 2, 3), (1, 3, 2), (2, 1, 3), (2, 3, 1), (3, 1, 2), (3, 2, 1)]
Este artículo es una contribución de Arpit Agarwal . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo y enviarlo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA