Zum Inhalt springen
Zurück zur Themenübersicht

Technische Informatik

Schaltalgebra: von der Wahrheitstabelle zur Schaltung

Ein Verfahren, das aus jeder beliebigen Wahrheitstabelle eine funktionierende Schaltung erzeugt, und wie man sie danach klein bekommt.

Benötigte Grundlagen

Dieses Vorwissen brauchst du für das Kapitel. Schau kurz nach, wenn dir etwas davon nicht mehr präsent ist, sonst leg direkt los.

Einführung

Stell dir vor, du sollst eine Schaltung bauen, die bei drei Sensoren genau dann Alarm auslöst, wenn mindestens zwei davon anschlagen.

Man könnte anfangen zu probieren. Man muss aber nicht: Es gibt ein Verfahren, das aus der einer beliebigen Aufgabe eine funktionierende Schaltung erzeugt, ohne jeden Einfall.

Das ist das eigentliche Ergebnis dieses Kapitels. Der zweite Teil beantwortet die Anschlussfrage, denn die so entstandene Schaltung ist zwar richtig, aber meist unnötig groß, und kosten Platz, Strom und Zeit.

Das kannst du nach diesem Kapitel

  • aus einer die disjunktive Normalform aufstellen.

  • einen Schaltterm in eine Schaltung aus übersetzen und umgekehrt.

  • Terme mit den Gesetzen der Schaltalgebra und De Morgan vereinfachen.

  • begründen, warum sich jede Schaltfunktion allein mit NAND aufbauen lässt (Vertiefung).

  • den Zusammenhang zwischen Termgröße und Aufwand einer Schaltung erläutern.

Kurz aufgefrischt

Vorausgesetzt werden AND, OR, NOT, XOR, NAND, NOR mit ihren und Schaltzeichen aus Logische Grundbausteine.

Neu ist die umgekehrte Richtung: Bisher war eine Schaltung gegeben und die Tabelle gesucht. Jetzt ist die Tabelle gegeben und die Schaltung gesucht.

Schreibweisen

In der Schaltalgebra schreibt man kurz:

BedeutungSchreibweisegesprochen
NOT aaaˉ\bar{a}„nicht aa"
aa AND bba∧ba \land b„aa und bb"
aa OR bba∨ba \lor b„aa oder bb"

Das OR ist dabei immer das einschließende Oder: a∨ba \lor b ist auch dann wahr, wenn beide wahr sind. Das ausschließende Oder ist XOR und muss eigens hingeschrieben werden.

Die disjunktive Normalform

Hier ist das Verfahren. Gegeben sei diese Tabelle:

aabbyy
000
011
101
110

Schritt 1: Nur die Zeilen mit y=1y = 1 betrachten. Alle anderen sind uninteressant.

Schritt 2: Für jede solche Zeile einen UND-Term bilden, der genau für diese Zeile wahr ist. Eine mit Wert 1 kommt unverändert vor, eine mit Wert 0 negiert.

  • Zeile 2 (a=0a=0, b=1b=1): aˉ∧b\bar{a} \land b
  • Zeile 3 (a=1a=1, b=0b=0): a∧bˉa \land \bar{b}

Schritt 3: Alle Terme mit ODER verbinden:

y=(aˉ∧b)∨(a∧bˉ)y = (\bar{a} \land b) \lor (a \land \bar{b})

Fertig. Das ist die disjunktive Normalform, kurz DNF.

🔴 Warum das immer funktioniert, lässt sich in zwei Sätzen begründen. Jeder UND-Term ist genau für seine eine Zeile wahr und für jede andere falsch, denn in jeder anderen Zeile hat mindestens eine Variable den anderen Wert und macht den Term falsch. Die ODER-Verknüpfung ist damit genau dann wahr, wenn eine der ausgewählten Zeilen vorliegt, und das sind genau die Zeilen mit y=1y = 1.

Beachte, was das bedeutet: Es gibt keine , für die man keine Schaltung bauen kann. Das Verfahren braucht keinen Einfall und liefert immer ein Ergebnis.

Übrigens: Der Term oben ist die Definition von XOR. Das erklärt, warum XOR kein eigenständiges Grundgatter sein muss, sondern sich aus AND, OR und NOT zusammensetzen lässt.

Ein Sonderfall bleibt: Steht in der Tabelle überall y=0y = 0, gibt es keinen einzigen Term. Dann ist die Funktion konstant null, und man braucht gar kein .

Nur die Zeilen mit y = 1 zählen

aby000011101110

