\section{Huffman Codes} \remark{} As a first example, consider the alphabet $\{\texttt{A}, \texttt{B}, \texttt{C}, \texttt{D}, \texttt{E}\}$. \par With a na\"ive coding scheme, we can encode a length-$n$ string with $3n$ bits, by mapping... \begin{itemize} \item $\texttt{A}$ to $\texttt{000}$ \item $\texttt{B}$ to $\texttt{001}$ \item $\texttt{C}$ to $\texttt{010}$ \item $\texttt{D}$ to $\texttt{011}$ \item $\texttt{E}$ to $\texttt{100}$ \end{itemize} With this scheme, the string \texttt{ADEBCE} becomes \texttt{[000 011 100 001 010 100]}. \par This matches what we computed in \ref{naivelen}: ~ $6 \times \lceil \log_2(5) \rceil = 6 \times 3 = 18$. \par \note[Notation]{ The spaces in \texttt{[000 011 100 001 010 100]} are provided for convenience. \par This is equivalent to \texttt{[000011100001010100]}, but is easier to read. \par In this handout, encoded binary blobs will always be written in square brackets. } \vspace{2mm} You could argue that this coding scheme is wasteful: we're not using three of the eight possible three-bit sequences! \vfill \pagebreak