Hilfe bei Boolescher Algebra?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

In den vorgeschlagenen Termen stehen ja jeweils alle 4 Variablen. Im Funktionsterm stehen in jedem "Summanden" jeweils nur 3 - Sinn der Aufgabe ist gerade, diese Ausdrücke durch Ausdrücke mit allen 4 Variablen zu ersetzen (Kontrolle, ob man das Wesen der DNF verstanden hat).

Woher ich das weiß:Hobby – Hobby, Studium, gebe Nachhilfe

CyborgBeta  26.10.2023, 12:07

Sinn ist, zu erkennen, dass man jeweils eine Variable nicht berücksichtigen braucht, und dennoch das Ergebnis bestimmen kann.

0
PWolff  26.10.2023, 12:26
@CyborgBeta

Das würde aber den Wortlaut der Aufgabe nicht erklären. Anscheinend heißt hier "disjunktive Normalform", was woanders "kanonische disjunktive Normalform" (vgl. Antwort von iQa1x) heißt.

Man kann den 2. Term der Disjunktion (Funktionsterm) auch weglassen, ohne dass sich das Ergebnis ändert, aber das scheint nicht Sinn der Aufgabe zu sein.

0

Als Ergänzung: Die mit allen Variablen heist kanonisch disjunktive Normalform (KDNF), die gibt es auch.

Probiere es aus:

function f(a, b, c, d) {
  return (!b && c && d) || (a && !b && c) || (a && !b && !d);
}

function table() {
  for (let index = 0; index < 16; index++) {
    let x0 = (index & 1) == 1;
    let x1 = ((index >> 1) & 1) == 1;
    let x2 = ((index >> 2) & 1) == 1;
    let x3 = ((index >> 3) & 1) == 1;
    let result = f(x3, x2, x1, x0);
    if (result) {
      console.log(x3 + " " + x2 + " " + x1 + " " + x0 + " (" + index + ")");
    }
  }
}

table();

Zum Beispiel hier: https://jsfiddle.net/

Das Kreuzchen bei "n." dürfte falsch sein.

Der Trick ist, dass du jeweils nur drei relevante Variablen betrachten musst, da der Term schon als DNF gegeben wurde. Der Wert der vierten Variable ist dann nicht von Belang.

Woher ich das weiß:Studium / Ausbildung

CyborgBeta  26.10.2023, 12:15
(!b && c && d) || (a && !b && c) || (a && !b && !d)

Pardon, der Term/Funktion sollte so lauten:

function f(x3, x2, x1, x0) {
  return (!x2 && x1 && x0) || (x3 && !x2 && x1) || (!x3 && x2 && !x0) || (x3 && !x2 && !x0);
}
0
CyborgBeta  26.10.2023, 12:21

Die Ausgabe lautet dann:

"false false true true (3)"

"false true false false (4)"

"false true true false (6)"

"true false false false (8)"

"true false true false (10)"

"true false true true (11)"

Damit wären a. d. g. k. l. und n. richtig.

1