152 lines
7.8 KiB
TeX

\section{Karnaugh-Diagramme}
\subsection{Einführung und Regeln}
Karnaugh Diagramme werden zur Vereinfachung von logischen Gleichungen verwendet. Wir haben zwar in Kapitel \ref{sec:verein} und \ref{sec:morgan} eine Methode gelernt, logische Gleichungen zu vereinfachen. Die Karnaugh Diagramme sind eine andere Methode, welche in manchen Fällen schneller ist.
\begin{center}
\begin{tikzpicture}
\matrix (kv) [
matrix of nodes,
nodes in empty cells,
column sep=-\pgflinewidth, row sep=-\pgflinewidth,
nodes = {
rectangle,
draw = black,
text width = 5mm,
text height = 5mm,
align = center
}
]{
$0$ & $1$ & $X$ & \\
& & & \\
& $\textcolor{blue}{1}$ & & \\
& & & \\
};
\path[draw, decorate, decoration=brace] (kv-1-1.north west) -- (kv-1-2.north east) node [midway, above] {$\bar{A}$};
\path[draw, decorate, decoration=brace] (kv-1-3.north west) -- (kv-1-4.north east) node [midway, above] {$A$};
\path[draw, decorate, decoration=brace] (kv-2-1.south west) -- (kv-1-1.north west) node [midway, left] {$\bar{C}$};
\path[draw, decorate, decoration=brace] (kv-4-1.south west) -- (kv-3-1.north west) node [midway, left] {$C$};
\path[draw, decorate, decoration=brace] (kv-2-4.north east) -- (kv-3-4.south east) node [midway, right] {$D$};
\path[draw, decorate, decoration=brace] (kv-1-4.north east) -- (kv-1-4.south east) node [midway, right] {$\bar{D}$};
\path[draw, decorate, decoration=brace] (kv-4-4.north east) -- (kv-4-4.south east) node [midway, right] {$\bar{D}$};
\path[draw, decorate, decoration=brace] (kv-4-3.south east) -- (kv-4-2.south west) node [midway, below] {$B$};
\path[draw, decorate, decoration=brace] (kv-4-1.south east) -- (kv-4-1.south west) node [midway, below] {$\bar{B}$};
\path[draw, decorate, decoration=brace] (kv-4-4.south east) -- (kv-4-4.south west) node [midway, below] {$\bar{B}$};
\end{tikzpicture}
\end{center}
Karnaugh Diagramme können für logische Gleichungen mit mehreren Eingangsvariablen gebildet werden. Grundsätzlich gilt für $n$ Eingangsvariablen hat das Karnaugh Diagram $2 ^n$ Felder. Jedes Feld im Karnaugh Diagramm ist für ein Minterm oder ein Maxterm gedacht. Dabei gilt wie bei der Wahrheitstablle wenn die Ausgangsvariable 1 ist handelt es sich um ein Minterm. Ist die Ausgangsvariable 0, so ist es ein Maxterm.
\\
Das interessante an Karnaugh Diagrammen ist, dass man mit den Min- bzw. Maxtermen "Päckchen" bilden kann. Päckchen können wie folgt gebildet werden.
\begin{enumerate}
\item Päckchen haben eine Grösse von $2 ^{n}$
\item Die Päckchen bestehen entweder nur aus Min- bzw. Maxtermen.
\item Es soll immer das grösstmögliche Päckchen gebildet werden.
\item Päckchen können sich schneiden.
\end{enumerate}
Durch das Bilden von Päckchen können neue Min- bzw. Maxterme gebildet werden, da in Päckchen Variablen in ihrer negierten und nicht negierten Form vorkommen. Diese gleichen sich aus und verschwinden.
\nt{
Karnaugh Diagramme bestehend aus mehreren Eingangsvariablen können "eigenartige" Päckchen haben.
\begin{minipage}{0.5\linewidth}
\includegraphics[width=\textwidth]{fig/Fig_6.png} \cite{Luisier2024}
\end{minipage}
\begin{minipage}{0.5\linewidth}
\includegraphics[width=\textwidth]{fig/Fig_7.png} \cite{Luisier2024}
\end{minipage}
}
\nt{
Karnaugh Diagramme können unendlich viele Eingangsvariablen haben, jedoch beschränken wir uns auf maximal fünf Eingangsvariablen, da Karnaugh Diagramme mit mehr als fünf Eingangsvariablen unübersichtlich wird.
}
Um das Karnaugh Diagramm mit einer Wahrheitstablle auszufüllen, gibt es eine bestimmte Vorgehensweise.
\begin{minipage}{0.5\linewidth}
\begin{center}
\begin{tikzpicture}
\matrix (kv) [
matrix of nodes,
nodes in empty cells,
column sep=-\pgflinewidth, row sep=-\pgflinewidth,
nodes = {
rectangle,
draw = black,
text width = 5mm,
text height = 5mm,
align = center,
text = gray
}
]{
\node[kvbinhead] {}; & \node[kvbinhead] {00}; & \node[kvbinhead] {01}; & \node[kvbinhead] {11}; & \node[kvbinhead] {10}; \\
\node[kvbinhead] {00}; & & & & \\
\node[kvbinhead] {01}; & & & & \\
\node[kvbinhead] {11}; & & & & \\
\node[kvbinhead] {10}; & & & & \\
};
\node[] at ($(kv-1-1.north east) + (-6mm, +2mm)$) {AB};
\node[] at ($(kv-1-1.south west) + (-1mm, +5mm)$) {CD};
\draw[] ($(kv-1-1.north west) + (-3mm, 3mm)$) -- ($(kv-1-1.south east) + (-3.5mm, 3.5mm)$);
\begin{pgfonlayer}{tl3}
\draw[thick, blue, ->, > = stealth] (kv-2-2.center) -- (kv-3-2.center) to[out = 180, in = 180] (kv-5-2.center) -- (kv-4-2.center);
\draw[thick, blue, ->, > = stealth] (kv-2-3.center) -- (kv-3-3.center) to[out = 180, in = 180] (kv-5-3.center) -- (kv-4-3.center);
\draw[thick, blue, ->, > = stealth] (kv-2-5.center) -- (kv-3-5.center) to[out = 180, in = 180] (kv-5-5.center) -- (kv-4-5.center);
\draw[thick, blue, ->, > = stealth] (kv-2-4.center) -- (kv-3-4.center) to[out = 180, in = 180] (kv-5-4.center) -- (kv-4-4.center);
\end{pgfonlayer}
\begin{pgfonlayer}{tl2}
\draw[thick, darkgreen, ->, > = stealth] (kv-4-2.center) -- (kv-2-3.center);
\draw[thick, red, ->, > = stealth] (kv-4-3.center) -- (kv-2-5.center);
\draw[thick, darkgreen, ->, > = stealth] (kv-4-5.center) -- (kv-2-4.center);
\end{pgfonlayer}
\end{tikzpicture}
\end{center}
\end{minipage}
\begin{minipage}{0.5\linewidth}
\begin{center}
\begin{tikzpicture}
\matrix (kv) [
matrix of nodes,
nodes in empty cells,
column sep=-\pgflinewidth, row sep=-\pgflinewidth,
nodes = {
rectangle,
draw = black,
text width = 5mm,
text height = 5mm,
align = center,
text = gray
}
]{
\node[kvbinhead] {}; & \node[kvbinhead] {00}; & \node[kvbinhead] {01}; & \node[kvbinhead] {11}; & \node[kvbinhead] {10}; \\
\node[kvbinhead] {00}; & & & & \\
\node[kvbinhead] {01}; & & & & \\
\node[kvbinhead] {11}; & & & & \\
\node[kvbinhead] {10}; & & & & \\
};
\node[] at ($(kv-1-1.north east) + (-6mm, +2mm)$) {CD};
\node[] at ($(kv-1-1.south west) + (-1mm, +5mm)$) {AB};
\draw[] ($(kv-1-1.north west) + (-3mm, 3mm)$) -- ($(kv-1-1.south east) + (-3.5mm, 3.5mm)$);
\begin{pgfonlayer}{tl3}
\draw[thick, blue, ->, > = stealth] (kv-2-2.center) -- (kv-2-3.center) to[out = 90, in = 90] (kv-2-5.center) -- (kv-2-4.center);
\draw[thick, blue, ->, > = stealth] (kv-3-2.center) -- (kv-3-3.center) to[out = 90, in = 90] (kv-3-5.center) -- (kv-3-4.center);
\draw[thick, blue, ->, > = stealth] (kv-5-2.center) -- (kv-5-3.center) to[out = 90, in = 90] (kv-5-5.center) -- (kv-5-4.center);
\draw[thick, blue, ->, > = stealth] (kv-4-2.center) -- (kv-4-3.center) to[out = 90, in = 90] (kv-4-5.center) -- (kv-4-4.center);
\end{pgfonlayer}
\begin{pgfonlayer}{tl2}
\draw[thick, darkgreen, ->, > = stealth] (kv-2-4.center) -- (kv-3-2.center);
\draw[thick, red, ->, > = stealth] (kv-3-4.center) -- (kv-5-2.center);
\draw[thick, darkgreen, ->, > = stealth] (kv-5-4.center) -- (kv-4-2.center);
\end{pgfonlayer}
\end{tikzpicture}
\end{center}
\end{minipage}