Zum Inhalt gehen.

Menü



Valid XHTML 1.0 Strict
Valid CSS
RSS der Elektroniker Bude abonnieren

Boolesche Ausdrücke vereinfachen (Axiome)

Eingabe

Als Variablen können die kleinen Buchstaben von a bis z verwendet werden. Die booleschen Operatoren werden angegeben als AND: *, OR: +, NOT: ~. Zum Klammern von Teilausdrücken nur runde Klammern »(« und »)« verwenden.
Für TRUE und FALSE können 1 und 0 verwendet werden.
Das AND kann ausgelassen werden, da nebeneinander stehende Ausdrücke wie »ab« oder »(a+b)(a+b)« automatisch als »a*b« oder »(a+b)*(a+b)« interpretiert werden.
Der Operator »~« gilt im Normalfall nur für die direkt folgende Variabel oder den Operator, um ganze Teilausdrücke zu negieren muss die Tilde vor den geklammerten Ausdruck gesetzt werden »~(a+b)=~a~+~b = ~a~b«.

Es werden Ausdrücke mit maximal 26 Variablen und maximal 200 Zeichen bearbeitet. Je nach Ausdruck kann es aber sein, dass das Vereinfachen zu rechenintensiv ist, die Berechnung wird dann abgebrochen.



Siehe: Eingabebeispiele

Rechnung

Eingabe: a+~b+~ab+(a+~b)(~ab)
----------
Ausmultipliziert: a+~b+~ab+a~ab+~b~ab
----------
Axiom 9: a * ~a = 0
Axiom 6: etwas * 0 = 0 => a+~b+~ab+~b~ab
Axiom 9: b * ~b = 0
Axiom 6: etwas * 0 = 0 => a+~b+~ab
Axiom 9x': ~ab + a = b + a => a+~b+b
Axiom 9: b + ~b = 1 => a+1
Axiom 6': etwas + 1 = 1 => 1
----------
Ergebnis: 1

Alle Ergebnisse mit Vorbehalt behandeln und selber nachrechnen!

Eine andere Möglichkeit wäre die Boolesche Vereinfachung mit Karnaugh-Veitch-Diagramm.

Rechenverfahren

Das Verfahren zum Vereinfachen der Ausdrücke stützt sich auf die Axiome(externer Link) der booleschen Algebra.

Zuvor wird der eingegebene Ausdruck über eine rekursive Funktion in die einzelnen »Klammer-Ebenen« zerlegt und diese ausmultipliziert, sowie die Negierungszeichen interpretiert. Dieser Vorgang ist auf dem Papier leicht durchzuführen zeigt sich aber bei der Implementierung in einem Programm als sehr Komplex. Aus diesem Grund ist es wichtig, das alle Klammern korrekt gesetzt werden (Eingabebeispiele).

Nach dem alle Klammern aufgelöst wurden werden die Variablen sortiert und es werden die booleschen Axiome in fester Reihenfolge so lange angewandt, bis keine Kürzung mehr auftritt. Durch das vorherige Auflösen der Klammerung werden nicht alle Axiome benötigt. Die Nummerierung der Axiome folgt der von Wikipedia, für 9x' ist der richtige Name nicht bekannt. Mit Axiom 12 ist die Konsensusregel gemeint, die ebenfalls auf der Wikipedia nachgelesen werden kann. Es werden nicht alle Axiome angezeigt, einige einfache Regeln werden still angewandt.

Hier einige Eingabebeispiele:

Wie richtig sind denn die Ergebnisse?

Die letzten 12677 Ausdrücke, die in diesen Rechner eingegeben wurden, habe ich mit der jetzigen Version nachgerechnet. Ob die Vereinfachungen fehlerfrei sind, wurde mit dem Programm Derive 6 von Texas Instruments überprüft.

Von 12677 Ausdrücken waren 2571 fehlerhaft in der Eingabe (falsche Zeichen) oder zu aufwendig für mein Programm, von den verbleibenden 10006 konnten 41 nicht von Derive überprüft werden weil zu rechenintensiv.

Von den endgültig überprüften waren alle mathematisch korrekt berechnet.

Danke an Marvin aus Herne für den Hinweis, dass Axiom 11 teilweise nicht angewandt wurde, obwohl damit eine Vereinfachung möglich wäre. Sowie den Hinweis auf das »Axiom 12«. Diesen Fehler habe ich behoben, das Ergebnis war dadurch nicht falsch, aber nicht komplett minimiert.

Erstellt im Dezember 08, überarbeitet im Februar 11.