Fixed errors

This commit is contained in:
Mark 2023-06-25 18:28:08 -07:00
parent 2e18427669
commit a87e4417ce
Signed by: Mark
GPG Key ID: AD62BB059C2AAEE4
2 changed files with 165 additions and 155 deletions

View File

@ -5,26 +5,25 @@ An ISBN\footnote{International Standard Book Number} is a unique numeric book id
\vspace{3mm} \vspace{3mm}
Say we have a sequence of nine digits, forming a partial ISBN-10: $n_1 n_2 ... n_9$. \par Say we have a sequence of nine digits, forming a partial ISBN-10: $n_1 n_2 ... n_9$. \par
The final digit, $n_{10}$, is calculated as follows: The final digit, $n_{10}$, is chosen from $\{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10\}$ so that:
$$ $$
\Biggr( \sum_{i = 1}^{9} (11 - i) \times n_i \Biggl) \text{ mod } 11 \sum_{i = 1}^{10} (11 - i)n_i
$$ $$
If $n_{10}$ is equal to 10, it is written as \texttt{X}. If $n_{10}$ is equal to 10, it is written as \texttt{X}.
\problem{} \problem{}
Which of the following could be valid ISBNs? Only one of the following ISBNs is valid. Which one is it?
\begin{itemize} \begin{itemize}
\item \texttt{0-134-54896-2} \item \texttt{0-134-54896-2}
\item \texttt{0-895-77258-2} \item \texttt{0-895-77258-2}
\item \texttt{0-316-00395-6}
\end{itemize} \end{itemize}
\begin{solution} \begin{solution}
Only the first has an inconsistent check digit. The first has an inconsistent check digit.
\end{solution} \end{solution}
\vfill \vfill
@ -66,31 +65,6 @@ This is called a \textit{transposition error}.
\end{solution} \end{solution}
\vfill \vfill
\problem{}
Show that the following sum is divisible by 11 iff $n_1n_2...n_{10}$ is a valid ISBN-10.
$$
\sum_{i = 1}^{10} (11 - i)n_i
$$
\begin{solution}
Proof that valid $\implies$ divisible, working in mod 11:
\vspace{2mm}
$10n_1 + 9n_2 + ... + 2n_9 + n_{10} \equiv$ \par
$(-n_1) + (-2n_2) + ... + (-9n_9) + n_{10} =$ \par
$-n_{10} + n_{10} \equiv 0$
\vspace{2mm}
Having done this, the rest is easy. Work in reverse, or note that each step above is an iff.
\end{solution}
\vfill
\pagebreak \pagebreak
\problem{} \problem{}

View File

