Está en la página 1de 35

MATEMÁTICAS DISCRETAS

Marco E. Benalcázar, Ph.D.

14 de mayo de 2019
COMBINACIONES
(SIN REEMPLAZO)
Métodos de Conteo

Métodos de Conteo para Cálculo de Probabilidades

Combinaciones—
Permutaciones— El orden no
El orden importa! importa!

Con reemplazo Con reemplazo

Sin reemplazo Sin reemplazo


Métodos de Conteo: Combinaciones

Métodos de Conteo para Cálculo de Probabilidades

Combinaciones—
Permutaciones— El orden no
El orden importa! importa!

Con reemplazo Con reemplazo

Sin reemplazo Sin reemplazo


Combinaciones sin Repetición: Definición

Definición 1: Sea un conjunto X = x1, x2, …, xn formada por n elementos


distintos. Una combinación k de X es simplemente una selección no ordenada de
k elementos del conjunto X.

Definición 2: Sea un conjunto X = x1, x2, …, xn formada por n elementos


distintos. Una combinación k de X también puede ser visto como la cantidad
total de subconjuntos de k elementos obtenidos a partir del conjunto X.
Recuerde que en los conjuntos (o subconjuntos) no interesa el orden de los
elementos.

Teorema (combinaciones sin repetición): El número total de combinaciones de k


elementos a partir de un conjunto de n elementos se obtiene mediante C(n,k) o
que se lee “de n seleccione k”.

n!
C(n,k) = n = , con 0  k  n.
k k! (n - k)!

Demostración en clase
Combinaciones sin Repetición: Casos
Especiales

n n
= =1
0 n

n n
= =n
1 n-1

n n
=
k n-k

Ejemplos:
11 11
= = 55
9 2
12 12
= = 792
5 7
Combinaciones sin Repetición: Ejemplos

Ejemplo 1: ¿De cuántas formas se puede seleccionar un comité de 4 personas de


un grupo de 10 personas?
R: 210

Ejemplo 2: Dado un grupo de 2 camellos, 3 cabras, y 10 ovejas ¿de cuántas


formas se puede seleccionar un comité de 6 animales bajo las siguientes
condiciones?
a) No existe ninguna restricción R: 5005
b) Los 2 camellos deben estar incluidos R: 715
c) Los 2 camellos deben estar excluidos R: 1716
d) Deben haber al menos 3 ovejas R: 4770
e) Deben haber como máximo 2 ovejas R: 235
f) El camello Joe, la cabra Billy, y la oveja Samuel se odian mutuamente, por lo
no tanto no deben trabajar en el mismo comité. ¿Cuántos comités
compatibles existen? R: 3300
Combinaciones sin Repetición: Soluciones
para el Ejemplo 2
Combinaciones sin Repetición : Soluciones
para el Ejemplo 2
Combinaciones sin Repetición: Ejemplos

Ejemplo: ¿Cuántas cadenas de ocho bits contienen exactamente cuatro unos?

R: C(8,4)

Relación importante:
n n n n n
+ + + + ... + = 2n
0 1 2 3 n
COMBINACIONES
GENERALIZADAS
(CON REEMPLAZO)
Combinaciones: Teorema de DeMoivre

Teorema: Sea n un número entero positivo. El número de soluciones para


x1 + x2 + … + xk = n, con xi entero positivo e i = 1,2,…,k, está dado por:

n-1
k-1

Prueba: Se puede escribir n como 1 + 1 + 1 + … + 1 = n, donde fácilmente se puede


comprobar que existen n veces 1s y n - 1 símbolos “+”. Para descomponer el
número n en k sumandos, se necesitan seleccionar k – 1 signos “+” de un total de
n – 1 signos “+”.

Ejemplo 3: ¿De cuántas maneras se puede escribir el número 9 expresado como


una suma de 3 números enteros positivos? R: 28

Ejemplo 4: ¿Cuántas soluciones existen para la ecuación a + b + c + d = 100,


donde a, b, c y d, son enteros positivos? R: 156849

Ejemplo 5: Encontrar el número de tuplas (a,b,c,d) que satisfacen la ecuación


a + b + c + d = 100, donde a  30, b  21, c  1, y d  1. R: 18424
Soluciones

Ejemplo 3:

Ejemplo 4:
100 – 1
= 156849
4-1
Ejemplo 5:
Combinaciones Generalizadas: Introducción

Ejemplo: Considere 3 tipos de libros: de computación, física e historia. Suponga


que la biblioteca tienen al menos 6 copias idénticas de cada uno. ¿De cuántas
maneras se pueden seleccionar 6 libros?

R: C(8,2) = 28

Resolución en clase
Combinaciones Generalizadas

Teorema: Si X es un conjunto que contiene k tipos de elementos diferentes,


donde cada tipo tiene al menos n elementos, entonces el número de selecciones
no ordenadas de n elementos de X es:

C(n + k – 1,k - 1) = C(n + k – 1,n)


Demostración en clase
Combinaciones Generalizadas: Ejemplos (1)