Das DNF-Verfahren beginnt mit dieser Auswahl: nur die hervorgehobenen Zeilen, alle anderen sind uninteressant. Für jede bildet man einen UND-Term, der genau für sie wahr ist, eine mit Wert 1 kommt unverändert vor, eine mit Wert 0 negiert. Zeile 2 (a=0a=0, b=1b=1) ergibt aˉ∧b\bar{a} \land b, Zeile 3 ergibt a∧bˉa \land \bar{b}; mit ODER verbunden: y=(aˉ∧b)∨(a∧bˉ)y = (\bar{a} \land b) \lor (a \land \bar{b}). 🔴 Warum das immer funktioniert, steht in zwei Sätzen: Jeder UND-Term ist genau für seine eine Zeile wahr, denn in jeder anderen hat mindestens eine Variable den anderen Wert und macht ihn falsch. Die ODER-Verknüpfung ist damit genau dann wahr, wenn eine der ausgewählten Zeilen vorliegt. Es gibt also keine , für die man keine Schaltung bauen könnte, das Verfahren braucht keinen Einfall.

Von der DNF zur Schaltung

Die Übersetzung ist unmittelbar:

  • Jede negierte → ein NOT-.
  • Jeder UND-Term → ein AND-Gatter mit so vielen Eingängen wie der Term Variablen hat.
  • Die Verbindung der Terme → ein OR-Gatter mit so vielen Eingängen wie es Terme gibt.
a ──┬──────────────┐
    │              │
    └─[NOT]─┐   ┌──┴──┐
            ├───┤ AND ├──┐
b ──┬───────┘   └─────┘  │   ┌────┐
    │                    ├───┤ OR ├── y
    └─[NOT]─┐   ┌─────┐  │   └────┘
            ├───┤ AND ├──┘
a ──────────┘   └─────┘

Die Schaltung hat immer drei Ebenen: erst die Negationen, dann die UND-Gatter, dann das eine ODER-Gatter. Genau deshalb heißt sie auch „Zweistufenschaltung", wenn man die Negationen nicht mitzählt.

Warum man vereinfacht

Die DNF ist richtig, aber selten sparsam. Ein Beispiel mit drei , „mindestens zwei von drei":

aabbccyy
0000
0010
0100
0111
1000
1011
1101
1111

DNF mit vier Termen:

y=(aˉ∧b∧c)∨(a∧bˉ∧c)∨(a∧b∧cˉ)∨(a∧b∧c)y = (\bar{a} \land b \land c) \lor (a \land \bar{b} \land c) \lor (a \land b \land \bar{c}) \lor (a \land b \land c)

Das sind vier UND-Gatter mit je drei Eingängen, drei und ein ODER-Gatter mit vier Eingängen. Vereinfacht ergibt sich (die Rechnung steht im Beispielteil):

y=(a∧b)∨(a∧c)∨(b∧c)y = (a \land b) \lor (a \land c) \lor (b \land c)

Jetzt sind es drei UND-Gatter mit je zwei Eingängen, kein NOT-Gatter und ein ODER-Gatter mit drei Eingängen. Der Term ist außerdem sofort lesbar: „irgendwelche zwei stimmen überein".

Jedes gesparte Gatter bedeutet weniger Fläche auf dem Chip, weniger Stromverbrauch und eine kürzere Signallaufzeit. Bei Millionen von Gattern in einem Prozessor summiert sich das erheblich.

„Mindestens zwei von drei“, vereinfacht

abca ∧ b&a ∧ c&b ∧ c&y≥1y

Das ist dieselbe Funktion wie die DNF im Abschnitt daneben, nur gebaut aus dem vereinfachten Term y=(a∧b)∨(a∧c)∨(b∧c)y = (a \land b) \lor (a \land c) \lor (b \land c). Zähle die Bauteile und vergleiche: Die DNF brauchte vier UND-Gatter mit je drei Eingängen, drei und ein ODER mit vier Eingängen. Hier sind es drei UND-Gatter mit je zwei Eingängen, kein einziges NOT und ein ODER mit drei Eingängen. Jedes gesparte Gatter bedeutet weniger Fläche auf dem Chip, weniger Stromverbrauch und eine kürzere Signallaufzeit; bei Millionen Gattern in einem Prozessor summiert sich das erheblich. Und der Term ist obendrein lesbar geworden: „irgendwelche zwei stimmen überein“.

Die Gesetze der Schaltalgebra

NameGesetz
Kommutativa∧b=b∧aa \land b = b \land a · a∨b=b∨aa \lor b = b \lor a
Assoziativ(a∧b)∧c=a∧(b∧c)(a \land b) \land c = a \land (b \land c)
Distributiva∧(b∨c)=(a∧b)∨(a∧c)a \land (b \lor c) = (a \land b) \lor (a \land c)
Neutrala∧1=aa \land 1 = a · a∨0=aa \lor 0 = a
Extremala∧0=0a \land 0 = 0 · a∨1=1a \lor 1 = 1
Komplementa∧aˉ=0a \land \bar{a} = 0 · a∨aˉ=1a \lor \bar{a} = 1
Idempotenza∧a=aa \land a = a · a∨a=aa \lor a = a
Absorptiona∨(a∧b)=aa \lor (a \land b) = a
De Morgana∧b‾=aˉ∨bˉ\overline{a \land b} = \bar{a} \lor \bar{b} · a∨b‾=aˉ∧bˉ\overline{a \lor b} = \bar{a} \land \bar{b}

Vieles davon kennst du aus der Mathematik. Zwei Dinge sind aber anders, und sie werden am häufigsten falsch gemacht:

a∨a=aa \lor a = a, nicht 2a2a. Es gibt keine Vielfachen, weil es nur die Werte 0 und 1 gibt.

De Morgan. Beim Hineinziehen einer Negation wechselt der Operator. Das ist keine Formalität, sondern der Kern der Regel. Anschaulich: „Nicht (beide)" heißt „mindestens einer nicht", und „nicht (mindestens einer)" heißt „keiner", also „beide nicht".

Der häufigste Fehler ist a∧b‾=aˉ∧bˉ\overline{a \land b} = \bar{a} \land \bar{b}. Prüfe ihn an a=1a = 1, b=0b = 0: links steht 0‾=1\overline{0} = 1, rechts 0∧1=00 \land 1 = 0. Die Behauptung ist also widerlegt, und eine einzige Zeile der genügte dafür.

De Morgan, und der häufigste Fehler daneben

¬(a ∧ b) = ¬a ∨¬b¬(a ∧ b) = ¬a ∧¬bLinke Seite bei a = 1, b = 0¬(1 ∧ 0) = ¬0 =1¬(1 ∧ 0) = ¬0 =1Rechte Seite bei a = 1, b = 0¬1 ∨ ¬0 = 0 ∨ 1= 1¬1 ∧ ¬0 = 0 ∧ 1= 0Urteilbeide Seiten 1.Hier stimmt es1 ≠ 0, widerlegtEine einzige Zeile derWahrheitstabelle genügt, um eineBehauptung zu widerlegen, für denBeweis bräuchte man alle vier.

Links steht das Gesetz von De Morgan, rechts der häufigste Fehler damit, und der Unterschied ist ein einziges Zeichen. Beim Hineinziehen einer Negation wechselt der Operator; das ist keine Formalität, sondern der Kern der Regel. Anschaulich: „nicht (beide)“ heißt „mindestens einer nicht“, und „nicht (mindestens einer)“ heißt „keiner“. 🔴 Beachte, wie die rechte Spalte widerlegt wird: mit einer eingesetzten Zeile. Für eine Widerlegung genügt ein Gegenbeispiel, für einen Beweis bräuchte man alle vier Zeilen, diese Unsymmetrie gilt in der ganzen Mathematik und spart hier eine Menge Arbeit.

Vertiefung: NAND allein genügt

Dieser Abschnitt gehört zum erhöhten Anforderungsniveau.

Erstaunlich, aber leicht zu zeigen: Jede Schaltfunktion lässt sich allein mit NAND-Gattern bauen.

Der Nachweis ist kurz. Es genügt, NOT, AND und OR aus NAND zu bauen, denn mit diesen dreien ergibt sich über die DNF jede beliebige Funktion.

NOT: Beide Eingänge des NAND zusammenlegen.

a∧a‾=aˉ\overline{a \land a} = \bar{a}

AND: NAND, danach die Negation, also ein zweites NAND als NOT.

a∧b‾‾=a∧b\overline{\overline{a \land b}} = a \land b

OR: Beide Eingänge zuerst negieren, dann NAND. Der Nachweis ist De Morgan:

aˉ∧bˉ‾=aˉˉ∨bˉˉ=a∨b\overline{\bar{a} \land \bar{b}} = \bar{\bar{a}} \lor \bar{\bar{b}} = a \lor b

Damit sind alle drei Grundverknüpfungen aus NAND aufgebaut, und da jede Schaltfunktion über die DNF aus diesen dreien entsteht, ist die Behauptung bewiesen. Man nennt NAND deshalb funktional vollständig; für NOR gilt dasselbe.