@ -76,14 +76,54 @@ How many message bits have an index with a one as the $n^\text{th}$ digit? \par
We now want a way to detect errors in our 16-bit message. To do this, we'll replace a few data bits with pairity bits. This will reduce the amount of information we can send, but will also improve our error-detection capabilities. We now want a way to detect errors in our 16-bit message. To do this, we'll replace a few data bits with parity bits. This will reduce the amount of information we can send, but will also improve our error-detection capabilities.
\vspace{1mm} \vspace{1mm}
Let's arrange our message in a grid. We'll make the first bit (currently empty, marked \texttt{X}) a pairity bit. Its value will depend on the content of the message: if our message has an even number of ones, it will be zero; if our message has an odd number of ones, it will be one. Let's arrange our message in a grid. We'll make the first bit (currently empty, marked \texttt{X}) a parity bit. Its value will depend on the content of the message: if our message has an even number of ones, it will be zero; if our message has an odd number of ones, it will be one. \par
This first bit ensures that there is an even number of ones in the whole message.
\begin{center} \begin{center}
\hfill
\begin{tikzpicture}[scale = 1.25] \begin{tikzpicture}[scale = 1.25]
\node at (0.75, 0.5) {Bit Numbering};
\node at (0.0, 0) {\texttt{0}};
\node at (0.5, 0) {\texttt{1}};
\node at (1.0, 0) {\texttt{2}};
\node at (1.5, 0) {\texttt{3}};
\node at (0.0, -0.5) {\texttt{4}};
\node at (0.5, -0.5) {\texttt{5}};
\node at (1.0, -0.5) {\texttt{6}};
\node at (1.5, -0.5) {\texttt{7}};
\node at (0.0, -1) {\texttt{8}};
\node at (0.5, -1) {\texttt{9}};
\node at (1.0, -1) {\texttt{10}};
\node at (1.5, -1) {\texttt{11}};
\node at (0.0, -1.5) {\texttt{12}};
\node at (0.5, -1.5) {\texttt{13}};
\node at (1.0, -1.5) {\texttt{14}};
\node at (1.5, -1.5) {\texttt{15}};
\draw (-0.25, 0.25) -- (1.75, 0.25);
\draw (-0.25, -0.25) -- (1.75, -0.25);
\draw (-0.25, -0.75) -- (1.75, -0.75);
\draw (-0.25, -1.25) -- (1.75, -1.25);
\draw (-0.25, -1.75) -- (1.75, -1.75);
\draw (-0.25, 0.25) -- (-0.25, -1.75);
\draw (0.25, 0.25) -- (0.25, -1.75);
\draw (0.75, 0.25) -- (0.75, -1.75);
\draw (1.25, 0.25) -- (1.25, -1.75);
\draw (1.75, 0.25) -- (1.75, -1.75);
\end{tikzpicture}
\hfill
\begin{tikzpicture}[scale = 1.25]
\node at (0.75, 0.5) {Sample Message};
\node at (0.0, 0) {\texttt{X}}; \node at (0.0, 0) {\texttt{X}};
\node at (0.5, 0) {\texttt{0}}; \node at (0.5, 0) {\texttt{0}};
\node at (1.0, 0) {\texttt{1}}; \node at (1.0, 0) {\texttt{1}};
@ -118,10 +158,11 @@ Let's arrange our message in a grid. We'll make the first bit (currently empty,
\draw (-0.2,-0.2) -- (0.2, -0.2) -- (0.2, 0.2) -- (-0.2, 0.2) -- (-0.2,-0.2); \draw (-0.2,-0.2) -- (0.2, -0.2) -- (0.2, 0.2) -- (-0.2, 0.2) -- (-0.2,-0.2);
\end{tikzpicture} \end{tikzpicture}
\hfill~
\end{center} \end{center}
\problem{} \problem{}
What is the value of the pairity bit in the message above? What is the value of the parity bit in the message above?
\vfill \vfill
@ -133,7 +174,7 @@ Can this coding scheme correct a single-bit error?
\vfill \vfill
\pagebreak \pagebreak
We'll now add four more pairity bits, in positions \texttt{0001}, \texttt{0010}, \texttt{0100}, and \texttt{1000}: We'll now add four more parity bits, in positions \texttt{0001}, \texttt{0010}, \texttt{0100}, and \texttt{1000}:
\begin{center} \begin{center}
\begin{tikzpicture}[scale = 1.25] \begin{tikzpicture}[scale = 1.25]
@ -198,18 +239,128 @@ We'll now add four more pairity bits, in positions \texttt{0001}, \texttt{0010},
\end{center} \end{center}
Bit \texttt{0001} will count the pairity of all bits with a one in the first digit of their index. \par Bit \texttt{0001} will count the parity of all bits with a one in the first digit of their index. \par
Bit \texttt{0010} will count the pairity of all bits with a one in the second digit of their index. \par Bit \texttt{0010} will count the parity of all bits with a one in the second digit of their index. \par
Bits \texttt{0100} and \texttt{1000} work in the same way. Bits \texttt{0100} and \texttt{1000} work in the same way. \par
\hint{In \texttt{0001}, \texttt{1} is the first digit. In \texttt{0010}, \texttt{1} is the second digit. \\
When counting bits in binary numbers, go from right to left.}
\problem{} \problem{}
Compute all pairity bits in the message above. Which message bits does each parity bit cover? \par
In other words, which message bits affect the value of each parity bit? \par
\vspace{1mm}
Four diagrams are shown below. In each grid, fill in the bits that affect the shaded parity bit.
\begin{center}
\hfill
\begin{tikzpicture}[scale = 1.25]
\draw (-0.25, 0.25) -- (1.75, 0.25);
\draw (-0.25, -0.25) -- (1.75, -0.25);
\draw (-0.25, -0.75) -- (1.75, -0.75);
\draw (-0.25, -1.25) -- (1.75, -1.25);
\draw (-0.25, -1.75) -- (1.75, -1.75);
\draw (-0.25, 0.25) -- (-0.25, -1.75);
\draw (0.25, 0.25) -- (0.25, -1.75);
\draw (0.75, 0.25) -- (0.75, -1.75);
\draw (1.25, 0.25) -- (1.25, -1.75);
\draw (1.75, 0.25) -- (1.75, -1.75);
\draw[pattern=north east lines] (0.5 - 0.2, 0 - 0.2)
-- (0.5 + 0.2, 0 - 0.2)
-- (0.5 + 0.2, 0 + 0.2)
-- (0.5 - 0.2, 0 + 0.2)
-- (0.5 - 0.2, 0 - 0.2);
\end{tikzpicture}
\hfill
\begin{tikzpicture}[scale = 1.25]
\draw (-0.25, 0.25) -- (1.75, 0.25);
\draw (-0.25, -0.25) -- (1.75, -0.25);
\draw (-0.25, -0.75) -- (1.75, -0.75);
\draw (-0.25, -1.25) -- (1.75, -1.25);
\draw (-0.25, -1.75) -- (1.75, -1.75);
\draw (-0.25, 0.25) -- (-0.25, -1.75);
\draw (0.25, 0.25) -- (0.25, -1.75);
\draw (0.75, 0.25) -- (0.75, -1.75);
\draw (1.25, 0.25) -- (1.25, -1.75);
\draw (1.75, 0.25) -- (1.75, -1.75);
\draw[pattern=north east lines] (1 - 0.2, 0 - 0.2)
-- (1 + 0.2, 0 - 0.2)
-- (1 + 0.2, 0 + 0.2)
-- (1 - 0.2, 0 + 0.2)
-- (1 - 0.2, 0 - 0.2);
\end{tikzpicture}
\hfill
\begin{tikzpicture}[scale = 1.25]
\draw (-0.25, 0.25) -- (1.75, 0.25);
\draw (-0.25, -0.25) -- (1.75, -0.25);
\draw (-0.25, -0.75) -- (1.75, -0.75);
\draw (-0.25, -1.25) -- (1.75, -1.25);
\draw (-0.25, -1.75) -- (1.75, -1.75);
\draw (-0.25, 0.25) -- (-0.25, -1.75);
\draw (0.25, 0.25) -- (0.25, -1.75);
\draw (0.75, 0.25) -- (0.75, -1.75);
\draw (1.25, 0.25) -- (1.25, -1.75);
\draw (1.75, 0.25) -- (1.75, -1.75);
\draw[pattern=north east lines] (0 - 0.2, -0.5 - 0.2)
-- (0 + 0.2, -0.5 - 0.2)
-- (0 + 0.2, -0.5 + 0.2)
-- (0 - 0.2, -0.5 + 0.2)
-- (0 - 0.2, -0.5 - 0.2);
\end{tikzpicture}
\hfill
\begin{tikzpicture}[scale = 1.25]
\draw (-0.25, 0.25) -- (1.75, 0.25);
\draw (-0.25, -0.25) -- (1.75, -0.25);
\draw (-0.25, -0.75) -- (1.75, -0.75);
\draw (-0.25, -1.25) -- (1.75, -1.25);
\draw (-0.25, -1.75) -- (1.75, -1.75);
\draw (-0.25, 0.25) -- (-0.25, -1.75);
\draw (0.25, 0.25) -- (0.25, -1.75);
\draw (0.75, 0.25) -- (0.75, -1.75);
\draw (1.25, 0.25) -- (1.25, -1.75);
\draw (1.75, 0.25) -- (1.75, -1.75);
\draw[pattern=north east lines] (0 - 0.2, -1 - 0.2)
-- (0 + 0.2, -1 - 0.2)
-- (0 + 0.2, -1 + 0.2)
-- (0 - 0.2, -1 + 0.2)
-- (0 - 0.2, -1 - 0.2);
\end{tikzpicture}
\hfill
\end{center}
\problem{}
Compute all parity bits in the message above.
\vfill
\pagebreak
\problem{}
Analyze this coding scheme.
\begin{itemize}
\item Can we detect one single-bit errors?
\item Can we detect two single-bit errors?
\item What errors can we correct?
\end{itemize}
\vfill \vfill
\problem{} \problem{}
Each of the following messages has either 0, 1, or two errors. \par Each of the following messages has either 0, 1, or two errors. \par
Find the errors and correct them if possible. Find the errors and correct them if possible. \par
\hint{Bit \texttt{0000} should tell you how many errors you have.}
\begin{center} \begin{center}
\hfill \hfill
@ -405,112 +556,9 @@ Find the errors and correct them if possible.
\vfill \vfill
\pagebreak \pagebreak
\problem{}
Analyze this coding scheme.
\begin{itemize}
\item Can we detect one single-bit errors?
\item Can we detect two single-bit errors?
\item What errors can we correct?
\end{itemize}
\vfill
\problem{} \problem{}
Which message bits does each pairity bit cover? \par How many parity bits does each message bit affect? \par
In other words, which message bits affect the value of each pairity bit? \par
\vspace{1mm}
Four diagrams are shown below. In each grid, fill in the bits that affect the shaded pairity bit.
\begin{center}
\hfill
\begin{tikzpicture}[scale = 1.25]
\draw (-0.25, 0.25) -- (1.75, 0.25);
\draw (-0.25, -0.25) -- (1.75, -0.25);
\draw (-0.25, -0.75) -- (1.75, -0.75);
\draw (-0.25, -1.25) -- (1.75, -1.25);
\draw (-0.25, -1.75) -- (1.75, -1.75);
\draw (-0.25, 0.25) -- (-0.25, -1.75);
\draw (0.25, 0.25) -- (0.25, -1.75);
\draw (0.75, 0.25) -- (0.75, -1.75);
\draw (1.25, 0.25) -- (1.25, -1.75);
\draw (1.75, 0.25) -- (1.75, -1.75);
\draw[pattern=north east lines] (0.5 - 0.2, 0 - 0.2)
-- (0.5 + 0.2, 0 - 0.2)
-- (0.5 + 0.2, 0 + 0.2)
-- (0.5 - 0.2, 0 + 0.2)
-- (0.5 - 0.2, 0 - 0.2);
\end{tikzpicture}
\hfill
\begin{tikzpicture}[scale = 1.25]
\draw (-0.25, 0.25) -- (1.75, 0.25);
\draw (-0.25, -0.25) -- (1.75, -0.25);
\draw (-0.25, -0.75) -- (1.75, -0.75);
\draw (-0.25, -1.25) -- (1.75, -1.25);
\draw (-0.25, -1.75) -- (1.75, -1.75);
\draw (-0.25, 0.25) -- (-0.25, -1.75);
\draw (0.25, 0.25) -- (0.25, -1.75);
\draw (0.75, 0.25) -- (0.75, -1.75);
\draw (1.25, 0.25) -- (1.25, -1.75);
\draw (1.75, 0.25) -- (1.75, -1.75);
\draw[pattern=north east lines] (1 - 0.2, 0 - 0.2)
-- (1 + 0.2, 0 - 0.2)
-- (1 + 0.2, 0 + 0.2)
-- (1 - 0.2, 0 + 0.2)
-- (1 - 0.2, 0 - 0.2);
\end{tikzpicture}
\hfill
\begin{tikzpicture}[scale = 1.25]
\draw (-0.25, 0.25) -- (1.75, 0.25);
\draw (-0.25, -0.25) -- (1.75, -0.25);
\draw (-0.25, -0.75) -- (1.75, -0.75);
\draw (-0.25, -1.25) -- (1.75, -1.25);
\draw (-0.25, -1.75) -- (1.75, -1.75);
\draw (-0.25, 0.25) -- (-0.25, -1.75);
\draw (0.25, 0.25) -- (0.25, -1.75);
\draw (0.75, 0.25) -- (0.75, -1.75);
\draw (1.25, 0.25) -- (1.25, -1.75);
\draw (1.75, 0.25) -- (1.75, -1.75);
\draw[pattern=north east lines] (0 - 0.2, -0.5 - 0.2)
-- (0 + 0.2, -0.5 - 0.2)
-- (0 + 0.2, -0.5 + 0.2)
-- (0 - 0.2, -0.5 + 0.2)
-- (0 - 0.2, -0.5 - 0.2);
\end{tikzpicture}
\hfill
\begin{tikzpicture}[scale = 1.25]
\draw (-0.25, 0.25) -- (1.75, 0.25);
\draw (-0.25, -0.25) -- (1.75, -0.25);
\draw (-0.25, -0.75) -- (1.75, -0.75);
\draw (-0.25, -1.25) -- (1.75, -1.25);
\draw (-0.25, -1.75) -- (1.75, -1.75);
\draw (-0.25, 0.25) -- (-0.25, -1.75);
\draw (0.25, 0.25) -- (0.25, -1.75);
\draw (0.75, 0.25) -- (0.75, -1.75);
\draw (1.25, 0.25) -- (1.25, -1.75);
\draw (1.75, 0.25) -- (1.75, -1.75);
\draw[pattern=north east lines] (0 - 0.2, -1 - 0.2)
-- (0 + 0.2, -1 - 0.2)
-- (0 + 0.2, -1 + 0.2)
-- (0 - 0.2, -1 + 0.2)
-- (0 - 0.2, -1 - 0.2);
\end{tikzpicture}
\hfill
\end{center}
\problem{}
How many pairity bits does each message bit affect? \par
Does this correlate with that message bit's index? Does this correlate with that message bit's index?
\vfill \vfill
@ -519,12 +567,6 @@ Does this correlate with that message bit's index?
Say we have a message with exactly one single-bit error. \par Say we have a message with exactly one single-bit error. \par
If we know which parity bits are inconsistent, how can we find where the error is? If we know which parity bits are inconsistent, how can we find where the error is?
\vfill
\pagebreak
\problem{}
How efficient is the 16-bit hamming code?
\vfill \vfill
\problem{}<generalize-hamming> \problem{}<generalize-hamming>
@ -532,10 +574,4 @@ Can you generalize this system for messages of 4, 64, or 256 bits?
\vfill \vfill
\problem{}
How efficient is each code in \ref{generalize-hamming}? \par
What do we sacrifice for this efficiency gain?
\vfill
\pagebreak \pagebreak