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