Der praktische Nutzen ist groß: Eine Fertigung, die nur einen Gattertyp beherrschen muss, ist einfacher, billiger und gleichmäßiger in ihren Eigenschaften. In der Praxis bezahlt man das mit mehr pro Funktion, und deshalb baut man nicht wirklich alles aus NAND. Das Ergebnis zeigt aber, wie wenig im Kern nötig ist.

UND aus zwei NAND

aba ⊼ b&a ∧ b&a ∧ b

Zwei , und heraus kommt ein UND. Der Trick steckt im zweiten: Beide Eingänge kommen vom selben Draht, und ein NAND mit zweimal derselben Eingabe xx liefert x∧x‾=xˉ\overline{x \land x} = \bar{x}. Es wirkt also als NOT. Der zweite Baustein negiert damit die Ausgabe des ersten, und a∧b‾‾=a∧b\overline{\overline{a \land b}} = a \land b. Nach demselben Muster entstehen NOT (ein NAND mit beiden Eingängen an aa) und ODER (De Morgan: a∨b=aˉ∧bˉ‾a \lor b = \overline{\bar{a} \land \bar{b}}, also drei NANDs). Und weil sich mit NOT, UND und ODER über die DNF jede Schaltfunktion bauen lässt, folgt daraus: NAND allein genügt für alles. Genau deshalb fertigt man Chips mit einem einzigen Gattertyp, eine Bauart, millionenfach.

DNF aufstellen und vereinfachen

Stelle für „mindestens zwei von drei Sensoren melden" die DNF auf und vereinfache sie.

  1. 1

    Schritt 1: Zeilen mit y=1y=1 heraussuchen. Aus der Tabelle im Theorieteil sind das vier Zeilen: 011011, 101101, 110110, 111111.

  2. 2

    Schritt 2: je einen UND-Term bilden. Wert 0 heißt negiert, Wert 1 heißt unverändert:

    y=(aˉ∧b∧c)∨(a∧bˉ∧c)∨(a∧b∧cˉ)∨(a∧b∧c)y = (\bar{a} \land b \land c) \lor (a \land \bar{b} \land c) \lor (a \land b \land \bar{c}) \lor (a \land b \land c)
  3. 3

    Schritt 3: den letzten Term mehrfach verwenden. Wegen x∨x=xx \lor x = x darf man a∧b∧ca \land b \land c beliebig oft hinschreiben, ohne die Funktion zu ändern. Das ist der entscheidende Kniff:

    y=(aˉbc)∨(abˉc)∨(abcˉ)∨(abc)∨(abc)∨(abc)y = (\bar{a} b c) \lor (a\bar{b}c) \lor (ab\bar{c}) \lor (abc) \lor (abc) \lor (abc)
  4. 4

    Schritt 4: paarweise zusammenfassen. Jeweils zwei Terme unterscheiden sich in genau einer , und die fällt heraus, denn x∧v∨x∧vˉ=x∧(v∨vˉ)=x∧1=xx \land v \lor x \land \bar{v} = x \land (v \lor \bar{v}) = x \land 1 = x:

    (aˉbc)∨(abc)=bc(abˉc)∨(abc)=ac(abcˉ)∨(abc)=ab(\bar{a}bc) \lor (abc) = bc \qquad (a\bar{b}c) \lor (abc) = ac \qquad (ab\bar{c}) \lor (abc) = ab
  5. 5

    Ergebnis: y=(a∧b)∨(a∧c)∨(b∧c)y = (a \land b) \lor (a \land c) \lor (b \land c).

  6. 6

    Probe an zwei Zeilen. Für a=0,b=1,c=1a=0,b=1,c=1: 0∨0∨1=10 \lor 0 \lor 1 = 1, richtig. Für a=1,b=0,c=0a=1,b=0,c=0: 0∨0∨0=00 \lor 0 \lor 0 = 0, ebenfalls richtig. Zusätzlich ist der Term jetzt lesbar: „irgendein Paar meldet".

y=(a∧b)∨(a∧c)∨(b∧c)y = (a \land b) \lor (a \land c) \lor (b \land c) statt vier Dreifachtermen. Drei mit je zwei Eingängen statt vier mit je drei, und kein NOT mehr.

De Morgan anwenden

