Les signaux déterministe sont utilisé pour les test ou les commandes . Ils sont cependants insuffisant pour décrire l'ensemble des phénomènes qui peuvent être aléatoire ou stochastique. Il est donc nécessaire d'introduire des ``signaux aléatoires'' (SA).
\begin{exemple}[Lot de resistances ``identiques'']
On considère un lot de résistance de même valeur indiqué par le code couleur, et de même précision. Elles ont en réalité toutes des valeurs différentes $R_i$. on note $s_i(t)$ , la tension au borne de $R_i$.
On a $s_i(t)=0$ mais avec $A\gg1$ on obtient $A.s_i(t)\neq0$.
Alors: $\overline{s_i(t)}=0$ mais il existe une fluctuation de la tension due au bruit thermique.
On note alors :
\[
s_i(t)= s(t,i)= s(t,\omega)
\]
C'est une réalisation particulière du SA, appelé par la suite trajectoire.
\end{exemple}
Dans le cas général on parle de fonction aléatoire $F(\theta,\omega)$ ,où $\theta$ est un paramètre certain (comme le temps par exemple).
\begin{rem}
Un signal aléatoire n'est caractérisé qu'en moyenne.
\begin{itemize}
\item moyenne à $\omega$ donné : $s(t,\omega_0)=s_0(t)$ : \textbf{moyenne temporelle}
\item La réalisation d'une expérience aléatoire (on ne peux pas prédire avec certitude le résultat) est un \textit{évènement}$\omega$, singleton de $\Omega$ ensembles de tous les évènements.
\begin{exemple}[jet de dé]
aux évènements ``Tirer 1, ... ,6 `` on associe $\Omega={\omega_1,...\omega_6}$
\end{exemple}
\item$\mathcal{E}$est une tribu (ou $\sigma$-algèbre) de $\Omega$, tel que:
\begin{itemize}
\item$\Omega\in\mathcal{E}$
\item$\mathcal{E}$ est stable par union , intersection et complémentarité.
Soit $A$ et $B$ deux évènements. On appelle \emph{probabilité conditionnelle} la probabilité de $A$ sachant que $B$ est réalisé:
\[
P(A|B)=\frac{P(A\cap B)}{P(B)}
\]
\end{defin}
\begin{prop}[Formule de Bayès]
\[
P(A|B)=\frac{P(B|A)P(A)}{P(B)}
\]
\end{prop}
\subsection{Indépendance}
\begin{defin}
Deux évènements $A$ et $B$ sont dits \emph{indépendant} si et seulement si le fait que $A$ est réalisé n'apporte pas d'information sur la réalisaiton de $B$
\begin{align*}
& P(A|B) = P(A)\\
\iff& P(B|A) = P(B)\\
\iff& P(A\cap B) = P(A) .P(B)
\end{align*}
\end{defin}
\begin{defin}
Des évènements $(E_i)_{i\in\mathbb{I}}$ sont dits mutuellement indépendants (ou encore indépendants dans leur ensemble), si et seulement si:
L'entropie (avec une source sans mémoire) donne une borne supérieure de la quantité d'information réelle contenue dans un message. Dans le cas d'un texte, l'entropie au sens d'une source de Makorv diminue quand on augmente l'ordre, jusqu'à se stabiliser au bout d'un certain ordre.
\end{rem}
\end{rem}~
\begin{prop}[Code préfixe à longueur minimale]
\begin{prop}[Code préfixe à longueur minimale]
\begin{itemize}
\item Si $p_i\ge p_j$, $l_i\le l_j$
\item Les noms de codes associé aux deux symboles les moins probables sont de même longueur
\item Les noms de codes associé aux deux symboles les moins probables ne diffère que d'un seul bit à la fin.
\end{itemize}
\end{prop}
\subsection{Codage de Huffmann}
On considère une source $X$ à valeurs dans $\X$, de probabilités associées $p_i=Pr(X=a_i)$, pour $a_i\in\X$.
\paragraph{Code préfixe à longueur minimale}
Pour qu'un code à longueur variable préfixe $C$ de longueurs de mots de code $l_1,...,l_j$ soit un code de Huffmann, il faut que :
\item les deux mots de codes associés aux symboles les moins probables aient la même longueur
\item parmi tous les mots de code de longueur maximale, deux d'entre eux ne diffèrent que par le dernier bit.
\end{itemize}
On considère une source $X$ à valeurs dans $\X$, de probabilités associées $p_i=Pr(X=a_i)$, pour $i\in\X$.
\paragraph{Principe d'un code de Huffmann}
À partir de ces propriétés, on peut fabriquer un code de Huffmann.
Initialement, on considère une source $X^{(0)}$ à $J$ symboles $\X=\{a_1,\dots a_J\}$
\begin{enumerate}
\item On identifie les deux symboles $a_i^{(0)}$ et $a_j^{(0)}$ les moins probables, avec les probabilités associées $p_i^{(0)}$ et $p_j^{(0)}$
\item On fabrique une source fictive $X^{(1)}$ émettant tous les symboles de $\X$ sauf $a_i^{(0)}$ et $a_j^{(0)}$, remplacé par le symbole fictif $a_{ij}^{(0)}$ de probabilité $p_i^{(0)}+p_j^{(0)}$.
$\X^{(1)}$ comporte $J-1$ éléments.
\item On répète 1 et 2 jusqu'à ce qu'il n'y ait plus que deux symboles.
Au bout de $J-2$ itérations, il reste deux symboles $\X^{(J-2)}=\{a_1^{(J-2)},a_2^{(J-1)}\}$. Le premier est identifié avec un 0, le second avec un 1.\\
Si $a_1^{(J-2)}$ est un symbole fictif résultant du regroupement de deux symboles $a_1^{(J-3)}$ et $a_2^{(J-3)}$ alors le code associé à ces deux symboles est obtenu en rajoutant 0 ou 1 au code associé à $a_1^{(J-2)}$.\\
Plus généralement, si $\underline{C}$ est le code associé au symbole fictif $a_i^{k)}$ résultant du regroupement de $a_i^{(k-1)}$ et $a_j^{(k-1)}$, alors le code de $a_i^{(k-1)}$ sera $\underline{C}0$ et le code de $a_j^{(k-1)}$ sera $\underline{C}1$.\\
\begin{prop}
On montre que la longueur moyenne $\overline{l}$ d'un code de Huffmann associé à une source satisfait
\[ H(x)\leq\overline{l}\leq H(X)+1\]
On peut obtenir des codes plus performants en codant des paires de symboles, des triplets... des N-uplets de symboles. Avec ce type de technique, la longueur moyenne $\overline{l}$ par symbole de la source initiale satisfait :
\[H(X)\leq\overline{l}\leq H(X)+1\]
L'inconvénient est la taille de la table de Huffmann à gérer.
\end{prop}
On montre que la longueur moyenne $\overline{l}$ d'un code de Huffmann associé à une source satisfait \[ H(x)\leq\overline{l}\leq H(X)+1\]
\begin{rem}
\begin{itemize}
\item Ce type de code est efficace lorsque $H(x)\gg1$.
On peut obtenir des codes plus performants en codant des paires de symboles, des triplets... des N-uplets de symboles. Avec ce type de technique, la longueur moyenne $\overline{l}$ par symbole de la source initiale satisfait : \[H(X)\leq\overline{l}\leq H(X)+1\]
\item Dans le cas ou $H(x)< 1$ il est possible de construire un code de Huffman pour des groupes de $M$ symboles. Dans ce cas on a :
\[
MH(x)\le\overline{l_M} < MH(x)+1
\]
\end{itemize}
\end{rem}
Il reste cependant plusieurs problèmes :
\begin{itemize}
\item Grande taille du code de Huffmann
\item Il faut donner les infos nécessaires aux décodeur pour le décodage:
\begin{itemize}
\item On transmet le code(couteux)
\item On transmet le vecteur de probabilité $\vec{p}$ (plus complexe)
\item On utilise un code standardisé (ex: JPEG)
\end{itemize}
\end{itemize}
\paragraph{Exercice:} Coder l'algorithme de Huffman dans le langage de votre choix.
L'inconvénient est la taille de la table de Huffmann à gérer.
\end{prop}
\newpage
\subsection{Codage arithmétique}
On considère une source binaire $X$ avec $p_0=Pr(X=0)$ et $p_i=Pr(X=i)$.
Cette source génère un message $x_{1:N}$ de longueur $N$.
On va associer un code $\underline{c}(x_{1:N})$ à $x_{1:N}$ qui sera un nombre dans l'intervalle $[0,1[$.
On va associer un code $\underline{c}(x_{1:N})$ à $x_{1:N}$ qui sera un nombre dans l'intervalle $[0,1[$.
\paragraph{Exercice:} Construire une fonction \texttt{a = binaire(x,m)} qui donne les $m$ premier bits de la représentation binaire de $x\in[0,1]$.
On essaie de représenter $\c(x_{1:N})$ avec peu de bits si $x_{1:N}$ est très probable et avec plus de bits si $x_{1:N}$ est moins probable.
\subsubsection{Algorithme de codage arithmétique (codage d'Elias)}
\subsubsection{Algorithme de codage arithmétique en précision inifinie}
On considère une source binaire sans mémoire décritre par $p=(p_0,p_1)^T$ et ayant généré $x =(x_1 ... x_n)$ à coder.
où $\lfloor a \rfloor_{\lambda}$ est la représentation binaire de $a$ tronquée à $\lambda$ bits. (Exemple : $\lfloor0,1011\rfloor_2=0,10$)\\
\subsubsection{Algorithme de décodage arithmétique en précision infinie}
Le décodeur arithmétique va chercher à déterminer les selections des sous intervalles faites par le codeur.\\
\textbf{Entrée}: $\vec{c},\vec{p},N$
\begin{enumerate}
\item Initialisation : $[l_0,h_0[=[0,1[$
On note $\tilde{\lambda}$ le nombre dont la représentation est $\vec{c}$
\item\textbf{Pour i allant de 1 à n}:
\begin{itemize}
\item Si $\tilde{\lambda}\in[l_{i-1},l_{i-1}+p_0(h_{i-1}-l_{i-1})]$ alors : $x_i=0$ et $[l_i,h_i[=[l_{i-1},l_{i-1}+p_0(h_{i-1}-l_{i-1})]$
\item sinon $x_i=1$ et $[l_i,h_i[=[l_{i-1}+p_0(h_{i-1}-l_{i-1}),h_{i-1}]$
\end{itemize}
\end{enumerate}
Il faut montrer que $c(x_{1:N})\in[l_N,h_N[$ (et qu'alors on pourra décoder), et que cette procédure de codage est efficace. \\
\subsubsection{Performance}
Il faut montrer que $c(x_{1:N})\in[l_N,h_N[$ (et qu'alors on pourra décoder), et que cette procédure de codage est efficace, ie $E(\mu(X_1...X_N ))\simeq NH(x)$
\begin{itemize}
\item On sait que $c(x_{1:N})\leq\mu(x_{1:N})$ et on veut montrer que $\mu(x_{1:N})-c(x_{1:N})\leq\frac{h_N-l_N}{2}$.\\
Avec par exemple
$\mu(x_{1:N})=0,101xxx$ et $c(x_{1:N})=0,101$, alors
Ainsi, $\mu(x_{1:N})- c(x_{1:N})\leq2^{-\lambda(x_{1:N})}\leq\frac{p(x_{1:N})}{2}=\frac{h_N-l_N}{2}$ donc $c(x_{1:N})\in[l_N,h_N[$ (donc on pourra décoder).
\newpage
\item L'efficacité du codage est montrée en calculant la longueur moyenne du code obtenu :
Cette procédure est efficace pour $N\to+\infty$, avec l'$\infty$ petit. Par exemple, pour $N=100$, alors la longueur moyenne sera proche à $1\%$ de l'entropie.
\end{itemize}
\paragraph{Décodage}
On part de $c(x_{1:N})$, on réalise le découpage de $[0,1[$ suivant les probabilités d'apparition de 0 et de 1. À chaque étape, l'intervalle auquel appartient $c(x_{1:N})$ permet de déterminer le bit codé.\\
\subsubsection{Réalisation pratique}
En pratique, le codage utilise l'intervalle $[0,2^p[$ où $p$ désigne la précision du codeur arithmétique. (pour le codage H264/AVC, on a $p=9$).