Vous êtes sur la page 1sur 2
4.3] ALGORITMOS PARA GENERAR PERMUTACIONES Y COMBINACIONES 231 Comienza a aparecer un patrén, Dada una cadena cr = 5, + «5, que represente a la recombinaci6n (5,,....5,}. para determinar la siguiente cadena B = f, - «1, buscamos el elemento de mas a la derecha que no tenga su maximo valor (s, puede tener el valor maxi- mon, s,_, puede tener el valor maximo n ~ 1, y asf sucesivamente). Entonces 1, parai=1,...,m—1 El elemento t,, \dena Btenemos es igual as,, + 1, Parael resto de la tary tty Sq + Sq, + 3) A continuacién damos el algoritmo. Tr) Generacién de combinaciones Este algoritmo enumera todas las r-combinaciones de (1, 2, ....2} en orden lexicogrifico reciente. Entrada: 1,1 Salida: Todas las r-combinaciones de {1, 2, .... 7] en orden lexicogrifico creciente. procedure conbination(r, n) for i:= | tordo i 1 2 3. : 4, prints,,...,s, #/seimprime la primera r-combinacién 5. foré:=2to Cin, do 6 begin 1. mist 8. max_val:=n 9. while s,, = max_val do 10, 1/se determina el elemento més a la derecha, que no tenga su maximo valor "1 hegi 12. mi=m~1 2B. ‘max_val := max_val ~ 1 14 end 15, Ise incrementa el elemento més a la derecha 16. 5,:= 5,41 17. MeL resto de tos elementos son los sucesores des, 18 forj:= m+ | tordo 19. 455,41 20. prints,,...,5, //se imprime la i-ésima combinacién 21 end 22, end combination eve Mostramos la forma en que el algoritmo 4.3.9 genera la 5-combinacisn de (1,2,3,4,5, 6, 7) posterior a 23467, Estamos suponiendo que 5=2, 5)=3, 1. 4.3 | ALGORITMOS PARA GENERAR PERMUTACIONES Y COMBINACIONES 233 SP eney Elmétodo del ejemplo 4.3.12 permite enumerar las permut: Iexicogrifico como jiones de {1, 2, 3, 4) en orden 1234, 1243, 1324, 1342, 1423, 1432, 2134, 2143, 2314, 2341, 2413, 2431, 3124, 3142, 3214, 3241, 3412, 3421, 4123, 4132, 4213, 4231, 4312, 4321. o Acontinua in damos el algoritmo, Generacién de permutaciones Este algoritmo enumera todas las permutaciones de (1, 2,...,} en orden lexicogréfico ‘reciente, Bifada: _ Salida; Todas las permutaciones de (1, 2, +7} en orden lexicogrifico creciente. procedure permutation(n) ‘for i: 1 tondo primera permutacién while s, > 5, do © Ise determina el elemento mas a la derecha gente k- 1 = swapls,5,) + Hse intercambian s,,,, ys,,Se intercambian s, ,, ys,_,.¥ asf sucesivamente begin swaps, 5) 8, //seimprime la /-ésima permutacién

Vous aimerez peut-être aussi