Boolesche Algebra KV-Diagramm Aussagenlogik Logelei
Transcription
Boolesche Algebra KV-Diagramm Aussagenlogik Logelei
Boolesche Algebra KV-Diagramm Aussagenlogik Logelei Aussagenlogik Übersetzungen Logelei Programm in PureBasic Gesetze der Mengenalgebra 1 Schaltelemente Und Konjunktion a und b & Oder Disjunktion b a∧b 0 0 0 0 1 0 1 0 0 1 1 1 a b a∨b 0 0 0 0 1 1 1 0 1 1 1 1 a a 0 1 1 0 a oder b ≥1 Negation a nicht a 1 bc Mit diesen elementaren Bauteilen lassen sich alle Computerschaltungen realisieren. c Roolfs 2 Gesetze der Booleschen Algebra a∨b = b∨a a∧b = b∧a Assoziativgesetze: (a ∨ b) ∨ c = a ∨ (b ∨ c) (a ∧ b) ∧ c = a ∧ (b ∧ c) Absorptionsgesetze: a ∨ (a ∧ b) = a a ∧ (a ∨ b) = a Distributivgesetze: a ∨ (b ∧ c) = (a ∨ b) ∧ (a ∨ c) a ∧ (b ∨ c) = (a ∧ b) ∨ (a ∧ c) Idempotenzgesetze: a∨a a∨a = = 1 a a∧a a∧a = = 0 a de Morgan-Gesetze: a∨b = a∧b a∧b = a∨b neutrale Elemente: a∨0 = a a∧1 = a doppelte Negation: a = a Kommutativgesetze: 1. Zeige mit den Gesetzen der Booleschen Algebra die Gleichheit der Terme. a) (a ∧ b) ∨ (a ∧ b ∧ c) = a ∧ b b) (a ∨ b) ∧ (a ∨ b) ∧ (a ∨ b) ∧ (a ∨ b) = 0 c) (a ∧ b ∨ c) ∧ (a ∨ b ∨ c) = a ∨ c d) a ∧ b ∨ c ∨ (a ∧ c) = a ∧ (b ∨ c) 2. Gib für die booleschen Funktionen möglichst einfache Terme an. a) b) c) d) e) f) a b c t u v x y z 0 0 0 1 0 1 1 ? 0 0 0 1 0 0 1 1 0 ? 0 1 0 1 1 0 0 1 ? 0 1 1 0 1 0 ? 0 0 1 0 0 0 0 1 0 1 0 1 0 1 1 1 1 ? 0 0 1 1 0 1 0 1 0 0 1 1 1 1 1 1 0 1 ? 1 c Roolfs 3 Boolesche Algebra Gib für die booleschen Funktionen möglichst einfache Terme an. a) b) c) d) e) f) a b c t u v x y z 0 0 0 1 0 1 1 1 0 0 0 1 0 0 1 1 0 0 0 1 0 1 1 0 0 1 0 0 1 1 0 1 0 0 0 0 1 0 0 0 0 1 0 1 0 1 0 1 1 1 1 1 0 0 1 1 0 1 0 1 0 0 1 1 1 1 1 1 0 1 0 1 a) (a ∧ c) ∨ (a ∧ c) ∨ (b ∧ c) b) (a ∧ b) ∨ (a ∧ c) c) b ∨ (a ∧ c) d) (a ∧ b) ∨ (a ∧ c) e) (a ∧ c) ∨ (b ∧ c) = (a ∨ b) ∧ c f) a∧b c Roolfs 4 Boolesche Algebra a) in PureBasic OpenConsole() For a = #False To #True For b = #False To #True For c = #False To #True PrintN(Str(a)+Str(b)+Str(c)+ “ “ + Str( ((Not c) Or a) And ( (Not a) Or b Or c) ) ) Next c Next b Next a Input() b) in Python for a in range(0,2): for b in range(0,2): for c in range(0,2): print(a,b,c, “ “, bool(a and b and not c)) for a in range(0,2): for b in range(0,2): for c in range(0,2): print(a,b,c, “ “, int(a and (b or not c))) for a in range(0,2): for b in range(0,2): for c in range(0,2): print(a,b,c, “ “, int((a | b) & ∼c)) for i in range(0, 16): a = i % 2; i>>= 1 b = i % 2; i>>= 1 c = i % 2; i>>= 1 d = i % 2; i>>= 1 print(d, c, b, a) 5 Boolesche Algebra Sei B = {0, 1} die Boolesche Menge, auf der folgende Verknüpfungen erklärt sind (x, y Boolesche Variablen): Addition x + y = x ∨ y (= Max(x, y)) Beachte den Unterschied 1 + 1 = 1 zur Addition von Dualzahlen. Multiplikation x · y = x ∧ y (= Min(x, y)) Das vereinfacht die Schreibweise Boolescher Terme, statt (a ∧ b) ∨ (a ∧ b ∧ c) ist ab + abc möglich. Gib für die Booleschen Funktionen X, Y und Z einen Term an. a b c X Y Z 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 1 1 0 1 1 0 0 0 1 0 0 0 0 0 1 0 1 0 1 1 1 1 0 0 0 1 1 1 1 0 0 0 X = abc Y = abc + abc Z = abc + abc + abc disjunktive Normalform Es sollte nun klar sein, dass zu jeder Booleschen Funktion ein zugehöriger Boolescher Term in disjunktiver Normalform ermittelt werden kann. Wir wollen der Frage nachgehen, wie dieser Term vereinfacht werden kann. c Roolfs 6 Karnaugh-Veitch-Diagramm 1952 Betrachten wir die Boolesche Funktion: a b X 0 0 1 0 1 0 1 0 0 1 1 1 Die Funktion X = ab + ab kann mit einem Diagramm veranschaulicht werden. a a b 00 10 b 01 11 a wird für {(1, 0), (1, 1)} 1, b wird für {(0, 1), (1, 1)} 1, ab wird nur auf dem gemeinsamen Element (1, 1) 1. Die Randbeschriftungen markieren also die Bereiche, für die die elementaren Terme jeweils 1 werden. Wie lautet der Boolesche Term? a) a a a a b b b) b b c) Wie sieht das KV-Diagramm für den Term a + b aus? c Roolfs 7 KV-Diagramm Betrachten wir die Boolesche Funktion: a b c X 0 0 0 0 0 0 1 1 0 1 0 0 0 1 1 1 1 0 0 0 1 0 1 1 1 1 0 1 1 1 1 0 Das Karnaugh-Veitch-Diagramm muss aus 8 Feldern bestehen. z b 000 a }| b 010 c {z 001 101 011 111 | {z c a }| { 100 110 c } Die Unterteilung ist so angelegt, dass sich benachbarte Felder lediglich um eine Stelle unterscheiden. Wie lautet der Boolesche Term? a) b a }| z {z a }| b) { b b z a }| {z a }| | {z c } { b c | {z c } c c c Roolfs 8 c Idee des KV-Diagramms a b c X b c bc abc bc + abc 0 0 0 0 1 0 0 0 0 0 0 1 1 1 1 1 0 1 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 1 1 1 1 1 0 1 1 1 0 1 0 0 0 1 1 1 1 1 0 0 1 0 0 0 z b 000 b 010 c a }| {z 001 101 011 111 | {z c a }| } { 100 110 X = bc + abc c Jede Boolesche Funktion (mit 3 Variablen) und damit jeder Term legt eine Teilmenge der Menge A = {(0, 0, 0), (0, 0, 1), (0, 1, 0), (0, 1, 1), (1, 0, 0), (1, 0, 1), (1, 1, 0), (1, 1, 1)} fest, hier ist es B = {(0, 0, 1), (1, 0, 1), (1, 1, 0)} Auf dieser Teilmenge ist die Funktion (der Term) 1, sonst 0. Der Term b wird auf C = {(0, 0, 0), (0, 0, 1), (1, 0, 1), (1, 0, 0)} 1, der Term c auf D = {(0, 0, 1), (0, 1, 1), (1, 0, 1), (1, 1, 1)}. bc wird auf der Schnittmenge C ∩ D = {(0, 0, 1), (1, 0, 1)} 1. abc wird auf der E = {(1, 1, 0)} 1, das ist die Schnittmenge der zu a, b und c gehörenden Teilmengen. Die Funktion X nimmt damit auf der Menge (C ∩ D) ∪ E den Wert 1 an, der Funktionsterm lautet: bc + abc + bedeutet im KV-Diagramm die Vereinigung von Feldern, · die Bildung der Schnittmenge. c Roolfs 9 Mengenoperationen A∪B Vereinigung A B A∩B Schnitt A B c Roolfs 10 KV-Diagramm Wie lautet der Boolesche Term? a) b a }| z {z a }| b) { b b b z | {z c } a }| {z a }| c c d) { b b {z a }| | {z c } a }| {z a }| | {z c } { z c { b c e) a }| b c c) z | {z c } c c Wie sieht das KV-Diagramm für den Term (a + c)b + cb aus? c Roolfs 11 c KV-Diagramm a) b a }| z {z a }| Vorlagen b) { b b b z | {z c } a }| {z a }| c c d) { b b b z | {z c } a }| | {z c } a }| {z a }| | {z c } a }| {z a }| | {z c } a }| {z a }| | {z c } { c { a }| {z a }| c f) { b z c { b c b z c b g) {z b c e) a }| b c c) z z | {z c } a }| {z a }| c c h) { b b z c { b c | {z c } c c c Roolfs 12 c KV-Diagramm Das Karnaugh-Veitch-Diagramm für 4 Variablen muss aus 16 Feldern bestehen. a }| z {z a }| { b d b d d c | {z c } c Wie sieht das KV-Diagramm für den Term (a + b)(c + d) aus? c Roolfs 13 KV-Diagramm b b a }| z 1 a }| {z 1 { 1 1 1 c 1 | 1 {z c } d d d c Gib einen minimalen Term an. c Roolfs 14 KV-Diagramm ac + bcd + bcd 15 Aussagenlogik Eine Aussage ist entweder wahr oder falsch. Wir bezeichnen Aussagen mit großen Buchstaben. Aussagen können verknüpft werden mit und A∧B oder A∨B A B A→B wenn . . ., dann . . . A→B 0 0 1 . . . genau dann, wenn . . . A↔B 0 1 1 1 0 0 1 1 1 A B A↔B 0 0 1 0 1 0 1 0 0 1 1 1 A → B mache man sich am Beispiel klar: Wenn Frau L. Musik hört, benutzt sie einen Kopfhörer. Diese Aussage ist nur falsch, wenn . . . . Für Umformungen kann A → B = A ∨ B nützlich sein. A ∨ B ist nur 0, wenn A = 1 und B = 0 vorliegt. Die Gesetze der Booleschen Algebra können neu formuliert werden. Hierzu wird das Gleichheitszeichen durch das Äquivalenzzeichen ersetzt, z. B. A ∨ B ↔ A ∧ B. Eine Aussage, die stets wahr ist, heißt Tautologie, in Zeichen: ⇒ (Implikation), ⇔ (Äquivalenz). Wir schreiben also genauer: A∨B ⇔A∧B Weiteres (A → B) ∧ (B → C) ⇒ (A → C) A ∧ (A → B) ⇒ B A→B⇔B→A Kontraposition A ↔ B ⇔ (A → B) ∧ (B → A) A ↔ B ⇔ (A → B) ∧ (A → B) Überprüfe B ∧ (A → B) ⇒ A (A → B) ∧ (A → B) ⇔ B c Roolfs 16 Logelei Die SchülerInnen sind dann und nur dann glücklich, wenn kein Test geschrieben wird. Wenn die SchülerInnen glücklich sind, fühlt sich der Lehrer wohl. Aber wenn sich der Lehrer wohl fühlt, hat er keine Lust, zu unterrichten. Und wenn er keine Lust hat, zu unterrichten, wird ein Test geschrieben. Sind die Schüler glücklich? 17 Logelei Die SchülerInnen sind dann und nur dann glücklich, wenn kein Test geschrieben wird. Wenn die SchülerInnen glücklich sind, fühlt sich der Lehrer wohl. Aber wenn sich der Lehrer wohl fühlt, hat er keine Lust, zu unterrichten. Und wenn er keine Lust hat, zu unterrichten, wird ein Test geschrieben. Sind die Schüler glücklich? Die SchülerInnen sind glücklich. Es wird ein Test geschrieben. Der Lehrer fühlt sich wohl. Der Lehrer hat Lust zu unterrichten. S: T: L: U: S S L ¬U ¬S ↔ → → → ¬T L ¬U T Negation ¬ S ∨ ¬S, 18 S → . . . ¬S Aussagenlogik Übersetzungen Übersetze die Sätze in die Sprache der Aussagenlogik. a) Die Erde kreist um die Sonne, aber der Papst glaubt das nicht. b) Klaus kommt genau dann zur Party, wenn Anna nicht kommt oder wenn Olaf die Drinks mixt. c) Wenn Sofie einen Witz macht, dann lachen Hans und Erna, es sei denn, dass Klaus oder Peter die Stimmung verdirbt. 19 Aussagenlogik Übersetzungen Übersetze die Sätze in die Sprache der Aussagenlogik. a) Die Erde kreist um die Sonne, aber der Papst glaubt das nicht. E: P: Die Erde kreist um die Sonne. Der Papst glaubt, dass die Erde um die Sonne kreist. E ∧ ¬P b) Klaus kommt genau dann zur Party, wenn Anna nicht kommt oder wenn Olaf die Drinks mixt. K: A: O: Klaus kommt zur Party. Anna kommt zur Party. Olaf mixt die Drinks. K ↔ ¬A ∨ O c) Wenn Sofie einen Witz macht, dann lachen Hans und Erna, es sei denn, dass Klaus oder Peter die Stimmung verdirbt. S: H: E: K: P: Sofie macht einen Witz. Hans lacht. Erna lacht. Klaus verdirbt die Stimmung. Peter verdirbt die Stimmung. S → (H ∧ E ↔ ¬K ∧ ¬P ) 20 Logelei Anna sagt: Bettina lügt“. ” Bettina sagt: Claudia lügt“. ” Claudia sagt: Anne und Bettina lügen“. ” Wer lügt denn nun? 21 Logelei Anna sagt: Bettina lügt“. ” Bettina sagt: Claudia lügt“. ” Claudia sagt: Anne und Bettina lügen“. ” Wer lügt denn nun? A: B: C: Anna sagt die Wahrheit. Bettina sagt die Wahrheit. Claudia sagt die Wahrheit. A ↔ ¬B B ↔ ¬C C ↔ ¬A ∧ ¬B Wir suchen eine Variablenbelegung, so dass die Aussagen wahr sind (Erfüllbarkeits-Problem). def äqui(X,Y): return int(X & Y | ∼X & ∼Y) for A in range(0,2): for B in range(0,2): for C in range(0,2): D1 = äqui(A, ∼B) D2 = äqui(B, ∼C) D3 = äqui(C, ∼A & ∼B) print(A,B,C, “ “, D1 & D2 & D3) Bettina sagt die Wahrheit. B = 1, A = 0, C = 0 22 Programm in PureBasic OpenConsole() For n=0 To 1 For m=0 To 1 For k=0 To 1 A=n: B=m: D1= ((Not D2= ((Not D3= ((Not C=k A)|(Not B)) & (B|A) B)|(Not C)) & (C|B) C)|(Not(A|B))) & (A|B|C) If D1 & D2 & D3 PrintN("ABC "+ Str(A)+Str(B)+Str(C)) EndIf Next k Next m Next n Input() Etwas eleganter: OpenConsole() For n=0 v=n A=v % B=v % C=v % To 8 2: 2: 2: v/2 v/2 v/2 D1= ((Not A)|(Not B)) & (B|A) D2= ((Not B)|(Not C)) & (C|B) D3= ((Not C)|(Not(A|B))) & (A|B|C) If D1 & D2 & D3 PrintN("ABC "+Str(A)+Str(B)+Str(C)) EndIf Next n Input() c Roolfs 23 Logelei Ein Mann schreit: Wer von Euch Halunken hat den Ball ” in mein Fenster geworfen?“ Zitternd stehen vier Kinder da. Anne sagt: Emil war es.“ ” Emil sagt: Gustav war es.“ ” Fritz sagt: Ich war es nicht.“ ” Gustav sagt: Emil lügt.“ ” Ein Passant sagt: Eines der Kinder war es, aber Vorsicht: ” Nur eines der Kinder sagt die Wahrheit.“ Frage: Wer hat den Ball geworfen? 24 Logelei Ein Mann schreit: Wer von Euch Halunken hat den Ball ” in mein Fenster geworfen?“ Zitternd stehen vier Kinder da. Anne sagt: Emil war es.“ ” Emil sagt: Gustav war es.“ ” Fritz sagt: Ich war es nicht.“ ” Gustav sagt: Emil lügt.“ ” Ein Passant sagt: Eines der Kinder war es, aber Vorsicht: ” Nur eines der Kinder sagt die Wahrheit.“ Frage: Wer hat den Ball geworfen? Gustav sagt die Wahrheit. Fritz war es. 25 Besuch der Meiers Herr und Frau Meier haben die drei Söhne Tim, Kay und Uwe. Wenn Herr Meier kommt, dann bringt er auch seine Frau mit. Mindestens einer der beiden Söhne Uwe und Kay kommt. Entweder kommt Frau Meier oder Tim. Entweder kommen Tim und Kay oder beide nicht. Und wenn Uwe kommt, dann auch Kay und Herr Meier. 26 Besuch der Meiers Herr und Frau Meier haben die drei Söhne Tim, Kay und Uwe. Wenn Herr Meier (H) kommt, dann bringt er auch seine Frau (F ) mit. Mindestens einer der beiden Söhne Uwe (U ) und Kay (K) kommt. Entweder kommt Frau Meier oder Tim (T ). Entweder kommen Tim und Kay oder beide nicht. Und wenn Uwe kommt, dann auch Kay und Herr Meier. H U ¬ (F T U → ∨ ↔ ↔ → F K T) K K ∧H (¬H ∨ F ) (F ∧ ¬T ) ∨ (¬F ∧ T ) Wir suchen eine Variablenbelegung, so dass die Aussagen wahr sind (Erfüllbarkeits-Problem). def folgt(X,Y): return int(∼ X | Y) def äqui(X,Y): return int(X & Y | ∼X & ∼Y) Tim und Kay kommen zu Besuch. c Roolfs 27 Wahl des Studienfachs Die Drillinge Anton, Bernd und Christian stehen davor, sich an der Universität entweder für das Studienfach Mathematik oder für Informatik einzuschreiben, und diskutieren darüber, wer sich für welches Fach entscheiden sollte. Dabei hat jeder der Drei bestimmte Wunschvorstellungen. So verkündet Bernd sofort, dass er Mathematik studieren will, falls einer seiner beiden Brüder sich für Informatik einschreiben sollte. Christian hingegen will Informatik studieren, wenn Bernd dies ebenfalls tut oder wenn Anton sich für Mathematik entscheidet. Um die Angelegenheit noch komplizierter zu machen, mischt sich Anton ein und sagt: Wenn Bernd Mathe studiert, dann tu ich das auch!“ Daraufhin erwidert Christian: Solltest ” ” du dich aber doch für Informatik entscheiden, Anton, dann werde ich es dir gleich tun.“ c Roolfs 28 Wahl des Studienfachs Die Drillinge Anton, Bernd und Christian stehen davor, sich an der Universität entweder für das Studienfach Mathematik oder für Informatik einzuschreiben, und diskutieren darüber, wer sich für welches Fach entscheiden sollte. Dabei hat jeder der Drei bestimmte Wunschvorstellungen. So verkündet Bernd sofort, dass er Mathematik studieren will, falls einer seiner beiden Brüder sich für Informatik einschreiben sollte. Christian hingegen will Informatik studieren, wenn Bernd dies ebenfalls tut oder wenn Anton sich für Mathematik entscheidet. Um die Angelegenheit noch komplizierter zu machen, mischt sich Anton ein und sagt: Wenn Bernd Mathe studiert, dann tu ich das auch!“ Daraufhin erwidert Christian: Solltest ” ” du dich aber doch für Informatik entscheiden, Anton, dann werde ich es dir gleich tun.“ A Anton studiert Mathematik, . . . ¬A ∨ ¬C ¬B ∨ A B ¬A → → → → B ¬C A ¬C A ∧ B ∧ ¬C c Roolfs 29 Prüfziffer-Aufgabe Es ist denkbar und kommt auch häufiger vor, dass bei der Übertragung einer Zahl (wir betrachten hier dreiziffrige Dualzahlen) von einem Speicherplatz zu einem anderen eine Ziffer 1 in eine 0 oder umgekehrt verändert wird. Um diese Fehler zu erkennen, wird zusätzlich zu den Stellen der Zahl eine weitere Stelle als Prüfstelle (auch Prüfbit oder Paritätsbit genannt) eingeführt. Hier wird eine 0 vermerkt, wenn die Anzahl der Ziffern 1 in der Zahl gerade (oder null) ist, sonst 1. Die Prüfziffer soll automatisch ermittelt werden. Dazu ist eine möglichst einfache Schaltung zu entwerfen. c Roolfs 30 Die disjunktive Normalform lässt sich nicht vereinfachen. 31 Gesetze der Mengenalgebra 1) A∩B =B∩A A∪B =B∪A Kommutativgesetze 2) (A ∩ B) ∩ C = A ∩ (B ∩ C) (A ∪ B) ∪ C = A ∪ (B ∪ C) Assoziativgesetze ⊂ enthalten (ist Teilmenge) ∪ ∩ vereinigt geschnitten 3) A ∩ (B ∪ C) = (A ∩ B) ∪ (A ∩ C) A ∪ (B ∩ C) = (A ∪ B) ∩ (A ∪ C) Distributivgesetze ∅ leere Menge 4) A ∩ (A ∪ B) = A A ∪ (A ∩ B) = A Absorptionsgesetze 5) A∩B = A∪B A∪B = A∩B De Morgan-Gesetze 6) A=A A∩A=∅ A∪A=Ω Komplementgesetze A A A A B B B Ω A A∪B A∩B c Roolfs 32 A∩B =∅ a b c • • • • bc bc bc bc X Ermittle den booleschen Term für X und vereinfache ihn soweit wie möglich. c Roolfs 33 X=a∨c 34