Está en la página 1de 7

Ingenierı́a Técnica en Informática de Gestión

Laboratorio de Matemática Discreta


Curso 2003-04

Tema 5: Combinatoria con MATLAB

En este tema estudiaremos los comandos de MATLAB más básicos rel-


ativos al cálculo combinatorio clásico. El paquete que implementa estas
funciones se llama combinat y está incluido en el Extended Symbolic Tool-
box.
¡Ojo! Antes de utilizar cualquier función del paquete combinat, debemos
cargarlo en memoria:
maple(’with(nombredelpaquete)’) carga en memoria el paquete. Además,
devuelve la lista de las funciones que incorpora el paquete.
>>maple(’with(combinat)’)
Warning: Warning, the name fibonacci has been redefined
Warning: Warning, the protected name Chi has been redefined and unprotected
ans=
[Chi, bell, binomial, ..., stirling2, subsets, vectoint]
¡Ojo! Una vez cargado el paquete combinat, la sintaxis para ejecutar
cualquiera de sus funciones será:
maple(’función’)

1. Permutaciones

1.1. Permutaciones sin repetición. Las permutaciones de un con-


junto {a1, a2, . . . , an} son todas las ordenaciones de los elementos del con-
junto. El número de permutaciones de un conjunto de n elementos es

Pn = n!

Por ejemplo, las permutaciones del conjunto {1, 2, 3} son:

1, 2, 3, 1, 3, 2, 2, 1, 3, 3, 2, 1, 2, 3, 1, 3, 1, 2

permute(n) construye las permutaciones del conjunto {1, 2, . . . , n}


>>maple(’permute(2)’)
ans=
[[1, 2], [2, 1]]
1
2 TEMA 5: COMBINATORIA CON MATLAB

numbperm(n) calcula Pn
>>maple(’numbperm(5)’)
ans=
120
Y para construir las permutaciones de un conjunto cualquiera:
permute([a1,a2,. . . ,an]) construye las permutaciones del conjunto {a1,
a2, . . . , an}
>>maple(’permute([x1,x2,x3])’)
ans=
[[x1, x2, x3], [x1, x3, x2], [x2, x1, x3], [x2, x3, x1], [x3, x1, x2],
[x3, x2, x1]]

Ejemplo 1.1. ¿Cuántas formas hay de colocar 4 alumnos en 4 puestos


de laboratorio?
>>maple(’numbperm(4)’)
ans=
24
¿Cuáles son?
>>maple(’permute([al1,al2,al3,al4])’)
ans=
[[al1, al2, al3, al4], [al1, al2, al4, al3], [al1, al3, al2, al4],
[al1, al3, al4, al2], [al1, al4, al2, al3], [al1, al4, al3, al2],
[al2, al1, al3, al4], [al2, al1, al4, al3], [al2, al3, al1, al4],
[al2, al3, al4, al1], [al2, al4, al1, al3], [al2, al4, al3, al1],
[al3, al1, al2, al4], [al3, al1, al4, al2], [al3, al2, al1, al4],
[al3, al2, al4, al1], [al3, al4, al1, al2], [al3, al4, al2, al1],
[al4, al1, al2, al3], [al4, al1, al3, al2], [al4, al2, al1, al3],
[al4, al2, al3, al1], [al4, al3, al1, al2], [al4, al3, al2, al1]]

Ejemplo 1.2. Tenemos 10 libros distintos, de los cuales 3 son de mate-


máticas, 2 de fı́sica y 5 de informática.

(1) ¿De cuántas formas podemos colocarlos en una estanterı́a con un


espacio vacı́o para 10 libros?
>>maple(’numbperm(10)’)
ans=
3628800
TEMA 5: COMBINATORIA CON MATLAB 3

(2) ¿Y si queremos que los dos más gruesos están en los extremos?
>>maple(’2*numbperm(8)’)
ans=
80640
(3) ¿Y si queremos que estén agrupados por materias?
>>maple(’numbperm(3)*numbperm(3)*numbperm(2)*numbperm(5)’)
ans=
8640

1.2. Permutaciones con repetición. Las permutaciones con repeti-


ción son las disposiciones ordenadas de n elementos (no todos iguales) de
modo que del primer tipo hay n1 , del segundo tipo n2 , ... y, del k-ésimo
tipo hay nk . El número de permutaciones con repetición de un conjunto de
n elementos de modo que del primer tipo hay n1 , del segundo tipo n2 , ... y,
del k-ésimo tipo hay nk es:

n!
PRnn1 n2 ...nk =
n1 ! · n2 ! · · · nk !

permute([a1, a1, .n.1., a1, a2, a2, .n.1., a2, . . . , ak, ak, .n.k., ak]) calcula las permuta-
ciones con repetición de los elementos a1, a1, . . . , ak de modo que a1 se repite
n1 veces, a2 se repite n2 , ... con n1 + n2 + . . . nk = n
>>maple(’permute([1,1,2])’)
ans=
[[1, 1, 2], [1, 2, 1], [2, 1, 1]]
multinomial(n, n1 , n2 , . . . , nk ) calcula PRnn1 n2 ...nk
>>maple(’multinomial(3,2,1)’)
ans=
3

Ejemplo 1.3. En una facultad hay que distribuir 12 profesores en 3


despachos a razón de 4 por despacho. ¿De cuántas formas puede hacerse?
LLamemos di al despacho número i, para todo i = 1, 2, 3, 4. Suponiendo
los 12 profesores ordenados, una distribución de los despachos es una cadena
de 12 caracteres dónde cada di aparece 4 veces.
>>maple(’multinomial(12,4,4,4)’)
ans=
34650
4 TEMA 5: COMBINATORIA CON MATLAB

