diff --git a/latex/content.tex b/latex/content.tex index aa0432a..433621d 100644 --- a/latex/content.tex +++ b/latex/content.tex @@ -123,6 +123,67 @@ with 10 packets. \section{Next Fit Dual Bin Packing algorithm} +\subsection{La giga demo} + +Let $ k \in \mathbb{N} $. Let $ (U_n)_{n \in \mathbb{N}} $ be a sequence of +independent random variables with uniform distribution on $ [0, 1] $, representing +the size of the $ n $-th item. + +Let $ i \in \mathbb{N} $. $ T_i $ denotes the number of items in the $ i $-th +bin. We have that + +\begin{equation} + T_i = k \iff U_1 + U_2 + \ldots + U_{k-1} < 1 \text{ and } U_1 + U_2 + \ldots + U_{k} \geq 1 +\end{equation} + +Let $ A_k = \{ U_1 + U_2 + \ldots + U_{k-1} < 1 \}$. Hence, + +\begin{align*} + % TODO = k + P(T_i = k) + & = P(A_{k-1} \cap A_k^c) \\ + & = P(A_{k-1}) - P(A_k) \qquad \text{ (as $ A_k \subset A_{k-1} $)} \\ +\end{align*} + +We will try to show that $ \forall k \geq 2 $, $ P(A_k) = \frac{1}{k!} $. +To do so we will use induction to demonstrate that + +\begin{equation} + \label{eq:induction} + P(U_1 + U_2 + \ldots + U_{k-1} < a) = \frac{a^k}{k!} \qquad \forall a \in [0, 1], \forall k \geq 2 +\end{equation} + +Let us denote $ S_k = U_1 + U_2 + \ldots + U_{k-1} \qquad \forall k \geq 2 $. + +\paragraph{Base cases} $ k = 2 $ : $ P(U_1 < a) = a $ + +$ k = 2 $ : \[ P(U_1 + U_2 < a) = \iint_{\cal{D}} f_{U_1, U_2}(x, y) \cdot (x + y) dxdy \] + +Where $ \mathcal{D} = \{ (x, y) \in [0, 1]^2 \mid x + y < a \} $. + +$ U_1 $ and $ U_2 $ are independent, so +\begin{align*} + f_{U_1, U_2}(x, y) & = f_{U_1}(x) \cdot f_{U_2}(y) \\ + & = \begin{cases} + 1 & \text{if } x \in [0, 1] \text{ and } y \in [0, 1] \\ + 0 & \text{otherwise} \\ + \end{cases} \\ +\end{align*} + +Hence, + +\begin{align*} + P(U_1 + U_2 < a) + & = \iint_{\cal{D}} (x + y)dxdy \\ + & = \int_{0}^{a} \int_{0}^{a - x} (x + y) dy dx \\ + & = \int_{0}^{a} \left[ xy + \frac{y^2}{2} \right]_{y=0}^{y=a - x} dx \\ + & = \int_{0}^{a} \left( ax - x^2 + \frac{a^2}{2} - ax + \frac{x^2}{2} \right) dx \\ + & = \int_{0}^{a} \left( \frac{a^2}{2} - \frac{x^2}{2} \right) dx \\ + & = \left[ \frac{a^2 x}{2} - \frac{x^3}{6} \right]_{0}^{a} \\ + & = \frac{a^3}{2} - \frac{a^3}{6} \\ +\end{align*} + + \section{Complexity and implementation optimization} The NFBP algorithm has a linear complexity $ O(n) $, as we only need to iterate @@ -140,10 +201,10 @@ store the current sum and the current sum of squares for different variables. While the mean can easily be calculated by summing then dividing, the variance can be calculated using the following formula: -\begin{align} +\begin{align*} {S_N}^2 & = \frac{1}{N-1} \sum_{i=1}^{N} (X_i - \overline{X})^2 \\ & = \frac{1}{N-1} \sum_{i=1}^{N} X_i^2 - \frac{N}{N-1} \overline{X}^2 -\end{align} +\end{align*} The sum $ \frac{1}{N-1} \sum_{i=1}^{N} X_i^2 $ can be calculated iteratively after each simulation. @@ -155,7 +216,6 @@ the above formulae to calculate the mean and variance of $ N = 10^6 $ random numbers. We wrote the following algorithms \footnotemark : \footnotetext{The full code used to measure performance can be found in Annex \ref{annex:performance}.} -% TODO annex \paragraph{Intuitive algorithm} Store values first, calculate later