Las técnicas de conteo son aquellas que son usadas para enumerar eventos dicíciles de cuantificar.
combinaciones
permutaciones
diagramas de árbol
Si una operación puede realizarse en $n_1$ formas y si por cada una de éstas, una segunda opercaión puede llevarse a cabo en $n_2$ formas, entonces las dos operaciones pueden realizarse jutas en $n_1 n_2$ formas.
Definimos una permutación como un reacomode de objetos.
Es todo arreglo de elementos en donde nos interesa el lugar o posición que ocupa cada uno de los elementos que constituyen dicho arreglo.
El orden o la forma en que se asignan las funciones sí importa.
La función factorial se denota como $n!$, se utiliza en las permutaciones y combinaciones.
El factorial de un entero positivo $n$, el factorial de $n$ o $n$ factorial se define en principio como el producto de todos los números enteros positivos desde 1 (es decir, los números naturales) hasta n.
La función factorial es formalmente definida mediante el producto:
$n! = 1 \times 2 \times 3 \times ... \times n$
La multiplicación anterior se puede simbolizar también utilizando el operador productorio:
$n!=\prod_{k=1}^n k \!$
$7! = 1 \times 2 \times 3 \times 4 \times 5 \times 6 \times 7 = 5040$
In [1]:
1*2*3*4*5*6*7
Out[1]:
In [2]:
def producto(secuencia):
prod = 1
for n in secuencia:
prod *= n
return prod
def factorial_prod(n):
return producto(range(1, n+1))
factorial_prod(7)
Out[2]:
También es posible definirlo mediante la relación de recurrencia:
$$ n! = \begin{cases} 1 & \text{si } n = 0, \\ (n-1)!\times n & \text{si } n > 0 \end{cases}$$
In [3]:
def factorial_rec(n):
if n == 0:
return 1
elif n > 0:
return factorial_rec(n-1) * n
factorial_rec(7)
Out[3]:
Una permutación es la variación del orden o de la disposición de los elementos de un conjunto.
Por ejemplo, en el conjunto $\{1, 2, 3\}$, cada ordenación posible de sus elementos, sin repetirlos, es una permutación. Existe un total de 6 permutaciones para estos elementos: $\{(1, 2, 3), (1, 3, 2), (2, 1, 3), (2, 3, 1), (3, 1, 2), (3, 2, 1) \}$
In [4]:
import itertools as it
conjunto = [1, 2, 3]
r = 3
permutaciones = list(it.permutations(conjunto, r))
def imprimir(secuencia):
for elemento in secuencia:
print(elemento)
print('Total de permutaciones: %s\n' % len(permutaciones))
imprimir(permutaciones)
Cuando $n$ y $r$ son enteros positivos y $r\leq n$ (de lo contrario no se puede realizar)
$nPr = \frac{n!}{(n-r)!} \text{si } 0 \leq r \leq n$
Donde:
$P$ es permutación de.
$r$ es parte del conjunto de elementos.
$n$ es el total de los elementos del conjunto.
Cuando $r$ es igual a $n$ (es decir, cuando se trata de permutar todos los $n$ objetos) la fórmula se reduce a:
$nPn = n!$
Ya que $0! = 1$
¿Cuantas representaciones deiferenes serán posibles formar, si se desea que consten de Presidente, Secretario, Tesorero, Primer Vocal y Segundo Vocal?, sí esta representación puede ser formada de entre 25 miembros del sindicato de una pequeña empresa.
maneras de formar una representación de este sindicato que consiste de presidente, secretario, etc.
$n = 25$; $r=5$
$25P5 = \frac{25!}{(25-5)!} = \frac{25!}{20!} = \frac{(25·24·23·22·21·...·1)}{(20·19·18·...·1)} = 6,375, 600$
In [5]:
# Seleccionar implementación de "factorial" a utilizar:
#f = factorial_prod
f = factorial_rec
def nPr(n, r):
if 0 <= r <= n:
return f(n) / f(n-r)
else:
return 0
nPr(25, 5)
Out[5]:
Tenemos una colección de $n$ objetos. Donde una combinación de estos $n$ objetos, tomados $r$ a la vez, es cualquier selección de $r$ objetos, donde el orden no cuenta. Es decir, una combinación $r$ de un conjunto de $n$ objetos es cualquier subconjunto de $r$ elementos.
$(^n_r) = \frac{n!}{r!(n-r)!} \text{si } 0 \leq r \leq n$
In [6]:
combinaciones = list(it.combinations(conjunto, r=2))
print('Total de combiaciones: %s\n' % len(combinaciones))
imprimir(combinaciones)
Encuetre el numero $m$ de combinaciones de 3 comites que pueden formarse con 8 personas:
$m = C(n, r) = C(8, 3) = (nCr) = (^8_3) = \frac{8·7·6}{3·2·1}=\frac{336}{6}=56$
In [7]:
def nCr(n, r):
if 0 <= r <= n:
return f(n) / (f(n-r)*f(r))
else:
return 0
nCr(8, 3)
Out[7]:
In [8]:
conjunto = ['A', 'B', 'C', 'D']
permutaciones = list(it.permutations(conjunto, r))
combinaciones = list(it.combinations(conjunto, r))
imprimir(permutaciones)
In [9]:
imprimir(combinaciones)
In [10]:
print('Total de permutaciones: {0}\n'
'Total de combinaciones: {1}'.format(len(permutaciones),
len(combinaciones)))
In [11]:
vacas = nCr(6, 3)
cerdos = nCr(5, 2)
gallinas = nCr(8, 4)
total = vacas * cerdos * gallinas
print(' vacas = {0}\n'
' cerdos = {1}\n'
'gallinas = {2}\n\n'
' total = {3}'.format(vacas,
cerdos,
gallinas,
total))
En matemáticas, el producto cartesiano de dos o mas conjuntos es una operación que resulta en otro conjunto cuyos elementos son todos los pares ordenados que pueden formarse tomando el primer elemento del par del primer conjunto, y el segundo elemento del segundo conjunto y asi consecutivamente.
Dados los conjuntos:
$A = \{1, 2, 3 \}$
$B = \{a, b\}$
encuentre los pares ordenados de:
$A \times B$
$B \times A$
$B \times B$
$A\times B = \{ (1, a), (1, b), (2, a), (2, b), (3, a), (3, b) \}$
$B\times A = \{ (a, 1), (a, 2), (a, 3), (b, 1), (b, 2), (b, 3) \}$
$B \times B = \{ (a, a), (a, b), (b, a), (b, b)\}$
In [12]:
A = [1, 2, 3]
B = ['a', 'b']
C = [4, 6, 8]
AxB = list(it.product(A, B))
BxA = list(it.product(B, A))
BxB = list(it.product(B, repeat=2))
AxBxC = list(it.product(A, B, C))
print('A x B = {0}\n'
'B x A = {1}\n'
'B x B = {2}\n\n'
'A x B x C ='.format(AxB,
BxA,
BxB))
imprimir(AxBxC)
Un diarama de arbol es una representación gráfica de un experimetno o evento, que consta de $r$ pasos, donde cada uno de los pasos tiene un número finito de ser llevadas acabo.
Cada lanzamiento de moneda resulta bien sea cara $(H)$ o sello $(T)$ sea $(C) = (H, T)$ el conjunto de resultados. Encuentre $C^3$.
In [13]:
C = ['H', 'T']
C3 = list(it.product(C, repeat=3))
m = len(C3)
print('C = %s\n\n'
'C³ =' % C)
imprimir(C3)
print('\nm = %s' % m)
Un médico general clasifica a sus pacientes de acuerdo a su genero (Masculino, Femenino), tipo de sangre (A, B, AB u O) y en cuanto a la presión sanguinea (normal, alta, baja). Mediante un diagrama de arbol diga en cuantas clasificaciones pueden estar los pacientes de este medico.
In [14]:
genero = ['Masculino', 'Femenino']
sangre = ['A', 'B', 'AB', 'O']
presion = ['alta', 'baja', 'normal']
producto_cartesiano = list(it.product(genero, sangre, presion))
m = len(producto_cartesiano)
imprimir(producto_cartesiano)
print('\nm = %s' % m)
Todos los conjuntos son subconjuntos del conjunto $U$.
Denotado por $A\cup B$
Es el conjunto de todos los elementos que se encuentran en ambos conjuntos.
Denotado por $A\cap B$
Es el conjunto de todos los elementos que se encuentra en ambos conjuntos, es decir los que son afines.
Denotado por $A^c$
Es el conjunto de elementos que pertencen al universo $U$ pero que no pertenecen a $A$.
Denotado por $A \diagdown B, A - B, A ~ B$
La diferencia entre $A$ y $B$, llamada tambien complemento relativo, es el conjunto de elementos que pertencen a $A$ pero no pertenecen a $B$.
Denotada por $A\bigoplus B = (A - B) \cup (B - A)$
Consiste en aquellos elementos que pertenecen a $A$ o $B$ pero no a ambos.
Sea:
$U = \mathbb{N} = \{1,2,3,... \}$
$A = \{ 1, 2, 3, 4 \}$
$B = \{ 3,4,5,6,7 \}$
$C = \{ 2, 3, 8, 9 \}$
$E = \{ 2, 4, 6, ... \}$
$A \bigoplus B = (A-B) \cup (B-A) = {1,2,5,6,7}$
In [15]:
U = set(range(1000)) # Infinity
A = {1, 2, 3, 4}
B = {3, 4, 5, 6, 7}
C = {2, 3, 8, 9}
E = set(range(2, 1000, 2))
In [16]:
(A-B) | (B-A)
Out[16]:
In [17]:
A^B
Out[17]:
In [18]:
A-C
Out[18]:
In [19]:
A|B
Out[19]:
In [20]:
A&B
Out[20]: