Shannon-Zerlegung

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche

Die Shannon-Zerlegung oder Shannon-Expansion (benannt nach Claude Elwood Shannon) stellt eine Möglichkeit dar, boolesche Funktionen mithilfe ihrer sogenannten Kofaktoren darzustellen. Die mathematische Aussage über diese Zerlegung wird auch als Entwicklungssatz von Shannon bezeichnet. Obwohl der Satz nach Shannon benannt ist, der ihn erstmals 1949 verwendete[1], wurde er bereits etwa hundert Jahre zuvor von George Boole aufgestellt.[2]

Aussage[Bearbeiten]

Eine beliebige boolesche Funktion F(x_1, x_2, \ldots, x_n) kann folgendermaßen angeschrieben werden:


\begin{align}
 y  & = F(x_1, x_2,\ldots,x_n) & = x_{i}F(x_1, x_2, \ldots, x_n)_{x_i}\ \vee \\
 &  & \overline{x_i}F(x_1, x_2, \ldots, x_n)_{\neg x_i}
\end{align}

Dabei werden die sogenannten Kofaktoren der Funktion F(x_1, x_2, \ldots,x_n) verwendet, die wie folgt definiert sind:

  • F(x_1, x_2, \ldots, x_n)_{x_i} ist die ursprüngliche Funktion F(x_1, x_2, \ldots, x_n) wobei die Variable x_i mit dem Wert 1 substituiert wird: F(x_1, x_2, \ldots, x_n)_{x_i}=F(x_1,\ldots,x_{i-1},1,x_{i+1},\ldots,x_n).
  • F(x_1, x_2, \ldots, x_n)_{\neg x_i} ist die ursprüngliche Funktion F(x_1, x_2, \ldots,x_n) wobei die Variable x_i mit dem Wert 0 substituiert wird: F(x_1, x_2, \ldots, x_n)_{\neg x_i}=F(x_1,\ldots,x_{i-1},0,x_{i+1},\ldots,x_n).

Diese Zerlegung wird auch als If-then-else-Normalform (INF) bezeichnet. Man sagt auch, die Funktion f wird „nach x_i entwickelt“. Wiederholt man die Anwendung des Satzes für eine beliebige Funktion f auf alle ihre n Parameter, so gelangt man zu einer Darstellung der Funktion, welche ausschließlich die Operatoren ∧, ∨ und ¬ verwendet. Die rekursive Anwendung der Shannon-Zerlegung liefert also einen Beweis, dass sich jede boolesche Funktion mittels der Operatoren ∧, ∨ und ¬ ausdrücken lässt.

Diese Zerlegung führte unter anderem zur Entwicklung von binären Entscheidungsdiagrammen und damit zu einer der Möglichkeiten der Bearbeitung des Erfüllbarkeitsproblems der Aussagenlogik. Darüber hinaus kann der Entwicklungssatz etwa zur Herleitung klammerfreier Ausdrücke verwendet werden.

Beispiel[Bearbeiten]

Gegeben sei die Boolesche Funktion y = f(x_{1},x_{2},x_{3}) = x_{1}x_{2}\overline {x_{3}} \vee \overline {x_{1}}x_{2} \vee \overline {x_{2}}x_{3}.

Diese soll zunächst nach x_{1}, dann nach x_{2} und schließlich nach x_{3} entwickelt werden:


\begin{align}
y & = x_{1}[x_{2}\overline {x_{3}} \vee \overline {x_{2}}x_{3}] \vee \overline {x_{1}}[x_{2} \vee \overline {x_{2}}x_{3}] && (\text{Entwicklung nach } x_{1}) \\

  & = x_{1}[x_{2}(\overline {x_{3}}) \vee \overline {x_{2}}(x_{3})] \vee \overline {x_{1}}[x_{2}(1) \vee \overline {x_{2}}(x_{3})] && (\text{Entwicklung nach } x_{2}) \\

  & = x_{1}[x_{2}(\overline {x_{3}}) \vee \overline {x_{2}}(x_{3})] \vee \overline {x_{1}}[x_{2}(x_{3} \vee \overline {x_{3}}) \vee \overline {x_{2}}(x_{3})] && (\text{Entwicklung nach } x_{3})\\

  & = x_{1}x_{2}\overline {x_{3}} \vee x_{1}\overline {x_{2}}x_{3} \vee \overline{x_{1}}x_{2}x_{3} \vee \overline {x_{1}}x_{2}\overline {x_{3}} \vee \overline {x_{1}}x_{3}\overline{x_{2}}\ && (\text{Anwendung des Distributivgesetzes})\\

\end{align}

Darstellung als Diagramm[Bearbeiten]

Man kann die Umformung auch als Multiplexer aus einem Nicht-Gatter, zwei UND sowie einem ODER-Gatter verstehen. Das Signal, nach dem die Zerlegung durchgeführt wird, ist das Steuersignal für den Multiplexer. Gemultiplext werden die beiden Ausgänge der gedoppelten Logik, wobei die eine Logik an dem entwickelten Eingang mit einer „1“ beaufschlagt wird, während die andere mit einer „0“ beaufschlagt wird. Als Diagramm dargestellt, sieht dies folgendermaßen aus:

Shannonsche Umformung.png

Einzelnachweise[Bearbeiten]

  1.  C. E. Shannon: The synthesis of two-terminal switching circuits. In: Bell System Technical Journal. 28, Nr. 1, 1949, S. 59–98..
  2.  G. Boole: The calculus of logic. In: Cambridge and Dublin Mathematical Journal. 3, Nr. 1848, 1848, S. 183–198 (PDF, abgerufen am 26. November 2012).