Vereinfache (a∨b)‾∨(a∧bˉ)\overline{(a \lor b)} \lor (a \land \bar{b}).

  1. 1

    Schritt 1: De Morgan auf den vorderen Teil. Beim Hineinziehen der Negation wechselt das ODER zum UND: a∨b‾=aˉ∧bˉ\overline{a \lor b} = \bar{a} \land \bar{b}.

  2. 2

    Damit: y=(aˉ∧bˉ)∨(a∧bˉ)y = (\bar{a} \land \bar{b}) \lor (a \land \bar{b}).

  3. 3

    Schritt 2: den gemeinsamen Faktor ausklammern. In beiden Termen steht bˉ\bar{b}: y=bˉ∧(aˉ∨a)y = \bar{b} \land (\bar{a} \lor a).

  4. 4

    Schritt 3: Komplementgesetz: aˉ∨a=1\bar{a} \lor a = 1, also y=bˉ∧1=bˉy = \bar{b} \land 1 = \bar{b}.

  5. 5

    Probe über die Wahrheitstabelle, weil das Ergebnis überraschend einfach ist:

    aabba∨b‾\overline{a \lor b}a∧bˉa \land \bar{b}ODERbˉ\bar{b}
    001011
    010000
    100111
    110000

    Die letzten beiden Spalten stimmen in allen vier Zeilen überein.

  6. 6

    Aus vier wird ein einziges NOT. Beachte, dass die aa vollständig verschwindet: Sie beeinflusst das Ergebnis gar nicht, was man dem Ausgangsterm nicht ansieht.

(a∨b)‾∨(a∧bˉ)=bˉ\overline{(a \lor b)} \lor (a \land \bar{b}) = \bar{b}, bestätigt durch die vollständige .

Typischer Fehler

„a∧b‾=aˉ∧bˉ\overline{a \land b} = \bar{a} \land \bar{b}, man zieht den Strich einfach auf beide ."

Das ist der häufigste Fehler der ganzen Schaltalgebra, und er ist mit einer einzigen Zeile widerlegt.

Setze a=1a = 1, b=0b = 0: Links: a∧b=0a \land b = 0, also 0‾=1\overline{0} = 1. Rechts: aˉ∧bˉ=0∧1=0\bar{a} \land \bar{b} = 0 \land 1 = 0.

1≠01 \neq 0, also ist die Regel falsch.

Richtig ist a∧b‾=aˉ∨bˉ\overline{a \land b} = \bar{a} \lor \bar{b}: Der Operator wechselt.

Die sprachliche Kontrolle trägt zuverlässig. „Nicht beide sind wahr" bedeutet „mindestens einer ist falsch", also ein Oder. Wer es mit einem Und übersetzt, behauptet „beide sind falsch", und das ist offensichtlich etwas anderes.

Ein Alltagsbeispiel macht den Unterschied greifbar: „Es ist nicht so, dass ich Zeit und Geld habe" heißt, dass mir mindestens eins von beiden fehlt. Es heißt nicht, dass mir beides fehlt.

Die Gegenprobe an einer einzigen gut gewählten Zeile ist übrigens ein allgemein brauchbares Werkzeug: Zum Widerlegen einer Umformung genügt eine Zeile, zum Bestätigen braucht man alle.

Übung 1

leicht

Gegeben:

aabbyy
001
010
101
111

a) Stelle die DNF auf. b) Wie viele braucht die direkte Umsetzung? c) Vereinfache den Term.

Tipp anzeigen

Zu c): Welche zwei Terme unterscheiden sich in genau einer ?

Lösung anzeigen

a) Drei Zeilen mit y=1y = 1:

y=(aˉ∧bˉ)∨(a∧bˉ)∨(a∧b)y = (\bar{a} \land \bar{b}) \lor (a \land \bar{b}) \lor (a \land b)

b) Zwei NOT-Gatter (für aˉ\bar{a} und bˉ\bar{b}), drei AND-Gatter mit je zwei Eingängen und ein OR-Gatter mit drei Eingängen, also sechs Gatter.

c) Die ersten beiden Terme unterscheiden sich nur in aa: (aˉ∧bˉ)∨(a∧bˉ)=bˉ∧(aˉ∨a)=bˉ(\bar{a} \land \bar{b}) \lor (a \land \bar{b}) = \bar{b} \land (\bar{a} \lor a) = \bar{b}

Es bleibt y=bˉ∨(a∧b)y = \bar{b} \lor (a \land b). Ein weiterer Schritt ist möglich, denn bˉ∨(a∧b)=bˉ∨a\bar{b} \lor (a \land b) = \bar{b} \lor a: Wenn bb falsch ist, ist yy ohnehin wahr; ist bb wahr, hängt es nur noch an aa.

Endergebnis: y=a∨bˉy = a \lor \bar{b} mit nur zwei Gattern statt sechs.

Detaillierte Schritterklärung anzeigen

Hier wird jeder Schritt einzeln erklärt, vor allem, warum er gemacht wird.

Erklärungstiefe

