# Boolesche Funktion

Eine Boolesche Funktion (auch logische Funktion) ist eine mathematische Funktion der Form $F\colon B^{n}\to B^{1}$ (teilweise auch allgemeiner $F\colon B^{n}\to B^{m}$). $B$ ist dabei eine Boolesche Algebra.
Der Funktionsbezeichner, hier $F$, wird für Boolesche Funktionen im Allgemeinen groß gewählt, da in einer Booleschen Algebra die verwendeten Größen bevorzugt mit Großbuchstaben bezeichnet werden. Boolesche Funktionen sind dann in Ausdrücke der Booleschen Algebra einsetzbar und können wie Variablen behandelt werden. Die Verknüpfungen einer Booleschen Algebra wie ∧, ∨ oder ¬ sehen aus wie spezielle ein- und zweistellige Boolesche Funktionen, sie sind jedoch nicht mit den entsprechenden Booleschen Funktionen zu verwechseln. Es handelt sich lediglich um Verknüpfungen auf einer Menge, über die noch nichts weiter bekannt ist, während für die Definitions- und Wertebereiche einer Booleschen Funktion bereits alle Axiome einer Booleschen Algebra als gegeben vorausgesetzt werden können.

## Unterscheidung nach Stelligkeit

Wie bei der Untersuchung anderer Funktionstypen auch, unterscheidet man Boolesche Funktionen gerne nach ihrer Stelligkeit. Aufgrund der auf die Binärzahlen eingeschränkten Definitions- und Wertebereiche sind niederstellige Boolesche Funktionen verhältnismäßig einfach zu handhaben. So gibt es überhaupt nur 4 verschiedene einstellige Boolesche Funktionen, die man als Identität, Negation, konstante 1 und konstante 0 bezeichnen kann. Für die Boolesche Algebra ist hier insbesondere die Negation von Bedeutung. Die Anzahl der zweistelligen Booleschen Funktionen beträgt bereits 16. Zu den wichtigsten zählen dabei Konjunktion, Disjunktion, Äquivalenz, Antivalenz, NAND und NOR. Es existieren allgemein $2^{2^{n}}$ $n$-stellige Boolesche Funktionen. Beispielsweise existieren $2^{2^{4}}=2^{16}=65536$ verschiedene vierstellige Boolesche Funktionen. Im Folgenden werden Boolesche Funktionen verschiedener Stelligkeit näher beschrieben.

### Nullstellige Funktion

$n=0$
    2$^{20}$ = 2$^1$ = 2
Das sind die zwei Konstanten 1 und 0, auch wahr und falsch, verum und falsum, true und false genannt.

### Einstellige Funktion

$n=1$
    2$^{21}$ = 2$^2$ = 4
Die vier möglichen Booleschen Funktionen $y=f_{0}(x),\ldots ,f_{3}(x)$ mit einer Variablen sind:
| x | 0 | 1 | Funktion (y =) | Name |
| f$_0$ | 0 | 0 | 0 | Kontradiktion |
| f$_1$ | 0 | 1 | x | Identität |
| f$_2$ | 1 | 0 | ¬x = x = 1 − x | Negation |
| f$_3$ | 1 | 1 | 1 | Tautologie |

### Zweistellige Funktion

$n=2$ Für zwei Variablen $y=f(x_{1},x_{2})$ gibt es
    2$^{22}$ = 2$^4$ = 16
