mit Ton, ja. Gut,
ich hatte ja vorgestern angefangen mit jetzt dem Kapitel 8,
wo es also um Schaltfunktionen geht, schalt Funktionen,
sind jetzt erst mal beliebige Funktionen von in Eingangsvariablen,
typischerweise binären Variablen und die dann eben entsprechend einen Ausgang
auch einen binären Wert 0 oder 1 liefern.
So, ich hatte dann ja schon kurz vorgestellt,
diese Schaltfunktion kann man eben beispielsweise beschreiben in Form von Tabellen
Funktioniert natürlich wegen der Anzahl der Kombinationen, nicht für beliebige Schaltfunktionen.
Das heißt, wenn ich sehr viele Eingangsvariablen zur Verfügung habe,
habe ich demzufolge natürlich in der Tabelle dann eben zwei Hoch
der Anzahl der Eingangsvariablen Einträge drin.
Deswegen kann man dann eben mit anderen Mitteln oder Methoden versuchen,
diese Schaltfunktion effizienter zu beschreiben.
Eine der Möglichkeiten wären halt eben beispielsweise sowas wie Schaltalgewasche
Ausdrücke mit Mitteln der polschen Algebra
Dazu jetzt noch mal, das war die letzte Folie,
die im Prinzip am Mittwoch aufgelegen hat.
Jetzt noch mal, was brauche ich da? Ich brauche im Prinzip
eine funktional vollständige Basismenge. Das heißt, ich brauche irgendwelche Funktionen,
mit denen ich dann quasi als Basisfunktion alle meine Ausdrücke,
die sich dort also ergeben können, irgendwie beschreiben kann.
Und das geht eben entweder mit den drei Funktionen der Bullschen Algebra und oder und nicht.
Das geht im Prinzip mit den beiden Funktionen, die GF2 definiert sind,
also und und exklusiv oder und die Eins bräuchte dann als Element auch noch.
Oder eben mit so Funktionen wie Nant und Nor.
Das hatte ich ja noch kurz an der Tafel hergeladen,
dass das im Prinzip dann auch funktioniert,
dass man sich darüber dann zum Beispiel sowas wie diese drei Funktionen der buchschen Allgebats ableiten kann und damit dann eigentlich formal dann gezeigt ist, dass das also entsprechend auch funktioniert. So,
was uns jetzt natürlich noch fehlt,
ist irgendwie so eine Art von normalisierter Beschreibung beziehungsweise in dem Sinne heißt es dann hier Normalform,
wo man jetzt eben sagt,
ich möchte meine Funktion so beschreiben,
dass ich da also eine wirklich eindeutige Beschreibung habe,
weil wenn ich jetzt also Aussagenlogik beziehungsweise Butsche Algebra nehme,
dann kann ich eben für einen Butschen Ausdruck letztendlich unendlich viele Beschreibungen machen,
indem ich da jetzt einfach irgendwelche Therme mit einbaue,
die sich dann eben gegenseitig dann immer irgendwie zu 1 evaluieren und die damit unverknüpfen oder irgendwas,
was zu null wird und das mit oder verknüpfe.
Und demzufolge möchte man eigentlich sowas
wie normalisierte Beschreibung haben
Wir kennen das im Prinzip aus der Mathematik bei ganz rationalen Funktionen,
die beschreibt man zum Beispiel typischerweise immer in Form so einer Summe,
dass ich dann also sage,
wenn ich eine lineare Funktion habe, nicht,
dann ist das F von x gleich A x plus B.
Wenn ich eine quadratische Funktion habe, nicht,
dann habe ich also A mal x Quadrat plus B x
plus C und so weiter. Nicht, das heißt,
ich habe da dann eben so eine Linearkombination von Basisfunktionen und
die Basisfunktionen in dem Fall sind dann eben x hoch 0,
x o 1, x hoch 2 und so weiter.
So und was ähnliches möchte man hier eigentlich auch haben,
also Einheitliche Schreibweise, dass sich dann eben,
das jetzt eben auch für solche Schaltfunktionen machen kann.
So demzufolge kann man dann eben sagen,
man möchte dort eigentlich auch so was haben.
Summe von, in diesem Fall dann zwei hoch enden. Basisfunktionen,
das sind dann diesen B-I-I-Dach als Basisfunktion,
die dann mit einem koeffizienten gewichtet werden,
eine koeffizientes Element aus GF2,
typischerweise also 0 oder 1. Das heißt,
die Basisfunktion wird eben benutzt oder wird nicht benutzt
Also das ist jetzt immer hier so eine mathematisch formale Schreibweise,
nicht rein praktisch ist das in diesem Fall dann eigentlich immer relativ einfach.
Sehen wir jetzt nämlich gleich,
wenn wir zu den entsprechenden Funktionen bzw. Normalform kommen.
Eine Normalform ist demzufolge dann eben so eine Beschreibung dieser Funktion aus Wichtungsfaktor,
irgendeinem multiplikativen, multiplikativen Operation, mal der Basisfunktion,
einer additiven Operation und das dann eben entsprechend für
alle Basisfunktionen aufgezeigt
Nicht im Prinzip in, habe ich jetzt
eben in meiner Menge mit NA-Gangsvariablen dann zwei hochennen Basisfunktionen.
Und damit beschreibe ich dann,
weil ich jetzt für jede Basisfunktion ja dann auch sagen kann,
die benutze ich oder benutze ich nicht.
Die zuvor habe ich dann noch mal wieder zwei Kombinationen.
Damit beschreibt man dann eben genau diese zwei, hoch zwei hochennen möglichen Funktionen.
Das hatte ich ganz am Anfang schon mal in dem einen Kapitel,
wo es um die Bulsche Algebra letztendlich ging.
Gut,
was sind jetzt
solche Basisfunktionen
Die eine Beschreibungsform ist eben die sogenannte bisjunktive Normalform. Das ist eine disjunktive Verknüpfung,
sogenannter Minterme und die Minterme sind jetzt eben die Therme,
wo quasi die Funktion den Funktionswärts 1 liefert.
Wird gleich am Beispiel klarer, was damit gemeint ist.
Also disjunktiv heißt oder Verknüpfung und ich beschreibe hiermit quasi jetzt jeweils alle Stellen,
wo ich in meiner Funktionstabelle am Ausgang einer 1 erhalte.
Das ist also letztendlich Diese Aussage und die wird dann eben beschrieben durch einen Mintherm,
der Mintherm wäre jetzt eben eine Unverknüpfung, sämtliche Eingangswahlgabeln,
die dann entweder negiert oder nicht negiert, dort vorkommt.
Im Deutschen heißt das dann eben disjunktive Normalform,
im englischen findet man dafür dann auch immer Sam of Products,
also Product wäre dann nämlich also quasi hier jeweils die Berechnung
des Mintherms als Unverknüpfung,
Sam,
also die Summierung dann eben quasi die oder Verknüpfung
dieser Mentherme
So wie sie das dann in den Beispielen aus,
beziehungsweise was sind überhaupt erst mal diese Mentame?
Also hier am Beispiel mit drei Eingangsvariablen, X3, X2,
X1. Demzufolge habe ich hier also acht mögliche Kombinationen erst mal.
Das sind dann also hier die Zugehörigen acht Mentherme.
So, und jeder dieser Therme liefert für genau diese Eingangskombination
als Ergebnis einer Eins.
Und für alle einen Eingangseingangskombinationen eine Null
Das heißt, wenn X-3-0 ist und X-2-
0 ist und X-1-0 ist, dann liefert dieser Ausdruck logisch eine 1.
Für alle anderen entsprechend eine Null. Das heißt,
mit den Min-Termen, das ist eben das,
was hiermit gemeint ist, mit dem Funktionswert 1,
die beschreiben eben genau die Einstellen meiner Schaltfunktion.
So, und damit kann ich jetzt eben für eine beliebige Funktion,
also hier als Beispiel, so eine Funktion,
wo ich jetzt also Hier, die einmal als Wertetabelle aufgeschrieben habe.
Das heißt, also hier haben irgendwie meine Eingangsvektoren hier der entsprechende Funktionswert.
Meine Desjunktive Normalform dadurch ablesen, dass ich sage,
an welchen Stellen der Funktion habe ich hier eine Eins stehen.
Das wäre dann nämlich der Zugehörige Minterm. Dann nehme ich quasi jetzt hier meinen Eingangswektor,
den mir an dieser Stelle die Eins liefert und sage alles,
wo ich hier eine Null habe,
da musste Eingang logischerweise negiert sein.
Alles, wo ich eine Eins habe, ist der Eingang nicht negiert.
Das heißt, dieser eins zugehörigen Minterm heißt X3 nicht und X2 und X1 nicht.
Das ist dieser hier. Oder, das ist jetzt ja
die desjuktive Normalform, also die desjuktive Verknüpfung, das oder.
Oder X3 nicht und X2 und X1. Das ist diese eins
. Oder als dritter eins hier X3 und X2 und X1
nicht. Und dann ist dieser Ausdruck hier,
die desjuktive Normalform der Funktion
Genau dieser Bulscha-Ausdruck liefert mir dann eben letztendlich,
wenn ich jetzt also alle Kombinationen durchgehe, genau diese Tabelle.
Nicht das wäre also jetzt die Art und Weise,
wie man solche Schaltfunktionen in diesem Fall jetzt in disunctiver Form schreibt.
So, neben dieser Normalform gibt es dann immer noch eine
allgemeine disunktive Form. Das ist nämlich quasi eine gekürzte Version,
wo ich dann eben auch oder Verknüpfung von Thermen mache,
die dann aber nicht zwingend mintherme sein müssen,
wo dann nämlich letztendlich eine Minimierung stattgefunden hat
Auch desjunktive Normalformen oder desjunktive Formen benutzt man dann typischerweise für die Beschreibung von Schaltfunktionen,
die sind dann aber nicht mehr zwingend eindeutig.
Das sind also dann keine Normalformen in dem Sinne.
Als Beispiel nehmen wir jetzt also hier wieder diese Funktion,
die ich gerade eben auf der Folie vorher hatte,
die desjunktive Normalform ist dieses hier.
Und wenn ich diesen Ausdruck jetzt nehme und beispielsweise die ersten beiden Therme nehme,
Nicht, dann kann ich da jetzt einfach per Distributivgesetz letztendlich kürzen.
Das heißt, ich habe hier X3 nicht und X2 und X1
nicht oder X3 nicht und X2 und X1. Ja, genau.
So, jetzt kann ich diesen Ausdruck letztendlich nehmen,
Distributivgesetz, in diesem Fall jetzt umgekehrt anwenden.
Dann habe ich hier also sowas wie X3 nicht.
Und X2 oder X1 nicht. Einen Blödsinn und X1 nicht oder X1. So,
eine Variable negiert oder die Variable nicht negiert,
liefert mir letztendlich irgendwie immer eine Eins, irgendwas und eins.
Also dies soll ein logisches uns sein, liefert mir dann
eben diesen Ausdruck. Nicht dem zuvor kann ich das weglassen
und hier hiernach bleibt dann eben extra nicht und x2 über.
Und das ist also genau das, was hier dieser Ausdruck ist.
Und das letzte wird abgeschrieben. So,
jetzt habe ich gerade eben gesagt, das ist jetzt keine Normalform,
weil, je nachdem, wie ich das also letztendlich zusammenfasse,
kann ich das auch anders kürzen.
Das heißt, das ist dann eben nicht mehr zwingend eindeutig.
Nicht in dem Fall habe ich hier jetzt den ersten und
den letzten Thermen zusammengefasst. Der ist dann nämlich unabhängig von
x3. Habe dann also hier noch stehen x2 und x1
nicht oder und dann eben diesen Therm
In der Mitte, der dann überbleibt. Das ist also deswegen kürzere Schreibweise,
gleiche Funktionen, aber eben nicht mehr in dem Sinne eindeutig,
jetzt als Normalform zu sehen.
Gut, das ist die eine Variante von Normalformen, die desjunktive Normalform.
So, jetzt kann ich quasi logisch gesehen immer irgendwie sowas
wie und, und, oder, gefühlt vertauschen.
Dann landet man bei einer konjunktiven Normalform, die konjunktive Normalform
ist dann eben die Verknüpfung à la Max-Therme mit dem Funktionswert Null.
Ein Max-Therm ist da jetzt eben genau die Verknüpfung von Schalt-Variablen negiert, beziehungsweise nicht negiert.
Und da muss ich dann eben quasi in der Funktion oder der Funktionstabelle betrachten,
waren die eine Null liefern und die werden dann jeweils alle unverknüpft.
Deswegen Konjunktion. Im Englischen heißt es dann noch quasi umgekehrt Product of Sams,
nicht bei der disjunktiven Form, habe ich dann immer Sam of Products.
Wenn das die Normalform ist,
dann spricht man also auch immer oft von einer kanonischen konjunktiven Normalform Nicht ansonsten gibt es da eigentlich ähnlich,
wie bei der dissunktiven Form, Vorgleich auf der nächsten Folie,
dann eben auch die Möglichkeit über Anwendung des Distributivgesetzes,
das Ganze dann eben einzukürzen.
So, Max-Therme sind jetzt eben genau die Ausdrücke, wo oder verknüpft letztendlich eine Null geliefert wird.
Und das sind jetzt also zum Beispiel für die Variablen,
also hier wieder X3X,
2X1, Hier, wenn alle drei eine Null liefern,
genau in diesem einen Fall liefert dieser Therm eine Null in allen anderen Fällen,
liefert der eine Eins und entsprechendes gilt dann eben hier für die entsprechenden Therme.
Das heißt, man sucht sich da jetzt aus der Funktionstabelle immer genau die Ausdrücke raus,
wo die Eingang, wo es am Ausgang letztendlich eine Null gibt.
Auch das jetzt hier für die gleiche Funktion gemacht,
wäre dann eben der erste Max Therm, der hier,
was man hier nur beachten muss,
anders als bei den konjunktiven Formen, wenn hier eine Null ist,
Wird das Element nicht negiert, bei der Eins wird es negiert,
bei der disjunktiven Form ist es genau umgekehrt.
Also man kann es immer sehr schön, sehr einfach so aus der Tabelle auslesen,
was aber dann immer gerne falsch gemacht wird in irgendwelchen Übungsaufgaben,
ist, dass man das dann eben genau nicht beachtet. So,
in diesem Fall sind jetzt hier also 5-0 enthalten,
würde ich dann eben rauslesen, um diese Null zu erhalten,
der zugehörige Max-Therm wäre dann eben X3 oder X2 oder X1,
das liefert mir nämlich genau für diese eine einzige Kombination,
die Null für alle anderen,
ist nämlich mindestens eine Eins dabei und dann gibt es demzufolge da dann eine Eins das Ganze dann unverknüpft,
X-3 und X-2 und X-1 nicht.
Und X-3 nicht und X-2 und X-1. Und dann muss sie eben
noch diesen und diesen Max damit hinzufügen und habe dann diesen etwas,
in diesem Falls länglicheren Ausdruck, dann eben für die konjunktive Normalform.
Gut, auch dazu gibt es dann natürlich so eine allgemeine Form,
wo das Ganze dann eben wieder entsprechend zusammengefasst minimiert wird,
wo das dann eben, ähnlich wie hier dann letztendlich zusammengefasst wird.
Auch da habe ich jetzt keine eindeutige Zusammenfassung,
weil ich jetzt also zum Beispiel Das wäre jetzt also hier meine konjunktive Normalform,
eine minimierte Form, hier unten erhalte ich jetzt also dadurch,
dass ich also beispielsweise jetzt,
also mir hier irgendwie immer Paare von Max-Thermen suche,
die sich in genau einer einzigen Variablen unterscheiden.
In diesem Fall nehme ich also zum Beispiel den ersten und den zweiten Thermen,
die unterscheiden sich hier in X1 bzw. X1 nicht.
Nicht nach Anwendung des Destributivgesetzes bleibt dann eben letztendlich X3 oder X2 über.
Nicht dann nehme ich Den ersten und den dritten Term,
der ist unabhängig von X3, da bleiben dann also X2 oder X1 über.
Dann nehme ich diese beiden Therme, die sind unabhängig von X2,
dann bleibt X3 nicht oder X1 über und dann wäre diese jetzt hier eben eine minimierte Form. So,
wenn man hier schon sieht,
ist natürlich jetzt so ein Zusammenfassen von Therm und so eine Minimierung,
dann also irgendwie da nicht so ganz einfach möglich,
weil wenn ich jetzt also mehr Variablen habe und hier also noch entsprechend mehr Therme,
dass man dann immer wirklich immer gucken muss,
wo unterscheiden die sich letztendlich in genau einer einzigen Variablen,
die also sprich in einem Max Therm in diesem Fall einmal negiert,
einmal nicht negiert, vorkommt.
Ja, das ist die zweite Variante jetzt für Normalform,
die dritte Variante für Normalform,
die dann im Prinzip jetzt wieder auf diesen Körper GF2 zurück,
nennt sich dann Reed Muller Form.
Der wird eben gebildet aus der X-Ohr-Verknüpfung von Basisfunktionen,
die dann entsprechend auch dann über uns zusammengefasst werden
Wie gesagt, X-Or-Verknüpfung ist da nämlich letztendlich dann ja hier dieser additive Operator.
Die Basisfunktion sind eben genau die Funktionen, die jetzt für
eine Variante von Eingängen oder Eingangskombinationen eben eine Eins liefern.
So, für null Variablen, muss man jetzt mal wissen,
nehme ich also erstmal diesen Therm 1. Wenn ich jetzt eine Variable habe,
habe ich eins und X1, Nicht, weil entweder,
wenn ich die habe, erhalte ich eine Eins oder wenn X1 eine Eins ist,
erhalte ich eine Eins, wenn nichts 1 zu 0 ist, erhalte ich logischerweise eine Null.
Mit zwei Variablen wäre das 1 und X1 und X2 und X2 und X1,
das heißt, da habe ich hier die Vier-Basis-Funktion mit drei Variablen,
habe ich dann acht Basis-Funktionen, Funktionen, die werden jetzt wie gebildet,
das ist dann hier auch schon so ein bisschen über die Leerzeichen, also angedeutet,
das ist dann eben im Prinzip auch so ein rekursives Verfahren,
das ich dann eben nehme, jeweils Die vorherige Zeile,
die ich habe,
füge dann meine zusätzliche Variable hinzu.
Und die Elemente hier werden quasi einfach immer nur abgeschrieben und
mit der zusätzlichen Variable habe ich dann eben eine Multiplikation,
also sprich in diesem Fördern eine Unverknüpfung mit all diesen Varianten.
Das heißt, da habe ich dann also für die dritte Variable X3 dann X3 und 1 X3 und X1,
das ist dieser Term, X3 und X2, das ist dieser Term,
X3 und X2 und X1, das ist dann hier der letzte Term.
Darüber kann man das Ganze dann eben letztendlich auch regulsiv aufbauen. So,
liest sich jetzt erstmal ein bisschen umständlich, weil wie gesagt,
wir rechnen natürlich typischerweise jetzt in der Butschen Algebra eine Aussagenlogik mit und, und, oder,
wie gesagt, das mit dem Exklusiv-Oder ist für uns jetzt,
sagen wir mal, also erstmal nicht ganz so geläufig,
hat aber Vorteile, wenn man das letztendlich maschinell berechnen lässt,
also sprich durch einen Computer beziehungsweise was man damit dann auch sehr schön machen kann,
das folgt nämlich gleich, ist,
dass man darüber dann nämlich also auch wieder über Matrix-Multiplikationen dann also quasi seine Funktion miteinander verknüpfen kann, beziehungsweise dadurch in diesem Fall jetzt also irgendwelche Umrechnungen machen kann.
Ansonsten, wie komme ich jetzt von irgendeinem Ausdruck in einen Ausdruck in Ridmalla-Form,
weil das ist also auch eine Übungsaufgabe, die dann noch folgen wird,
wenn ich jetzt also irgendwie eine Charlotte-Funktion habe,
kann ich dir beschreiben als in desjuktiver Form,
in konjunktiver Form und in Ried-Malla-Form, wenn ich jetzt also sowas habe,
wie irgendeine Funktion, also nehme ich jetzt mal als Beispiel,
also hier irgendwie sowas hier und jetzt geht es darum,
aus dieser Funktion, dir jetzt, das ist,
die Funktion ist jetzt hier natürlich genau das,
was ich gerade rausgekürzt habe, so war es, so,
oder machen wir jetzt hier mal irgendwie X1 und Und extra,
also nicht.
Also das wäre jetzt irgendwie hier meine Funktion. Nicht interessiert,
es wird gefragt, wie mache ich aus dieser Funktion sowas wie eine konjunktive Form?
Nicht da würde man jetzt einfach sagen, gut,
mache ich im Prinzip eine Umrechnung,
indem ich das jetzt hier quasi einfach per Distributivgesetz entsprechend,
ich sag jetzt mal ausmultipliziere, nicht das heißt,
also ich hätte jetzt X3 nicht oder X1 und X3 nicht.
Oder X3, wunderbar, kann man gleich kürzen.
Und X2 oder X1 und X2 oder X3. Und dann kann
ich das Ganze wieder entsprechend kurz und zusammenfassen.
Dann habe ich daraus also letztendlich sowas wie aus der disjunktiven, eine konjunktive Form gemacht. Umgekehrt genauso,
nicht beziehungsweise andere Methode wäre, hier zwar Negierung rüberzunehmen,
dann habe ich da ja an seiner Funktion auch erstmal nichts
geändert und dann kann ich jetzt also das Hier die eine Negierung dann beispielsweise mit der dem Morgenregel hier mit reinziehen,
indem ich dann sage, okay, der hier fällt weg,
ich habe hier eine Negierung und ich habe hier einen
Und und fange dann eben an, entsprechend das Ganze weiter umzurechnen.
Das heißt, damit kann man jetzt mit den Rechenregeln der
Hulschen allgebar disjunktive und konjunktive Form immer einfach miteinander umrechnen.
So, jetzt geht es aber hier um die Frage,
wie mache ich eine Umrechnung in so eine Riedmaler-Form?
Dazu muss man jetzt eben wissen,
wenn ich jetzt also irgendwie hier meinen Schalalgebar schon Ausdruck habe,
eine Negation ist nichts anderes als Ausdruck, exklusiv oder eins,
weil das negiert im Prinzip jetzt meinen Ausdruck.
Eine Disjunktion, also oder Verknüpfung,
beschrieben durch exklusiv oder wäre nichts anderes als A, exklusiv oder B,
exklusiv oder A und B. Kann man sich jetzt aufzeichnen oder am Ausrechnen Butsche
Algebra funktioniert so. So, kürzen kann ich dadurch,
dass ich sage, Element exklusiv oder sich selbst
ist wohl
So, und dann kann ich jetzt also hier meinen Schaltalgeberraschen Ausdruck nehmen.
Also diese Funktion und dann also der Reihe nach das Ganze umrechnen.
Als erstes nehme ich zum Beispiel jetzt hier dieses Oder.
Entsprechend dieser Vorschrift setze ich diesen Ausdruck dafür ein.
Anschließend muss ich hier noch diese Negation loswerden. Das ist das,
was also hier in diesen Klammern eins exklusiv oder X1 ist für diese Negation.
So, und dann kann ich jetzt eben anfangen,
das Ganze nochmal irgendwie zusammenzufassen, zu kürzen.
Also in diesem Fall kann ich also jetzt erstmal hier diese Klammern komplett,
beziehungsweise hier muss ich noch das also ausmultiplizieren. Das heißt,
da habe ich also eins, exklusiv oder X1 und X2,
wäre dann eben X2 und X1 und X2. Achso, hier nochmal zu der Schreibweise.
Bislang ist da noch keiner drüber gestolpert,
aber ich habe das also hier, beziehungsweise hier letztendlich mit drin,
also was man immer gerne macht, ist in solchen Ausdrücken,
wenn ich jetzt also irgendwas und verknüpfe,
weil und ist, sagen wir mal,
im Sinne jetzt von GF2 nichts anderes als eine Multiplikation.
Nicht, dann mache ich dann einfach nichts, da dann auch nichts anderes,
als jetzt also irgendwie einen Malpunkt beziehungsweise den lässt man weg.
Und dann schreibt man da sogar als kurz schreibweise hierfür
dann sowas wie X1, X3, nicht,
und das entspricht dann eigentlich so einem geklammerten Ausdruck X1 und X3.
Also das nur zur Erklärung,
was an dieser Stelle beziehungsweise hier in diesem Fall
hier damit gemeint ist
So, gut, jedenfalls, also das rechne ich hier
dann hier noch entsprechend einmal mit rein.
Dann habe ich jetzt also hier diese äußersten Klammern noch.
Hier innen drin halte ich dann eins, exklusiv oder X1,
exklusiv oder X2, exklusiv oder nochmal X2, exklusiv oder X1 und X2.
Diese beiden kann ich rauskürzen. Mach da nochmal die Unverknüpfung
jetzt nach Distributivgesetz mit dem X3 und erhalte dann eben letztendlich dann noch X3,
exklusiv oder X1 und X3, exklusiv oder X1,
X2, X3, was dann dieser Ausdruck ist.
Das heißt, das wäre jetzt also einmal in lang vorgerechnet,
wie dann im Prinzip so eine Umrechnung in Riedmaler-Form,
jetzt von irgendeinem Schalalgebarschen-Ausdruck funktionieren würde.
Im Rechner bzw. zur größeren Ausdrücke macht man sowas dann natürlich
ein bisschen anders und ein bisschen eleganter. Da macht man das dann nämlich dadurch,
dass ich also im Prinzip meine Funktion nehme und die multipliziere mit Koeffizienten Vektor,
der mir dann also für die Anzahl der Elemente letztendlich beschreibt, welche Basisfunktionen benutzt werden. Das heißt,
wenn ich jetzt eine Eingangsvariable haben wäre,
dass dann also diese Multiplikationsmatrix, wenn ich zwei habe,
diese, wenn ich drei habe, diese,
diese Matrizen setzen sich dann oder werden auch letztendlich rekursiv gebildet,
indem ich dann eben einfach mal sage,
ich habe die Vorgängerversion schreibe,
die dann eben letztendlich die entsprechenden Matratzen,
also dreimal hin und habe dann also hier oben in dem rechten oberen Quadranten dann eben entsprechend hier,
also in diesem Fall diese 4 Nullen oder hier in diesem Fall diese 16 Nullen nicht und dieser Ausschnitt entspricht genau A2. Hier habe ich ihn nochmal und hier nochmal.
So, wie gesagt, damit wird jetzt eben auch letztendlich wieder nur beschrieben,
an welchen Stellen, über welche Therme erhalte ich da meine Einsinn,
also sprich, wie errechnen sich daraus die Basisfunktion in dem Beispiel hier,
Also das war ja immer diese Funktion, die ich dann auch immer hatte.
Wenn ich das jetzt mit den Rechenregeln der Buhlschen Algebra ausrechne oder wenn ich das jetzt über so eine Matrix-Multiplikation mache,
das folgt gleich auf der nächsten Folie,
wäre diese Funktion dann eben X2,
exklusiv oder X3 und X2 und X1. Ja,
auch nur als Anmerkung,
häufig hat man eben diese Mala-Form dann eben noch ein bisschen
eleganter oder kompaktere darstellen als ein Desjunktiver oder konjunktiver Normalform,
also gerade für Funktionen mit mehr Eingangsvariablen
Gut, wie sieht das jetzt aus mit dieser Umrechnung, wenn ich das jetzt mit einer Matrix-Multiplikation machen würde? In diesem Fall habe ich drei Eingangsvariablen,
war auch dann also quasi jetzt hier diese Matrix,
um daraus jetzt meine Funktion umzurechnen,
die Funktion hi ist dieser Vektor hier,
das ist also nichts anderes als die Funktionstabelle beziehungsweise in dem Fall jetzt also die Beschreibung,
wie ich sie dann also hier jetzt in so einer kompakten Darstellung dann immer letztendlich habe,
so und durch Multiplikation Vektor, Multiplikation, Entschuldigung,
durch eine Vektor-Multiplikation erhalte ich da dann eben entsprechend diesen Vektor.
Das heißt, da habe ich jetzt immer Zeile mal spalte,
nicht Multiplikation ist die Unverknüpfung und die Addition ist dann immer die exklusiv oder Operation.
Und in dem Fall wäre das dann also hier dieser Vektor und das,
was dann dann eben nur machen muss, ist,
dass man also an den Stellen hier die entsprechenden Basisfunktionen abliest.
In diesem Fall ist das die dritte und die letzte Funktion
und die Basisfunktion jetzt für drei Eingang ist Variablen,
wären dann eben die dritte Basisfunktion ist X2.
Die 8 wäre dann eben X3X 2 X1 und das ist dann eben genau diese Riedmaler-Form.
Das heißt, in diesem Fall jetzt das, was sich da jetzt direkt so rausbekomme. Gut, also würde das dann letztendlich programmiertechnisch im Computer dann umgesetzt werden. Gut,
das sind jetzt erstmal so die drei Schaltalgebranchenfunktionen,
mit denen man seine, oder Form, mit denen nicht Funktionen,
sondern Form, mit denen man seine Schaltfunktionen beschreiben kann,
also desynktive Form, konjunktive Formen und eben diese Redmala-Form,
was man dann auch noch häufig hat, sind grafische Darstellungen,
in diesem Fall dann sowas wie Entscheidungsbäume, das heißt,
die Funktion wird dann eben einfach als binärer Baum eingezeichnet,
wo ich dann eben entweder mit einer Null oder mit einer Eins nach links bzw. nach rechts Durchlaufe,
jeder Knoten oder die Knoten des Baums sind dann eben letztendlich den Variablen zugeordnet.
Und wenn ich das dann eben für eine Fest vorher festgelegte Reihenfolge mache,
dann habe ich über so einen vollständigen Baum dann eben letztendlich meine Funktionstabelle.
Und was man in diesen Bäumen dann nämlich auch schon sieht oder sehen kann, ist,
dass man da dann vergleichsweise einfach redundante Teile zusammenfassen und entfernen kann,
was mathematisch dann eigentlich jetzt wieder nichts anderem entspricht, als der Zusammenfassung von Teilausdrücken,
indem ich die jetzt also beispielsweise über Distributivgesetze beziehungsweise Anwendung der Rechenregeln dann zusammenfasse.
Als Beispiel habe ich hier jetzt noch mal als Funktion von drei Eingangsvariablen.
Nochmal diese Multiplexer-Funktion. Ja, Multiplexer, was war das noch? Das hat er doch ganz am Anfang in der zweiten Woche mal kurz angesprochen. Also Multiplexer ist von der Funktion her etwas,
also das ist aufgetaucht,
als ich diese Basis Beschreibung oder Minimalrechenarchitekturen jetzt für quasi von Neumann irgendwo mit drin hatte,
dass da also irgendwelche wie solche Elemente aufgetaucht sind,
die dann also quasi jetzt also irgendwie in so einer Zeichen und immer irgendwie so aussahen,
wo man sagt, ich habe,
also hier kommen irgendwelche Leitungen rein und hier geht eine Leitung raus und es gibt eben so eine Steuerleitung und das,
was das Ding letztendlich realisiert, ist,
ist also quasi eine Art Weiche darstellt,
wo dann eben entweder dieser Eingang A auf den Ausgang F von A,
B und C quasi geleitet wird oder eben der Eingang B und das Ganze wird in diesem Fall dann also beispielsweise gesteuert durch einen Steuereingang C,
dann kann ich jetzt eben sagen, was haben wir hier,
wenn C gleich null ist,
dann soll A quasi hier am Ausgang anliegen,
wenn C gleich eins ist,
dann soll letztendlich B genommen werden.
So als braucht man eben relativ häufig,
da natürlich jetzt nicht nur für einzelne Ein-Bitleitung,
sondern dann eben gleich für ganze Leitungsbindel,
um beispielsweise dann eben für irgendwie so ein 32-Bit-Wort zu sagen,
das soll entweder von da oder von da oder von da kommen.
Nicht, dass also eines der Standard-Bauteile oder Bauelemente,
die irgendwo in den CPUs mit verwendet werden,
um eben solche Entscheidungen zu machen,
wo beispielsweise jetzt ein Operator für eine Addition herkommen soll
Ich stand also nicht nur mit zwei,
sondern teilweise auch noch mit mehr Eingängen,
nicht aber im einfachsten Fall mit zwei Eingängen und die nur ein Bit breit,
habe ich eben genau diese Schaltfunktion,
die sich also quasi nach der Bulschen Allgebade daraus ergibt.
Nicht, dass ich nämlich sage,
A und C nicht oder B und C,
das ist nämlich genau das, was dann hier gemacht wird.
Das als Entscheidungsbaum aufgezeichnet, würde dann eben so aussehen,
für eine Null, ist jetzt hier quasi rot kodiert,
Eine Grün ist, oder eine Eins ist dann eben entsprechend grün kodiert.
Und die Funktion, wenn ich das jetzt also irgendwie aufschreiben würde,
Funktionstabelle mache, dass dann also jeder Reihe nach durchgehe,
würde dann eben letztendlich zu diesen Ausgangswerten kommen.
Das heißt also beispielsweise für Adleich, Null, B gleich,
Null und C gleich Null. Nicht so ist das
dann immer zu lesen, ist der Ausgangswerten eine Null.
Nicht wenn ich das jetzt also hier in die Funktion
mal einsetze, nicht Null und irgendwas ist immer Null
Hier auch null und irgendwas ist 0-0 oder 0
ist 0. Scheint zu funktionieren. Also das heißt,
normalerweise würde man eben erstmal eine richtige Funktionstabelle aufstellen und letztendlich
genau diese Reihenfolge entspricht da nämlich also eigentlich auch den Elementen,
wie sie jetzt also hier sind
Also die Frage war jetzt, also hier nochmal,
also zudem, du hast sie hier also versucht habe,
so an der Tafel zu skizzieren,
C ist ja quasi sowas wie die Steuerleitung und warum das
hier jetzt also auch als Ergebnis mit auftaucht.
Das ist jetzt einfach nur der, in diesem Fall hier
nur der Tatsache geschuldet, dass ich jetzt einfach hier sage,
das Ganze ist für mich jetzt erstmal eine Funktion von drei Eingangsvariablen.
Nicht, also hier kommt jetzt natürlich dann so rum gesehen
immer entweder der Wert von A oder der Wert von B raus,
wenn ich jetzt aber mir also in der Tabelle einfach überlege,
was passiert, wenn ich jetzt für A, B und C meine acht möglichen Kombinationen da aufstelle.
Nicht, dann ist das mathematisch oder formal gesehen ja eine Funktion von diesen drei Variablen.
Das ist einfach nur das, was ich hiermit versucht habe zu schreiben. Wie gesagt,
also dieses hier ist jetzt so rum gesehen ein bisschen verwirrend,
nicht, sondern da kann man also funktional, ist es natürlich einfach zu sagen,
es kommt entweder hier A raus oder es kommt B raus.
Nicht dies beschreibt jetzt eigentlich eher dieses funktionale Verhalten.
Also gut, das war jetzt vielleicht ein bisschen blöd
Beschrieben. Hier. Ach so, ja gut,
also wie gesagt, das ist jetzt nur nur,
also das ist ja so eine Mischschreibweise.
Also dieses wäre jetzt das, was man irgendwo in so einem Schaltplan findet.
Und A und B kommen ja dann auch irgendwo her und zähl irgendwo auf,
wenn ich das jetzt also irgendwie formal richtig mache,
Eingänge nach links, Ausgänge nach rechts,
dann müsste ich das natürlich dann so hinnehmen.
Also meistens hat man das dann aber irgendwie dann so kurz schreibweise.
Das ist ja immer nur eine Art und Weise,
wie man das letztendlich dann also irgendwie zeichnet. Nicht,
das bleibt dann aus ihm selber überlassen,
das wird uns dann gleich im nächsten Kapitel begegnen,
wenn wir dann nämlich so ein bisschen noch so was mit solchen Schaltplänen,
also sprich so grafischen Darstellen von Funktionen beziehungsweise diese
war dann ganzen Funktionsbündeln an uns ansehen
So, aber jetzt noch mal hier zu den Entscheidungsbäumen. Also war es hierbei dann nämlich so ein bisschen Vorteil ist? Ich hatte ja gesagt,
also hier kann man jetzt relativ schnell oder relativ einfach dann eben irgendwie solche Minimierungen,
die teilweise,
wenn ich sie jetzt also in der rechentechnisch in der Bulschen Algebra mache,
dann vielleicht also sehr umständlich sind, grafisch ein bisschen einfacher machen,
weil was man hier zum Beispiel schon mal sieht, ist,
dass ich hier an dieser Stelle eigentlich unabhängig von See bin,
weil wenn Adleich null ist und B-Leich null ist,
dann kommt immer eine Null raus,
egal ob C jetzt null oder eins ist
Und an dieser Stelle, Adler ich 1 und B gleich 1,
auch dann kommt immer eine 1 raus, unabhängig von C. Nicht,
und dann kann ich letztendlich diesen Knoten entfernen und habe dadurch dann also rumgesehen,
jetzt erstmal so eine Grafisch-Minimierung gemacht. So,
und das führt dann zu dem Begriff des Ordert-Binary Decision Diagrams,
beziehungsweise Reduced Ordert-Binary Decision Diagrams, ROBDDD,
ist letztendlich nichts anderes als So eine Variante, so eines Entscheidungsbaums,
wo jetzt einfach nur nochmal die Ausgänge alle wieder zusammengefasst werden,
auf genau die beiden Werte 0 und 1. Was in dem Namen dann auch schon mit drinsteckt,
ist, ordert, das heißt,
ich habe eine gewisse Reihenfolge in Variablen.
Und da kann man jetzt auch nicht sagen,
es gibt die richtige oder die falsche Reihenfolge,
sondern es wird einfach irgendwie Apreori durch den Benutzer oder irgendeinen Algorithmus eine beliebige Reihenfolge festgelegt.
Und in dieser Reihenfolge,
wenn ich da den Baum aufzeichne, redundante Knoten entferne,
also dann so ein reduced Binary Decision Diagram habe,
dann ist so ein ROB, die eine Normalform.
Und Dieter, Diagramme werden jetzt eben genommen,
um so eine Logik und Minimierung bzw. Logikumrechnung im Rechner zu machen.
Weil also Bearbeitung von Bäumen,
dafür gibt es also relativ viele nette, effiziente Algorithmen.
Auch sowas wird meistens dann immer in Form von irgendwelchen Matrizen kodiert.
Und damit kann man halt dementsprechend gut arbeiten. Mit solchen ROB-DDs
kann man eben auch vergleichsweise einfach viele Funktionen sehr kompakt darstellen.
Nicht alle Funktionen, eine Ausnahmewese, was zum Beispiel ein Multiplizierer,
aber gerade bei großen Schaltfunktionen ist das also letztendlich so ein Standardverfahren.
Hier nur Referenz auf ein Buch,
was dann also für sowas beispielsweise genommen wird,
wenn man irgendwie mal vor die Wahl oder das Problem
gestellt wird,
also selber irgendwie so ein Minimierungsalgorithmus
Für solche Schaltnetze beschreiben zu wollen. Gut, wie sieht so was aus?
Also ich habe hier eine Funktion mit drei Eingangsvariablen,
habe in diesem Fall jetzt hier irgendeine beliebige,
oder einfach erst mal so angenommen, disjunktive Form,
habe dann hier quasi meinen vollständigen Entscheidungsbaum irgendwie gezeichnet.
Und das, was Das RWDD dazu ist,
ist dann eben das, also letztendlich diese Minimierung gemacht wurden.
Also zum Beispiel hier ist das Ganze unabhängig von C.
Es kommt immer eine Eins raus. Hier ist es auch
unabhängig von C. Das heißt, diese beiden Knoten fahren raus.
Dieser Fall, hier geht auf eine Eins, dieser Fall.
Hier geht auf eine Eins. Und dann landet man letztendlich bei diesem Diagramm,
die Eins und die Nullen werden dann eben auch noch zusammengefasst.
Dann kann ich also quasi hier draus direkt den Funktionswert für
irgendeinen Eingangsvektor mit A, B und C dann ablesen.
Ich, dass ich dann eben sagen kann, okay,
wenn ich jetzt als Eingangswert adleich null B gleich 1 habe, erhalte ich eine 1.
Das wäre dann nämlich letztendlich genau dieser Fahrt. Nicht,
wenn ich A gleich 1 und B gleich 1 und ziehe gleich null habe,
würde ich eine Null erhalten und muss dann eben nur einfach
die entsprechenden Pfade aus diesem ROB,
die die auslesen
So, hier nochmal ein paar andere Beispiele, Funktion,
Identität ist klar, nicht, also X gleich 0 ist 0,
X gleich 1 ist 1, hier A und B oder C,
also wenn A gleich 1 und B gleich 1 ist,
erhalte ich eine 1, ansonsten,
wenn einer von denen irgendwie null ist,
dann ist das Ergebnis quasi für C leicht null eine null,
für C gleich 1 eine 1, das ist dann also dieser Ausdruck,
hier hätte ich jetzt für N-Variablen sowas wie die Parität,
also exklusiv oder immer jeweils zwischen den Elementen,
wo ich dann eben sagen kann,
beziehungsweise in diesem Fall ist das dann die gerade Parität.
Das heißt, wenn die Anzahl der Einsen gerade ist,
erhalte ich eine Null, wenn die Anzahl der Einsen ungerade ist,
erhalte ich eine Eins als Ergebnis nicht.
Und da sieht man dann immer,
wie jetzt also letztendlich bei dem Wert eins von einer Eingangs
variablen dann immer entsprechend die Parität sich ändert. Gut,
ein Problem bei diesen ROB-DDs, sich hat er gesagt,
also irgendjemand, also sei das der Benutzer oder irgendein Algorithmus,
mit dem ich da jetzt was bearbeite,
hat dann vornherein diese Variablen in eine Ordnung gebracht.
Und dummerweise ist es nur eben so, dass man jetzt sagen muss,
also die Anzahl der Knoten in so einem Diagramm ist eben davon abhängig,
wie die Ordnung ist.
Also es ist hier jetzt also für zwei Funktionen nicht einmal
X1 und X2 oder X3 und X4 oder X5 und X6.
Und hier letztendlich genau die gleiche Funktion,
nur indem ich jetzt also hier die in die CSA mal ein bisschen permutiert habe,
nämlich X1 und X4 oder X2 und X5 oder X3 und X6.
Und wenn ich jetzt diese variablen Ordnung von 1 bis 6 in der Reihe nach in meinem RWDD habe,
dann sieht das jetzt für diese Funktion, ergibt das diesen Baum,
für diese Funktion, ergibt das dies hier,
wo man sagen muss, das ist dann doch schon etwas unübersichtlicher.
Also da ist, wie gesagt, nur als Hinweis,
dass eben die Anzahl der Knoten von der variablen Ordnung abhängig ist. Gut,
in der Regel ist es aber eben ja so,
dass diese Eingänge oder diese Variablenordnung, ja, entweder von irgendwelchen Programmen,
die dann Minimierung drauf machen, dann quasi vorgegeben wird,
dann soll mich das jetzt erstmal nicht zwingend stören,
also ob der Baum jetzt kompakt oder nicht ganz so kompakt dargestellt wird.
Gut, in Form von Übungsaufgaben, wo sowas vielleicht nochmal kommt
, da wird das dann vorgegeben.
Allerdings, da kann ich dann auch schon Entwarnung geben.
Sowas hier wird weder in der Klausur noch in Übungsaufgaben irgendwie gemacht,
sondern es soll schon einigermaßen überschaubare Sachen sein,
die man dann also auch in der überschaubaren Zeit irgendwo lösen kann und sich da jetzt nicht tot zeichnet oder da in diesem Fall war.
Man würde ja erst mal anfangen, sowas wie eine Wertetabelle
und einen vollständigen Baum aufzuzeichnen und sowas mit sechs Variablen.
Das macht dann also auch keinen Spaß mehr. Gut,
ja, jetzt kommen wir aber ja noch mal wieder zurück
zu diesem Thema Minimierung von Charlotte-Funktionen. Nicht,
wenn ich jetzt also im Prinzip eine von meinen Normalformen habe,
habe ich ja eben schon gezeigt,
bei konjunktiver oder desjuktiver Normalform,
wie man das dann also im Prinzip mit den Rechenregeln der
bulschen Algebra
minimieren kann
Wie kann man sowas jetzt noch ein bisschen effizienter machen,
beziehungsweise was ist man dann bei diesen Minimierungen jetzt vielleicht wichtig oder entscheidend.
Und dazu muss er jetzt eben sagen,
letztendlich ist die Art und Weise, wofür ich jetzt diese Minimierung mache,
immer noch so ein bisschen abhängig, dass ich sage,
gut, also für mich als Menschen möchte ich eine möglichst kompakte Darstellung haben.
Das heißt also nicht in schaltalgebranchen Ausdruck mit 30 Thermen,
sondern mit drei oder vier Thermen, das kann man noch einigermaßen überblicken.
Wenn ich sage, die Funktion soll dann irgendwo später,
beispielsweise weil die in irgendwelchen rechten Werken in der Alu im Computer,
in Hardware umgesetzt werden muss, technisch realisiert werden.
Also auch da muss man sagen,
möchte ich jetzt natürlich in einer Minimierung irgendwas haben oder irgendwas erreichen,
dass diese technische Umsetzung möglichst kompakt ist.
Und da kann man dann jetzt eben also quasi als in Anführungszeichen
Größen irgendwie dann immer nehmen, sowas wie Kosten der Hardware,
das heißt, mit welchen Bauelementen kriege ich das umgesetzt?
Sprich, welche Anzahl bzw. wie kompliziert sind die
zu realisieren
Da kommt dann noch so ein bisschen so was mit rein,
wie Hardware-Effizienz, weil, gut,
da würde ich jetzt also irgendwie auf Sachen vorgreifen,
die ich hier vielleicht nochmal ganz kurz anreißen werde,
aber da nicht genauer darauf eingehen werde,
wo man also sagen kann, also bei dem,
was wir heutzutage als Schaltungstechnik in Computern verwenden,
also sogenannte Zemas-Schaltung,
sieht das halt eben so aus,
wir rechnen in der Bulschen Algebar immer mit und und oder.
Und Negation logischerweise
In Hardware sind die Schaltung immer so aufgebaut, dass sie quasi den Ausgang negieren.
Deswegen hatte ich vorhin auch schon mal so was,
wo dann also irgendwie so was wie nennt und Norgat da aufgetaucht sind. Das heißt,
da wird er nicht mit und und oder gerechnet,
weil und und oder wäre nichts anderes als ein nennt und nochmal eine Negierung dahinter,
sondern da möchte man dann also quasi jetzt,
wenn ich eine Minimierung mache und das ist direkt in Hardware umsetzen möchte,
möchte ich das also quasi direkt in irgendeinen Ausdruck aus Nance und North machen.
Nicht solche Sachen. Nicht dann ist noch entscheidend,
auch jetzt wieder in Bezug jetzt,
also auf Hardware,
wie schnell sind solche Schaltungen
Also auch da spielt sowas dann also letztendlich mit rein,
dass ich sagen kann, okay,
statten und Gatta kann ich jetzt nähen und eine Negierung machen,
kostet mich dann aber gefühlt mehr Zeit.
Auch das will man natürlich nicht haben, nicht weil
der Rechner soll ja mit mir ein Gigahertz getaktet werden.
Nicht dafür hat man ja das ganze Geld dann ausgegeben und demzufolge ist da dann eben entscheidend,
dass also jetzt wirklich entsprechend da auf sowas umzubauen.
Nicht, dann gibt es noch andere Kriterien, die da noch irgendwie entscheidend sind. Ich hatte ja schon gesagt, das,
was rein praktisch passiert bei der Chipfertigung, ist halt,
dass eben irgendwo auf dem Silizium irgendwo Fehler entstehen können,
die muss ich erkennen können, um solche Fehler erkennen zu können,
ist es dann aber häufig so,
dass man dann entweder zusätzliche Hardware braucht, beziehungsweise Ausdrücke,
die eigentlich minimal sind, dann vielleicht auch wieder ein bisschen umständlicher baut,
weil ich damit dann also sehr viel einfacher beziehungsweise dann eben sehr viel besser solche Fehlererkennungen herstellen kann.
Nicht sowas wie Robustheit oder so weiter,
von Schaltung ist dann also auch immer noch irgendwie sowas,
also wie gesagt, da gibt es ja sehr,
sehr viele sehr unterschiedliche Kriterien,
wie man jetzt solche Schadalge war schon Ausdrücke umformt, um zu sagen,
die sollen jetzt also für irgendwelche technischen Systeme in der einen oder anderen Form dann eben auch wirklich physikalisch realisiert werden.
Gut, ja, Minimierung, also das eine,
was ja schon Vogel bestellt hatte,
also nehme ich das jetzt hier einfach mal so ein bisschen durchgerechnet habe,
sind jetzt natürlich Algebrage-Minimierungsverfahren,
wo man dann eben im Prinzip mit den Rechenregeln der Gutschen Algebra im Prinzip so lange hin und her rechnet,
bis man das also entweder von der einen in die anderen Form umgeführt hat oder eben irgendwelche Talausdrücke so umgesetzt hat,
dass man da was rauskürzen kann.
Das ist Wie gesagt, ohne Rechner dann,
also vergleichsweise mühsam, nicht für so drei, vier Eingangsvariablen,
kann man das nur irgendwie von Hand machen.
Wenn ich eine Schaltagebash einen Ausdruck habe,
der dann also irgendwie 20 Variablen hat,
dann möchte man das natürlich nicht mehr machen.
Da habe ich auch generell das Problem,
dass man da dann schon eigentlich in Problemen läuft,
dass ich oder dass ihn eigentlich bei beliebig vielen Fragestellungen in
der Informatik
begegnen wird
Dass wir ja immer irgendwie sagen oder Gefühl haben,
also Computer, der rechnet erst mal beliebig schnell.
Es gibt aber eben Algorithmen bzw. Problemklassen, die quasi jetzt
mit der Komplexität des Problems eben nicht zwingend Linear skalieren.
Das heißt also, ich habe meinetwegen jetzt nicht mehr
zwei Variablen, sondern ich habe vier Variablen.
Ja, vier Variablen sind doppelt so viel.
Aber wenn ich jetzt also Schaltfunktionen dazu angucke,
dann habe ich jetzt natürlich bei zwei Variablen
vier mögliche oder vier
mögliche Eingangskombinationen
Vier Variablen, wächst es ja schon quadratisch, habe ich 16.
Das heißt, dieses Problem skaliert quadratisch. So,
und irgendwann wird einfach dieses N,
also die Anzahl der Eingänge dann so groß, dass ich dann auch sagen kann,
also das kann ich auch mit sehr schnellen rechnen und mit sehr großen Rechnern nicht mehr vernünftig machen.
Das heißt, also gerade so bei solchen Optimierungsverfahren, wo ich jetzt sage,
ich versuche mal die Therme so zusammenzufassen, die Therme so zusammenzufassen,
dass ich da an den Stellen dann also in Probleme reinkomme,
wo ich das dann eben Nur noch mit heuristischen,
also mit Chatsverfahren machen kann, aber nicht mehr durch stumpfes Ausprobieren.
Ich probiere mal eben sämtliche Möglichkeiten durch und dann weiß ich,
das ist die beste Möglichkeit, die nehme ich.
Und das sind dann eben, wie gesagt,
das passiert bei beliebig vielen und allen interessanten Problemen in der Informatik,
dass man da dann eben in sogenannte NP-vollständige Probleme reinläuft,
also nicht polynomeal, das heißt, die Rechenzeit oder der Aufwand wächst letztendlich exponentiell mit irgendwelchen Problemen Größen ahnen.
Und irgendwann kann ich das nicht mehr machen. Das ist zum Beispiel der Grund,
weswegen man sagen kann, okay, ich schreibe mal eben ein Programm,
was also irgendwie Schach spielen, als Schachcomputer ausrechnet,
nicht für ein oder zwei oder drei Züge,
kann ich im Voraus einfach sämtliche Zukombinationen, die ich mache,
die mein Gegner mache, mal eben durchrechnen,
durchprobieren.
Aber für eine gesamte Partie kann man das eben nicht mehr machen,
weil das einfach zu viele Kombinationen sind und da letztendlich
die Problemgröße explodiert
Und dann kommt man eben zu solchen Schätzverfahren,
wo man dann sagt, naja gut,
Sachen, die sich als von vornherein unsinnig erweisen,
die schmeiße ich schon mal ganz raus und untersuche die gar nicht weiter.
Aber wie gesagt, das sind dann eben die Sachen,
wo es dann also auch gerade jetzt in Bezug auf die Algorithmik anfängt,
dann also wirklich interessant zu fahren.
Das sind eben solche heuristischen Verfahren. Wie gesagt,
kann man im Prinzip machen,
aber gilt dann eben auch nicht jetzt für alles,
was man da letztendlich machen kann.
Also wie gesagt, für einige zig Eingangsvarialung funktioniert das
ganz gut
Gut, hier auch nochmal ein etwas Größeres Beispiel zu dem
Thema Algebraische Minimierung. Also ich habe jetzt in desjunktiver Normalform
hier mit vier Eingangsvariablen jetzt also irgendwie diese Funktion,
die jetzt also hier quasi durch diese acht mentale beschrieben ist.
Und, Entschuldigung, so. Jetzt würde man also anfangen,
sagen wir jetzt als Mensch, einfach zu sagen,
okay, wo kann ich jetzt was umrechnen?
Habe ich ja gesagt, Basis ist dann
einfach destributivgesetz
Das heißt, ich muss ja jetzt immer Therme suchen,
die sich in genau einer Variablen, die einmal negiert,
einmal nicht negiert ist, unterscheiden.
Und dann kann ich jetzt sagen, okay,
ich nehme den ersten und diesen Therm, die sind letztendlich unabhängig von X0,
dann erhalte ich dieses hier. Dann kann ich sagen,
ich nehme in diesem Fall diesen Therm und diesen Therm,
X-3 und X-2 nicht und X-0, also unabhängig von X-1, das ist der hier.
Damit habe ich also die beiden und die zwar hier schon mal
irgendwo verwurstet und dann muss ich mir jetzt eben noch raussuchen,
den Thermen X3, X2, nicht X1, X0,
kann ich mit dem hier zusammenfassen, das wäre der hier,
dann bleiben doch die drei irgendwie über,
die müssen sie dann noch irgendwo mit erreichen.
Da kriege ich dann eben auch durch entsprechendes Zusammenfassen von den beiden Thermen bzw. den beiden Thermen dann eben diese Ausdrücke. So,
und dann würde man jetzt im nächsten Schritt wieder beigehen und sagen,
okay, kann ich hier noch irgendwie was zusammenfassen und dann also beispielsweise den hier und den Letzten zusammenfassen nicht,
dann habe ich also quasi nur noch X2 und X1 oder X-3,
X-0, das sind die beiden zusammengefasst oder X-3, X-1,
das wäre dann dieser Term und dieser Term nochmal zusammengefasst.
So wie man hier also schon sieht,
nicht und das Ganze lässt sich dann eigentlich nur noch weiter umrechnen,
also da würde man also auch noch andere Lösungen bekommen,
wie man hier schon sieht, ist das,
wenn ich das jetzt also hier so als Mensch mal irgendwie mache,
ja, so ein bisschen stocherne Nebel,
also ich suche mir irgendwelche Therme,
die fasse ich mal zusammen und gucke dann einfach,
wie kann ich damit weiterarbeiten oder wie kann ich damit weiterrechnen.
Das wird dann also
relativ schnell irgendwie relativ fehleranfällig
Möchte man dann eigentlich nicht hören. Deswegen benutzt man für sowas dann eben als Minimierungsverfahren grafische Minimierungsverfahren.
Und zwar werden dazu die Schaltfunktionen in KV-Diagramme eingezeichnet. KV-Diagramm hatten wir schon kennengelernt in einem Kapitel zur Klaudierung,
als es um die einschrittigen Codes ging, wo man sagt,
das ist im Prinzip eine Darstellung von ein,
eigentlich zwei bis maximal sechs Eingangsvariablen, die dann eben so aufgebaut sind,
dass also letztendlich die Abfolge von den Feldern oder spricht die Reihenfolge,
in der die Variablen dastehen,
dann eben letztendlich einem einschrittigen Code entsprechen.
Und in den KV-Diagrammen kann man dann nämlich Färme,
die unabhängig von einer oder zwei oder drei Variablen sind,
zusammenfassen, weil man das einfach grafisch sieht,
dass ganze Bereiche, die gleichen Werte haben,
und die dann eben in Form von,
also ich nenne es jetzt immer Schleifen,
dann entsprechend zusammenpassen
Das kann man eben entweder machen für Einstherme,
dann entspricht das quasi der desjunktiven Form oder man kann das
für Nulltherme machen, dann entspricht das der konjunktiven Form.
So und wie gesagt, Idee als Mensch,
man sieht einfach jetzt, werden wir auch gleich an den Beispielen sehen,
also eben vergleichsweise schnell, wo sind da solche Minimierungsmöglichkeiten.
Also hier nochmal zur Erinnerung, also KV-Diagramm,
in diesem Fall jetzt hier mit vier Eingangsvariablen, wäre,
also hier dieser Blog, also ich habe hier meine Variabling,
ist Dreiecks, 2X1, 60,
die sind dann hier immer in Greykodierung quasi jetzt geschrieben und von einem Feld zum nächsten ändert sich jetzt immer genau ein einziges Bit,
also dies wäre jetzt hier quasi immer der entsprechende Eingangsvektor,
der dann,
also dem zugehörigen Feld entspricht.
So, das kann ich jetzt eben nicht nur wie hier für entsprechend vier Variablen machen,
sondern, also so ein 4x4 Feld,
sondern kann das dann auch machen für zwei oder drei Eingangsvariablen.
Und wenn ich fünf und sechs Eingangsvariablen hätte,
würde ich jetzt eben entweder zwei von diesen Vierer oder vier von diesen Vierer Diagrammen nehmen.
So, und das, was man jetzt eben macht,
ist, dass man einfach die Schaltfunktion,
die Funktionstabelle letztendlich aufstellt und die Werte der Funktionstabelle dann eins zu eins in so ein KV-Diagramm einträgt,
dann gibt es noch Erweiterungen für Nichtspezifizierte Werte,
werde ich gleich noch zu kommen
Und wie gesagt, damit kann man dann eben bis zu maximal sechs Eingänge theoretisch bearbeiten.
Also wie sieht das aus? Ich habe jetzt hier
meine Schaltfunktion in diesem Fall jetzt hier von zwei Eingangsvariablen.
Also hier die entsprechenden Eingangswertekombinationen und hier wäre dann eben der entsprechende Funktionswert, der dazugehört. Das,
was wir einfach nur machen muss, ist,
dass man also letztendlich also aus dieser Werttabelle die Funktionswerte dann eben an die entsprechenden Positionen,
das heißt, Funktionswert wäre, hier eher dieser Funktionswert wäre hier,
der Funktionswert hier und A11 wird dann hier landen in dem KV-Diagramm quasi an entsprechender Stelle einträgt.
Gut, interessanter wird das jetzt, also wenn ich dann drei oder vier Eingangsvariablen habe,
wo ich die Werte dann eben entsprechend eintage. Wichtig,
auch nur, weil auch das wird dann immer gerne mal schnell falsch gemacht,
ist, ich habe hier meine Funktionstabelle,
ich trage die nicht eins, zwei, drei,
vier ein, sondern ich trage die eins, andersrum jetzt,
also null, eins, zwei, drei, nicht.
Das heißt, ich habe hier immer diesen Gray-Code,
muss dann eben hier immer an die entsprechenden Stellen gehen,
beziehungsweise bei den vier mal vier Feldern sieht man das,
also dann noch deutlicher, wenn ich jetzt also hier quasi durchzähle.
Nicht, dass wir ja jetzt also der entsprechende Binärwert,
0,1, 2, 3, 4, 5,
6, 7, dann bin ich in einer untersten Zeile,
8, 9, 10,
11,
bis ich dann eben entsprechend hierbei dem Vektor aus lauter
Einsen lande
Gut, und damit kann ich jetzt also meine Funktion einfach eins zu eins umtragen,
indem ich jetzt, also wenn ich für irgendeine Funktion eine Funktionstabelle habe,
das dann einfach hier sturmpf übertrage und dann eben beispielsweise diesen Vector 001111010101010 001110010,
dann eben in das KV-Diagramm eintrage.
So, in diesem Fall hier jetzt nochmal für eine Form mit vier Tarmen,
also in desjunktiver Normalform,
das wären jetzt also in diesem Fall jetzt hier die Vier Stellen,
die mir also beispielsweise jetzt eine Eins beschreiben.
Würde heißen, ich habe überall in einem KV Diagrammen Nullen,
bis auf die Stelle X3, nicht X2,
nicht X1, nicht X-0 nicht.
Das ist also der Vektor 0, 0, 0, 0.
Das ist der hier. Nicht, dann habe ich X3,
nicht X-2, nicht X-1 und X-0 nicht.
Nicht würde ich dann eben entsprechend auch hier rauslesen,
das ist genau. Diese Position und die beiden Vektoren
sind dann eben entsprechend hier und der Letzte,
der hier
Das heißt, da wird jetzt eben einfach immer nur die
entsprechende Kombination hier über diese Indizes rausgesucht und die Eins
quasi jetzt für den Menther an dort eingetragen.
So, und was man jetzt eben in den KV der
Rahmen hat oder was man damit erreicht hat, ist,
dass sich eben letztendlich benachbarte Felder immer nur genau um einen Bit unterscheiden.
So, wenn sich um einen Bit unterscheiden,
heißt das, die Funktion hängt jetzt,
also wenn ich zum Beispiel jetzt diese beiden Felder nehme,
nicht von der Variablen ab,
die also quasi diesen und dieses Feld
hier unterscheiden
Sprich, die hängt in diesem Fall nicht von X2 ab,
weil unabhängig davon,
ob X2 gleich eins ist oder X2 gleich null ist,
liefert mir diese Funktion,
sofern die beiden eine eins sind und X3 eine eins ist immer eine eins am Ausgang.
Das heißt, dadurch sieht man dann eigentlich immer,
welche Sachen ich zusammenfassen kann. So,
und dafür baut man dann eben letztendlich dann so eine Schleife,
fast die beiden Felder zusammen, liest dann also quasi aus
dem KV Diagramm dann die entsprechenden Ausdruck wieder ab.
Das kann man dann eben machen für,
nicht nur für Zweier, sondern auch für Vierer
oder für Achtergruppen
Wichtig ist nur, es sind immer zwei Appotenzen, logischerweise.
Und das sind natürlich dann also auch immer entsprechend benachbarte Felder.
Und was man dann eben auch immer noch wissen muss in den KV-Diagramm,
also als ich das eingefügt hatte oder eingeführt hatte,
jetzt also im Sinne für die Kodierung mit den Greycodes,
dass man ja auch gesehen hat, ich kann,
wenn ich da jetzt Pfade einzeichne,
die auch außen herum zeichnen,
auch solche Schleifen kann ich außen herum bilden.
Und was man typischerweise dann eben auch macht, ist,
dass ich Schleifen Auch überlappen dürfen, sollen, können.
Also hier nochmal auf die Beispiele zurück, die ich gerade eben hatte.
Also hier mit diesen beiden Funktionen. Also einmal diese Funktion mit zwei Eingangsvariablen in einem KV-Diagramm eingezeichnet,
sieht man diese beiden Einsen, könnte ich zusammenfassen,
entspricht quasi jetzt diesen beiden Zeilen der Funktionstabelle und nicht in diesem Fall kann ich dann also auch gleich sagen,
naja gut, also die Funktion hier letztendlich wie man eigentlich hier und hier sieht,
ist nichts anderes als XA1.
Und unabhängig von X0 wäre das dann eben die Minimierung.
Bei dieser Funktion hier könnte ich jetzt eben zwei Schleifen einzeichnen,
nämlich einmal, indem ich also die beiden Eisen zusammenfasse,
was also diesen beiden Zahlen entspricht oder dass ich die beiden Eisen zusammenfasse,
was diesen beiden Zahlen entspricht.
Und daraus kann ich dann eben auch wieder jetzt meine minimierte Funktion ablesen,
nämlich in diesem Fall X2 nicht, nicht mit X2 nicht,
bin ich jetzt also hier in dieser Zeile und X1,
das ist also diese 1 und ich bin unabhängig von X0,
das ist dann eben genau diese grüne Schleife.
Und hier habe ich, unabhängig von X2, X1 und X0 nicht.
Das heißt, die minimierte Funktion wäre dann eben genau dieser
Ausdruck X2 nicht und X1 oder X1 und X0 nicht.
Gut, hier für dieses Beispiel von vorhin mit den Viereingangsvariablen,
da sieht man dann eben auch, wie das,
dass es jetzt quasi über den Rand herum funktioniert mit diesen Schleifen.
Auch da habe ich dann eben eine Minimierung, einmal diese beiden,
eins, einmal diese beiden, eins und zusammengefasst,
hätte dann eben quasi x-3, nicht, x-2,
nicht x-0 nicht, oder x-3 und x-1 und x-0,
was dann diese Schleife ist.
Nicht, das wäre jetzt also diese grafische Minimierung in dem KV-Diagramm.
Gut, das Kann man jetzt natürlich,
beziehungsweise wird jetzt also in den Übungsaufgaben vielleicht auch nochmal auftauchen.
Dafür gibt es jetzt natürlich auch noch irgendwelche schicken Sachen,
wo dann also in diesem Fall mal,
allerdings schon vor etwas längerer Zeit, irgendwelche Studenten mal,
also im Rahmen einer, damals noch, nee,
das war glaube ich ein Bachelorstudium, also Bachelorarbeit,
dann also irgendwie so ein paar Tools gebastelt haben.
Eines davon ist also im Prinzip dieses hier,
was also auch inzwischen also auf der Stine und so weiter verlinkt ist,
wo man dann also im Prinzip,
also die Frage jetzt also als Java-Programm oder Java Applet,
was dann also hier im Browser läuft,
Funktionen eingeben kann und seine Funktionen minimieren kann.
Nicht dazu habe ich hier erstmal die Möglichkeit zu sagen,
unter Edit Function, wie möchte ich meine Funktion beschrieben haben, also beispielsweise,
ich möchte jetzt das Ganze hier zum Beispiel nennen, X-0. X-1 X2.
Und ich möchte natürlich jetzt nicht nur 3, sondern 4 Eingangsvariablen haben.
So, jetzt habe ich mir gerade selber die Karten gelegt,
dass wir dann also sinnigerweise jetzt in meiner Terminologie dann natürlich X3.
Und dieses hier wäre dann X2. So,
und dann kann ich jetzt eben hier einfach,
indem ich auf das entsprechende Feld gehe,
Dass also der Reihe nach durchklicken und entweder eins so ein Sternchen,
da komme ich gleich noch drauf,
zu sprechen oder eine Null eintragen und damit dann also letztendlich erseht es irgendwie meine Funktion,
die ich minimieren möchte, also sprich jetzt die Charlotte-Funktion,
eingeben.
Hier rechts sieht man dann immer schön angedeutet,
wie das Ganze in diesem Fall jetzt in DNF des Jugendtiver Normal vom Aussehen würde.
Das heißt, ich habe hier mit diesen uns die minterme
und mit diesem Oder werden die dann eben letztendlich verknüpft.
Das heißt, dieses wäre dann immer die,
in diesem Fall jetzt also als Desjuktive Normalform beschrieben. So,
wenn ich das jetzt hier einmal für irgendeine beliebige Funktion,
nehmen wir sowas hier jetzt mal irgendwie gemacht habe,
dann wäre das jetzt also die Art und Weise,
wie das Ganze jetzt erstmal nicht minimiert in Desjuktiver Normalform
aussehen würde
So und was man anschließend machen kann, ist,
dass man jetzt eben sagt, Edit Loops.
Und jetzt kann ich sagen, okay, wo kann ich jeweils mit Schleifen zusammenfassen?
Beispielsweise diese vier hier in so einer Zeile,
die ich dann einfach entsprechend aufziehe,
kriege ich das hier gleich angezeigt und hier dann eben auch schon,
wie das Ganze dann eben minimiert aussieht.
Weil was habe ich mit dieser Zeile beschrieben?
Ich bin unabhängig von X-0 und ich bin unabhängig von X-1,
sondern diese Zeile wird nur dadurch charakterisiert,
dass X-2 gleich 1 ist und X-3 gleich null
Das wäre also da quasi hier die Zahlenbeschriftung, die dann also hier für die Zeile ist.
Und das ist dann eben letztendlich dann hier die Ahengaar,
also X3, gleich Null und X2, gleich 1. Das,
was dann also hier diesen Therm bildet.
So, und das kann ich dann also da rein nach jetzt,
also hier für alles, wo ich meine Schleifen zu erkennen,
also irgendwie machen. Und wenn ich dann irgendwann gedacht habe,
okay, ich bin jetzt, also hier soweit fertig,
nicht in diesem Fall lässt sich,
also hier an dieser Stelle jetzt, also nicht viel mehr machen,
dann wäre das jetzt eben entsprechend meine minimierte desjentive Fonds.
Ich kann das Ganze, also hiermit kann man das dann wieder löschen,
kann das Ganze auch in konjunktiver Form bearbeiten,
in konjunktiver Form trage ich ja die Nullen ein.
Ich würde das dann also hier unter Edit Function entsprechend andersrum machen,
beziehungsweise in diesem Fall sind jetzt also hier die Nullen als dominant hervorgehoben.
Und auch hier würde ich jetzt eben anfangen,
irgendwelche Schleifen zu bilden. Gut, was kann man machen?
Ich kann also hierüber jetzt irgendwie so was wie eine
Viererschleife bilden
Nicht, wenn ich das aufziehe, dann sieht man nämlich
also auch schon, welche Talthame das betrifft.
Nicht, dann kann ich sagen, ja, diese beiden kann ich zusammenfassen.
Das ist die Frage, ist das schlau? Nicht ganz,
weil ich kann daraus nämlich auch so eine Vierer-Schleife machen
und habe dadurch dann nämlich nochmal eine Variable weniger.
Und dann müsste ich noch irgendwie diese Null und diese Null
mit erschlagen, in diesem Fall dann also auch einmal hierüber
Hierüber, so und ich behaupte mal,
also da lässt sich jetzt das auch noch nicht mehr zusammenfassen.
Und das wäre dann also diese Feuerzweise hier die minimale
oder eine minimierte, konjunktive Form von dem Ganzen.
Und wie gesagt, damit kann man dann eben sehr schön,
sehr einfach interaktiv arbeiten und das Ganze dann eben machen.
Ausprobieren ist relativ einfach, selbsterklärend,
wenn irgendwann später mal solche Minimierungsaufgaben in Übungsaufgaben vorkommen,
mit KV-Diagramm, kann man also auch gerne das benutzen.
PDF daraus erzeugen, Screenshot, was weiß ich auch immer und da
muss man sich dann jetzt also nicht selber zwingend alles genau selber zeichnen oder herleiten, beziehungsweise man kann es dann also entsprechend damit machen, dann einfach irgendwie dann in das Aufgabenblatt übernehmen. Gut,
wie gesagt, also das ist dieser KV-Diagramm-Editor,
damit funktioniert das also ganz gut, also hier ist jetzt genau,
da hatte ich jetzt ein anderes Beispiel,
wo man dann eben auch nochmal sieht,
wie also jetzt diese Minimierung funktioniert und so weiter und wie gesagt,
Hier ist dann immer angedeutet, so eine Art Hardware-Kosten,
also sprich, wie aufwendig ist das, wie viele Garta werden gebraucht,
also sprich in diesem Fall 1, 2,
3 und und ein oder mit so und so viel Eingängen,
nicht als ein Maß dafür und dann hier auch in dem Beispiel einmal für das Juktive einmal für konjunktive Form.
So, kommen wir jetzt zu diesen Sternchen. Damit ist gemeint,
dass man häufig bei solchen Minimierungen oder Minimierungsaufgaben noch als zusätzliche
Freiheit mit hat, dass bestimmte Angangskombinationen eigentlich gar nicht vorkommen
Jetzt kann man dich fragen, wieso das und wo macht das eigentlich Sinn?
Also gehen wir nochmal zurück in die Kodierung. Da gab
es also hier irgendwie mal so was wie diese BCD,
Barry Code de Dessimil, wo es also darum geht,
einfach quasi binär durchkodiert, die zehn Ziffern zu beschreiben.
Und da habe ich dann also quasi jetzt
die entsprechenden Binärwerte für 0 bis 9 und alles,
was dann von A bis F noch möglich ist,
wird nicht benutzt
Wenn ich jetzt also nur so war wie so ein BCD-Code erstellen möchte. Sohn,
dieses, das also jetzt bestimmte Kombinationen, also sprich dann 1,
1, 1, 1 oder entsprechend, also alles,
was jetzt ihr größer als 9 ist, wie näher nicht benutzt wird,
das würde man dann eben in solchen Minimierungsverfahren dadurch beschreiben,
dass man sagt,
an der Stelle in dem KV-Diagramm mache ich dann eben quasi einen Stern,
Wildcard und in der Mini,
bei der Minimierung kann ich dann eben sagen,
je nachdem, wie mir das besser passt,
wird dort eben entweder eine Null oder eine Eins genommen und ich kann das dann also quasi jetzt für meine Minimierung dann einfach passend mitmachen, um dort möglichst große Schleifen zu erzeugen.
Nicht also auch das kann man dann eben entsprechend,
also jetzt hier in diesem Tool machen,
dass ich da dann eben so ein Sternchen,
also hier so ein Don't Care irgendwie mit reinzeichne,
also hier mal das Ganze jetzt für sechs Eingangsvariablen,
Wie man sieht, sind das dann,
also fängt das, also, oder dass das eigentlich,
ich sag mal, so das Maximum,
was man also überhaupt noch so als Mensch selber grafischer,
also irgendwie vernünftig überblickt.
Also ich habe hier meine X0 X1 X2 X3X 3,
X4 wäre dann eben hier eine 1, X5 wäre hier eine 1, das sind also quasi vier solcher 16er Diagramme.
Und da sind eben jetzt an relativ vielen Stellen irgendwelche Don't Cairs. Und wenn ich da jetzt also beispielsweise so was wie eine disjunktive Normalform erzeuge,
dann, dass man da dann eben auch sagt,
innerhalb dieser Diagramme, dieser Blöcke,
fasse ich dann eben irgendwas zusammen, nicht wo man sieht,
also hier Ausgangsfunktion, hier das Ganze minimiert,
wo ich dann eben unter anderem hier eins, don't care,
hier die beiden Don't cares, hier die beiden,
Don't cares, und hier die beiden Don't cares,
nicht die werden jetzt immer AphaS 1 interpretiert und dadurch kann ich dann aber diese Schleife dann entsprechend bilden,
die mir dann also in diesem Fall ist,
also in diesem Ziern da eingezeichnet,
dann eben diesen Ausdruck bildet.
Wie gesagt, Don't Care ist dann eben etwas,
was man Einfach passend als Wildcard benutzen kann,
um dann möglichst optimal sich seine Schleifen zu zeigen.
Gut, ansonsten hier nur als Begriff, Quian McKlasski-Algorithmus,
das ist dann eben so ein Algorithmus zur Minimierung von Schaltfunktionen,
wird dann eben in der Computeralgebahnener Rechnung mit benutzt.
Ja, Referenzen stehen da unten,
werde ich jetzt aber hier in diesem Fall jetzt nicht weiter vertiefen,
das stwarn auch im Prinzip von Norman mit Hüber.
Gut, ja, damit haben wir jetzt eigentlich dieses Kapitel
Schaltfunktion beendet. Jetzt kommen wir zu sowas in komplizierter,
nennt sich da nämlich Charlotte Netze. Werde ich jetzt sagen,
als letztes heute nur noch so ein bisschen kurz motivieren dann,
aber jetzt nicht mehr genau einsteigen. Also,
bei einer Schaltfunktion habe ich formal gesehen ja einfach nur eine Funktion,
die mir jetzt von so und so viel Eingangsvariablen ein Ein-Bit-Ausgang liefert.
Ein Schaltnetz wäre jetzt einfach nichts anderes als eine Funktion Bündel,
wo ich dann eben sage,
ich habe jetzt eben nicht nur Ein Einbit-Ausgang,
sondern ich habe dann eben eigentlich eine Menge von Schaltfunktionen so rumgesehen,
die dann letztendlich entsprechend im, wie groß das dann auch immer sein mag, Ausgänge liefert.
Wie gesagt, mathematisch gesehen ist, dass dann nichts anderes als jeweils eine Vektorfunktion,
also wo ich dann eben quasi einfach eine Menge einzelner Schaltfunktionen habe und die dann entsprechend zusammenfasse.
Wichtig dabei ist immer nur in dem Schaltnetz, darf es keine Rückkopplung geben,
dass wir dann in dem nächsten Kapitel dann noch interessant,
weil da geht es dann nämlich letztendlich darum zu sagen,
okay, was passiert,
wenn ich jetzt also hier irgendwie das Ganze jetzt grafisch sehe,
sage, das sind irgendwelche Hardware-Elemente und irgendeinen Ausgang,
ist dann eigentlich gleich dem Eingang und da läuft eben irgendwie sowas zurück oder zurückgekoppelt.
Und was man mit sowas dann nämlich macht oder erreicht,
ist, dass Werte unter bestimmten Bedingungen gespeichert werden können.
Das ist nämlich die Grundfunktion, wie im Computer,
in der CPU, in Registern letztendlich Werte gespeichert werden.
Das basiert dann im Prinzip nämlich also auf irgendwelchen rückgekoppelten Schaltennetzen.
Wie gesagt, jetzt betrachten wir aber erstmal nur Schaltennetz jetzt
als eben einfach nur ein Vektor oder ein ganzer Satz
von Schaltfunktionen
Gut, typischerweise wird das dann eben auch aufgebaut,
also in Form von Elementen der Bulschen Algebra, mit also irgendwelchen einfachen sogenannten Gattern,
was dann also letztendlich von der Komplexität her sowas wie und oder Negation entspricht,
nicht teilweise dann, also auch schon nicht nur mit zwei, sondern auch mit mehr Eingängen, mit denen ich dann im Prinzip meine Funktion aufbaue. So,
und das, was dann nächste Woche folgen wird,
ist, wieso was jetzt nicht nur Schaltal gebracht,
sondern wieso war es dann da so ein bisschen technisch,
das heißt also in Form von allen, also solchen technischen Elementenzeichnungen aufgebaut wird,
was so die Basis oder Grundgarta sind,
das sind dann natürlich sowas wie und und oder und so weiter und dann eigentlich einiges an Beispielen und die Art und Weise,
was man damit eigentlich nämlich rein praktisch macht,
also sprich, wofür brauche ich,
so war es jetzt in der Hardware irgendwo mit drin,
zum einen zum Beispiel am Beispiel von Multiplexern, um mir zu sagen,
okay, ich habe Irgendwie sowas wie eine Recheneinheit,
also ein Bauelement, was dann sogenannter Alu ist,
wo ich zum Beispiel jetzt sagen kann,
ich kann hier irgendwie ein 16-Bit-Vektor nehmen.
A. Und hier ein 16-Bit-Vektor B. Nicht und rauskommen soll ein 16-Bit-Vektor C.
Und ich möchte dann also quasi berechnen, plus oder meinetwegen Minus,
was ich dann also hier noch irgendwie über eine irgendeine Leitung umschalten kann. So,
nicht das wäre jetzt rein praktisch in den Computern verbaut als Recheneinheit,
irgendwie Adiara Subtrahira, wo ich dann eben letztendlich zwei Zahlen binär kodiert in Zweier-Kompliment-Darstellung addieren bzw. subtrahieren kann,
formal gesehen ist sowas dann eben hier nichts anderes als ein Schaltnetz,
nämlich eine Menge von schalt Funktionen für jedes Bit quasi meines Ausgangsvektors irgendwie Algebrage beschrieben,
wie sich das quasi berechnet.
Und was man da dann noch unter anderem dann auch noch mit hat,
dass man jetzt natürlich sagen kann, okay,
jetzt habe ich hier nur irgendwie einen Multiplexer davor und kann jetzt eben sagen,
mein Argument A, soll jetzt entweder von da oder von da oder von da kommen und ich kann das dann entsprechend unterscheiden.
So wie sowas aufgebaut wird, wie man damit umgeht,
wie man das dann auch simulieren kann,
dass wir dann nächste Woche folgen
Werden wir uns damit zum grafischen Werkzeug dann noch so ein bisschen,
also auch in Beispielen beschäftigen werden,
wie man sowas einsetzt, wie man sowas benutzt.
Gut, damit soll es das für heute gewesen sein,
allen ein schönes Wochenende