“Pequeño algoritmo de Algebra” Facundo Matı́as Carreiro 27 de mayo de 2005- Versión 1.0 1. Objetivo En este texto trato de presentar un algoritmo y algunos criterios para poder resolver correctamente los problemas del estilo “Cuántas palabras (únicas) de k letras se pueden formar con la palabra x?”, teniendo x más letras que k. 2. Caso particular Para simplificar la explicacı́on de la manera en que se me ocurrió este método voy a calcular cúantas palabras de 6 letras pueden formarse con la palabra REPELER. Analizamos la cantidad de letras: ( ( R −→ 2 P −→ 1 5 2 (1) E −→ 3 L −→ 1 Usando la notacion Rc para repeticiones totales de ese caso en particular, Rx para las repeticiones de la letra x en ese caso y Nrc para la cantidad de letras no repetidas necesarias para ese caso, paso a crear la tabla de todos los casos posibles: Caso Rr Re Rc Nrc Posible A 2 2 4 2 si B 2 ≤1 3 3 no C ≤1 2 3 3 no D ≤1 ≤1 2 4 no E 2 3 5 1 si F ≤1 3 4 2 si Los cásos b, c, d no son posibles porque no alcanzarı́an las letras totales para completar la palabras. Por ejemplo si tomo el caso b, yo tendrı́a colocadas las letras R y E, sumando 3 entre las dos, y faltarı́an 3 letras para completar las 6 que nos piden, pero solo tenemos disponibles la P y la L. Descartando los casos en los que no nos alcanzan las letras, analizamos la cantidad de posibilidades del resto: 1 A. En el primer caso tenemos fijas 2R y 2E osea 4 letras, faltan 2 para completar las 6 que tienen que obligatoriamente ser la P y la L. La fórmula para este caso quedarı́a de la siguiente manera: 6 4! 2 2! (2) 4 2!2! 2 La ecuación fue armada de la siguiente manera: De los 6 lugares que necesitamos llenar tomamos 4 (2 para las Re y 2 para las Rr ), el primer combinatorio nos da la cantidad de maneras de tomar esos 4 lugares. Después multiplicamos por las permutaciones posibles de esas 4 letras y dividimos por la cantidad de repeticiones de cada letra. La segunda combinatoria es para elegir 2 letras de las 2 no repetidas que nos quedan, lo que en este caso resulta redundante. Luego multiplicamos por la cantidad de permutaciones posibles de las letras restantes (nótese que en este caso no es necesario dividir, porque esas letras no se repiten). E. El próximo caso posible es el E, donde tenemos 2 letras R y 3 letras E. Armando la ecuación de la misma manera que antes quedarı́a: 6 5! 2 1! (3) 5 2!3! 1 F. En el caso F la ecuación serı́a: 6 4! 2 2! 4 3!1! 2 (4) La cantidad de palabras de 6 letras que se pueden formar con la palabra REPELER estarı́a dada por la suma de todos los casos posibles: 6 5! 2 6 4! 2 6 4! 2 2! + 1! + 2! = (5) 5 2!3! 1 4 3!1! 2 4 2!2! 2 = 6! 4! 2! 2! + 4!2! 2!2! 2!0! 6! 6! = + + 2!2! 3! 6! 5! 2! 6! 4! 2! 1! + 2! = 5!1! 2!3! 1!1! 4!2! 3!1! 2!0! 6! = 180 + 120 + 120 = 420 3! 2 (6) (7) 3. Generalización Ahora voy a presentar una generalización del algoritmo para que funcione con cualquier caso general, junto con unos criterios para los casos. 3.1. Notación Dada una palabra de t letras (t ∈ N) cuantas palabras de k letras (k ∈ N) se pueden formar. Definimos Nr ∈ N como la cantidad de letras sin repeticiones en la palabra original. Dentro de cada posible caso definimos Rc ∈ N como la cantidad total de repeticiones para ese caso en especifico, R1 . . . Rn (Rn ∈ N) como la cantidad de repeticiones de la letra n para ese caso en especı́fico. 3.2. Criterio de casos Para crear la lista de casos comenzamos tomando R1 . . . Rn con la mayor cantidad de repeticiones posibles para todas, luego vamos restando de a 1 de la última hasta que quede en 1. Cuando llega a uno, restamos 1 a la anterior y volvemos a poner esa letra como el máximo valor posible, seguimos este proceso hasta que todas las letras nos queden con el número 1: 1. 4A 2B 3C 2D (Rc = 11) 2. 4A 2B 3C 1D (Rc = 10) 3. 4A 2B 2C 2D (Rc = 10) 4. 4A 2B 2C 1D (Rc = 9) 5. 4A 2B 1C 2D (Rc = 9) . .... n. 1A 1B 1C 1D (Rc = 4) Ahora, para que el caso pueda existir tiene que cumplirse que k − R c ≤ Nr (8) R c ≥ k − Nr (9) Entonces. . . La cantidad de repeticiones del caso tienen que ser mayores o iguales a la cantidad de letras pedidas menos las no repetidas. 3 3.3. Fórmula de caso Generalizando el método aplicado en (2) podemos llegar a la formula inicial k Rc ! Nr (k − Rc )! (10) Rc R1 ! . . . Rn ! k − Rc Que expandiendo los combinatorios se convierte en. . . k! Rc ! Nr ! (k − Rc )! Rc !(k − Rc )! R1 ! . . . Rn ! (k − Rc )!(N r − k + Rc ) (11) Simplificando. . . k!Nr ! (k − Rc )!(Nr + Rc − k)!R1 ! . . . Rn ! 3.4. (12) Resultado Numerando los casos posibles como C1 . . . Cn el resultado estaria dado por n X Ci ∀Ci /Rc (Ci ) ≥ k − Nr i=1 4 (13) 4. Ejemplo de aplicación Calcular la cantidad de palabras de 4 letras se pueden formar con las letras de la palabra REPETIR. ( P −→ 1 R −→ 2 4 3 T −→ 1 (14) E −→ 2 I −→ 1 Primero creo la lista de casos según el criterio antes citado. . . A. 2R 2E −→ Rc = 4 ≥ 4 − 3 = 1 B. 2R 1E −→ Rc = 3 ≥ 1 C. 1R 2E −→ Rc = 3 ≥ 1 D. 1R 1E −→ Rc = 2 ≥ 1 Y después sumo la formula de cada caso. . . 4!3! 4!3! + + (4 − 4)!(3 + 4 − 4)!2!2! (4 − 3)!(3 + 3 − 4)!2!1! 4!3! 4!3! + + = (4 − 3)!(3 + 3 − 4)!1!2! (4 − 2)!(3 + 2 − 4)!1!1! = 6 + 36 + 36 + 72 = 150 5 (15)