Ejemplo: Suponga que existen 3 pilas de pelotas rojas, azules y verdes, y que
cada pila contiene al menos 8 pelotas.

a) ¿De cuántas maneras se pueden seleccionar 8 pelotas? R: C(10,2)


b) ¿De cuántas maneras se pueden seleccionar 8 pelotas si debe tenerse al
menos una pelota de cada color? R: C(7,2)

Ejemplo:

a) Cuántas soluciones en enteros no negativos hay para la siguiente ecuación:


x1 + x2 + x3 + x4 = 29
R: C(32,3) = 4960

b) ¿Cuántas soluciones enteras hay para la ecuación anterior que satisfacen las
condiciones x1 > 0, x2 > 1, x3 > 2, x4 ≥ 0? C(26, 3) = 2600
Combinaciones Generalizadas: Ejemplos (2)

Ejemplo:

a) Cuántas soluciones de enteros positivos se puede encontrar para la siguiente


ecuación:

x1 + x2 + x3 + x4 + x5 = 20
R: C(19,4)

b) ¿Cuántas soluciones de enteros no negativos se puede encontrar para la


ecuación anterior?
R: C(24,4)
Combinaciones Generalizadas: Ejemplos (3)

Ejemplo:

Se desea repartir entre 4 personas 100 dólares que se encuentra en billetes de


10 dólares. Una o más personas pueden no recibir nada, ¿de cuántas maneras se
puede realizar la repartición?

R: 286
Generación de Combinaciones
combnr.m

Fuente: R.Johnsonbaugh, Matemáticas Discretas, Pearson Universitario, 6ta edición, 2005, ISBN 970-26-0637-3, pp. 244.
Generación de Combinaciones en Matlab
combnr.p
Análisis de la Complejidad Temporal de un
Algoritmo para Generar Combinaciones (1)
El número total de combinacio nes de r elementos a partir de un conjunto de n elementos es :
n n!
f (n, r ) =   =
 r  r!*(n − r )!
Cálculo de la notación O de f (n, r ) :

(n) * (n − 1) * (n − 2) * ... * (n − r + 1) * (n − r ) * (n − r − 1) * ... *1


f (n, r ) = , con 0  r  n
r!*(n − r ) * (n − r − 1) * ... *1
(n) * (n − 1) * (n − 2) * ... * (n − r + 1) (n) * (n) * (n) * ... * (n) n r
=  =
r! r! r!
n  n r  O(n r )
Por lo tanto se tiene que f (n, r ) =   = O  = r
r  
r ! O ( r )

Para entender el anterior resultado se realiza el análisis de las siguientes dos filminas.
Análisis de la Complejidad Temporal de un
Algoritmo para Generar Combinaciones (2)
n  n r  O(n r )
Sea f (n, r ) =   = O   = r
r  r !  O(r )

En función de lo anterior se realiza el siguiente análisis para cualquier n y distintos valores de r :

CASO I:valores de r cercanos a 1:


n
Para r = 1: lim n r = n y lim r r = 1, con lo cual f (n, r ) = O   = O(n)
r →1 r →1
1
 n2 
Para r = 2: lim n = n y lim r = 4, con lo cual f ( n, r ) = O   = O(n 2 )
r 2 r
r →2 r →2
 4
 n3 
Para r = 3: lim n = n y lim r = 27, con lo cual f ( n, r ) = O   = O(n 3 )
r 3 r
r →3 r →3
 27 

Interpretación: Para cualquier valor de n y valores de r pequeños con respecto a n , la complejidad de


listar todas las combinaciones de r elementos a partir de un conjunto de n elementos es polinómica.
Análisis de la Complejidad Temporal de un
Algoritmo para Generar Combinaciones (3)
CASO II : valores de r cercanos a n / 2 :
 ( n) ( n / 2 ) 
Para este caso se tiene : lim n = n y lim r = (n / 2)
r n/2 r
, con lo cual f (n, r ) = O
( n / 2)

( n / 2) 
= O ( 2 n/2
)
r →n / 2 r →n / 2
 ( n / 2) 
Interpreta ción : Para cualquier valor de n y valores de r cercanos a n / 2, la complejida d de listar todas las
combinacio nes de r elementos a partir de un conjunto de n elementos es exponencia l.

CASO III : valores de r cercanos a n :



n! 1
Para r = n - 2 : lim = n * (n − 1), con lo cual f (n, r ) = O(n 2 )
r →n − 2 r!*(n − r )! 2
n!
Para r = n - 1 : lim = n, con lo cual f (n, r ) = O(n)
r →n −1 r!*(n − r )!

n!
Para r = n : lim = 1, con lo cual f (n, r ) = O(n 0 ) = O(1)
r →n r!*(n − r )!

Interpreta ción : Para cualquier valor de n y valores de r cercanos a n, la complejida d de listar todas las
combinacio nes de r elementos a partir de un conjunto de n elementos es polinómica.
Evaluación Empírica del Tiempo Promedio de
Ejecución del Programa “combnr.m” (1)
Función que describe la complejidad del programa combnr.m en función de los
valores de n y r:
n n!
f (n, r ) =   =
 r  r!(n − r )!