✦ Empfohlen: Standard – Die normale Erklärungstiefe passt zum Einstieg.

  1. 1

    a) Die DNF liest man aus den Einsen der Tabelle ab

    Für die disjunktive Normalform nimmt man nur die Zeilen mit y=1y = 1. Je Zeile entsteht ein UND-Term, in dem jede Variable vorkommt, negiert, wenn sie in dieser Zeile 0 ist. Alle Terme werden mit ODER verbunden: y=(aˉ∧bˉ)∨(a∧bˉ)∨(a∧b)y = (\bar{a} \land \bar{b}) \lor (a \land \bar{b}) \lor (a \land b).

    y=(aˉ∧bˉ)∨(a∧bˉ)∨(a∧b)y = (\bar{a} \land \bar{b}) \lor (a \land \bar{b}) \lor (a \land b)

  2. 2

    b) Die Gatter zählen, ohne etwas zu vergessen

    Man zählt gruppenweise: zwei NOT (für aˉ\bar{a} und bˉ\bar{b}), drei AND mit je zwei Eingängen (die drei Terme), ein OR mit drei Eingängen (die Verknüpfung). Zusammen sechs Gatter.

    Zwischenergebnis

    Sechs Gatter.

  3. 3

    c) Vereinfachen: benachbarte Terme zusammenfassen

    Man sucht Terme, die sich in genau einer Variablen unterscheiden. Die ersten beiden unterscheiden sich nur in aa: (aˉ∧bˉ)∨(a∧bˉ)=bˉ∧(aˉ∨a)=bˉ(\bar{a} \land \bar{b}) \lor (a \land \bar{b}) = \bar{b} \land (\bar{a} \lor a) = \bar{b}. Es bleibt y=bˉ∨(a∧b)y = \bar{b} \lor (a \land b), und ein weiterer Schritt ergibt y=a∨bˉy = a \lor \bar{b}, zwei Gatter statt sechs.

    y=bˉ∨(a∧b)=a∨bˉy = \bar{b} \lor (a \land b) = a \lor \bar{b}

    Zwischenergebnis

    y=a∨bˉy = a \lor \bar{b} mit zwei Gattern.

Übung 2

mittel

Eine Alarmanlage hat drei Eingänge: tt (Tür offen), ss (scharf geschaltet), kk (Schlüssel gesteckt). Der Alarm soll genau dann auslösen, wenn die Anlage scharf ist, die Tür offen ist und kein Schlüssel steckt.

a) Stelle die auf. b) Gib die DNF an. c) Zeichne die Schaltung als Beschreibung der und ihrer Verbindungen. d) Was ändert sich an der Tabelle und am Term, wenn der Alarm zusätzlich bei gestecktem Schlüssel ohne Scharfschaltung auslösen soll?

Tipp anzeigen

Zu b): Wie viele Zeilen der Tabelle haben Ergebnis 1?

Lösung anzeigen

a) Alarm nur bei s=1s=1, t=1t=1, k=0k=0:

ttsskkyy
0000
0010
0100
0110
1000
1010
1101
1110

b) Nur eine Zeile hat Ergebnis 1, also besteht die DNF aus einem einzigen Term:

y=t∧s∧kˉy = t \land s \land \bar{k}

c) Ein NOT-Gatter für kk; sein Ausgang zusammen mit tt und ss auf ein AND-Gatter mit drei Eingängen; dessen Ausgang ist yy. Zwei Gatter genügen.

d) Es kommt eine zweite Bedingung dazu: k=1k = 1 und s=0s = 0. Betroffen sind die Zeilen 001001 und 101101, die nun ebenfalls y=1y = 1 bekommen.

DNF mit drei Termen:

y=(t∧s∧kˉ)∨(tˉ∧sˉ∧k)∨(t∧sˉ∧k)y = (t \land s \land \bar{k}) \lor (\bar{t} \land \bar{s} \land k) \lor (t \land \bar{s} \land k)

Die letzten beiden unterscheiden sich nur in tt, lassen sich also zusammenfassen zu sˉ∧k\bar{s} \land k. Endergebnis:

y=(t∧s∧kˉ)∨(sˉ∧k)y = (t \land s \land \bar{k}) \lor (\bar{s} \land k)

Man liest es direkt als die beiden geforderten Fälle ab.

Detaillierte Schritterklärung anzeigen

Hier wird jeder Schritt einzeln erklärt, vor allem, warum er gemacht wird.

Erklärungstiefe

