Documentos de Académico
Documentos de Profesional
Documentos de Cultura
14 de mayo de 2019
COMBINACIONES
(SIN REEMPLAZO)
Métodos de Conteo
Combinaciones—
Permutaciones— El orden no
El orden importa! importa!
Combinaciones—
Permutaciones— El orden no
El orden importa! importa!
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
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
n-1
k-1
Ejemplo 3:
Ejemplo 4:
100 – 1
= 156849
4-1
Ejemplo 5:
Combinaciones Generalizadas: Introducción
R: C(8,2) = 28
Resolución en clase
Combinaciones Generalizadas
Ejemplo: Suponga que existen 3 pilas de pelotas rojas, azules y verdes, y que
cada pila contiene al menos 8 pelotas.
Ejemplo:
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:
x1 + x2 + x3 + x4 + x5 = 20
R: C(19,4)
Ejemplo:
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 ) :
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 )
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 2x
e
En base a las dos expresione s anteriores se obtiene la siguiente relación :
nn
2n
n n! e n
= r
r r ! ( n − r )! r (n − r ) ( n−r )
r
2r ( 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
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