You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Some corrections in text. Also, the image of points on the Cartesian plane was changed for a new one (it's close the same), and the name of it was changed to [Cartesian.png]; the old [Pointsn.png] image was renamed to [Points.png]
Copy file name to clipboardExpand all lines: Article/LRPS-ES.md
+14-14Lines changed: 14 additions & 14 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -35,12 +35,12 @@ En el modelo se ha decidido que el sabor galleta es el favorito, por lo que debe
35
35
36
36
[](https://github.com/arhcoder/LRPS-Algorithm"Comparison between linear and logarithmic scale")
37
37
38
-
Una representación vaga de cómo luce la diferencia entre una escala lineal y una logarítmica, está mostrada en la imagen anterior; si la tomamos como ejemplo, podríamos entender el algoritmo de decisión como colocar un punto de manera aleatoria en cualquiera de las dos escalas, y cada espacio entre dos divisiones representa un objeto a seleccionar. Para el caso de la escala lineal, la probabilidad de encontrarse con el objeto entre **0 y 1,** es la misma que del objeto entre **1 y 2,** o **2 y 3.** En cambio, con la escala logarítmica, la probabilidad de caer en el objeto entre **0 y 1** es muy distinta que la del objeto entre **5 y 6.**
38
+
Una vaga representación de cómo luce la diferencia entre una escala lineal y una logarítmica, está mostrada en la imagen anterior; si la tomamos como ejemplo, podríamos entender este algoritmo de decisión como colocar un punto de manera aleatoria en cualquiera de las dos escalas, en donde espacio entre dos divisiones representa un objeto a seleccionar. Para el caso de la escala lineal, la probabilidad de encontrarse con el objeto entre **0 y 1,** es la misma que del objeto entre **1 y 2,** o **2 y 3.** En cambio, con la escala logarítmica, la probabilidad de caer en el objeto entre **0 y 1** es muy distinta que la del objeto entre **5 y 6.**
39
39
Utilizando datos reales para el ejemplo de escoger un sabor de helado, tendríamos la siguiente comparación de escalas:
40
40
41
41
[](https://github.com/arhcoder/LRPS-Algorithm"Linear and logarithmic scales for five flavors")
42
42
43
-
Esta es la forma que tiene la escala del algoritmo ***LRPS*** comparada a un algoritmo de ruleta. Si lanzáramos un punto aleatorio entre este espacio; obtendríamos las decisiones para ambos tipos de algoritmos serían:
43
+
Esta es la forma que tiene la escala del algoritmo ***LRPS*** comparada a un algoritmo de ruleta. Si lanzáramos un punto aleatorio entre este espacio; obtendríamos las decisiones para ambos tipos de algoritmos, que serían:
44
44
45
45
[](https://github.com/arhcoder/LRPS-Algorithm"Selection example for five flavors on linear and logarithmic scales")
46
46
@@ -52,25 +52,25 @@ Al ser más grande el espacio de la fresa con respecto al chocolate, es más pro
52
52
<br>
53
53
54
54
### Matemáticas
55
-
La manera de construir una escala logarítmica adaptada a la ***n*** cantidad de objetos a seleccionar es posible a través de conjunto ***P*** de puntos sobre un **eje cartesiano** en los que cada punto delimita el espacio de selección de cada uno de los ***n*** elementos de la lista, siguiendo la siguiente fórmula:
55
+
La manera de construir una escala logarítmica adaptada a la ***n*** cantidad de objetos a seleccionar es posible a través de **conjunto *P* de puntos sobre un eje cartesiano** en los que cada punto delimita el espacio de selección de cada uno de los ***n*** elementos de la lista, utilizando la siguiente fórmula:
56
56
57
57
[](https://github.com/arhcoder/LRPS-Algorithm"Formula to build a n spaces logarithmic scale")
58
58
59
-
Es decir, dado el mismo caso de construir la escala sobre un eje cartesiano, con ***n*** cantidad de espacios (objetos) y por ende ***n*** cantidad de puntos de división, la distancia entre cada punto ***i*** y el origen (coordenada (0, 0)) está dada por la fórmula:
59
+
Es decir, dado el mismo caso de construir la escala sobre un eje cartesiano, con ***n*** cantidad de espacios (objetos) y por ende ***n*** cantidad de puntos de división, la distancia entre cada punto ***i*** y el ***origen*** (coordenada (0, 0)) está dada por la fórmula:
60
60
61
61
[](https://github.com/arhcoder/LRPS-Algorithm"Formula for distances on a n spaces logarithmic scale")
62
62
63
-
Si se desea encontrar la coordenada del punto 1, para el ejemplo de los sabores de helados (n = 5), la coordenada sería:
63
+
Si se desea encontrar la coordenada del punto 1, para el ejemplo de los cinco sabores de helados (n = 5), la coordenada sería:
64
64
65
65
[](https://github.com/arhcoder/LRPS-Algorithm"Calculation of the space of a point 1 in logarithmic scale with n = 5")
66
66
67
-
Entonces, si se quieren encontrar todos los puntos necesarios para construir la escala logarítmica de cinco objetos:
67
+
Entonces, para encontrar todos los puntos necesarios para construir la escala logarítmica de cinco objetos:
68
68
69
-
[](https://github.com/arhcoder/LRPS-Algorithm"Calculation of the five points of a logarithmic scale")
69
+
[](https://github.com/arhcoder/LRPS-Algorithm"Calculation of the five points of a logarithmic scale")
**Nota: El uso de eje cartesiano es innecesario para el algoritmo, puesto que sólo se necesita saber la distancia entre el origen y cualquier otro punto de la escala; por lo que sólo será necesaria la fórmula de distancia: di = nlogn+1(i+1).**
73
+
**Nota: El uso de eje cartesiano es innecesario para el algoritmo, puesto que sólo se necesita saber la distancia entre el origen y cualquier otro punto de la escala; por lo que sólo será necesaria la fórmula de distancia: di = nlogn+1(i+1).**
74
74
75
75
<br>
76
76
@@ -81,14 +81,14 @@ El pseudocódigo del algoritmo de selección se muestra a continuación:
81
81
82
82
Se recibe de entrada una lista de objetos de la cuál se obtiene el valor de ***n*** como la cantidad de objetos en la selección. Un par de casos de paro se dan cuando la lista está vacía o contiene sólo un elemento, en casos contrarios se procede con el resto del algoritmo, en donde se obtiene un número decimal aleatorio entre 0 y ***n***, y se inicia un ciclo de 1 hasta ***n.***
83
83
84
-
Dentro del ciclo se calcula –usando la misma analogía de un plano cartesiano– la distancia del ***"origen"*** hasta el primer punto de la escala logarítmica **(p1),** utilizando la fórmula de distancia antes descrita. Si el punto aleatorio está entre 0 y la distancia del primer punto de la escala; es decir, si el punto aleatorio quedó antes de p1 **(punto aleatorio <= distancia a p1),** entonces se toma la decisión de tomar el objeto de dicho espacio (el objeto número 1), en caso de que el punto aleatorio esté por encima de este primer aleatorio, se continúa con el ciclo hasta encontrar el espacio en que cayó el punto.
84
+
Dentro del ciclo se calcula –usando la misma analogía de un plano cartesiano– la distancia del ***"origen"*** hasta el primer punto de la escala logarítmica **(p1),** utilizando la fórmula de distancia antes descrita. Si el punto aleatorio está entre 0 y la distancia del primer punto de la escala; es decir, si el punto aleatorio quedó antes de p1 **(punto aleatorio <= distancia a p1),** entonces se toma la decisión de tomar el objeto de dicho espacio (el objeto número 1), en caso de que el punto aleatorio esté por encima de este primer punto de la escala, se continúa con el ciclo hasta encontrar el espacio en que cayó el punto.
85
85
86
-
El algoritmo tiene una **complejidad lineal** de **O(n)** –con Big O notation–, recordando que ***n*** es la cantidad de objetos en la lista inicial de decisión.
86
+
El algoritmo tiene una **complejidad linealO(n)** –con notación ***"Big O"***–, recordando que ***n*** es la cantidad de objetos en la lista inicial de decisión.
87
87
88
88
<br>
89
89
90
90
### Experimentos
91
-
Haciendo pruebas de conteo para las decisiones tomadas por el algoritmo, a fin de comprobar el sesgo en las elecciones, **repitiendo la selección una cierta cantidad de veces y contando cuántas veces se eligió cada uno de los objetos se graficó:**
91
+
Haciendo pruebas de conteo para las decisiones tomadas por el algoritmo, a fin de comprobar el sesgo en las elecciones, **repitiendo la selección una cierta cantidad de veces y contando cuántas veces se eligió cada uno de los objetos, se graficó:**
92
92
93
93
**1. Con 5 objetos y 100 repeticiones:**
94
94
@@ -112,7 +112,7 @@ Haciendo pruebas de conteo para las decisiones tomadas por el algoritmo, a fin d
112
112
113
113
**Se puede comprobar que se obtiene la forma de la curva de un logaritmo.**
114
114
115
-
**Nota:** Para la generación de números aleatorios se utilizó la función ***random*** del **core de Python v.3.11.0 de 64 Bits.** El script de medición así como el algoritmo ***LRPS*** se encuentran en [**este repositorio**](https://github.com/arhcoder/LRPS-Algorithm"este repositorio").
115
+
**Nota:** Para la generación de números aleatorios se utilizó la función ***random*** del **core de Python v.3.11 de 64 Bits.** El script de medición así como el algoritmo ***LRPS*** se encuentran en [**este repositorio**](https://github.com/arhcoder/LRPS-Algorithm"este repositorio").
116
116
117
117
<br>
118
118
@@ -121,7 +121,7 @@ Esta es sólo una propuesta de algoritmo, puede ser de utilidad en; por ejemplo,
121
121
122
122
En caso de que para un problema específico se quiera que dos o más objetos tengan la misma probabilidad de selección, se puede considerar –para esta implementación– que dichos objetos estén incluidos en una estructura de datos que les contenga como **UN** solo objeto, de modo que si el algoritmo los escoge, arrojará a los objetos en conjunto, posteriormente y mediante una decisión del tipo ruleta (como la escala lineal) se puede escoger alguno de estos.
123
123
124
-
Consulta el código del algoritmo desde el **repositorio** principal en [**github.com/arhcoder/LRPS-Algorithm**](https://github.com/arhcoder/LRPS-Algorithm"**github.com/arhcoder/LRPS-Algorithm**"), cualquier **colaboración y/o propuesta de mejora** será bien recibida, al igual que una **estrella de GitHub.**
124
+
Consulta el código del algoritmo desde el **repositorio principal** en [**github.com/arhcoder/LRPS-Algorithm**](https://github.com/arhcoder/LRPS-Algorithm"**github.com/arhcoder/LRPS-Algorithm**"), cualquier **colaboración y/o propuesta de mejora** será bien recibida, al igual que una **estrella de GitHub.**
125
125
126
126
Escríbeme a **arhcoder@gmail.com** para cualquier inquietud, o si te resultó útil este aporte en alguna aplicación y búscame en redes sociales como **@arhcoder.**
0 commit comments