Logische Ausdrücke vereinfachen
-
CStoll schrieb:
Sagt dir DeMorgan etwas?
Ja durchaus! Ich weiß nur nie, ob ich das auch hier anweden kann, weil ich unsicher bin, ob man das auf mehrere Faktoren anwenden kann. Daher substituiere ich auch immer wie blöde, damit ja kein Fehler reinkommt. Leider ohne Erfolg.
Danke für deine Lösung.
volkard schrieb:
Bei der Einführung von D haste umgeklammert. Darf das?
Eigentlich muss ich das sogar tun, denn ich ersetze einen Buchstaben durch einen ganzen Ausddruck. Liegt da wirklich mein Fehler? Das kann ich mir nicht vorstellen.
Könnt ihr mir helfen, meinen Fehler in meiner Version zu finden, weil eigentlich müsste ja auch mein umständlicher Weg funktionieren.
Vielen Dank
lg, freakC++
-
Der Unterschied zu meiner und CStolls Version tritt hier auf.
CStoll:
\begin{math} (\overline {(A \wedge B)} \wedge A) \vee B \end{math}Ich:
\begin{math} \overline {(A \wedge B)} \wedge A \vee B \end{math}
Es hat tatsächlich etwas mit Klammerung zu tun. Warum kann ich das denn nicht so machen, wie ich es geschrieben habe?
Danke
-
Das Assoziativgesetz gilt nur bei gleichen Operatoren und afaik ist keine RAngfolge zwischen den logischen Operatoren definiert - d.h. der Ausdruck \begin{math} A \vee B \wedge C \end{math} ist nicht klar definiert, deshalb solltest du dort Klammern setzen, umd den Unterschied zwischen \begin{math} (A \vee
\wedge C \end{math} und \begin{math} A \vee (B \wedge C) \end{math} kenntlich zu machen.
-
Ich muss mich selbst korrigieren. Ich denke, Du has recht, weil die Stellung der Klammerung egal ist: Es kommt immer etwas anderes raus. Das ist ein Unterschied zu "normaler Algebra".
\begin{math} A \vee B \wedge C \end{math}
\begin{math} (A \vee
\wedge C = (A \wedge C) \vee (B \wedge C) \neq A \vee B \wedge C \end{math}
\begin{math} A \vee (B \wedge C) = (A \vee C) \wedge (B \vee C) \neq A \vee B \wedge C \end{math}
Eine Klammerung verändert den Ausdruck also immer. Deswegen ist er nicht eindeutig bestimmt. Könnte man ihn von links nach rechts lesen, dann könnte ich auch Klammern setzten und da kommt wie man oben sieht etwas anderes raus.
Viele Grüße
freakC++
-
freakC++ schrieb:
CStoll schrieb:
der Ausdruck \begin{math} A \vee B \wedge C \end{math} ist nicht klar definiert
Das glaube ich nach ein paar Überlegungen jetzt nicht mehr. Ich schätzhe mal, dass man wie üblich von links nach rechts liest und ggf. Klammern setzen kann, um dem Ausdruck eine andere Bedeutung zu verleihen.
Eigentlich ist es üblicher "und" stärker binden zu lassen, weil "und" im Prinzip eine binäre Multiplikation ist.
-
Dann könnte ich um den UND - Audruck auch Klammern setzen. Das würde aber den ganzen Term verändern, wie man bei meinem letzten Post sieht.
-
Jester schrieb:
Eigentlich ist es üblicher "und" stärker binden zu lassen, weil "und" im Prinzip eine binäre Multiplikation ist.
Punkt für dich - aber es ist besser Klammern zu setzen als sich durch die fehlenden Klammern verwirren zu lassen
@freak: In der booleschen Algebra gelten mitunter andere Regeln als beim Rechnen mit gewöhnlichen Zahlen.
-
CStoll schrieb:
aber es ist besser Klammern zu setzen als sich durch die fehlenden Klammern verwirren zu lassen
sehe ich genauso. Das einzige worauf ich mich wirklich einlassen würde, wäre die "und"s ganz wegzulassen und es dadurch wirklich wie ne Multiplikation zu schreiben, dann ist es imo relativ klar. Ansonsten denke ich, dass man mit klammern besser fährt.
@freakC++: es geht ja nicht darum, dass du nach belieben umklammern darfst, sondern darum wie so ein ausdruck zu lesen ist, wenn die klammern fehlen. Offensichtlich kommen je nach Konvention, die man verwendet unterschiedliche Dinge raus, also ist es wichtig sich auf eine Konvention zu einigen. Keine davon ist aber per se falsch. Du hast vorgeschlagen wie "normal auch" einfach von links nach rechts zu klammern. Mein Einwand war nun, dass du "2+3*5" ja auch nicht von rechts klammerst, sondern eben die Multiplikation stärker bindet, also die Klammern dorthin gehören... und bei "und" ist es eben ähnlich. Trotzdem kann man sich natürlich auch auf eine andere Konvention einigen und damit leben.
-
CStoll schrieb:
aber es ist besser Klammern zu setzen als sich durch die fehlenden Klammern verwirren zu lassen
Aber das geht doch gar nicht. Ich könnte bei 2+3*5 auch 2+(3*5) schreiben. Es wäre dasselbe. Wenn ich aber jetzt beim boolschen Ausdruck Klammern setze, dann kommt automatisch etwas anderes raus, wie ich ja gezeigt habe.
Übersehe ich da was?
-
freakC++ schrieb:
Aber das geht doch gar nicht. Ich könnte bei 2+3*5 auch 2+(3*5) schreiben. Es wäre dasselbe.
und wenn du (2+3)*5 schriebst?
-
freakC++ schrieb:
CStoll schrieb:
aber es ist besser Klammern zu setzen als sich durch die fehlenden Klammern verwirren zu lassen
Aber das geht doch gar nicht. Ich könnte bei 2+3*5 auch 2+(3*5) schreiben. Es wäre dasselbe. Wenn ich aber jetzt beim boolschen Ausdruck Klammern setze, dann kommt automatisch etwas anderes raus, wie ich ja gezeigt habe.
Übersehe ich da was?
Ja - eine definierte Rangfolge hat den selben Effekt wie Klammern, deshalb sind bei diesem "Beweis" das ≠ nicht
freakC++ schrieb:
\begin{math} A \vee (B \wedge C) = (A \vee C) \wedge (B \vee C) \neq A \vee B \wedge C \end{math}
die Ausdrücke sind äquivalent, auch wenn sie nicht so aussehen.
(die Operationen in einem Verbund sind gleichberechtigt, in einem Ring nicht)
-
also ist das Ungleich hier falsch? Das bedeutet also, dass man "und" als "mal/geteilt" und "oder" als "plus/minus" ansehen kann?
-
Durch die vordefinierte Rangfolge der Operationen kannst du so tun, als wäre um das BΛC eine Klammer gesetzt
Und mit der Vergleich UND==MAL bzw. ODER==PLUS solltest du vorsichtig sei - wie gesagt gelten in der Booleschen Algebra einige andere Regeln (z.B. gilt das Distributivgesetz bei Zahlen nicht in der Form "a+(b*c) = (a+b)*(a+c)".Vielleicht solltest du dich doch einmal mit den verschiedenen algebraischen Strukturen beschäftigen: Die ganzen Zahlen (mit Addition und Multiplikation) bilden einen Ring, die Boolesche Algebra (mit UND und ODER) einen Verband.
-
Das ist wahrscheinlich keine schlechte Idee. Über Ringe und Verbände habe ich noch was gehört. Ich denke, dass ich es jetzt noch nicht brauche, weil wir das ja nur in der Schule machen. Dennoch danke für die Begrifflichkeiten, denn es ist immer gut zu wissen, wie sowas funzt. Ich meld mich bei weiteren Fragen
Den Vergleich mit UND == Mal wollte ich auch nur auf die Punkt-vor-Strich - Regel anwenden.
lg, freakC++
-
Also ich kann bei Gleichungen mit bis zu 5 Variablen KV Diagramme empfehlen.
Ansonsten gibt es da immer noch das Verfahren nach Quine und McCluskey.
-
freakC++ schrieb:
also ist das Ungleich hier falsch? Das bedeutet also, dass man "und" als "mal/geteilt" und "oder" als "plus/minus" ansehen kann?
Ich denke du solltest nicht versuchen boolsche Logik und das Rechnen mit reelen Zahlen zu vermischen. Das sind zwei verschiedene Dinge!
Schau es dir mal von einer anderen Seite an: Du hast einige Regeln vorgegeben, die dir sagen, sie du mit logischen Ausdrücken umgehen kannst. Z.B.\begin{math} A \vee B = B \vee A\end{math}
\begin{math} A \wedge (B \wedge C) = (A \wedge\wedge C\end{math}
\begin{math} A \vee \bar A = 1\end{math}Einige Axiome gelten auch beim Rechnen mit reelen Zahlen... andere aber nicht. Wenn du jetzt einen Ausdruck vereinfachst / umformst, machst du nichts anderes als diese Axiome anzuwenden. Das hat erst mal nichts mit dem + und * zu tun, was du kennst.
Du kannst nicht sagen: $$\vee$$ hat Ähnlichkeiten mit + und $$\wedge$$ hat Ähnlichkeiten mit *, deshalb darf ich auch ausmultiplizieren wie ich es mir gewohnt bin.Ich persönlich schreibe normalerweise "A+B" für A OR B und "AB" für A AND B, wenn ich logische Ausdrücke vereinfache. Mir fällt es dann leichter, weil ich intuitiv die Priorität der Operatoren richtig verwende. Das ist aber nur eine Notation... auch wenn der Ausdruck so geschrieben ist lese ich "AB+CD" als "A UND B ODER C UND D" und nicht etwa mit MAL und PLUS.
Hoffentlich habe ich dich jetzt nicht mehr verwirrt als du schon bist ;).
-
+ ist bei mir xor.
-
knivil schrieb:
+ ist bei mir xor.
Hier haste ein paar Kringel zum Ausschneiden. Die kannste dann immer ums + machen:
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO~(Ja, ich weiß, daß man zum Beispiel in der Codierungstheorie gerne den Kringel wegläßt.)~
-
Ist das hier richtig?
\begin{math}(\bar B \wedge C) \wedge (\bar A \vee C) = ((\bar B \wedge C)) \wedge \bar A) \vee C = (\bar B \wedge C \wedge \bar A) \vee C = C \end{math}
danke
-
Nein. Der linke Ausdruck impliziert B=false, der rechte offensichtlich nicht. Wie ist deine Begründung für das erste Gleichheitszeichen?