El factorial de x, x!, puede ser aproximado por la expresión :
xx
x! x 2x
e
En base a las dos expresione s anteriores se obtiene la siguiente relación :
nn
2n
n n! e n
  =  r
 
r r ! ( n − r )! r (n − r ) ( n−r )
r
2r ( n−r )
2 ( n − r )
e e
n n n1 / 2
n
2
= e
( n−r )
2 ( n − r ) (n − r )1 / 2 r r r1 / 2
e r e( n−r )
n n ( n +1 / 2)
f (n, r ) =    ( n − r +1 / 2 ) ( r +1 / 2 )
, con 0 < r < n
 
r 2 ( n − r ) r
Evaluación Empírica del Tiempo Promedio de
Ejecución del Programa “combnr.m” (2)
FcnCombnr.m ComplexityCombinations.m

➢ En este caso la gráfica del tiempo promedio de ejecución del programa combnr (gráfico de la derecha)
no es una curva, sino una superficie que es función de los valores de n y r.
➢ En la gráfica del lado izquierdo se muestra la superficie que resulta de graficar la función de
complejidad f(n,r) en función de los valores de n y r (análisis realizado en el slide anterior).
➢ En los dos gráficos la superficie está definida para aquellos valores de r que cumplen con la condición
0  r  n.
➢ Note que la forma de la gráfica teórica es igual a la forma de la gráfica empírica.
Evaluación Empírica del Tiempo Promedio de
Ejecución del Programa “combnr.m” (3)
n variable y r fijo: n n ( n+1 / 2)
f (n, r ) =    ( n − r +1 / 2 ) ( r +1 / 2 )
, con 0 < r < n
 
r 2 ( n − r ) r
Para cuando n es variable y r fijo, todos los términos de f (n, r ) que dependen sólo
de r pueden ser descartados debido a que son constantes. Por lo tanto, se tiene que :
n  n ( n+1 / 2)  n ( n+1 / 2)
f (n, r ) =   =  
( n − r +1 / 2 ) 
= ( g ( n ) ), con g ( n ) = 
n!
r  (n − r )  (n − r ) ( n−r +1 / 2) (n − r )!

ComplexityCombinationsFixR.m
Evaluación Empírica del Tiempo Promedio de
Ejecución del Programa “combnr.m” (4+)
n variable y r fijo:
ComplexityCombinationsFixR_Theoretical.m

➢ Para un r fijo y muy pequeño (r = 1 o r = 2), a medida que aumenta el valor de n, aumenta de manera
polinómica la complejidad de un programa que lista las combinaciones “n seleccione r”.

➢ Para un r fijo y grande, a medida que aumenta el valor de n, aumenta de manera exponencial la
complejidad de un programa que lista las combinaciones “n seleccione r”.
Evaluación Empírica del Tiempo Promedio de
Ejecución del Programa “combnr.m” (5)
n fijo y r f (n, r ) =  n   n ( n+1 / 2)
r ( n − r +1 / 2 ) ( r +1 / 2 )
, con 0 < r < n
variable:   2 ( n − r ) r
Para cuando n es fijo y r variable, todos los términos de f (n, r ) que dependen sólo
de n pueden ser descartados debido a que son constantes. Por lo tanto, se tiene que :
n  
f (n, r ) =   = 
1

( n − r +1 / 2 ) ( r +1 / 2 ) 
= (h ( n ) ), con h ( r ) =
1

1
r  (n − r ) r  (n − r ) ( n−r +1 / 2) r ( r +1 / 2) r!(n − r )!
Análisis Empírico del Tiempo Promedio del Programa combnr(15,r)
0.04
Tiempo promedio
0.035 f(r) = (h(r))

0.03

Valores de tiempo [s]


0.025

ComplexityCombinationsFixN.m
0.02

0.015

0.01

0.005

0
0 5 10 15
Valores de r
Evaluación Empírica del Tiempo Promedio de
Ejecución del Programa “combnr.m” (6+)
n fijo y r variable: ComplexityCombinationsFixN_Theoretical.m
Análisis Asintótico del Programa combnr(n,r)
7000
n= 1 y r variable
n= 5 y r variable
6000
n= 10 y r variable
n= 12 y r variable
5000 n= 15 y r variable

4000
f(n,r)

3000

2000

1000

2 4 6 8 10 12 14
Valores de r

➢ Para un n fijo, a medida que el valor de r se acerca por la izquierda o por la derecha al valor de n/2, la
complejidad de un programa que lista las combinaciones “n seleccione r” aumenta significativamente.

➢ Cuando el valor de r es muy cercano a 0 o muy cercano a n, la complejidad de un programa que lista las
combinaciones “n seleccione r” es baja.
DEBER
Deber de Combinaciones (1)

Ejercicio 1:

Ejercicio 2:

Ejercicio 3:
Deber de Combinaciones (2)

Ejercicio 4:

Ejercicio 5:
Deber de Combinaciones (3)
Ejercicio 6:
Deber de Combinaciones (4)

Ejercicio 7:
HASTA LA
PRÓXIMA
CLASE

También podría gustarte