library(gtools)
La permutación y la combinación presentan una diferencia importante al momento de calcular todas las agrupaciones posibles para un conjunto de elementos.
En el caso de la permutación, el orden que presentan los objetos es crucial para reconocer si una agrupación es diferente de otra, a pesar de presentar los mismos elementos el que estos se encuentren en diferentes posiciones los hace ser una alternativa diferente de agrupación. Por el contrario, para la combinación el orden de los elementos no es importante, considerando que dos agrupaciones que presentan los mismos elementos, pero con posiciones diferentes son el mismo conjunto.
Ecuación de la permutación: $ nPr = n!/ (n - r)!$
Ecuación de la combinación: $ nCr = n!/ (n - r)!r!$
Ambas funciones utilizan los valores de n (numero total de objetos disponibles en el conjunto) y r (cantidad de elementos que presenta cada suceso) para generar los calculos, también es posible entregar un vector con los elementos del conjunto. Por otro lado, se puede agregar la indicación de repetición de valores o no en la creación de subconjuntos. En el caso de solicitar una combinatoria o permutación con repetición de elementos se agrega la indicación repeats.allowed = TRUE a la función, y para quitar las repeticiones repeats.allowed = FALSE.
#Permutación sin repetición
permuta_sin= permutations(11, 3,repeats.allowed = FALSE)
contador_permuta_sin= nrow(permuta_sin)
print(contador_permuta_sin)
## [1] 990
La cantidad de permutaciones posibles sin repetición es de 990.
#Permutación con repetición
permuta_con = permutations(11, 3,repeats.allowed = TRUE)
contador_permuta_con=nrow(permuta_con)
print(contador_permuta_con)
## [1] 1331
La cantidad de permutaciones posibles con repeticion es de 1331.
#Combinación sin repetición
combinacion_sin = combinations(5,3,repeats.allowed = FALSE)
contador_combinacion_sin=nrow(combinacion_sin)
print(contador_combinacion_sin)
## [1] 10
La cantidad de combinaciones posibles sin repeticion es de 10.
#Combinación con repetición
combinacion_con = combinations(5,3,repeats.allowed = TRUE)
contador_combinacion_con= nrow(combinacion_con)
print(combinacion_con)
## [,1] [,2] [,3]
## [1,] 1 1 1
## [2,] 1 1 2
## [3,] 1 1 3
## [4,] 1 1 4
## [5,] 1 1 5
## [6,] 1 2 2
## [7,] 1 2 3
## [8,] 1 2 4
## [9,] 1 2 5
## [10,] 1 3 3
## [11,] 1 3 4
## [12,] 1 3 5
## [13,] 1 4 4
## [14,] 1 4 5
## [15,] 1 5 5
## [16,] 2 2 2
## [17,] 2 2 3
## [18,] 2 2 4
## [19,] 2 2 5
## [20,] 2 3 3
## [21,] 2 3 4
## [22,] 2 3 5
## [23,] 2 4 4
## [24,] 2 4 5
## [25,] 2 5 5
## [26,] 3 3 3
## [27,] 3 3 4
## [28,] 3 3 5
## [29,] 3 4 4
## [30,] 3 4 5
## [31,] 3 5 5
## [32,] 4 4 4
## [33,] 4 4 5
## [34,] 4 5 5
## [35,] 5 5 5
La cantidad de combinaciones posibles con repeticion es de 35.
#Permutacion Sin repetición (*No se utiliza función ya que computador no tiene la memoria suficiente para desarrollar la acción).
permutacion_c = factorial(39)/factorial(39-25)
permutacion_c
## [1] 2.339789e+35
La cantidad de permutaciones sin repeticion es de 2.339789e+35
#Combinacion Sin repetición(*No se utiliza función ya que computador no tiene la memoria suficiente para desarrollar la acción).
combinacion_c = (factorial(39))/(factorial(25)*factorial(39-25))
combinacion_c
## [1] 15084504396
La cantidad de combinaciones sin repeticion es de 15084504396
Cantidad de rutas posibles : \(rutas = (n-1)!\)
rutas = factorial(50-1)
print(rutas)
## [1] 6.082819e+62
La cantidad de rutas posibles es de 6.082819e+62
probabilidadRuta= 1/factorial(50-1)
print(probabilidadRuta)
## [1] 1.643975e-63
La probabilidad de que 1 ruta seleccionada sea la más optima es de 1.643975e-63
probabilidadRuta2= 1/(factorial(50-1)-1)
probabilidadRuta2
## [1] 1.643975e-63
La probabilidad es de 1.643975e-63
La ecuación para calcular el porcentaje total de los clientes atendidos a los cuales se les limpian los vidrios por trabajador corresponde a :
\(P (T/L) = P(L/T) * P(T)/ Σ P(L/T1)*P(T1)+P(L/T2)*P(T2)...P(L/Tn)*P(Tn)\)
Donde, P(T/L) corresponde a la probabilidad por trabajador de haber antendido a un cliente y además haber limpiado sus vidrios, P(L/T) es la probabilidad de limpiar los vidrios de cada trabajador (para el calculo, 1- probabilidad de no limpiar vidrios), P(T) es la probabilidad de haber atendido a un cliente. Todo este calculo se divide en la sumatoria de probabilidad de limpiar los vidrios por probabilidad de haber atendido a un cliente por cada trabajador.
PpedroL = ((19/20)*0.05)/(((19/20)*0.05)+((19/20)*0.1)+((9/10)*0.6)+((9/10)*0.15)+((2/5)*0.1))
print(PpedroL)
## [1] 0.05539359
La probabilidad de que el trabajador haya sido Pedro es de 5,54%
PjanetL = ((19/20)*0.1)/(((19/20)*0.05)+((19/20)*0.1)+((9/10)*0.6)+((9/10)*0.15)+((2/5)*0.1))
PgeorginaL= ((9/10)*0.15)/(((19/20)*0.05)+((19/20)*0.1)+((9/10)*0.6)+((9/10)*0.15)+((2/5)*0.1))
janetOgeorgina = PjanetL + PgeorginaL
print(janetOgeorgina)
## [1] 0.2682216
La probabilidad de que haya sido atendido por Janet o Georgina es de 26,82%
PjanetL = ((19/20)*0.1)/(((19/20)*0.05)+((19/20)*0.1)+((9/10)*0.6)+((9/10)*0.15)+((2/5)*0.1))
PgeorginaL= ((9/10)*0.15)/(((19/20)*0.05)+((19/20)*0.1)+((9/10)*0.6)+((9/10)*0.15)+((2/5)*0.1))
PpedroL = ((19/20)*0.05)/(((19/20)*0.05)+((19/20)*0.1)+((9/10)*0.6)+((9/10)*0.15)+((2/5)*0.1))
PtomasL = ((9/10)*0.6)/(((19/20)*0.05)+((19/20)*0.1)+((9/10)*0.6)+((9/10)*0.15)+((2/5)*0.1))
PmarcelaL = ((2/5)*0.1)/(((19/20)*0.05)+((19/20)*0.1)+((9/10)*0.6)+((9/10)*0.15)+((2/5)*0.1))
Total = PjanetL + PgeorginaL + PpedroL + PtomasL + PmarcelaL
print(Total)
## [1] 1
La probabilidad de que haya sido atendido por cualquier trabajador de la bencinera es de 1 (100%), este resultado corresponde a la totalidad de la muestra, es por ello que expresa la probabilidad de 1.
rechazoPrimera= (18/40)
rechazoSegunda= (17/39)
rechazoA= rechazoPrimera*rechazoSegunda
rechazoA
## [1] 0.1961538
rechazoPrimera= (18/40)
rechazoTercero= (17/38)
rechazoB= rechazoPrimera*rechazoTercero
rechazoB
## [1] 0.2013158
rechazoSegundoc= (18/39)
rechazoTercero= (17/38)
rechazoC= rechazoPrimera*rechazoTercero
rechazoC
## [1] 0.2013158