Shannon-Zerlegung

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

Eine beliebige boolesche Funktion F ( x 1 , x 2 , , x n ) {\displaystyle F(x_{1},x_{2},\ldots ,x_{n})} kann folgendermaßen zerlegt werden:

F ( x 1 , x 2 , , x n ) = x i F ( x 1 , , x i 1 , 1 , x i + 1 , , x n ) x ¯ i F ( x 1 , , x i 1 , 0 , x i + 1 , , x n ) {\displaystyle F(x_{1},x_{2},\ldots ,x_{n})=x_{i}F(x_{1},\ldots ,x_{i-1},1,x_{i+1},\ldots ,x_{n})\vee {\overline {x}}_{i}F(x_{1},\ldots ,x_{i-1},0,x_{i+1},\ldots ,x_{n})}

oder kürzer unter Verwendung der sogenannten Kofaktoren:

F ( x 1 , x 2 , , x n ) = x i F x i x ¯ i F x ¯ i {\displaystyle F(x_{1},x_{2},\ldots ,x_{n})=x_{i}F_{x_{i}}\vee {\overline {x}}_{i}F_{{\overline {x}}_{i}}}

Die Kofaktoren F x i {\displaystyle F_{x_{i}}} und F x ¯ i {\displaystyle F_{{\overline {x}}_{i}}} werden dabei durch partielle Auswertung von F ( x 1 , , x n ) {\displaystyle F(x_{1},\ldots ,x_{n})} , d. h. Einsetzen der Variable x i {\displaystyle x_{i}} definiert:

F x i F ( x 1 , , x i 1 , 1 , x i + 1 , , x n ) F x ¯ i F ( x 1 , , x i 1 , 0 , x i + 1 , , x n ) {\displaystyle {\begin{aligned}F_{x_{i}}&\equiv F(x_{1},\ldots ,x_{i-1},1,x_{i+1},\ldots ,x_{n})\\[3pt]F_{{\overline {x}}_{i}}&\equiv F(x_{1},\ldots ,x_{i-1},0,x_{i+1},\ldots ,x_{n})\\\end{aligned}}}

Diese Zerlegung wird auch als If-then-else-Normalform (INF) bezeichnet. Man sagt auch, die Funktion f {\displaystyle f} wird „nach x i {\displaystyle x_{i}} entwickelt“. Wiederholt man die Anwendung des Satzes für eine beliebige Funktion f {\displaystyle 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

Gegeben sei die Boolesche Funktion y = f ( x 1 , x 2 , x 3 ) = x 1 x 2 x 3 ¯ x 1 ¯ x 2 x 2 ¯ x 3 {\displaystyle 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 {\displaystyle x_{1}} , dann nach x 2 {\displaystyle x_{2}} und schließlich nach x 3 {\displaystyle x_{3}} entwickelt werden:

y {\displaystyle y} = x 1 [ x 2 x 3 ¯ x 2 ¯ x 3 ] x 1 ¯ [ x 2 x 2 ¯ x 3 ] {\displaystyle =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}]} (Entwicklung nach x 1 {\displaystyle x_{1}} )
= x 1 [ x 2 ( x 3 ¯ ) x 2 ¯ ( x 3 ) ] x 1 ¯ [ x 2 ( 1 ) x 2 ¯ ( x 3 ) ] {\displaystyle =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})]} (Entwicklung nach x 2 {\displaystyle x_{2}} )
= x 1 [ x 2 ( x 3 ¯ ) x 2 ¯ ( x 3 ) ] x 1 ¯ [ x 2 ( x 3 x 3 ¯ ) x 2 ¯ ( x 3 ) ] {\displaystyle =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})]} (Entwicklung nach x 3 {\displaystyle x_{3}} )
= x 1 x 2 x 3 ¯ x 1 x 2 ¯ x 3 x 1 ¯ x 2 x 3 x 1 ¯ x 2 x 3 ¯ x 1 ¯ x 2 ¯ x 3 {\displaystyle =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}}}{\overline {x_{2}}}x_{3}} (Anwendung des Distributivgesetzes)

Darstellung als Diagramm

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:

Einzelnachweise

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