algoritmo_permutaciones

download algoritmo_permutaciones

of 2

description

Descripcion Grafica del algoritno

Transcript of algoritmo_permutaciones

Algoritmo - Clculo de permutaciones====================================* Entrada: Tenemos una lista de caracteres p.ej. ABCD * Salida: Las distintas posibilidades de permutar los caracteres sinrepetirlos y usando todos los elementos. Por ejemplo: ABCDE, ABCED, ABDCE,... as hasta 120 combinacionesSi "n" es el nmero de letras a permutar El nmero de palabras distintas a obtener es n!----------------------------------------------------------------------* Variablespalabra[] -> array de caracteres con las letras a permutar por ejemplo ="ABCD"* Fundamento del algoritmoAl principio todos los elementos de la lista pueden cambiar de posicin, es decir, pueden permutar su posicin con otro. No se fija ningn elemento de la lista, l = 0: Permutaciones(cad, 0)0 1 2 3A B C DSe llama recursivamente a la funcin, pero dejando fijo el primer elemento, el 0: Permutacion(cad,1) 0 1 2 3xA B C DSe llama recursivamente a la funcin, pero fijando el segundo elemento, el 1: Permutacion(cad,2) 0 1 2 3xA xB C DAhora slo quedan dos elementos permutables, as que imprimimos sta permutacin, 0 1 2 3xA xB C De intercambiamos los elementos: l y l+i+1, es decir el 2 y el 3. 0 1 2 3xA xB D CImprimimos sta permutacin, e intercambiamos los elementos l y l+i+1, es decir el 2 y el 4.x0 x1 2 3 4xA xB /0 C DEn el caso particular de que l+i+1 sea justo el nmero de elementos hay que mover hacia la izquierda los elementos desde la posicin l+1 a la posicin l:x0 x1 2 3 4xA xB C D /0En este punto abandonamos el ltimo nivel de recursin, y retomamos en el valor de l=1 e i = 0.x0 1 2 3 4xA B C D /0Permutamos los elementos: l y l+i+1, es decir el 1 y el 2.x0 1 2 3 4xA C B D /0En la siguiente iteracin del bucle i = 1, llamamos recursivamente con l = 2: Permutaciones(cad,2)x0 x1 2 3 4xA xC B D /0Imprimimos la permutacin e intercambiamos los elementos 2 y 3.x0 x1 2 3 4xA xC D B /0Y as sucesivamente.