Diskrete Strukturen und Logik WiSe 2006/07 in Trier Henning Fernau Universität Trier [email protected] 1 Diskrete Strukturen und Logik Gesamtübersicht • Organisatorisches • Einführung • Logik & Mengenlehre • Beweisverfahren • Kombinatorik: Die Kunst des Zählens • algebraische Strukturen 2 Boolesche Algebren und Ordnungen Erinnerung: Eine Boolesche Algebra B = (B, ⊕, ⊗, κ, 0, 1) erfüllt folgende Eigenschaften: 0 6= 1 Kommutativgesetze: (1) ∀a, b ∈ B : a ⊕ b = b ⊕ a, (2) ∀a, b ∈ B : a ⊗ b = b ⊗ a. Distributivgesetze: (1) ∀a, b, c ∈ B : a ⊗ (b ⊕ c) = (a ⊗ b) ⊕ (a ⊗ c) und (2) ∀a, b, c ∈ B : a ⊕ (b ⊗ c) = (a ⊕ b) ⊗ (a ⊕ c) Neutralitätsgesetze: (1) 0 ist rechtsneutrales Element bzgl. ⊕, d.h.: a ⊕ 0 = a und (2) 1 ist rechtsneutrales Element bzgl. ⊗, d.h.: a ⊗ 1 = a Komplementgesetze: (1) κ(a) ist das Komplement von a, d.h.: (1) a ⊕ κ(a) = 1 und (2) a ⊗ κ(a) = 0. 3 Der Isomorphiesatz von Stones für Boolesche Algebren Satz: Jede endliche B.A. B = (B, ⊕, ⊗, κ, 0, 1) ist isomorph zu einer Potenzmengenalgebra P = (2A, ∪, ∩, , ∅, A) für a eine endliche Menge A . Beweis: Idee: Wähle A = {a1, . . . , an } als Menge der Atome von B. Da B endlich ist, gilt A 6= ∅. Der Morphismus h : B → 2A ist festgelegt durch ai 7→ {ai } für Atome ai . Damit gilt die Strukturverträglichkeit automatisch. Jedes b ∈ B lässt sich in eindeutiger Weise als Summe P a∈A,a≤b a darstellen. Gleichermaßen ist jede Menge C ⊆ A eindeutig durch Angabe ihrer Elemente festgelegt. Daher ist h bijektiv. 4 Beispiel: Teileralgebra T (30) = ({1, 2, 3, 5, 6, 10, 15, 30}, ggT , kgV, 30, 1): Hasse-Diagramm an der Tafel Atome: A = {6, 10, 15} Hyperatome: {2, 3, 5} Wie sieht h konkret aus ? Beispiel: Schaltfunktionenalgebra zu zweistelligen Schaltfunktionen (Tafel) 5 Schaltkreisalgebra 6 Schaltkreisalgebra Ein Schaltkreis S = (V, E, X) ist ein gerichteter kreisfreier Graph (V, E) (DAG: directed acyclic graph) zusammen mit einer Variablenmenge X = {x1, . . . , xn}. Knoten mit Eingangsgrad 0, sogenannte Eingabegatter, sind mit Variablen xi ∈ X oder mit Konstanten 0, 1 markiert. Knoten mit Eingangsgrad ≥ 1 (Gatter) sind mit Schaltfunktionen markiert, deren Stelligkeit dem Eingangsgrad entspricht. Gatter mit Ausgangsgrad 0 sind Ausgabegatter. 7 Was berechnet ein Schaltkreis ? Da (V, E) kreisfrei, kann die an einem Gatter g mit Markierung m berechnete Funktion fg(x1, . . . , xn) induktiv beschrieben werden: fg(x1, . . . , xn) = m, falls g ein mit m markiertes Eingabegatter ist. fg(x1, . . . , xn) = m(fg1 (x1, . . . , xn), . . . , fg` (x1, . . . , xn)), falls g den Eingangsgrad ` > 0 besitzt und g1, . . . , g` die Vorgängergatter sind. Besitzt S nur ein Ausgabegatter, so berechnet S die Schaltfunktion am Ausgabegatter. 8 Warum Schaltkreise ? Satz: Es gibt eine Familie von Schaltfunktionen, die sich mit essentiell kleineren Schaltkreisen darstellen lässt, verglichen mit der Größe der Repräsentation durch Boolesche Ausdrücke. Beweis: Betrachte die Paritätsfunktion Pn (x1, . . . , xn ) = 1 gdw. eine ungerade Anzahl von xi hat Wert 1. Für die Normalformdarstellung mit vollständigen Mintermen benötigt man 2n−1 Minterme, die sich paarweise an mindestens zwei Stellen unterscheiden und daher paarweise nicht resolvierbar sind. Hingegen genügen Schaltkreise linearer Größe (Tafel). 9 Paritätsfunktion(en) und Boolesche Ausdrücke Wenn wir auf Normalformen verzichten, gibt es kleinere Darstellungen für Pn mit Booleschen Ausdrücken: Lemma: Pn lässt sich durch Boolesche Ausdrücke mit n2 Operatoren beschreiben (also der Größe n2). Beweis: Wir zeigen die Behauptung induktiv. P2 lässt sich beschreiben durch: (x1 ∧ x̄2) ∨ (x̄1 ∧ x2). Rekursiv kann man P2k für k > 1 berechnen durch Boolesche Ausdrücke b1 und b2 der Größe jeweils 4k−1 für die Paritätsfunktion P2k−1 der ersten 2k−1 Variablen sowie für die der letzten 2k−1 Variablen. Der gesamte Ausdruck ergibt sich als (b1 ∧ b̄2) ∨ (b̄1 ∧ b2). Daher gilt: P2k lässt sich durch B.A. der vierfachen Größe der B.A. für die P2k−1 ausdrücken. Also lässt sich P2k durch Boolesche Ausdrücke der Größe 4k beschreiben. Daraus folgt die Behauptung. (Warum ?) Folgerung: Lineare Größe für Schaltkreise ! (Warum ? Fast dieselbe Idee. . . ) 10 Ein hilfreiches kleines Lemma 2 n Lemma: a + m2 ≥ (n+m)2 für nichtverschwindene Nenner. b a+b Beweis: Wir bringen auf die Hauptnenner: links: b(a + b)n2 + a(a + b)m2 = abn2 + abm2 + b2n2 + a2m2. rechts: ab(n + m)2 = abn2 + abm2 + 2abnm. links minus rechts liefert also: b2n2 + a2m2 − 2abnm = (am − bn)2 ≥ 0. 11 Beweisziel: Die untere Schranke von Kraptschenko (Krapchenko) Erinnerung: Wohlgeformte aussagenlogische Ausdrücke, also Boolesche Ausdrücke, sind rekursiv definiert. Daher lässt sich jedem w.a.A. ein (Rekursions-)baum zuordnen. Die Zahl der Blätter dieses Rekursionsbaums heißt auch Blattkomplexität des Booleschen Ausdrucks B, kurz BK(B). Unter der Blattkomplexität einer Schaltfunktion f, kurz BK(f), verstehen wir entsprechend die kleinste Blattkomplexität eines f beschreibenen Booleschen Ausdrucks. Da für diesen Komplexitätsbegriff wesentlich ist, welche Operationen wir gestatten, wollen wir im Folgenden von Ausdrücken ausgehen, die in unserer früheren Begriffsbildung vereinfachte w.a.A. hießen, d.h., wir gestatten lediglich ∧, ∨ und Negation. 12 Alternativ könnte man die Anzahl der verwendeten Operatoren als Komplexitätmaß zugrunde legen. Beide Maße wären eng verwandt (wie genau ?). Satz: Jeder Boolesche Ausdruck, der nur mit ∧, ∨ und Negation als Operatoren auskommt, und welcher Pn beschreibt, hat eine Blattkomplexität von wenigstens n2 . Dieser Satz ist einer der ersten Bestandteile einer ganz eigenen Komplexitätstheorie, nämlich der Schaltkreiskomplexität (Circuit Complexity). Ähnliche Sachverhalte sind für andere Grundoperationen bekannt, aber nicht für beliebige. Hinführung zum Beweis Sind x, y ∈ {0, 1}n zwei n-Bitvektoren, so ist ihr Hamming-Abstand H(x, y) die Anzahl der Bits, an denen x und y sich unterscheiden. Die gemeinsame Nachbarschaft von A, B ⊆ {0, 1}n ist die Menge N(A, B) aller Paare von n-Bitvektoren (x, y) ∈ A × B mit H(x, y) = 1. Eigentlich zeigen wir nun im Folgenden eine Verallgemeinerung: Satz: Ist f : {0, 1}n → {0, 1} eine Schaltfunktion und BK(f) die Größe des kleinsten f beschreibenen Booleschen Ausdrucks mit Operatoren ∧, ∨ und der Negation, so gilt für alle ∅ ⊂ A ⊆ f−(0) und alle ∅ ⊂ B |N(A,B)|2 − ⊆ f (1): BK(f) ≥ |A|·|B| . Speziell für f = Pn, A = f−(0) und B = f−(1) ergibt sich die gesuchte Beziehung BK(Pn) ≥ n2, denn |A| = |B| = 2n−1 und |N(A, B)| = n|A| = n2n−1. 13 Der Beweis von Kraptschenko Der Beweis der Verallgemeinerung gelingt durch Induktion über die Blattkomplexität von Schaltfunktionen. Induktionsanfang: Blattkomplexität null haben Konstanten (jedenfalls bei manchen Autoren; B.K. eins würde am folgenden Argument aber nichts ändern). f = 0: Dann ist B = ∅ und die Behauptung gilt leer. f = 1: analog Blattkomplexität eins haben einzelne Variablen (und ihre Negation). f = x1: Dann ist A = {0} und B = {1}, und man braucht wirklich ein Eingabegatter. f = x̄1: analog. 14 Induktionsvoraussetzung: Es werde also angenommen, die Aussage gelte für alle Schaltfunktionen einer Blattkomplexität ≤ n − 1. Induktionsschritt: Es sei f eine Schaltfunktion mit BK(f) = n. Wir gehen davon aus, dass α ein Ausdruck kleinster Blattkomplexität für f ist. Wir argumentieren jetzt aufgrund der rekursiven Definition der w.a.A. Gilt α = ᾱ 0, so könnten wir das folgende Argument mit α 0 statt α durchführen. Wir diskutieren jetzt den Fall: α = (α1 ∧ α2). (Der Fall der Disjuktion als äußerster Operation lässt sich entsprechend erörtern.) Es gilt also: f = f1 ∧ f2, wobei die Schaltfunktion fi durch den Ausdruck αi beschrieben wird. Wir gehen von der Optimalität der αi aus, d.h., BK(αi) = BK(fi). ; BK(α) = BK(f) = BK(α1) + BK(α2) = BK(f1) + BK(f2). Ferner gilt: BK(fi) ≤ n − 1, sodass wir hier IV anwenden könnten. Wir schließen hierbei den Fall aus, dass eines der fi konstant ist. Betrachte ∅ 6= A ⊆ f−(0) und ∅ 6= B ⊆ f−(1). (1) für i = 1, 2. Da wir die Konjunktion diskutieren, gilt: f−(1) ⊆ f− i −(1). (1) ∩ f ; B ⊆ f− 2 1 Setze im Folgenden: B1 = B2 = B. Setze außerdem A1 = A ∩ f− 1 (0) und A2 = A \ A1. Nach Konstruktion gilt f1(x) = 1 für x ∈ A2. Da f(x) = 0, muss wegen f(x) = f1(x) ∧ f2(x) gelten: f2(x) = 0. ; A2 ⊆ f− 2 (0). Mit A sind A1 und A2 nicht leer, da wir konstante Funktionen ausschlossen. Also ist die IV für f1 und f2 und die gerade konstruierten Mengen Ai und Bi anwendbar und liefert: |N(A2,B2)|2 |N(A1,B1)|2 BK(f1) ≥ |A |·|B | und BK(f2) ≥ |A |·|B | . 1 1 ; BK(f) = BK(f1) + BK(f2) ≥ 2 |N(A1,B1)|2 |A1|·|B1| 2 |N(A2,B2)|2 . |A2|·|B2| + Das hilfreiche Lemma liefert nun die Behauptung, denn N(A, B) lässt sich zerlegen in N(A1, B1) und N(A2, B2).