1.4 Monotone Funktionen und monotone Schaltkreise
Für zwei Tupel \(\mathbf{x}, \mathbf{y} \in \{0,1\}^n\) schreiben wir \( \mathbf{x} \leq \mathbf{y}\), falls \(x_1 \leq y_1, \dots, x_n \leq y_n\), also \(\mathbf{x}\) in jeder Koordinate kleiner gleich \(\mathbf{y}\) ist. Beispielsweise gilt \( (0,0,1) \leq (1,0,1)\). Allerdings gilt weder \( (0,1,0) \leq (1,0,1)\) noch umgekehrt; die beiden Tupel sind unvergleichbar; es handelt sich bei \(\leq\) also um eine Partialordnung. Am Besten stellen Sie sich eine solche Partialordnung als gerichteten Graphen vor:
Diese Darstellung einer Partialordnung als gerichteter Graph bezeichnet man auch als Hasse-Diagramm (ich verzichte hier auf eine formale Definition). Es gilt nun \(\mathbf{x} \leq \mathbf{y}\), wenn Sie im Hasse-Diagramm einen Pfad von \(\mathbf{x}\) nach \(\mathbf{y}\) finden.
Vorsicht. Im obigen Bild steht zwar \(001\) unterhalb von \(110\), allerdings werden Sie keinen Pfad von \(001\) nach \(110\) finden; es gilt also \(001 \not \leq 110\); die beiden Elemente sind unvergleichbar.
Funktionen auf wenigen Variablen können wir graphisch darstellen und somit erkennen, ob sie monoton sind oder nicht. Für eine Funktion \( f: \{0,1\}^2 \rightarrow \{0,1\}\) markieren wir im Hasse-Diagramm von \(\{0,1\}^2\) diejenigen Elemente blau, auf denen \(f(x,y) = 1\) ist, und die anderen rot.
Wir sehen nun, dass es im Bild von \(\wedge\) keinen roten Punkt gibt, der oberhalb eines blauen Punktes liegt, im Bild von \(\oplus\) allerdings schon. Der Grund: \(\wedge\) ist monoton, \(\xor\) ist es nicht. Formaler argumentiert: in der Partialordnung gilt \(01 \leq 11\) aber \(\xor (0,1) \gt \xor (1,0)\), was der Definition einer monotonen Funktion widerspricht. (Ich habe hier absichtlich die Präfixschreibweise \(\xor(0,1)\) verwendet, um hervorzuheben, dass es sich hierbei um eine Funktion in zwei Variablen handelt.) Beachten Sie, dass ich die Worte "oberhalb" im Sinne der Partialordnung meine, nicht wirklich im geometrischen Sinne in der Abbildung.
Von den Basis-Gates \(\wedge, \vee, \neg\) sind \(\wedge\) und \(\vee\) monoton,
\(\neg\) ist es nicht.
Es sollte also klar sein, dass ein Schaltkreis ohne Negation immer eine monotone Funktion
berechnet. Allerdings stimmt der Umkehrschluss nicht. Der Schaltkreis
Am Besten betrachten Sie das Hasse-Diagramm der Partialordnungen auf Mengen \( \{0,1\}^2\) bzw. \( \{0,1\}^3\):
und überlegen sich, wie Sie die vier bzw. acht Knoten auf monotone Weise in einen 1-Bereich und einen 0-Bereich aufteilen können.
Im folgenden betrachten wir eine CNF-Formel als Menge von Klauseln und eine Klausel als Menge von Literalen. Somit sind beispielsweise $(x \vee \bar{y}) \wedge (z \vee \bar{x})$ und $(z \vee \bar{x}) \wedge (\bar{y} \vee x)$ die selbe Formel, da sie beide die Menge $\{ \{x, \bar{y}\},\{z, \bar{x}\}\}$ sind.
Übungsaufgabe Sei $F$ eine CNF-Formel und $C, C' \in F$ zwei Klauseln mit $C \subsetneq C'$. Zeigen Sie, dass $F \equiv F \setminus \{C'\}$ gilt. In Worten: wenn wir die größere Klausel $C'$ löschen, dann erhalten wir eine äquivalente Formel.
Eine CNF-Formel $F$ heißt reduziert, wenn es keine $C, C' \in F$ mit $C \subsetneq C'$ gibt.
Übungsaufgabe Sei $f : \{0,1\}^n \rightarrow \{0,1\}$ eine monotone Boolesche Funktion und seien $F$ und $G$ zwei reduzierte monotone CNF-Formeln, die beide $f$ berechnen. Zeigen Sie, dass $F = G$ gilt, dass es sich also um die selbe Klauselmenge handelt!
Übungsaufgabe Zeigen Sie, dass es mindestens $2^{n \choose \floor{n/2}}$ monotone Boolesche Funktionen über $n$ Variablen gibt.
Zeigen Sie, dass es höchstens $(n+2)^{n \choose \floor{n/2}}$ monotone Boolesche Funktionen in $n$ Variablen gibt.
Tip
Verwenden Sie, dass man den Booleschen Hyperwürfel partitieren kann in ${n \choose \floor{n/2}}$ Ketten, jede von der Form $A = \{a_1, a_2, \dots, a_t\}$ mit $a_1 \leq a_2 \leq \dots \leq a_t$. Für $n=3$ zum Beispiel \begin{align*} A_1 & = \{000, 001, 011, 111\} \\ A_2 & = \{010, 110\} \\ A_3 & = \{100, 101\} \end{align*}Übungsaufgabe Jetzt, wo Sie die vorherige Aufgabe gelöst haben, können Sie bessere obere Schranken herleiten?