So, dann begrüße ich Sie mal zur heutigen Vorlesung und wir hatten uns
ja beim letzten Mal befasst mit fehlerkorrigierenden Codes oder
überhaupt mit der Fehlerkorrektur.
Und ja, wir sind dann sozusagen strecken geblieben bei den Hamming
Codes und ich möchte jetzt ein bisschen wiederholen, was wir gemacht
haben.
Also Fehlerkorrektur durch Hamming Codes.
Wir möchten also ein fehlerfreies Codewort von einem fehlerbehafteten
Codewort unterscheiden können.
Und vielleicht möchte ich noch ganz kurz sagen, wie gehen wir denn
eigentlich vor?
Wir haben einen Sender, der sendet Daten zu einem Empfänger und der
Sender codiert die Daten, bevor er sie abschickt und der Empfänger
decodiert sie dann wieder.
Das ist ganz wichtig, dass Sie das in der Vorlesung immer
berücksichtigen.
Wir müssen sozusagen vorher beispielsweise solche Paritätsbits bevor
wir versenden berechnen, versenden dann, dann mögen Fehler auftreten.
Der Empfänger muss dann entscheiden, wie sieht es jetzt mit diesen
Paritätsbits aus?
Ist noch alles okay oder nicht?
Und wenn er Glück hat, kann er bestimmte Fehler sozusagen nicht nur
erkennen, sondern sogar beheben.
Wir werden sehen, wir werden heute ein paar Dinge machen, im Sinne,
dass wir sie zumindest mal erkennen können.
Aber wir wollen sie ja auch beheben können und bei den Hemming Codes
können wir ein paar Dinge, gerade ein Bitfehler haben wir ja gesagt,
die wollen wir beheben können.
Also bei fehlerhaften Codewörtern sind die entsprechenden Bits
innerhalb bestimmter Grenzen korrigierbar.
Das hängt davon ab, welchen Aufwand ich treibe bei der
Fehlerkorrektur.
Dann brauchen wir natürlich mehr als ein Prüfbit.
Das heißt, ein Paritätsbit reicht uns eventuell nicht.
Sondern wenn wir nur ein Paritätsbit haben, dann können wir natürlich
nicht sagen, wo der Fehler lokalisiert ist.
Das heißt also, wir brauchen mehrere Bits, die uns sagen, wo im
gesamten Codewort den Fehler sind.
Es kann ja auch in den neu eingefügten Bits für das Codewort können ja
auch wieder Fehler entstehen.
Das heißt, je mehr Bits wir hinzufügen, umso mehr Fehler können
natürlich auch entstehen.
Und die müssen wir natürlich auch wieder abfangen.
Wir hatten uns das mal überlegt.
Wir haben also gesagt, wenn wir so die Anzahl der Bits, die zu
übertragen sind, n ist.
Ja und wir können jedes der Bits falsch haben, wären n Fehlerfälle.
Wenn wir ein Bit falsch haben, plus den fehlerfreien Fall, wäre n plus
1.
Dann haben wir gesagt, da ist 2 hoch k, Größe gleich n plus 1.
Jetzt eine reine Wiederholung, haben wir alles schon gemacht.
Ja und dann können wir sagen, dass wir k-Korrekturbits natürlich
hinzufügen, die Teil des Codeworts sind.
Das heißt, wir haben also m plus k.
Das wären die Datenbits.
Ja und das m und wir wollen das n übertragen.
Das heißt, wir müssen jetzt sowas sagen wie 2 hoch k, Größe gleich m
plus k plus 1.
Das war unsere Gleichung.
Die kann man gar nicht so ohne weiteres auflösen.
Ja, Sie sehen, die sieht gar nicht so trivial aus.
Und hier ist das noch mal zusammengefasst und hier noch mal für
konkrete Werte.
Ja, wie kann ich jetzt, ich habe so eine Treppenfunktion, die mir
sagt, wenn ich so und so viele Datenbits habe, dann brauche ich so und
so viele Prüfbits und dann habe ich so und so viele Bits insgesamt.
Ja, Sie erinnern sich.
Wir haben verschiedene Aufbauprinzipien.
Das ist übrigens ein mathematisch sehr reichhaltiges Thema.
Das können wir ja alles nicht leisten in der Vorlesung.
Wir werden nur eine einzige Machart hier darstellen.
Wir werden was ganz Einfaches zeigen, ja und was man sehr schön
erweitern kann auf ganz große Datenwortlängen.
Und da werden wir jetzt gleich sehen, wir werden k-verschiedene
Prüfgleichungen haben, ja für diese verschiedenen Quersummen oder
Paritäten, die wir da berechnen.
Das habe ich Ihnen ja mal gezeigt an einem Beispiel.
Und das Beispiel, ich hoffe, Sie erinnern sich.
Wir haben gesagt, wir haben ein 7-Bit-Code-Wort.
Das bedeutet, wir haben vier Datenbits und drei Prüfbits und dann
können wir im Prinzip hier, genauso wie wir es beim letzten Mal
besprochen haben, die entsprechende Logik loslaufen lassen.
Und der Witz ist, wenn Sie jetzt dieses Keinfehler-Bit oder diese
Keinfehler, das Keinfehlersyndrom hier vorlegen, dann haben Sie
einfach Ihre ganz normale Dualzahlabfolge und das führt immer wieder
zur Verwirrung.
Ich zeige Ihnen das gleich nochmal.
Also wie gesagt, merken Sie sich das mal.
Das ist das, was vielleicht gleich noch fehlt.
Wenn Sie dieses Keinfehler, das wäre sozusagen der nullte Wert, wenn
Sie den hier vorschreiben, haben Sie wieder Ihr normales 0 1 0 1 0 1
oder hier 0 0 1 1 0 0 1 1 usw.
Wir werden sehen, genau das nutzen wir aus bei der entsprechenden
Hemming -Codierung.
Ich habe Ihnen ja gesagt, wie die Paritätsprüfungen ablaufen werden.
Wir haben also diese Bits von 1 bis 7.
Ja, wir lassen jetzt sozusagen das K1, das überprüft jetzt 1, 3, 5 und
7, K2 überprüft 2, 3, 6 und 7 und K3 prüft 4, 5, 6 und 7 usw.
Und das werden wir auch gleich sehen, warum das Sinn macht.
Und wir haben es ja auch gerade schon gesehen, dass wir die nicht
gegenseitig sich überprüfen lassen.
Und wir wollen ja so eine Art Orthogonalität haben.
Wir wollen orthogonale Prüfsummen haben, um am Ende sagen zu können,
wo ist denn der Fehler.
Bei einem Bit, beim ein Bitfehler.
Wir kommen gleich zum Mehrbitfehler.
Das heißt also, wenn wir das mal verallgemeinern, diese Einsicht, die
wir aus dem Beispiel genommen haben und schauen uns das jetzt mal an,
dann hätten wir jetzt ja I-Quersummen von I von 0 bis 1, 0 1 bis K
minus 1, wollen wir jetzt immer auf gerade Parität ergänzen.
Wir haben ja gesagt, wir könnten auch auf ungerade ergänzen.
Das ist jetzt einfach, wie wir es in der Vorlesung machen.
Ja und dann würde das K1, würde jetzt über alle ungeraden Stellen
gehen.
Wo eben diese Potenz 2 hoch 1 auftritt, dann hätten wir Quartisch 1,
Quartisch 3 hoch 0 auftritt.
Da hätten wir jetzt 1, 3, 5, 7.
Wir werden es gleich noch mal genauer sehen.
Wenn ich Ihnen nämlich das hier mal aufblende, ja dann sehen Sie es
sofort.
Ich hoffe, daran wird es klar und ich glaube, das sollten sich mal
einprägen.
Ich versuche ja durch die Vorlesung, Ihren
Prüfungsvorbereitungsaufwand zu minimieren und ich hoffe, dass Sie das
damit auch hinbekommen.
Schauen Sie sich jetzt einfach mal diese Tabelle wieder an.
Als erstes würde doch hier normalerweise stehen 0, 0, 0, 0.
Das wäre ja der fehlerfreie Fall.
Das heißt, ich muss jetzt einfach nur ganz normal durchzählen.
Ich sage jetzt, wenn ich K1 habe, K1 soll sozusagen diese Bits
abdecken.
Also das, das, das, das, das und so weiter.
Das wird von K1 abgedeckt.
K2 deckt die beiden, die beiden, die beiden.
Das sieht am Ende, wenn man es dann sieht, ziemlich verwirrend aus.
Das ist aber total simpel.
Ja, das liegt einfach daran, dass wir den fehlerfreien Fall hier oben
weglassen.
Deswegen kommen wir diese Zahlen etwas komisch aus.
K3, ja in Grün hier dargestellt, ja sind eben diese Stellen.
Also eigentlich völlig simpel, wenn man sich klar macht, dass der
fehlerfreie Fall entsprechend am Anfang weggenommen wird.
Gut, dann haben wir gesagt gerade Quersummen.
Wir spreizen die Datenwörter.
Also wir nehmen das Datenwort, spreizen es auf, um auf das Code-Wort
zu kommen.
Ja und wir wollen die Code-Wort-Position 2 hoch I, ja für die I
-Quersummen -Prüfstelle KI plus 1 freihalten.
Ja und damit bekommen wir dann folgendes Schema.
Das haben Sie ja gerade schon gesehen.
Wir wollen immer das 2 hoch I.
Das wird das KI sein.
Das heißt, wir haben ein K1 bei 1, ein K2 bei 2, ein K3 bei 4, ein K4
bei 8, ein K5 bei 16 und so weiter.
Ja und damit können wir jetzt im Prinzip eine Prüfung vornehmen.
Das heißt, wir legen dann die entsprechenden Datenwörter, die legen
wir einfach dazwischen und die werden sukzessive einfach dazwischen
gelegt.
Ich denke, das ist klar und damit haben wir diese Orthogonalität und
wir werden auch gleich sehen, wenn ich jetzt und das ist ganz wichtig,
wenn ich so ein Datenwort codiere, absende, es wird verfälscht während
der Übertragung.
Ich bekomme es jetzt wieder, dann muss ich in der Lage sein zu sagen,
war es denn jetzt falsch oder nicht?
Ja und was war daran falsch?
Das können wir mit diesem Schema eben sehr schön machen und das zeige
ich Ihnen gleich im nächsten Schritt.
Erstmal, wir können also jetzt durch erneutes Bilden der Quersummen
ermitteln, ob und an welcher Position ein Fehler aufgetreten ist.
Das ist ganz wichtig.
Das werden wir auch gleich noch in Matrix-Schreibweise machen und die
Quersummen geben dabei an, wo diese Position ist.
Liegt kein Fehler vor, sind alle Prüfgleichungen erfüllt und diese K1,
K2, K3 sind also null.
Machen wir mal ein Beispiel.
Wir haben ein Henley-Code mit vier Datenbits und drei Prüfbits.
Wir haben also ein 7-Bit-Code-Wort.
Das Datenwort wäre jetzt von rechts gelesen 1011 und wir würden jetzt
praktisch hier, wie gerade besprochen, entsprechende redundante Bits
einführen, nämlich die entsprechenden Ks.
Und das wären diese hier.
Und jetzt wäre die Frage, wie müssen wir die jetzt berechnen?
Und jetzt denken Sie einfach mal nach, wir haben das ja gerade gesagt.
Sie rechnen also jetzt praktisch nach dieser Technik, die wir gerade
gehabt haben.
Sie hätten hier praktisch einmal etwas, was fehlt.
Also 101, 101, 101.
Das heißt also diese, wenn ich nochmal gehe, 01, der ist drin, 01, der
ist drin, 01, der ist drin, 01, der ist drin.
Und das müssen Sie einfach nur noch merken und das heißt bei der
Bestimmung der Prüfbits bekommen Sie jetzt M1, M2 und M4 für K1.
Und wenn Sie da jetzt aufgepasst haben, ich hoffe Sie tun es, müssen
Sie da gar nichts mehr vorbereiten.
Das müsste eigentlich jetzt sofort klar sein, dass man das so macht.
Bei K2 haben wir das Gleiche.
Wir haben ja im Prinzip 0, 0, 1, 1, 0, 0, 1, 1.
Na gut, dann kriegen wir M1, M3, M4.
M1, M3, M4.
Ja, aber die beiden fallen weg.
Ist klar, oder?
Und für K3 haben wir natürlich 0, 0, 0, 0, 1, 1, 1, 1.
Das heißt die vier müssen drin sein.
Das heißt für die Berechnung von K3 brauche ich diese drei Stellen.
Ja, ist das soweit klar?
Gut, alle nicken.
Dann kriegen wir damit das Codewort entsprechend raus.
Müssen wir ja nur hier entsprechend einsetzen.
So, das Codewort wird jetzt versendet.
Wir versenden das jetzt vom Sender zum Empfänger.
Der Empfänger bekommt das jetzt und jetzt möchte man sich natürlich
fragen, wenn das Codewort ankommt und ich rechne das wieder aus, okay,
dann ist K1 0, K2 0, K3 0.
Also kein Fehler.
Der fehlerfreie Fall war ja alles Nuller für die entsprechenden K's.
Was ist jetzt, wenn wir hier einen Fehler haben?
Wir haben jetzt praktisch an der 1, 2, 3.
Stelle einen Fehler.
Ja, und jetzt möchten wir natürlich entsprechend berechnen.
Wir berechnen jetzt wieder das K1.
Das K1 ist jetzt dummerweise, wir haben ja gerade gesagt, ist also 0,
1, 0, 1, 0, 1, 0, 1.
Das heißt, wir haben jetzt K1, M1, M2, M4.
Ja, jetzt kommt hier eine 1 raus.
Das heißt also, da haben wir schon mal einen Fehlerfall.
Ja, hier kommt auch eine 1 raus.
Hier kommt eine 0 raus.
Das heißt, wir können jetzt sagen, wir haben einen Fehler an der
dritten Position.
Und lassen Sie sich da nicht verwirren.
Ich habe ja immer gesagt, am Anfang auch der Vorlesung, wir müssen
immer aufpassen, wo wir anfangen zu zählen.
Und hier zählen wir einfach wirklich bewusst beim Hemmingcode, so
haben wir es ja angelegt, ja hier an der ersten Position los.
Das wäre also die erste, zweite, dritte, weil die 0.
Position wäre der fehlerfreie Fall.
Den haben wir ja ausgeschlossen.
Ist das klar soweit?
Können wir den Fehler damit lokalisieren.
Bei dem 1-Bit-Fehler.
Wenn wir 2-Bit-Fehler hätten, geht das nicht mehr so einfach.
Das besprechen wir gleich.
Ja, das Dumme wäre jetzt natürlich, wenn ein Prüf-Bit verfälscht wäre,
haben wir ja gerade gesagt.
Mal angenommen, ich nehme ein Datenwort, hänge also diese ganzen Prüf
-Bits dran.
Also macht das ganze redundant.
Jetzt wird ein Prüf-Bit falsch und ich könnte das nicht mehr
detektieren.
Das wäre eine Katastrophe.
Wir wollen natürlich dann auch die entsprechenden Prüf-Bits erkennen,
wenn die falsch sind.
Und das ist aber ziemlich einfach.
Mal angenommen, das Prüf-Bit wäre falsch.
Das wäre das K3.
Wenn das falsch wäre, würden wir im Prinzip nur an der Stelle von
diesem, das wäre jetzt die erste, zweite, dritte, vierte Stelle.
Da würden wir jetzt im Prinzip dann einen Fehler bekommen.
Das heißt also, wir hätten einen Fehler nur in dem Prüf-Bit und nur
diese eine Gleichung würde beeinflusst.
Wir haben gesagt, die sind orthogonal.
Das heißt, wenn ein Prüf-Bit beeinflusst wird oder fehlerhaft wird bei
einem Ein-Bit-Fehler, dann wird auch wirklich nur diese eine Gleichung
falsch.
So und jetzt machen wir mal die Generator-Matrix.
Das möchte ich Ihnen mal hinschreiben.
Und zwar, wenn wir jetzt sagen, wir haben den folgenden Aufbau.
Wir sagen, wir haben ein Sieben-Bit-Code-Wort.
Darauf haben wir uns jetzt eingeschossen.
Ein Sieben-Bit-Code-Wort.
Und das wäre sowas wie M4, M3, M2, K3, M1, K2, K1.
So haben wir es ja angelegt.
Das heißt, wir hätten sowas wie 1, 2, 3, 4, 5, 6 und 7.
So würden wir die jetzt mal sortieren.
Und jetzt die Frage, wenn ich jetzt ein Code-Wort habe, also das M4,
M3, ich schreibe das einfach nur ab, M2, K3, M1, K2, K1.
Das wäre jetzt mein Code-Wort.
Dann hätte ich jetzt dazwischen eine Matrix.
Schreibe ich schon mal das Matrix hin.
Und dann habe ich dann mein Datenwort.
Also M4, M3, M2 und M1.
Also das hier wäre mein Code-Wort.
Das hier wäre mein Datenwort.
Und das hier wäre meine Generator-Matrix.
Generator-Matrix, den nennen wir G.
So, wie finde ich denn jetzt die Elemente dieser Generator-Matrix?
Wer jetzt mal aufgepasst hat, für den ist das jetzt eigentlich nur
noch eine Übung.
Wie bekomme ich diese Elemente?
Was muss ich tun?
Also ich meine, was total simpel ist, ist natürlich für die Werte,
also wie komme ich von M4 nach M4, von M3 nach M3, von M2 nach M2 und
so weiter.
Das ist ja wohl ziemlich simpel.
Die können wir also eigentlich schon mal eintragen.
Ich versuche das mal ein bisschen fernzuhalten.
Also machen wir M4.
M4 ist natürlich 1, 0, 0, 0.
Klar.
Bei M3 haben wir 0, 1, 0, 0.
Bei M2 haben wir 0, 0, 1, 0.
Jetzt machen wir K3.
Wie sieht K3 aus?
Bist du noch im Kopf?
Was muss ich tun?
K3 nimmt ja wohl die oberen drei Werte.
K3 wäre 1, 1, 1, 0.
Mal den.
M1 wäre natürlich nur 0, 0, 0, 1.
Ich will ja nur das M1 wieder zurückbekommen.
K2, was macht K2?
Oder fangen wir mit K1 an.
Bei K1 ist es vielleicht noch einfacher.
Was muss K1 reinnehmen?
Die unterste Zeile.
Sehen Sie das?
Sind Sie sicher?
Von wo aus sehen Sie das?
Ne, ne, stimmt nicht.
Was wollen Sie machen?
Das K1, haben wir gerade gesagt, versucht in dem gesamten Codewort
hier oben, wenn ich mir das Codewort anschaue, versucht das K1
sozusagen 0, 1, 0, 1, 0, 1, 0, 1.
Das heißt also, jetzt können Sie doch darin ablesen, was da rauskommen
muss.
Was kommt da raus?
Also ich gehe mal von rechts los.
Wir müssen also haben 1, 1, 0, 1.
Das heißt, ich muss M1, M2 und M4 drin haben.
Für K2, gleiches Spielchen.
Bei K2 haben wir gesagt, müssen wir rechnen 0, 0, 1, 1, 0, 0, 1, 1.
Das heißt also, wir müssen hier drin haben 1, 0, 1, 1.
Damit haben wir im Prinzip die Generatormatrix.
Ist das klar?
Ist das gleiche im Grün, nur mal in Matrixform dargestellt, also in
Vektormatrixform.
Ich hoffe, das ist nicht zu überfordernd.
Okay, dann gehen wir mal auf das Datenwort.
Gibt es Fragen soweit?
Sonst gehen wir mal zu dem Datenwort.
Wenn wir jetzt ein Datenwort haben.
Also das Datenwort wäre DW.
Und das Datenwort wäre ja von oben gesehen M4, M3, M2, M1.
Wenn ich da jetzt was einsetze, wie eben 1, 1, 0, 1, dann kann ich
davon ausgehen, dass mein Codewort und das nenne ich jetzt CW,
unterstrichen.
Das wäre jetzt ja die Generatormatrix mal im Datenwort.
Und das kann ich jetzt einfach ausrechnen.
Und da habe ich jetzt wieder diese entsprechende Logik.
Also wir haben M4, M3, M2, K3, M1, K2 und K1.
Und da können wir jetzt sagen, dass wir da jetzt, wenn ich das jetzt
ausrechne, da glauben Sie mir einfach mal, das wollen wir jetzt nicht
alles im Detail rechnen.
Das wäre also 1, 1, 0, 0, 1, 1, 0.
Das kommt jetzt heraus.
Das wäre also das korrekte Codewort.
Und der Sender sendet jetzt dieses Codewort an den Empfänger.
Und der Empfänger macht jetzt damit was.
Und die Frage wäre jetzt, der Empfänger bildet jetzt ja wieder ein
neues Syndrom.
Das wäre ja das Syndrom K3, K2, K1.
Das wäre das.
Und das wäre jetzt ja H, da kommen wir gleich dazu, was H ist, mal dem
Codewort.
Und dieses H, das nennen wir die Nullmatrix.
Überlegen Sie sich mal gleich, wie die aussehen kann.
Das wäre also die Nullmatrix.
Und das wäre jetzt, wenn kein Fehler auftaucht, natürlich
offensichtlich 0, 0, 0.
Wir haben ja gesagt, wir reservieren den Fall, dass wir keinen Fehler
haben, auf 0, 0, 0.
So, jetzt was wäre denn das Problem?
Also ohne, dass wir jetzt die Nullmatrix kennen, die überlegen sich
gleich mal, mache ich auf der nächsten Folie, wie die denn aussehen
könnte.
Aber egal, ob ich die kenne oder nicht.
Wenn ich jetzt ein fehlerhaftes Codewort hätte, also wir sagen jetzt
mal, wir hätten also ein fehlerhaftes Codewort.
Das fehlerhafte Codewort, das wäre jetzt CW, Vektor, Strich.
Und das wäre jetzt, indem ich einen 1-Bit-Fehler hätte.
Wie würde ich einen 1-Bit-Fehler darstellen, bei einem fehlerhaften
Codewort?
Was würde ich machen?
Ich hätte hier das Nicht-Fehler-after-Codewort.
Und dann würde ich einfach plus einem Einheitsvektor arbeiten, plus
EI.
Und das entsprechend wrappen.
Und dann hätte ich das, das wäre der ITE-Einheitsvektor.
Also das heißt, das ist ein Einheitsvektor, der hat nur eine 1 an der
ITEN -Stelle.
Wenn ich dann jetzt rechne, dann kann ich ja sagen, dass H mal CW
wäre.
Das wäre ja H mal in CW plus EI.
Und das kann ich jetzt dann darstellen als H mal CW plus H mal EI.
Und das hier ist ja wohl einfach die Null, der Nullvektor.
Das haben wir ja gerade oben geschrieben.
Das ist also der Nullvektor.
Das heißt also, da bleibt nur noch H mal EI stehen.
Was ist denn H, diese Nullmatrix, wenn das so eine Matrix wäre mit der
richtigen Dimension, die wäre jetzt in dem Fall, also hätte drei
Zeilen und entsprechend sieben Spalten.
Was kommt denn raus, wenn ich H mal EI nehme?
Haben Sie noch eine Idee aus den Mathematikvorlesungen?
Wenn ich so eine Matrix habe, die liegt ja, also drei Zeilen, sieben
Spalten und nehme die jetzt mal mit diesem EI der Länge 7.
Und der hat nur eine 1 drin, z.B.
an der Stelle 3.
Was kommt denn dann raus?
Ja, super, genau, kommt die dritte Spalte raus.
Das heißt also, im Allgemeinen können wir sagen, da gibt es eine
Notation dafür.
Wir nehmen alle Zeilen und die Ite-Spalte, also Doppelpunkt bedeutet,
ich nehme alle.
Da gibt es ein Programm, das heißt MATLAB, da haben wir das
abgeleitet.
Das ist aber durchaus eine übliche Notation.
Das wäre also die Ite-Spalte von diesem H.
Das heißt also, wir können damit sagen, der Fehler ergibt sich als die
entsprechende Ite-Spalte aus dieser H-Matrix.
Und das mache ich jetzt noch kurz zu Ende und dann sind wir damit auch
durch.
Und zwar kann man sich jetzt überlegen, wenn ich jetzt das Syndrom
habe, das Syndrom, schreibe ich jetzt hin als K3, K2, K1.
Und jetzt ist die Frage, wie sieht denn eigentlich diese 0-Matrix aus?
Ich jetzt mal nehmen würde mit einem entsprechenden Codewort.
Wie sieht die Matrix aus?
Also wenn ich jetzt mal die Matrix hinschreibe, das wäre jetzt mal die
Matrix und ich schreibe jetzt mal hier unser Codewort hin.
Und unser Codewort darf jetzt mal einen Fehler haben.
Wir hätten also jetzt 1, 1, 0, 0.
Jetzt hätten wir hier mal einen Fehler, 0 und dann 1, 0.
Also sieben Werte.
Wie sieht unsere 0-Matrix aus?
Können wir das direkt sehen?
Wenn Sie gerade aufgepasst haben, sehen Sie das sofort.
Das ist hoffentlich der Lerneffekt heute.
Sie müssen einfach nur wieder die Dualzahlen hinschreiben.
Haben wir ja gerade gesagt.
Für K1 fangen Sie an mit den Dualzahlen, lassen aber die 0, 0, 0 weg.
Dann müssen Sie doch einfach nur sagen 0.
Dann fängt es an mit der 1.
1, 0, 1, 0, 1.
Jetzt muss ich überlegen, wie viele brauche ich denn?
Ich brauche sieben Stück.
Also 1, 0, 1, 0, 1 sind 5, 6, 7.
Damit hätten wir die erste von unten gerechnet, die erste Zeile.
Bei der zweiten machen wir es genauso.
Wir hätten dann 0, 0, 1, 1, 0, 0, 1, 1.
Bei der drüber haben wir 0, 0, 0, 0.
Also 0, 0, 0, 0, 1, 1, 1, 1.
Sie können sie also auswendig hinschreiben.
Da müssen Sie also gar nichts irgendwie nachschauen während der
Prüfung oder irgendwas.
Sie wissen das auswendig und wenn Sie das jetzt ausrechnen, da kommt
heraus 0, 1, 1.
Naja, was haben wir damit bekommen?
Wir haben einen Fehler in der dritten Position und genau das ist es ja
auch.
Wir haben also einen Fehler in der dritten Position.
Und jetzt können wir das nochmal schön hinschreiben.
Wir können jetzt ja sagen, das wäre ja eigentlich H, also diese 0
-Matrix.
Ich schreibe das nochmal hin.
Also das wäre jetzt diese 0-Matrix.
Und das H könnte ich jetzt auch nochmal so hinschreiben, indem ich den
Originalvektor nehme und dann den entsprechenden Fehlervektor.
Das heißt, ich habe den normalen Vektor, also das normale, also 1, 1,
0, 0, 1, 1, 0.
Das war der Vektor, den ich vorher hatte.
Plus, da hatte ich ja diesen Fehler 0, 0, 0, 0, 1, 0, 0.
Wir hatten hier einen Fehler in der dritten Position.
Und das kann ich jetzt so hinschreiben.
Da kann ich sagen, das ist also H mal dem Codeword, was wir vorher
hatten.
Das ist 0 plus dem H mal dem E3.
Und jetzt kommt das zum Tragen, was die Kommilitone gerade gesagt hat.
Das wäre dann einfach nur 0, 1, 1.
Warum?
Weil ich praktisch nur noch diese Spalte hier rausnehme.
Genau das ist das, was hier rauskommt.
Und damit glaube ich, schließt sich das.
Und das kann man mathematisch sehr schön sauber machen.
Das wollen wir hier nicht alles komplett in der Vorlesung betreiben.
Aber, dass Sie überhaupt mal einen Eindruck haben, wohin wir da gehen
könnten.
Gibt es Fragen soweit?
Also das war jetzt Hamming-Code.
Also wir wollen jetzt diese ganze Codierung, Zeichendarstellung usw.
abschließen.
Gibt es Fragen?
Nicht der Fall.
Gut, dann würde ich das jetzt hier mal verlassen.
Und wir können jetzt zusammenfassen, dass wir mit dem Hamming-Code ein
Bitfehler korrigieren können.
Problem wäre nur, was ist, wenn wir zwei Bitfehler haben.
Und jetzt wollen wir mal sagen, und das ist ganz wichtig, also wenn
Sie gleich Fragen stellen, denken Sie immer daran, ab jetzt betrachten
wir nur ein Bit oder zwei Bitfehler, nicht mehr.
Keine drei Bitfehler oder irgendwas.
Das wäre nicht das, was wir tun wollen.
Das würde noch mehr Aufwand bedeuten.
Nur ein Bit oder zwei Bit.
Zwei Bitfehler können vom Hamming-Code erkannt werden, aber nicht von
ein Bitfehler unterschieden werden.
Ja, Sie sehen hier so ein Beispiel hier bei diesem Syndrom.
Ja, das könnte jetzt ein Ein- oder Zwei-Bit-Fehler sein.
Was können wir jetzt machen?
Wir könnten jetzt zu dem Hamming-Code ein weiteres Paritäts-Bit
hinzufügen.
Und das tue ich jetzt, aber ich mache das nicht so konsistent.
Also ich lasse diese Nummerierung, die wir hatten bisher bei dem
Hamming -Code, die lasse ich gleich.
Ja, und ich füge jetzt einfach rechts, also neben dem MSB, ein
Paritäts -Bit an.
Ja, und wenn ich jetzt einen Ein-Bit-Fehler habe, ist der offenbar
erkennbar durch das Paritäts-Bit.
Und da passen Sie jetzt mal auf und stellen mir gleich mal ein paar
intelligente Fragen dazu.
Das ist nämlich gar nicht so einfach.
Einen Ein-Bit-Fehler kann ich erkennen und korrigieren durch den
Hamming -Code.
Ein Zwei-Bit-Fehler, da würde das Paritäts-Bit sagen, da ist nichts
passiert.
Den erkenne ich aber durch den Hamming-Code, dann ist er aber nicht
korrigierbar.
Ich kann nur sagen, es ist ein Zwei-Bit-Fehler aufgetaucht, aber ich
weiß nicht wo.
Bei mehr als Zwei-Bit müsste man was anderes tun.
Also damit belasten wir Sie auch gar nicht in der Vorlesung.
Wir wollen ja nicht alles hier vermitteln, sondern wenigstens diese
einfachen Dinge.
Machen wir ein Beispiel.
Wenn ich jetzt den Fall hätte, dass ich dieses Code-World hätte und
ich hänge jetzt ein Paritäts-Bit an.
Das Paritäts-Bit, ja.
Das überlegen Sie sich jetzt mal.
Da kommen wir in drei Minuten wieder darauf zurück.
Ihr Kommilitonen hat gerade gefragt, erkennen wir auch die Fehler im
Paritäts -Bit?
Denken Sie mal darüber nach, wie wir das machen können.
Und ich sage Ihnen gleich, wenn wir das nicht könnten, wäre das Ganze
ja so ein bisschen ad absurdum geführt.
Dann müssten wir es ja nicht machen.
Aber denken Sie mal darüber nach.
Machen wir in drei Minuten.
Also wir hängen ein Paritäts-Bit an.
Das Paritäts-Bit ergänzt praktisch das Datenwort auf gerade Parität.
Das heißt also in dem Fall, wo wir jetzt hier vier Einsen haben, muss
das Paritäts-Bit Null sein.
Und jetzt nochmal, was ich Ihnen von Anfang an gesagt habe.
Bitte denken Sie daran, wir haben einen Sender, der sendet jetzt
dieses Datenwort.
Der hat das jetzt hier berechnet.
Der hat diese Cars berechnet und er hat das Paritäts-Bit berechnet.
Und jetzt sendet er das ganze Ding los.
Jetzt wird es während der Übertragung verfälscht in jedem Bit, wie Sie
gerade gesagt haben, kann es ja auch ein Paritäts-Bit sein, wird in
jedem Bit verfälscht, möglicherweise.
Und der Empfänger, der muss jetzt gucken, was ist eigentlich passiert?
Ist es ein Ein-Bit oder ein Zwei-Bit-Fehler?
Mehr können wir nicht sagen.
Aber wenigstens inzwischen können wir Zwei-Bit-Fehler sagen.
Okay, jetzt mal ein Beispiel.
Wir hätten den Fall, ein Ein-Bit-Fehler.
Bei einem Ein-Bit-Fehler wäre das Bit M3, das wäre jetzt hier
verfälscht.
Die Parität haben wir ja vorhin als Null gesagt.
Jetzt rechnen wir mal hier durch, kommt aber Parität, also wir haben
ja drei Einser, kommt also eigentlich raus, Paritäts-Bit hätte 1 sein
müssen.
Stimmt also nicht.
Das heißt also, wir haben hier einen Ein-Bit-Fehler und wir können den
auch ausrechnen.
Ja, wir haben also hier 0, 1, 1, 0.
Also ein Fehler in der sechsten Position und wie gesagt hier, ich
rechne von hier ab.
Also 1, 2, 3, 4, 5, 6.
Das wäre der Fehler, den können wir detektieren.
Ja, ist das klar?
Also ich habe jetzt bewusst, um es für Sie leichter zu machen, diese
Bit -Stelle weggelassen.
Ich hätte es natürlich auch so adaptieren können, dass ich sage, beim
Ergänzen des Paritäts-Bits sage ich einfach, das ist die siebte
Position.
Aber ich glaube, dann wird es verwirrend, wenn wir gerade noch über
den Hamming-Code gesprochen haben.
Ich hoffe, das ist klar.
Also jetzt einfach ab hier gerechnet, also ab den blauen Bit.
So, wenn wir jetzt sagen, wir haben zwei Bit-Fehler.
Mehr können wir ja nicht.
Ein 2-Bit-Fehler würde natürlich wieder zu einem Paritäts-Bit hier
Null führen.
Also das heißt, wir hätten jetzt hier gerade Parität.
Würden also sagen, entweder es ist gar nichts passiert oder es sind
zwei Bit-Fehler passiert.
Und das können wir dann daran erkennen, dass wir sagen, klar, das
Syndrom ist nicht Null.
Also muss es ein Fehler sein, aber es waren zwei Bit-Fehler und wir
können nicht mehr sagen, wo der Fehler aufgetaucht ist.
Ist das klar?
Wenn das Syndrom Null wäre, dann könnten wir sagen, da kommen wir
gleich noch dazu.
Sagen Sie mal, was für Fälle können wir denn noch unterscheiden?
Jetzt mal gerade auf die Frage von den Kommilitonen hin.
Wenn wir jetzt überlegen, wir haben ein Datenwort.
Das Datenwort enthält ja nur M1, M2, M3 und M4.
Hier haben wir sogar M1, M2, M3, M4 und M5.
Also fünf Bit.
Also ganz bescheiden.
Und wir müssen jetzt ergänzen, diese entsprechenden Überprüfungs-Bits,
diese Paritäts-Bits, also K1, K2, K3, K4 plus das globale Paritäts
-Bit.
Und die können ja alle auch noch falsch sein.
Was kann ich also jetzt sagen?
Wie kann ich jetzt was feststellen?
Ist das Beispiel soweit klar?
Jetzt würde ich vielleicht mal in die Zusammenfassung gehen.
Wir haben einen Gesamtparitäts-Bit oder eine Gesamtparität.
Ich gucke mein Codewort an und sage, was für eine Parität hat das
denn?
Wir wollen ja immer auf gerade Parität das Ganze abstimmen.
Ist sie ungerade, scheint irgendwas nicht gepasst zu haben.
Ja, das heißt also, wir werden wohl ein Bit-Fehler haben, bei ein- und
zwei -Bit-Fehlern.
Das heißt, wir schauen uns mal die Prüf-Bits an.
Haben wir sozusagen die Prüf-Bits, diese Ks gleich 0, muss der Fehler
tatsächlich, wie Sie gerade gesagt haben, im Paritäts-Bit liegen.
Weil sonst wäre es ja nicht möglich.
Das heißt also, die Daten sind okay, der Fehler liegt im Paritäts-Bit.
Das letzte Bit ist falsch.
Ist K ungleich 0, können wir sagen, wir können den Fehler
lokalisieren, aber nur bei ein-Bit-Fehlern.
Das heißt also, wir korrigieren auch den Fehler.
Wenn wir jetzt eine gerade Parität haben, dann können wir sozusagen
sagen, wir haben entweder 0 Fehler, dann muss K gleich 0 sein, dann
ist alles in Ordnung.
Dann haben wir also die Daten okay, müssen wir nichts tun.
Ist K ungleich 0, haben wir einen 2-Bit-Fehler, den können wir nicht
korrigieren.
Und dieser ist nicht korrigierbar.
Ist das klar?
Dass wir jetzt also, aber wie gesagt, keine 3-Bit-Fehler oder
irgendwas, sondern nur 2-Bit-Fehler, die können wir jetzt hier
behandeln.
Soweit?
Okay.
Gut, dann würde ich sagen, sind wir hier auch durch mit den Hemming
-Codes und dann würde ich kurz Zusammenfassung machen.
Ja, wir können im Prinzip an Standard-Code-Wörter, ja, können wir ein
weiteres Quersum-Bit anhängen, sodass wir auch 2-Bit-Fehler erkennen.
Mehr machen wir in der Vorlesung nicht.
32-Bit-Wortlänge brauchen wir sieben Prüf-Bits, diese Ks, ja, zur
Einzelfehler -Korrektur und wir können auch Doppelfehler erkennen.
Ja, 64-Bit erfordern acht Korrektur-Bits und ich habe Ihnen ja gerade
gezeigt, wie man über diese Generator-Matrizen oder über diese Null
-Matrizen das entsprechend auch in Matrix-Darstellung darstellen kann.
Und das kann man natürlich mathematisch noch sehr schön ausbauen und
da kann man noch viel, viel mehr zu machen, was wir in der Vorlesung
nicht machen.
So, und der nächste Schritt, wenn jetzt Schaltnetze.
Ich würde sagen, jetzt vielleicht erstmal Fragen zu den Codierungen.
Gibt es Fragen soweit?
Okay, dann würde ich sagen, ich bin ein paar Minuten zu früh, vier
Minuten zu früh, aber wir machen jetzt vielleicht trotzdem mal die
Pause, ja, und fangen um 20 vor wieder an, ungefähr oder 19 vor und
dann zeige ich Ihnen mal Schaltnetze.
Okay, also jetzt das neue Kapitel, ja, Schaltnetze.
Schaltnetze bedeutet, wir haben etwas, was rein statisch ist.
Wir haben also kein Gedächtnis in diesem System, wir werden also noch
sehen, wir werden Schaltwerke kennenlernen.
Bei den Schaltwerken haben wir ein Gedächtnis.
Hier haben wir sozusagen eine rein statische Abbildung von den
Eingängen zu den Ausgängen.
Das ist aber kompliziert genug erstmal, ja, und wir wollen die
formalen Grundlagen anschauen, so eine Realisierung mal, wie entwirft
man so etwas und ganz wichtig, welche Laufzeiteffekte gibt es denn?
Das heißt, wir werden sehen, dass natürlich die Signale in
unterschiedlichen Geschwindigkeiten durch so ein Schaltnetz
hindurchlaufen.
Jetzt vielleicht mal die ersten Dinge.
Also hier geht es um rein kombinatorische logische Schaltungen, kein
Speicherverhalten, ja und wir wollen logische Funktionen realisieren,
also boolsche Funktionen, werden wir gleich sehen, realisieren.
Ja und ein Beispiel wäre so ein Lichtauswarnung im Kraftfahrzeug,
Motor aus und Tür auf und Licht an, dann wird ein Alarm losgeschlagen
und das wäre so eine rein statische Meldung, die wir da betrachten
können.
Schauen wir uns mal an, wie ist denn so ein Signalverarbeitungssystem,
wenn es digital ist, aufgebaut.
Wir haben also einen technischen Prozess, das könnte übrigens auch ein
natürlicher Prozess sein.
Wir haben uns jetzt hier nur aus Bescheidenheit auf einen technischen
Prozess kapriziert.
Das könnte auch ein natürlicher Prozess sein, wenn Sie also Menschen
beobachten und wir haben hier unten ein digitales
Signalverarbeitungssystem.
Das erste ist, wir wollen also eine Informationserfassung durchführen
mittels Sensoren.
Das heißt also, wir haben jetzt hier einen Sensor.
Der Sensor liefert vielleicht ein so kleines Signal, ein so kleines
Ausgangssignal, dass wir das verstärken müssen.
Wir haben also einen Eingangsverstärker und der liefert praktisch
jetzt das verstärkte Signal hierhin.
Und die Frage ist jetzt, wir wollen jetzt digitalisieren.
Der Begriff digital ist immer noch nicht bei jedem so richtig
angekommen und ich meine, wenn Sie jetzt Informatik studieren, wäre
das sozusagen mal ja vielleicht sogar die letzte Möglichkeit zu
verstehen, was digital heißt.
Also nach der Stunde fragen Sie sich mal, was heißt digital?
Ja und was wollen wir machen?
Also wir wollen digitalisieren.
Das heißt, wir haben so ein Abtasthalteglied.
Das heißt, wir nehmen den Wert, halten den eine gewisse Zeit, dann
wird der mit einem AD-Wandler, also analog-digital-Wandler, überführt
in ein digitales Signal.
Schauen wir uns gleich an, was das bedeutet.
Und ein digitaler Signalprozessor führt dann Algorithmen der digitalen
Signalverarbeitung durch und danach wird ein DA-Wandler bemüht und der
DA -Wandler nimmt die digitalen Daten und führt die wieder in den
analogen Bereich zurück.
Aber jetzt haben wir ein Problem.
Sie wissen ja vielleicht, ja und wenn Sie es jetzt noch nicht wissen,
werden Sie es noch lernen, dass wir jetzt, wenn wir diese Umwandlung
durchführen, dass wir dann entsprechend solche Spiegelfrequenzen
haben.
Und die müssen wir jetzt hier entsprechend dann rausfiltern.
Das werden wir gleich diskutieren.
Ja und der Ausgangsverstärker, der muss im Prinzip auch gleich so ein
Filter sein, er liefert das an einen Aktor oder Aktuator, je nachdem
wie Sie das betonen möchten, an den technischen Prozess wieder und
dann haben wir hier die entsprechende Schleife.
Und was brauchen wir da jetzt?
Also wir haben diesen Eingangsverstärker, der verstärkt das Senden
-Signal, weil es so klein ist.
Das Abtas-Halteglied brauchen wir, damit wir überhaupt in der Lage
sind, eine AD-Wandlung durchzuführen, weil der AD-Wandler vielleicht
einfach nur mal ganz kurz ein Signal nimmt und er soll das Richtige
nehmen.
Da wollen wir das Ganze also halten.
Jetzt brauchen wir ein sogenanntes Anti-Aliasing-Filter, was hohe
Störfrequenzen im Sensorsignal herausnimmt, weil wir ja das
Eingangsspektrum replizieren.
Ich weiß nicht, ob Sie sich das mal überlegt haben, das wäre die
falsche Vorlesung dafür.
Und wir nehmen jetzt praktisch aus dieser Replikation von Signalen,
wollen wir sozusagen das Original-Signal behalten.
Wir brauchen also ein entsprechendes Anti-Aliasing-Filter und beim
Ausgangsverstärker haben wir natürlich auch eine Glättung, weil die
Signale, die vom AD-Wandler kommen, ja die müssen sozusagen
rekonstruiert werden.
Da brauchen wir genau so einen Filter.
Schauen Sie sich das nochmal bitte an.
Schauen Sie sich das nochmal bitte an, dass wir also da einen
Rekonstruktionsfilter brauchen.
So, jetzt kontinuierlich und diskret die Signale.
Also ein Signal ist ein physikalischer Träger von Informationen.
Das heißt also, wir haben ein Signal, das hängt von einer unabhängigen
Variable ab, T.
Übrigens, da werden wir nochmal darüber diskutieren, ja auch im Laufe
der Vorlesung.
Wir haben ja nur eine unabhängige Variable, nämlich das T.
Ja, das ist wichtig.
Ja, also nur die Zeit und das Signal, das muss darüber nicht skalar
sein.
Das Signal könnte darüber jetzt auch mehrdimensional sein.
Wir wollen aber jetzt erstmal ein skalares Signal anschauen und das
wäre U von T.
Also das ist einfach eine skalare Größe, die hängt von T ab.
Ja und das Signal ist zu jedem Zeitpunkt definiert und wir wollen
jetzt keine pathologischen Dinge betrachten.
Das könnte natürlich jetzt auch springen, ja irgendwelche
Unstetigkeiten haben und so weiter.
Wollen wir jetzt alles gar nicht diskutieren.
Gehen wir erstmal davon aus, es könnte jeden beliebigen Wert annehmen.
Ja und wir haben ein Signal mit kontinuierlichen, also Zeit- und Werte
- kontinuierlichen Werten.
Ja und die Frage wäre jetzt, wenn ich das Ganze jetzt diskretisiere
und jetzt kommen wir und wie gesagt vereinfacht.
Sie können mich natürlich jetzt unterbrechen und sagen, naja wir
könnten noch das und das betrachten bei dem kontinuierlichen Signal.
Klar, stimmt, aber machen wir es jetzt mal erstmal ganz einfach.
Das analoge Signal ist jetzt Zeit- und Werte- kontinuierlich.
Was könnte man jetzt ändern, wenn wir damit arbeiten wollen?
Das ist der wesentliche Punkt.
Was könnten wir ändern?
Wie sehr ist es Zeit- und Werte-kontinuierlich?
Was könnten wir ändern?
Genau, also die Höhe.
Ja und?
Genau, das möchten wir auch.
Ja, wir wollen im Prinzip, also was die Kommilitonin gerade gesagt
hat, wir möchten im Prinzip jetzt in der Zeit diskret werden, also nur
noch ein paar feste Werte haben.
Ja gut, das können natürlich unendlich viele sein, aber wir haben eine
Diskretisierung eingeführt und in der Höhe, in der Spannung wollen wir
auch irgendeine Diskretisierung einführen und das gehen wir mal davon
aus, wir würden das jetzt auch, jetzt kommt die nächste Einschränkung,
wir würden das jetzt mal equidistant machen.
Das muss man nicht so machen und wird man wahrscheinlich auch nicht so
machen typischerweise, aber vielleicht also in den üblichen Fällen
macht man das schon so, dass ich jetzt also hier einführe, dass ich
jetzt hier diskrete Zeiten habe, die equidistanten Abstand haben.
Und das heißt, was mache ich jetzt?
Ich habe jetzt so eine Abtastperiode und kann jetzt hier die
entsprechenden Werte abnehmen und mein Signal könnte ich mir jetzt so
vorstellen, dass ich sage, das wäre jetzt eigentlich hier nach immer
konstant.
Das heißt, ich hätte aus dem Grauen das rote Signal gemacht.
Das wäre jetzt aber nur im Prinzip zeitdiskret.
Jetzt hat die Kommiliton aber gerade gesagt, wir können ja auch noch
mehr machen.
Statt diesem nur zeitdiskreten könnte ich ja jetzt auch, also das wäre
jetzt zeitdiskret, aber auch noch wertekontinuierlich.
Das wäre noch nicht digital.
Wenn ich es jetzt digital haben möchte, dann muss ich es jetzt auch
noch wertediskretisieren.
Das heißt also, ich würde jetzt auch noch in der Höhe diskretisieren,
also in der Amplitude und dann habe ich nur eine endliche Anzahl an
unterschiedlichen Werten, die ich jetzt hier unterscheiden kann und
die kann ich sogar in solchen Dualzahlen darstellen.
Und hier habe ich jetzt eins gemacht.
Ich habe es auch da wieder äquidistant gemacht.
Müsste man nicht.
Typischerweise würde man bei kleinen Amplituden eine höhere Auflösung
haben als bei großen Amplituden, so wie wir es ja bei den Floating
Point Zahlen kennengelernt haben.
Da haben wir auch gesagt, in der Mitte haben wir eine hohe Auflösung
und nach außen hin haben wir die geringe Auflösung, aber wir können
damit einen großen Bereich abspannen und genauso wäre es hier auch.
Das heißt, es müsste nicht äquidistant sein.
Ich hoffe, das ist klar.
So, die Auflösung ist das und dann hätten wir hier die entsprechenden
Punkte und wir könnten uns jetzt vorstellen, dass das Signal
dazwischen einfach konstant ist.
Wenn ich es jetzt rekonstruiere, das machen wir in der Vorlesung jetzt
nicht, dann würde man es natürlich etwas geschickter machen.
Wir würden nicht davon ausgehen, dass das Signal dazwischen konstant
ist.
Ganz klar.
Wichtig sind jetzt Signale, die nur zwei unterschiedliche Werte haben.
Ja, also binäre Signale.
Das haben Sie vielleicht schon mal kennengelernt oder sollten Sie
schon mal kennengelernt haben.
Ich meine, jeder von Ihnen oder jede von Ihnen hat ein Handy, einen
Computer zu Hause, ein Tablet, ich weiß nicht was.
Das heißt, Sie rechnen ständig mit Systemen oder arbeiten ständig mit
Systemen, die mit binären Signalen rechnen.
Das Dumme ist halt nur, die binären Signale sind nicht wirklich binär,
sondern Sie haben typischerweise so ein High-Intervall und ein Low
-Intervall.
Das heißt also, wenn so ein Rechner mit 0 oder 1 rechnet, dann ist die
0 nicht wirklich 0 Volt und die 1 nicht wirklich 5 Volt oder
irgendwas, sondern Sie können hier in diesem Intervall beliebig hin
und her laufen.
Das wäre die 0.
Sie können hier oben noch beliebig hin und her laufen.
Das wäre die 1.
Ja, und nur hierzwischen ist sozusagen so ein Trennbereich.
Und da gibt es halt verschiedene Techniken, also Transistor,
Transistor -Logik beispielsweise.
0 bis 0,8 Volt hier, 2 bis 5 Volt hier und die V24-Technik, sowas wie
RS -232, kennen Sie wahrscheinlich, arbeitet halt in dem Bereich.
Das heißt also, wir können im Prinzip die 0 und die 1 können wir
entsprechend trennen, obwohl es reale, analoge Signale sind.
Und das ist das Wichtige dabei.
Das heißt also, wir versuchen mit analogen Signalen digitale Signale
darzustellen, so wie es auch im Funkbereich beispielsweise ist.
Ist das klar soweit?
Dann vielleicht mal zur Buhl'schen Algebra.
Wir werden die Buhl'sche Algebra verwenden.
Sie wurde von George Buhl entwickelt.
Ich möchte jetzt nicht den Lebenslauf von ihm verlesen.
Schauen Sie sich das mal selber durch.
Sie kriegen die Folien ja gleich.
Er hat einen ganz schönen Lebenslauf.
Er hat das Ganze aber noch nicht super systematisch gemacht.
Also es kam dann später jemand, der Huntington, der das Ganze
axiomatisch gemacht hat.
Die Axiome, die Huntington aufgestellt hat, werden aber etwas zu
kompliziert für die Vorlesung.
Das heißt also, wenn jemand von Ihnen die Muße hat, mal da
reinzuschauen, bitte tun Sie es.
Ich werde Ihnen eine etwas vereinfachte Form heute darstellen.
Aber ich glaube, die ist auch wichtig und gut.
Das heißt, wir schauen uns mal die Buhl'sche Algebra an.
Wir betrachten die Buhl'sche Algebra.
Wir haben also eine Menge, die besteht aus verschiedenen Elementen ABC
und wir haben zwei zweistellige Operatoren oder Operationen.
Das lese ich hier als Plus und das als Mal.
Das wird sehr abstrakt.
Das hat mit Plus und Mal nichts zu tun.
Das werden wir gleich sehen.
Das könnte auch sowas wie eine Schnittmenge sein und eine
Vereinigungsmenge und so weiter.
Aber ich möchte das einfach so lesen als Plus und Mal.
Und wir wollen diese Operation auf die Elemente so anwenden, dass wir
danach wieder Elemente in V bekommen.
Das heißt, wir sind also abgeschlossen.
Wir haben also ein Verknüpfungsgebilde, das nennt man Buhl'sche
Algebra, also BA.
Und das hat jetzt also diese Menge und diese beiden Operatoren, dieses
Plus und das Mal.
Und wir haben jetzt eben diese vier huntingen Axiome.
Wie gesagt, wenn sich jemand dafür näher interessiert, schaue sich
bitte mal den Lebenslauf von dem Huntington an.
Das ist nicht einfach.
Man kommt am Ende mit anderen Axiomen aus, die noch etwas einfacher
sind vielleicht.
Aber ich glaube für die Vorlesung ist das hier optimal, dass wir jetzt
diese vier huntingen Axiome betrachten.
Abgeschlossenheit.
Ja, wir wollen also, dass für alle AB aus diesem Grundbereich gilt,
dass A mal B auch aus V ist.
A plus B auch aus V ist Kommutativität.
Ja, wir wollen, dass A mal B gleich B mal A und A plus B gleich B plus
A ist.
Distributivität, die wird Sie dann verwundern.
Und das muss ich sagen, finde ich auch nicht immer so einfach bei den
Herleitungen.
Ja, wir haben sowas wie A mal in Klammern B plus C.
Wir haben noch keine Präzedenz angegeben übrigens.
Ja, für die Programmierer unter Ihnen.
Ja, es gibt noch keine Präzedenz.
Wir werden also erst mal Klammern setzen.
Ja, über Präzedenz müssen wir uns gleich noch unterhalten.
Also A mal in Klammern B plus C ist dann also A mal B in Klammern plus
in Klammern A mal C.
Das gleiche gilt aber auch andersherum.
Ist etwas gewöhnungsbedürftig, aber es ist so.
Neutrale Elemente.
Wir haben also zwei Elemente E und N.
Ja, und das E ist das 1-Element, das N ist das Null-Element und wir
können sowas sagen wie A mal E ist A und A plus N ist A.
Das wird es also immer geben.
Inverse Elemente.
Ja, ist glaube ich auch nicht überraschend.
Ja, wir haben also sowas wie so ein inverses Element A quer.
Ja, und damit bekommen wir N oder E.
Und das ist noch total abstrakt und damit können wir jetzt mal gucken.
So, jetzt muss ich mal hier ein paar Dinge hinschreiben und zwar.
Wir können uns jetzt mal überlegen, das 1-Element.
Ist das eindeutig?
Oder wir können uns noch weitere Dinge überlegen.
Wir können Eindeutigkeiten überlegen.
Wir können auch überlegen, können wir aus diesen Axiomen andere Dinge
herleiten oder ist das der minimale Axiomensatz?
Habe ich Ihnen ja gerade schon gesagt, es gibt einen anderen Satz von
Axiomen, der ist aber nicht kleiner, der ist nur anders.
Und jetzt können wir uns überlegen, welche Art von Axiomen wollen wir
haben und was können wir daraus ableiten?
Und das machen wir jetzt mal.
Also Eindeutigkeit des 1-Elementes.
Denken Sie mal mit.
Wie können wir das beweisen?
Also Eindeutigkeit des 1-Elementes.
Wie können wir das beweisen?
Sagen wir mal, wir hätten zwei.
Also E1, E2, das seien jetzt verschiedene, verschiedene 1-Elemente.
Was können wir dann sagen?
Was verschiedene 1-Elemente betrachten würde?
Was gilt dann?
Jetzt verstehe ich Sie fast nicht, ich muss näher zu Ihnen kommen.
Wir müssen glaube ich es noch etwas formaler ansetzen.
Versuchen wir das nochmal, aber darauf kommen wir gleich.
Genau was Sie gerade gesagt haben, darauf kommen wir gleich.
Wir können das aber doch jetzt ganz formal ansetzen.
Wir können doch sagen, dass wir folgendes ausnutzen.
Wir können ja sagen A, ich glaube da wollen Sie darauf hinaus.
Wenn wir sagen A mal, also ich lese es ja als mal, das Abstrakt.
A mal E1.
Was kommt da raus?
Kommt A raus.
Das ist ja H3.
Ich mache es also etwas langwieriger, als Sie gerade gesagt haben.
Am Ende kommt genau das raus, was Sie gesagt haben.
Aber ich will es etwas genauer machen.
Also gilt das auch für den Spezialfall?
Genau.
Das heißt also, wenn wir sagen A ist gleich E2, dann folgt genau das,
was Sie gerade gesagt haben.
Ist also E2 mal E1 ist gleich E2.
Ich hoffe, man kann das lesen.
Ja und das wäre jetzt die Gleichung 1.
Ja und das mache ich jetzt nochmal.
Dann ist ja ziemlich offensichtlich, wenn ich jetzt sage, ich habe
jetzt noch A mal E2 ist gleich A.
Das mache ich wieder mit H3.
Ja und das Ganze sollte ja wohl hoffentlich auch gelten für A gleich
E1.
Also unterbrechen Sie mich, wenn es unklar wird.
Und dann folgt natürlich daraus, dass E1 mal E2 gleich E1 ist.
Das wäre die Nummer 2.
Na gut und jetzt aus den beiden Schlussfolgerungen 1 und 2 folgt.
Jetzt muss ich natürlich noch H1 nehmen.
Ja, also Komodativität folgt mit A1, E1 gleich E2.
Das heißt also, wir können damit sagen, dass das 1-Element eindeutig
ist.
Das Ganze können wir jetzt auch nochmal zur Übung machen mit dem Null
-Element.
Ja, das heißt also, wir sagen Eindeutigkeit.
Ist das nicht klar?
Ist es einfach?
Ist es für alle trivial?
Ja, ist es für alle trivial?
Da müsste man fast alle nicken, aber es tun aber noch nicht alle.
Da müssen Sie aber kräftig nicken, da kriegen Sie bis morgen ja
Muskelkater.
Also ich mache nochmal schnell das Null-Element.
Also Eindeutigkeit des Null-Elements.
Wenn wir jetzt sagen, N1 und N2, das seien jetzt unterschiedlich oder
verschiedene Null-Elemente, dann gilt jetzt Folgendes.
Wir können dann jetzt sagen, dass wir natürlich hätten A jetzt mit dem
N plus, N1, das wäre A, das wäre wieder H3.
Und jetzt könnte ich sagen, dass für A gleich N2 und dann folgt halt
wieder, ich glaube, das sollte jetzt klar sein, dass wir also dann
haben N2, ich hoffe mein N ist lesbar, plus N1 gleich N2.
Das wäre die Gleichung 1, also genau die gleiche Machart.
Ja, das sollte also jetzt klar sein.
Und dann haben wir noch A und N2 gleich A.
Das wäre das H3 für A gleich N1.
Und es folgt dann, dass wir haben N1 plus N2 gleich N1.
Das wäre die Gleichung 2.
Und dann natürlich wieder aus 1 und 2, wieder mit H1.
Das folgt N1 gleich N2.
Das wäre jetzt die einfache Beschreibung, Eindeutigkeit von 1 und Null
-Elementen.
Und jetzt wäre natürlich noch die Frage, das inverse Element.
Das wollen wir vielleicht noch machen und das ist jetzt etwas
komplizierter.
Und zwar sagen wir mal, also ich schreibe das mal drüber, also wir
hätten Eindeutigkeit des inversen Elements.
Und das heißt, wir sagen jetzt mal, wir hätten zwei inverse Elemente.
Und da können Sie jetzt mal überlegen, wie wir das machen.
Also A1 quer und A2 quer seien jetzt inverse Elemente zu A.
Wenn ich das hätte, damit folgt also, dass wir sagen können, dass also
A mal A1 quer, das wäre N, das wäre ja H4.
Da ist noch klar.
Und dann könnte ich sagen, dass A plus A1 quer, das wäre E, das wäre
auch noch nach H4.
Und jetzt könnte ich das auf der anderen Seite genauso machen.
Ich könnte sagen, also A mal A2 quer, das wäre N nach H4 und A plus A2
quer, das wäre E nach H4.
Wie kann ich jetzt zeigen, dass es nur ein Element geben kann?
Also es gibt nicht zwei inverse Elemente A1 und A2.
Wie mache ich das?
Ich suche ein relativ länglicher Beweis.
Die Beweise sind nicht immer die optimalen oder irgendwas.
Ich will Ihnen nur verschiedene Formen der Beweise zeigen und wenn Sie
dann die Übungen gehen und die Tutorien und so weiter, sich das mal
anschauen oder mal selber rechnen, vielleicht bekommen Sie dann ja ein
Gefühl dafür, was man tun muss.
Also fangen wir doch mal an.
Ich habe jetzt gedacht, wir nehmen die Distributivgesetze.
Also mit den Distributivgesetzen,
das wäre H2, folgt jetzt doch folgendes.
Wir können jetzt doch sagen, dass A1 quer mal A plus A2 quer.
Jetzt kann ich doch damit sagen, das wäre A1 quer mal A1
mal A plus A2 quer.
Dann habe ich doch A1 quer mal A, das setze ich jetzt mal besser in
Klammern, weil wir haben ja wie gesagt über Präzedenz noch nicht
geredet, plus und dann habe ich dann A1 quer mal A2 quer.
Das kann ich so ableiten.
Und das Ganze, was kommt da raus?
Was kann ich sagen?
Wenn ich darauf weiß, das sind inverse Elemente, kann ich doch hier
sagen, was wäre denn das?
Ja, bei E, genau.
Und dann kann ich hier noch was sagen.
Das heißt also, damit kann ich jetzt schließen, dass wir haben hier A1
quer mal E, ist gleich N plus in Klammern A1 quer mal A2 quer.
Was kann ich daraus jetzt schließen?
Ganz simpler Schluss.
Mal E plus N ist
A1 quer.
Achso, hier hinten habe ich noch den Kreis vergessen.
Also A1 quer ist A1 mal A2 quer.
So, das wäre die gleiche Nummer 1.
Die haben wir damit schon mal bekommen.
Ist klar, oder?
Das heißt also, wenn ich das jetzt hier vereinfache, ich habe hier nun
N, dann bekomme ich hier A1 quer mal A2.
Hier vorne habe ich mit dem E.
Das waren ja die entsprechenden.
Jetzt kann ich sagen, analog folgt jetzt das folgende, dass ich sage
A2 quer mal A plus A1 quer.
Dann kann ich wieder sagen, das hier wäre E und A2 quer mal A.
Jetzt einfach wieder distributiv.
Plus A2 quer mal A1 quer.
Dann ist das hier wieder U.
Dann mache ich mal auf der nächsten Seite weiter, dass wir da Platz
noch haben.
Daraus folgt jetzt, dass wir haben A2 quer mal E ist gleich U plus A2
quer mal A1 quer.
Und das ist natürlich dann wieder, wie wir gerade gesagt haben, A2
quer ist gleich A2 quer mal A1 quer und das war jetzt dann die gleiche
Nummer 2.
Jetzt brauche ich nur noch Kommutativität und dann bin ich eigentlich
fertig.
Also aus 1 und 2 mit Kommutativität folgt, dass A1 quer gleich A2 quer
ist.
Das heißt also, es gibt nur ein einziges Element, was das Ganze
erfüllt.
Ist das klar soweit?
Ich denke, sowas sollten Sie rechnen können.
Also üben Sie das mal.
Das ist das Minimum, was wir erwarten, dass Sie das rechnen können,
solche Dinge.
Jetzt Mengenalgebra.
Wir können jetzt natürlich zuordnen von der Bool'schen Algebra zur
Mengenalgebra.
Und wir können jetzt sagen, dass die Elemente der Mengenalgebra zu
Symbolen der Bool'schen Algebra entsprechend passen, indem ich jetzt
sage, Bool'sche Algebra, das V war die Potenzmenge einer Grundmenge,
das Plus war die Vereinigung, Mal war der Durchschnitt, N war die
Leere Menge, E war die Grundmenge und das A quer war die
Komplementmenge.
Und damit kann ich entsprechende Venn-Diagramme definieren und kann
das Ganze als eine Mengenalgebra sehen.
Und dann kann ich jetzt ziemlich schnell sehen, wir haben so
Verknüpfungsgebilde, klar, die Mengenalgebra ist die Potenzmenge und
dann Schnitt und Vereinigung.
Und dann kann ich wieder das Ganze sozusagen hier abbilden.
Abgeschlossenheit, Kommutativität, Distributivität, neutrale Elemente,
inverse Elemente.
Ich glaube, das ist ziemlich klar.
Und dann Mengenalgebra und Bool'sche Algebra ist klar.
Mengenalgebra ist eine Interpretation der Bool'schen Algebra,
währenddessen die Bool'sche Algebra eine Abstraktion der Mengenalgebra
ist.
Und wir sehen, dass das schön zusammenpasst.
Kommen wir zur Schaltalgebra.
Ich glaube, die können wir auch relativ schnell machen.
Bei der Schaltalgebra ist es nun so, dass wir für das V nur die
Elemente 0 und 1 haben.
Und wir können jetzt das Plus mit der Vereinigung, das Mal mit dem
Schnitt und so weiter wieder entsprechend assoziieren.
Und das wäre also die Disjunktion, die Konjunktion.
Und wir werden jetzt sehen, wir brauchen also Konjunktion, Disjunktion
und Negation.
Und damit können wir erstmal alles darstellen.
Und die Frage wäre dann, brauchen wir tatsächlich diese drei
Operationen?
Dann kommen wir sozusagen zu den entsprechenden minimalen
Operatorsystemen.
Da werden wir uns noch mit befassen.
Dann können wir wieder die Huntington'schen Aktionen darstellen in der
Schaltalgebra.
Abgeschlossenheit, wir können hier Kommutativität, Distributivität, 0
und 1 Element und natürlich die inversen Elemente, das können wir
entsprechend darstellen.
Und wir könnten jetzt aus den vier Huntington'schen Aktionen weitere
Sätze ableiten.
Assoziativgesetz ist klar, das ist interessant.
Idempotenz ist interessant.
Das heißt also A und A ist A.
A oder A ist A, wenn wir auch noch alles brauchen.
Absorption ist ganz wichtig.
Merken Sie sich das mal.
Das ist etwas, was Sie sich am besten heute gleich nach der Vorlesung
mal anschauen.
Also Absorption ist ein ganz wichtiges Gesetz.
Dann die demorganschen Gesetze, da werde ich Ihnen gleich ein paar
zeigen.
Gleich auf der nächsten Folie die demorganschen Gesetze mal zeigen,
warum das denn so gilt.
Das sind die wesentlichen Dinge, die wir in der Schaltalgebra haben.
Und zwar die Frage ist ja, wie zeige ich jetzt eigentlich, dass das
gilt?
Wieso gilt eigentlich das demorgansche Gesetz?
Und die Frage ist jetzt, wie beweise ich das?
Ich habe Ihnen ja ein paar verschiedene Beweise gezeigt.
Dieser ist jetzt mal wieder ein bisschen anders.
Wir zeigen jetzt, wenn wir sagen können A und B nicht, ist gleich A
nicht oder B nicht.
Da können wir sagen, dass das hier das Kompliment von dem hier ist.
Das heißt, die Komplementgesetze müssen erfüllt sein.
Das heißt, wenn wir jetzt also sagen, wir hätten so etwas wie X ist A
und B.
Dann muss ich jetzt hier einfach nur noch die Komplementgesetze
zeigen, um zu zeigen, dass das wirklich gilt.
Das heißt also, ich muss sowas zeigen wie A und B in Klammern oder A
nicht oder B nicht.
Und das bezeichne ich jetzt hier mal als C, damit wir einfacher
rechnen können.
Jetzt multipliziere ich das mal aus mit den entsprechenden Disziplin
-Gesetzen.
Ich sage also jetzt, das ist ja wohl A und B oder C.
Und das kann ich dann schreiben als A oder C und B oder C.
Und dann kann ich das Ganze wieder einsetzen, das C.
Ich kann hier sagen, das ist A oder A nicht oder B nicht.
Und das Ganze und B oder A nicht oder B nicht.
Na gut, jetzt können wir ein paar Dinge ablesen.
Wir können ja sagen, wenn hier drin steht, wenn wir hier zum Beispiel
haben A oder A nicht, das ist 1.
B oder B nicht und so weiter.
Das heißt also, wir können sagen, wir fassen die hier zusammen.
Das hier wäre eine 1 und das hier wäre eine 1.
Das können wir machen.
Und dann haben wir sowas wie 1 oder B nicht in Klammern und 1 oder A
nicht in Klammern.
Na gut, 1 oder B nicht und 1 oder A nicht.
Was ist wohl immer, wenn ich 1 oder etwas anderes sage?
Haben wir gerade kennengelernt?
Was kommt dann raus, ja?
Kommt die 1 raus.
Das heißt, ich kann hier drunter schreiben, das wäre die 1 und das
wäre die 1.
Und dann kann ich ja hier sagen, das ist also 1 und 1.
Na gut, 1 und 1 gibt 1.
Okay, das heißt, dann gehen wir in den nächsten Schritt.
Na gut, wir sagen jetzt, wir wollen jetzt nicht nur dieses
Komplementgesetz erfüllen, was wir hier gerade gemacht haben, sondern
wir wollen auch dieses hier.
Wir wollen also hier einsetzen für das X das und für das X quer
natürlich entsprechend dies hier.
Ja, das heißt also, jetzt haben wir wieder A und B, jetzt aber und A
quer oder B quer.
Ja, und das hier nennen wir wieder erstmal als Abkürzung C.
Und das wäre jetzt ja dann wohl C und A quer oder B quer.
So, ich hoffe, die Aufmerksamkeitsspanne bleibt noch erhalten für ein
paar Minuten.
Ja, und das wäre dann C und A quer oder C und B quer.
Na gut, jetzt kann ich wieder einsetzen für das C, das wäre dann ja A
und B und A quer.
Überlegen Sie gleich mal, was da rauskommt.
Oder A und B und B quer.
So, was können wir da jetzt vereinfachen?
Sehen Sie das?
Also wir können unmittelbar sagen, das A und A quer.
Das hier gibt eine Null und B und B quer, B und B quer, die beiden
geben eine Null.
Ja, und dann habe ich hier B und Null oder A und Null.
Na gut, und das gibt jetzt hier halt wohl offenbar eine Null.
Das gibt eine Null und dann habe ich Null oder Null gleich Null.
Also das heißt, das funktioniert.
Damit können wir das Ganze also zeigen.
Wir können also sagen, dass die Morgenstuhlgesetz, eins von den
Morgenstuhlgesetzen funktioniert.
Fragen soweit?
Es war eine mögliche Beweisidee, dass man es über die Komplimente
zeigt.
Und das funktioniert ja auch ganz schön.
Okay, jetzt Schaltalgebra.
Wir haben jetzt eben, wie wir gerade schon besprochen haben, wir haben
jetzt zweiwertige Signaldarstellungen.
Wir haben also so einen Low-Bereich und so einen High-Bereich.
Das heißt also, die Signale werden immer so ein bisschen schwanken,
dann hochspringen, dann wieder runterspringen usw.
Die werden aber nicht genau Null und genau irgendwas UB sein, sondern
sie werden sich irgendwie in dem Bereich aufhalten.
Und wir werden daraus interpretieren, ja, es ist jetzt Low oder High.
Wir haben jetzt hier die entsprechende Verknüpfung.
Wir haben also hier Low und High.
Und dahinten kommt auch Low und High raus.
Und jetzt kann man das ganz schnell machen, können wir ganz schnell
durchgehen.
Serielle Schaltung wäre ja eine Verundung.
Das heißt, dieses X1 Ser X2 wäre eine Verundung.
X1 Par X2 wäre eine Veroderung.
Ist Ihnen klar, ja?
Das ist also sozusagen Abgeschlossenheit.
Kommutativität ist auch klar.
Ich darf zwei Schalter drehen.
Wenn ich zwei Schalter habe, wir werden uns noch befassen mit
gesteuerten Schaltern.
Deswegen ist das wichtig.
Das heißt also, Schalter sind ein wichtiger Bereich in der Vorlesung,
die von außen gesteuert werden.
Die darf ich drehen, die darf ich drehen.
Kommutativität.
Distributivität genauso.
Wir tauschen wieder Serielle und Parallel mit den beiden
Distributionen und Konjunktionen aus.
Neutrale Elemente haben wir hier genauso.
Wir haben inverse Elemente.
Da müssen wir gleichzeitig schalten.
Und wir können jetzt sagen, dass wir zweiwertige binäre algebraische
Strukturen haben.
Die binäre Bulscher Algebra, die Schaltalgebra, die Aussagenlogik und
die binäre Mengenalgebra, die das Ganze interpretiert.
Das haben wir gesagt.
Die binäre Bulscher Algebra wäre die Abstraktion.
Und jetzt haben wir hier verschiedene Verknüpfungen, wie das alles
zusammenhängt.
Und da schauen Sie sich mal in Ruhe an, wer von wem abhängt.
Und ich glaube, das ist ganz witzig.
Und jetzt können wir uns mal überlegen, wie sieht denn so ein Bulscher
Ausdruck aus?
So ein Bulscher Ausdruck ist jetzt eine Zeichenfolge.
Die besteht aus verschiedenen binären Variablen in Operatoren.
Also sozusagen Konjunktion und Disjunktion und Klammern.
Und das heißt, ich kann jetzt ein Null haben, ich kann ein Eins haben,
ich kann eine binäre Variable haben, eine Negation und einen Bulscher
Ausdruck.
Dann wäre das Ganze rekursiv.
Ich kann einen Bulscher Ausdruck haben, den verknüpfen mit einem
anderen Bulscher Ausdruck und so weiter.
Und so kann ich einfach syntaktisch prüfen, ist das Ganze ein Bulscher
Ausdruck?
Und wir nehmen typischerweise Wahrheitswerte an.
Null wäre falsch, eins wäre wahr.
Und ein Bulscher Ausdruck hat typischerweise keinen Wahrheitswert, da
er Variable enthält.
Binäre Variable, das ist wichtig.
Ich muss die Variablen erst belegen mit entsprechenden Werten.
Erst durch Belegung bekomme ich einen Wahrheitswert.
Und jetzt sehen wir mal syntaktisch korrekte Ausdrücke.
Das wären die A oder B, Null und so weiter.
Und das sind hier keine Bulscher Ausdrücke.
A oder O oder A oder sowas ist nicht syntaktisch korrekt.
Und das ist ein ganz wichtiger Punkt.
Die Belegung einer Menge von binären Variablen nennt man
Interpretation.
Und Interpretation liefert jetzt eine Aussage, die kann entweder wahr
oder falsch sein, also Null oder Eins sein.
Und wichtig ist aber, verschiedene Interpretationen eines gleichen
Bulscher Ausdrucks können zu demselben Wahrheitswert führen.
Und dann gibt es eben so etwas wie eine Tautologie.
Da ist es wirklich so, dass also alle möglichen Interpretationen zum
gleichen Wahrheitswert wahr oder eins führen.
Und klar, das ist dann eben so.
Und mit der Tautologie kann man ein paar Sachen auch überprüfen.
Ich glaube, jetzt bin ich auch mehr oder weniger durch.
Das wäre jetzt in der Tautologie.
Und zu den Bulschen Funktionen möchte ich eigentlich heute nicht mehr
kommen.
Das machen wir beim nächsten Mal.
Und gibt es Fragen bis hierhin?
Okay, dann vielen Dank und bis zum Donnerstag.
Danke, tschüss.