2. Variaciones

2.1. Variaciones sin repetición. Las variaciones sin repetición de


orden r de un conjunto de n elementos son todas las ordenaciones de tamaño
r de elementos del conjunto, sin que existan repeticiones. El número de
variaciones sin repetición de n elementos de orden r es:

n!
Vn,r =
(n − r)!

permute(n,r) construye las variaciones sin repetición de tamaño r del con-


junto {1, 2, . . . , n}
>>maple(’permute(4,2)’)
ans=
[[1, 2], [1, 3], [1, 4], [2, 1], [2, 3], [2, 4], [3, 1], [3, 2],
[3, 4], [4, 1], [4, 2], [4, 3]]
numbperm(n,r) da el número de variaciones sin repetición de tamaño r de
un conjunto de n elementos.
>> maple(’numbperm(4,2)’)
ans=
12
permute([a1,a2,. . . ,an],r) construye las variaciones sin repetición de tama-
ño r del conjunto {a1, a2, . . . , an}
>>maple(’permute([x1,x2,x3],2)’)
ans=
[[x1, x2], [x1, x3], [x2, x1], [x2, x3], [x3, x1], [x3, x2]]

Ejemplo 2.1. Dado el conjunto de letras A = {a, b, c, d, e, f, g, h, i, j}.


(1) ¿Cuántas palabras diferentes de 6 letras distintas pueden formarse
con las letras del conjunto ?
>>maple(’numbperm(10,6)’)
ans=
151200
(2) ¿Cuántas de las palabras del apartado anterior contienen la letra
b?
>>maple(’6*numbperm(9,5)’)
ans=
TEMA 5: COMBINATORIA CON MATLAB 5

90720

2.2. Variaciones con repetición. Una variación con repetición de


orden r de un conjunto de n elementos es una sucesión ordenada de tamaño
r de elementos del conjunto, en donde los elementos pueden repetirse. El
número de variaciones con repetición de orden r de un conjunto de n ele-
mentos es:
VRn,r = nr
permute([a1, a1, . r. ., a1, a2, a2, . r. ., a2, . . . , an, an, . r. ., an], r) calcula las varia-
ciones con repetición de orden r del conjunto {a1, a2, . . . , an}
>>maple(’permute([1,1,2,2],2)’)
ans=
[[1, 1], [1, 2], [2, 1],[2,2]]
nˆ r calcula VRn,r = nr

Ejemplo 2.2. ¿Cuántos números hexadecimales hay de tres cifras, ninguna


de ellas nulas? Hay que calcular VR15,3 :
>>15^3
ans=
3375

3. Combinaciones

Las permutaciones y variaciones de un conjunto se diferencian por el


orden de los elementos. Sin embargo, en las combinaciones no importa el
orden: dos combinaciones son diferentes si, y sólo si, tienen algún elemento
distinto.

3.1. Combinaciones sin repetición. Una combinación de orden r de


un conjunto de n elementos es un subconjunto de tamaño r del conjunto.
El número de combinaciones sin repetición de tamaño r de un conjunto de
n elementos es:  
n
Cn,r =
r
choose(n,r) construye las combinaciones sin repetición de tamaño r del
conjunto {1, 2, . . . , n}
>>maple(’choose(4,3)’)
ans=
6 TEMA 5: COMBINATORIA CON MATLAB

[[1, 2, 3], [1, 2, 4], [1, 3, 4], [2, 3, 4]]


n

binomial(n,r) calcula Cn,r = r
>>maple(’binomial(4,3)’)
ans=
4
choose([a1,a2,. . . ,an],r) construye las combinaciones sin repetición de tamaño
r del conjunto {a1, a2, . . . , an}
>>maple(’choose([x1,x2,x3],2)’)
ans=
[[x1, x2], [x1, x3], [x2, x3]]

Ejemplo 3.1. Determinar el número de manos de póker distintas (5


cartas) que pueden formarse con una baraja de 52 naipes.
>>maple(’binomial(52,5)’)
ans=
2598960
¿Cuántas manos contienen exactamente 3 ases?
>>maple(’binomial(4,3)*binomial(48,2)’)
ans=
4512

3.2. Combinaciones con repetición. Una combinación con repeti-


ción de orden r de un conjunto de n elementos es una lista de tamaño r de
elementos del conjunto que pueden repetirse. El número de combinaciones
con repetición de orden r de un conjunto de n elementos es:
 
n+r−1
CRn,r =
r
choose([a1, a1, . r. ., a1, a2, a2, . r. ., a2 , . . . , an, an, . r. ., an], r) construye las com-
binaciones con repetición de tamaño r del conjunto {a1, a2, . . . , an}
>>maple(’choose([x1,x1,x2,x2,x3,x3],2)’)
ans=
[[x1, x1], [x1, x2], [x1, x3], [x2, x2], [x2, x3], [x3, x3]]
binomial(n+r-1,r) calcula CRn,r
>>maple(’binomial(4,2)’)
ans=
TEMA 5: COMBINATORIA CON MATLAB 7

Ejemplo 3.2. En una tienda con material informático tienen monitores


de cuatro marcas diferentes. ¿De cuántas maneras podemos escoger seis
monitores?
Hay que escoger 6 elementos de un total de 4 de modo que el orden es
irrelevante y permitiendo repetición. Por lo tanto, se trata de calcular CR4,6
>>maple(’binomial(9,6)’)
ans=
84

Marta Pérez Rodrı́guez, Departamento de Matemáticas, Escola Superior


de Enxenierı́a Informática, Universidade de Vigo, E-32004 Ourense, SPAIN
E-mail address: martapr@uvigo.es

También podría gustarte