verschiedene Boolesche Funktionen. Diese Funktionen $y=f_{0}(x_{1},x_{2}),\ldots ,f_{15}(x_{1},x_{2})$ sind:
Zweistellige Boolesche Funktionen :
| x$_1$, x$_2$ | 0, 0 | 0, 1 | 1, 0 | 1, 1 | Funktion | Funktion | Funktion | Name |
| f$_0$ | 0 | 0 | 0 | 0 | x$_1$ · x$_1$ | 0 | x$_1$ ∧ ¬x$_1$ | Kontradiktion, Nullfunktion |
| f$_1$ | 0 | 0 | 0 | 1 | x$_1$ · x$_2$ | ⌊x$_1$, x$_2$⌋ | x$_1$ ∧ x$_2$ | Konjunktion, AND(x$_1$, x$_2$) |
| f$_2$ | 0 | 0 | 1 | 0 | x$_1$ · x$_2$ | x$_1$ > x$_2$ | x$_1$ ↛ x$_2$ | Inhibition von x$_1$ |
| f$_3$ | 0 | 0 | 1 | 1 | x$_1$ | x$_1$ | x$_1$ | Identität von x$_1$ |
| f$_4$ | 0 | 1 | 0 | 0 | x$_1$ · x$_2$ | x$_1$ < x$_2$ | x$_1$ ↚ x$_2$ | Inhibition von x$_2$ |
| f$_5$ | 0 | 1 | 0 | 1 | x$_2$ | x$_2$ | x$_2$ | Identität von x$_2$ |
| f$_6$ | 0 | 1 | 1 | 0 | (x$_1$ · x$_2$) + (x$_1$ · x$_2$) | x$_1$ ≠ x$_2$ | x$_1$ ↮ x$_2$ | Antivalenz, Alternative, XOR(x$_1$, x$_2$) |
| f$_7$ | 0 | 1 | 1 | 1 | x$_1$ + x$_2$ | ⌈x$_1$, x$_2$⌉ | x$_1$ ∨ x$_2$ | Disjunktion, OR(x$_1$, x$_2$) |
| f$_8$ | 1 | 0 | 0 | 0 | x$_1$ + x$_2$ = x$_1$ · x$_2$ | 1 − ⌈x$_1$, x$_2$⌉ | x$_1$ ↓ x$_2$ | Nihilition, Peirce-Funktion, NOR(x$_1$, x$_2$) |
| f$_9$ | 1 | 0 | 0 | 1 | (x$_1$ · x$_2$) + (x$_1$ · x$_2$) | x$_1$ = x$_2$ | x$_1$ ↔ x$_2$ | Äquivalenz, XNOR (x$_1$,x$_2$) |
| f$_{10}$ | 1 | 0 | 1 | 0 | x$_2$ | 1 − x$_2$ | ¬x$_2$ | Negation von x$_2$, NOT(x$_2$) |
| f$_{11}$ | 1 | 0 | 1 | 1 | x$_1$ + x$_2$ | x$_1$ ≥ x$_2$ | x$_1$ ← x$_2$ | Replikation |
| f$_{12}$ | 1 | 1 | 0 | 0 | x$_1$ | 1 − x$_1$ | ¬x$_1$ | Negation von x$_1$, NOT(x$_1$) |
| f$_{13}$ | 1 | 1 | 0 | 1 | x$_1$ + x$_2$ | x$_1$ ≤ x$_2$ | x$_1$ → x$_2$ | Implikation |
| f$_{14}$ | 1 | 1 | 1 | 0 | x$_1$ · x$_2$ = x$_1$ + x$_2$ | 1 − ⌊x$_1$, x$_2$⌋ | x$_1$ ↑ x$_2$ | Exklusion, Sheffer-Funktion, NAND(x$_1$, x$_2$) |
| f$_{15}$ | 1 | 1 | 1 | 1 | x$_1$ + x$_1$ | 1 | x$_1$ ∨ ¬x$_1$ | Tautologie, Einsfunktion |

### Mehr als zwei Variablen

Bei drei Variablen gibt es bereits 2$^8$ = 256 Boolesche Funktionen, bei vier Variablen 2$^{16}$ = 65.536, bei fünf Variablen 2$^{32}$ = 4.294.967.296, bei sechs Variablen sind es 2$^{64}$ = über 18 Trillionen, also zu viele, um sie hier alle darzustellen.

## Grafische Veranschaulichung

Die grafische Veranschaulichung Boolescher Funktionen kann zumindest für niedrigstellige Funktionen durch Auftragen von Punkten in einem Koordinatensystem erfolgen. Einstellige Funktionen lassen sich in einem kartesischen Koordinatensystem als Eckpunkte eines Einheitsquadrats auftragen. Für zweistellige Funktionen gelingt dies noch einigermaßen anschaulich mittels der Eckpunkte eines Einheitswürfels in einem dreidimensionalen Koordinatensystem. n-stellige Funktionen lassen sich allgemein in einem n+1-dimensionalen Koordinatensystem als ein n+1-dimensionaler Einheitshyperwürfel darstellen.

## Algebraische Darstellbarkeit

Diese Darstellung wird jedoch spätestens ab vier Variablen zu komplex, um noch anschaulich zu sein. Daher ist für höhere Dimensionen unbedingt ein algebraischer Zugang erforderlich. Tatsächlich ist es möglich, jede beliebige (etwa mittels einer Funktionstafel willkürlich festgelegte) Boolesche Funktion rein algebraisch auszudrücken. Ein System von Booleschen Funktionen, welches dies ermöglicht, bezeichnet man auch als vollständiges Operatorensystem oder Verknüpfungsbasis. Vollständige Operatorensysteme sind etwa das UND-ODER-NICHT-System, das UND-Antivalenz-System, das NAND- und das NOR-System. Man beachte, dass es sich bei diesen Funktionen nicht um die Verknüpfungen der zugrundeliegenden Booleschen Algebra handelt, sondern um definierte Funktionen.
Jede Boolesche Funktion kann in die Disjunktive Normalform (siehe Beispiel für die Bildung der DNF) und die Konjunktive Normalform (siehe Beispiel für die Bildung der KNF) umgeformt werden.