✦ Empfohlen: Standard – Die normale Erklärungstiefe passt zum Einstieg.

  1. 1

    Teil a): Alle Kombinationen systematisch aufschreiben

    Bei drei Eingängen gibt es 23=82^3 = 8 Zeilen. Man zählt im von 000000 bis 111111 hoch, dann fehlt garantiert keine.

    2^3 = 8\ \text{Zeilen}

    Zwischenergebnis

    Acht Zeilen, davon genau eine mit Ergebnis 1.

    Die Bedingung nennt für jeden Eingang einen Wert, deshalb ist von vornherein klar, dass nur eine Zeile passt.

  2. 2

    Teil b): Ein Term je Eins-Zeile

    Für die einzige Zeile mit y=1y=1 bildet man den Term. tt und ss haben Wert 1, kommen also unverändert vor; kk hat Wert 0 und wird negiert.

    y = t \land s \land \bar{k}

    Zwischenergebnis

    Ein einziger Term.

  3. 3

    Teil c): Den Term Gatter für Gatter übersetzen

    Jede Negation wird ein NOT, jedes UND ein AND mit entsprechend vielen Eingängen. Ein OR entfällt hier, weil es nur einen Term gibt.

    Zwischenergebnis

    NOT für kk, dann AND mit drei Eingängen.

    Die DNF hat sonst immer drei Ebenen. Bei nur einem Term fällt die ODER-Ebene weg, und das ist kein Sonderfall, sondern der Normalfall mit einem Summanden.

  4. 4

    Teil d): Die Tabelle ändern, nicht den Term raten

    Man geht zurück in die Tabelle und trägt die neuen Einsen ein. Erst danach stellt man die DNF neu auf und vereinfacht.

    (\bar{t},\bar{s},k) \lor (t,\bar{s},k) = \bar{s} \land k

    Zwischenergebnis

    y=(t∧s∧kˉ)∨(sˉ∧k)y = (t \land s \land \bar{k}) \lor (\bar{s} \land k).

Übung 3

schwer

a) Zeige durch eine vollständige , dass a∨b‾=aˉ∧bˉ\overline{a \lor b} = \bar{a} \land \bar{b} gilt. b) Vereinfache (a∧b)∨(a∧bˉ)∨(aˉ∧b)(a \land b) \lor (a \land \bar{b}) \lor (\bar{a} \land b) so weit wie möglich. c) (Vertiefung) Baue NOT, AND und OR allein aus NAND-Gattern und begründe damit, warum NAND funktional vollständig ist. d) Warum genügt zum Widerlegen einer Umformung eine einzige Tabellenzeile, zum Bestätigen aber nicht?

Tipp anzeigen

Zu b): Verwende x∨x=xx \lor x = x, um einen Term doppelt zu benutzen.

Lösung anzeigen

a) Wahrheitstabelle:

aabba∨ba \lor ba∨b‾\overline{a \lor b}aˉ\bar{a}bˉ\bar{b}aˉ∧bˉ\bar{a} \land \bar{b}
0001111
0110100
1010010
1110000

Die Spalten a∨b‾\overline{a \lor b} und aˉ∧bˉ\bar{a} \land \bar{b} stimmen in allen vier Zeilen überein, also gilt die Gleichung.

b) Man verwendet a∧ba \land b zweimal, was wegen x∨x=xx \lor x = x erlaubt ist:

(ab)∨(abˉ)∨(aˉb)=[(ab)∨(abˉ)]∨[(ab)∨(aˉb)](ab) \lor (a\bar{b}) \lor (\bar{a}b) = \big[(ab) \lor (a\bar{b})\big] \lor \big[(ab) \lor (\bar{a}b)\big]

Erste Klammer: a∧(b∨bˉ)=aa \land (b \lor \bar{b}) = a. Zweite Klammer: b∧(a∨aˉ)=bb \land (a \lor \bar{a}) = b.

Ergebnis: y=a∨by = a \lor b.

Die Probe bestätigt es: Der Term ist genau dann 0, wenn beide 0 sind, denn diese Zeile fehlt in der Aufzählung. Und genau das leistet a∨ba \lor b.

c) NOT: beide Eingänge zusammenlegen, denn a∧a‾=aˉ\overline{a \land a} = \bar{a}.

AND: ein NAND, dahinter ein zweites NAND als NOT: a∧b‾‾=a∧b\overline{\overline{a \land b}} = a \land b.

OR: beide Eingänge einzeln negieren (je ein NAND als NOT), dann ein NAND darüber:

aˉ∧bˉ‾  =De Morgan  aˉˉ∨bˉˉ  =  a∨b\overline{\bar{a} \land \bar{b}} \;\overset{\text{De Morgan}}{=}\; \bar{\bar{a}} \lor \bar{\bar{b}} \;=\; a \lor b

