cours-m1-eea/455-Codage_Sources/TD/TD2/TD2.tex

91 lines
3.3 KiB
TeX
Raw Permalink Normal View History

2019-01-15 15:56:28 +01:00
\documentclass{article}
\input{../../preambule/preambule}
\newcommand{\nom}{TD2 : Random TD}
\renewcommand{\nomentete}{UE455 - \nom}
\begin{document}
\titre{\nom}
\cacededi{Tu vois E.? Il a renversé sa bière sur le Mac Book de B. Alors B. était vénère. Du coup il lui a sucé la bite.}{Cédric Colonna}
\section*{Exercice 3 : Code préfixe pour les entiers}
\begin{enumerate}\setlength{\itemsep}{1cm}
\item Si $\forall k,k \leq m$, alors il faut $\lceil \log_2 k \rceil$ ($\log_2 k$ arrondi au supérieur). Les codes sont ici tous de la même longueur, donc ce codage est préfixe.
\item $\lceil \log_2 k \rceil$ donne la taille du nombre $k$ codé.
\begin{center}
\begin{tabular}{|c|c|c|}
\hline
$k$ & $\lceil \log_2 k \rceil$ & $C(k)$ \\
\hline
0 & 0 & 10 \\
\hline
1 & 0 & 11 \\
\hline
2 & 1 & 0110 \\
\hline
\end{tabular}
\end{center}
\item $ C_1(k)$ est-il préfixe ?
On prend $k_1 \neq k_2$
\begin{itemize}
\item si $\lceil \log_2 k_1 \rceil = \lceil \log_2 k_2 \rceil$, alors la 2e partie du code est différente. Les deux codes font la même longueur mais sont différents, donc c'est préfixe.
\item si $\lceil \log_2 k_1 \rceil < \lceil \log_2 k_2 \rceil$, alors la 1e partie du code est différente, donc c'est préfixe.
\end{itemize}
\item $l_1(k) = \lceil \log_2 k \rceil + 1 + \lceil \log_2 k \rceil = 2\lceil \log_2 k \rceil + 1 = 2 \log_2 k + \mathcal{O}(1)$
\item On code $\lceil \log_2 k \rceil$ avec $C_1$ : $C_2(k) = C_1(\lceil \log_2 k \rceil)x...x$$x...x$ est $k$ en binaire.
On a alors $l_2(k) = 2 \lceil \log_2 ( \lceil \log_2 k \rceil ) \rceil + \lceil\log_2 k \rceil = 2 \log_2 (\log_2 k) + \log_2 k + \mathcal{O}(1)$
\end{enumerate}
\section*{Exercice 5 : Distribution de redondance minimale}
On considère un code préfixe : $C=\{C_1,C_J\}$ dont la longueur de chaque mot de code est $l_i, i = 1 \dots J$.
On considère une source $X$ dont l'alphabet est $A=\{a_1,...a_J\}$ et le vecteur de probabilités $\underline{p}=[p_1, \dots p_J]$.
\newcommand{\p}{\underline{p}}
\begin{enumerate}\setlength{\itemsep}{1cm}
\item Donner l'entropie de la source .
\[H(\p) = - \sum_{i=1}^J p_i \log_2 p_i\]
\item Donner la longueur moyenne du code.
\[l(C,\p) = \sum_{i=1}^J p_i l_i \]
\item Donner la redondance du code
\[ R(C,\p) = l(c,\p) - H(\p) = \sum_{i=1}^J p_i (l_i + \log_2 p_i) \]
On veut chercher $\p$ qui va minimiser $R(c,\p)$
\item Quelles sont les contraintes que doivent satisfaire les composantes de $\p$ ?
\[ \sum_{i=1}^J p_i=1 \quad \et \quad \forall i=1,\dots J, \quad 0 \leq p_i \leq 1\]
\item Un problème d'optimisation sous contraintes. Minimiser $R=\sum_{i=1}^J p_i (l_i + \log_2 p_i)$
\item On utilise le lagrangien :
\[ L(\p,\ld) = \sum_{i=1}^J p_i(l_i+\log_2 p_i) + \ld(\sum_{i=1}^J p_i-1) \]
\item Condition d'optimalité :
\begin{align*}
\acc{\drond{L}{p_i}(\p^*,\ld^*)&=0, \quad \forall i = 1,\dots J}{\drond{L}{\ld}(\p^*,\ld^*)&=0} & \Leftrightarrow \acc{l_i + \log_2p_i^* + \log_2 e + \ld^* & = 0}{\sum_{i=1}^J p_i^*-1 & =0}\\
& \Leftrightarrow \acc{p_i^* & = 2^{-l_i - \ld^* - \log_2 e} }{1 & = \sum_{i=1}^J 2^{-l_i}2^{-\ld^*-\log_2 e}} \\
& \Leftrightarrow \acc{p_i^* & = 2^{-l_i}2^{- \ld^* - \log_2 e} }{2^{-\ld^*-\log_2 e} & = \frac{1}{\sum_{i=1}^J 2^{-l_i}}}
\end{align*}
\[ \boxed{ p_i^*= \frac{2^{-l_i}}{\sum_{i=1}^J 2^{-l_i}}} \]
\end{enumerate}
\end{document}