## Boolesche Grundfunktionen

Jede Boolesche Funktion mit zwei oder mehr Eingängen lässt sich mit den Funktionen UND (Konjunktion), ODER (Disjunktion) und NICHT (Negation) realisieren. In der Praxis wird das auch so gehandhabt. Wegen der De Morganschen Regel reichen grundsätzlich auch zwei dieser drei Grundfunktionen aus (NICHT zusammen mit ODER oder NICHT zusammen mit UND). Alternativ lassen sich auch alle Booleschen Funktionen mittels NAND realisieren (dasselbe gilt für NOR) oder mittels (AND, XOR und T).

### Beispiel XOR-Funktion

Bei der XOR-Verknüpfung ist der Ausgangszustand 1 (wahr), wenn die beiden Eingangszustände x$_1$ und x$_2$ unterschiedlich sind:
| $x_{1}$ | $x_{2}$ | $y$ |
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
In der disjunktiven Normalform geschrieben:
    $y={\overline {x_{1}}}x_{2}\vee x_{1}{\overline {x_{2}}}$

### Beispiel Mehrheits-Funktion

Angenommen man hat drei Personen, die jeweils einen Schalter vor sich haben (Kreuzschaltung). Eine Lampe l soll nur aufleuchten, wenn die Mehrheit, also zwei der Personen oder alle drei, ihren Schalter betätigen:
    $l={\overline {s_{1}}}s_{2}s_{3}\vee s_{1}{\overline {s_{2}}}s_{3}\vee s_{1}s_{2}{\overline {s_{3}}}\vee s_{1}s_{2}s_{3}$
Da sich ${\overline {s_{1}}}s_{2}s_{3}$ und $s_{1}s_{2}s_{3}$ nur in einem Zustand unterscheiden, kann man den sich unterscheidenden Teil wegfallen lassen und erhält $s_{2}s_{3}$.
Das Gleiche gilt für $s_{1}{\overline {s_{2}}}s_{3}$ und $s_{1}s_{2}s_{3}$, sowie für $s_{1}s_{2}{\overline {s_{3}}}$ und $s_{1}s_{2}s_{3}$, so dass am Ende folgende optimierte Funktion übrig bleibt:
    $l=s_{2}s_{3}\vee s_{1}s_{3}\vee s_{1}s_{2}$

## Vollständige Logiksysteme

Für ein vollständiges System oder auch die Verknüpfungsbasis wird entweder die Grundverknüpfungen AND oder OR benötigt. Zusätzlich benötigt man das NOT. Für einen Schaltungsentwurf hat dieser Umstand einen Vorteil: Es werden lediglich zwei Grundschaltungen benötigt, die dieses vollständige System ((AND oder OR) und NOT) realisieren. Durch eine entsprechende Kombination der Grundoperatoren können dann alle anderen Operatoren gebildet werden.
Die NAND-Verknüpfung bzw. NOR-Verknüpfung stellt bereits jeweils ein solches vollständiges System dar.

## Normalformen

Jede Boolesche Funktion lässt sich in einer Normalform darstellen. Eine Überführung von einer Normalform in eine andere ist möglich. Normalformen sind nützlich für bestimmte Algorithmen, Schaltungen oder Beweise. Beispiele von Normalformen sind:
* Disjunktive Normalform (DNF)
* Konjunktive Normalform (KNF)
* Ringsummennormalform (RSNF)
* Negationsnormalform (NNF)

## Besondere Boolesche Funktionen

* Die immer wahr berechnende Funktion heißt Tautologie.
* Die immer falsch berechnende Funktion heißt Kontradiktion.
* Einstellige Boolesche Funktionen, die immer genau den Eingangswert zurückliefern, nennt man Identität.
* Einstellige Boolesche Funktionen, die immer genau die Umkehrung des Eingangswertes zurückliefern, nennt man Negation.
* Eine Boolesche Funktion heißt symmetrisch, wenn der Funktionswert nur von der Anzahl der Einsen im Argument, jedoch nicht von deren Position abhängt, also invariant gegenüber Permutationen der Eingabevariablen ist.

## Boolesche Funktionen in Kombination

Man kann komplexere Strukturen erhalten, wenn man mehrere Boolesche Funktionen zusammenfasst. So erhält man beispielsweise einen Halbaddierer, wenn man die gleichen Eingänge x und y für die UND- und die XOR-Funktion verwendet, um am Ausgang der UND-Funktion den Carry-Zustand c, und am Ausgang der XOR-Funktion den Summen-Zustand s zu bekommen.
* Halbaddierer-Schaltung (Und- und XOR-Gatter)
* Halbaddierer-Schaltung (Inverter, Und- und Oder-Gattern)
* Halbaddierer-Schaltsymbol