Begründung der Vollständigkeit: Jede Schaltfunktion lässt sich über die DNF aus NOT, AND und OR aufbauen; das gilt für jede beliebige Wahrheitstabelle. Da alle drei aus NAND bestehen, ist jede Schaltfunktion aus NAND allein aufbaubar. Der Preis sind mehr : Ein OR braucht bereits drei NAND statt eines OR.

d) Weil die beiden Aussagen logisch verschieden sind. Eine Umformung behauptet Gleichheit für alle Belegungen. Diese Behauptung ist widerlegt, sobald eine einzige Belegung sie verletzt; ein Gegenbeispiel genügt.

Umgekehrt behauptet man beim Bestätigen ebenfalls „für alle", und dafür reicht keine Auswahl von Zeilen aus. Man muss alle 2n2^n Belegungen prüfen, sonst könnte gerade die ungeprüfte Zeile das Gegenbeispiel enthalten. Bei zwei Variablen sind das vier Zeilen, bei drei acht.

Das ist dieselbe Asymmetrie wie beim Testen von Programmen: Ein Testlauf kann einen Fehler nachweisen, aber die Fehlerfreiheit nur belegen, wenn er alle Fälle abdeckt.

Detaillierte Schritterklärung anzeigen

Hier wird jeder Schritt einzeln erklärt, vor allem, warum er gemacht wird.

Erklärungstiefe

✦ Empfohlen: Standard – Die normale Erklärungstiefe passt zum Einstieg.

  1. 1

    a) De Morgan durch spaltenweisen Vergleich beweisen

    Man legt Zwischenspalten für a∨ba \lor b, a∨b‾\overline{a \lor b}, aˉ\bar{a}, bˉ\bar{b} und aˉ∧bˉ\bar{a} \land \bar{b} an und vergleicht die beiden Ergebnisspalten zeilenweise. Sie stimmen in allen vier Zeilen überein. Damit gilt die Gleichung.

  2. 2

    b) Einen Term doppelt benutzen: x ODER x = x

    Der Trick: Man verwendet a∧ba \land b zweimal, was wegen x∨x=xx \lor x = x erlaubt ist. Dann fasst man paarweise zusammen: Erste Klammer a∧(b∨bˉ)=aa \land (b \lor \bar{b}) = a, zweite Klammer b∧(a∨aˉ)=bb \land (a \lor \bar{a}) = b. Ergebnis: y=a∨by = a \lor b.

    (ab)∨(abˉ)∨(aˉb)=a∨b(ab) \lor (a\bar{b}) \lor (\bar{a}b) = a \lor b

  3. 3

    c) (Vertiefung) NOT, AND und OR aus NAND bauen

    NOT: beide Eingänge zusammenlegen, denn a∧a‾=aˉ\overline{a \land a} = \bar{a}. AND: ein NAND, dahinter ein zweites NAND als NOT: a∧b‾‾=a∧b\overline{\overline{a \land b}} = a \land b. OR: beide Eingänge einzeln negieren (je ein NAND als NOT), dann ein NAND darüber, nach De Morgan ergibt das a∨ba \lor b.

  4. 4

    d) Warum Widerlegen eine Zeile braucht und Bestätigen alle

    Weil die beiden Aussagen logisch verschieden sind. Eine Umformung behauptet Gleichheit für alle Belegungen. Diese Behauptung ist widerlegt, sobald eine einzige Belegung sie verletzt, ein Gegenbeispiel genügt. Umgekehrt behauptet man beim Bestätigen ebenfalls „für alle“, und dafür reicht keine Auswahl von Zeilen: Man muss alle 2n2^n prüfen.

Zusammenfassung

Aus jeder lässt sich ohne Einfall eine Schaltung gewinnen: Man bildet für jede Zeile mit Ergebnis 1 einen UND-Term, in dem mit Wert 0 negiert auftreten, und verbindet alle Terme mit ODER. Das funktioniert immer, weil jeder Term genau für seine eine Zeile wahr ist, und liefert unmittelbar eine dreistufige Schaltung aus NOT, AND und OR. Weil die so entstandene Form meist unnötig groß ist und jedes Fläche, Strom und Laufzeit kostet, vereinfacht man anschließend mit den Gesetzen der Schaltalgebra; besonders nützlich ist das Zusammenfassen zweier Terme, die sich in genau einer Variablen unterscheiden, wobei x∨x=xx \lor x = x erlaubt, einen Term mehrfach zu verwenden. Bei De Morgan wechselt beim Hineinziehen der Negation der Operator, was die sprachliche Probe „nicht beide heißt mindestens einer nicht" bestätigt. Schließlich lässt sich jede Schaltfunktion allein aus NAND aufbauen, weil NOT, AND und OR daraus entstehen und die DNF alles Übrige auf diese drei zurückführt.