Boolsche Algebra - Funktionen vereinfachen?

Zorck

Erfahrenes Mitglied
Hallo,
ich hab mal ne Frage. Und zwar will ich ein Programm schreiben.
Wollen ist vielleicht nicht ganz richtig. Ich muss.
Daher wollte ich fragen, ob mir wer helfen kann. Hat irgendwer Quelltext rumzuliegen, mit dem ich Aussagenlogische Funktionen vereinfachen und/oder Schaltungen dazu zeichnen kann?
Muss nich unbedingt in VB sein. Vielleicht kann ich mir dann den Quelltext auseinanderfutzeln.
Fertige Programme(natürlich mit Quelltext)oder Adressen sowie Tipps kann ich natürlich auch gut gebrauchen.

Ich hoffe es kann mir wer helfen. Danke schon einmal!:)
 
ich versteh irgendwie nicht so ganz, worauf du hinaus willst. wenn es dir nur darum geht, fallunterscheidungen zu verkürzen, kannst du einfach logische ausdrücke zuweisen.
Code:
If x = 2 Then
    y = False
Else
    y = True
End If
... wird ...
Code:
y = Not (x = 2)

ansonsten beschreib doch mal genauer, was du meinst.
 
Es geht darum, ein Programm zu schreiben mit dem man logische Funktionen vereinfachen kann. Diese Funktionen dienen dazu logische Schaltungen zu zeichnen. So wie ein Computer halt funktioniert nur auf der niedrigsten Stufe.

Da man ja immer danach bestrebt ist so wenig Bauteile wie möglich zu verwenden um alles billiger und kleiner zu gestalten, versucht man solche Funktionen zu vereinfachen.

Weist du jetzt was ich meine??
Wenn nicht, kann ich mir auch nicht vorstellen, dass du mir dann helfen könntest (is nich böse gemeint;) ).
Aber vielleicht hab ichs auch wirklich nur zu blöd beschrieben.
 
was du meinst, versteh ich schon. aber ich wüsste nicht, wie man eine boolesche anweisung vereinfachen könnte. man könnte z.b. eine komplexe anweisung wie
Code:
If (Not x Or y) And ((z = 7) Or (z = 5)) Then ...
aufteilen, und in einzelnen schritten durch die gleichen bauteile laufen lassen. aber das ist wahrscheinlich nicht das, was du meinst. mehr fällt mir dazu aber nicht ein...
 
Es geht darum logische Funktionen nach bestimmten Gesetzen umzustellen und so zu vereinfachen. Also genauso wie bei mathematischen Funktionen.

So ist z.B. (not A and A) = 0
Dann gibt es aber auch wie bei "normalen" Gleichungen Distributivgesetze usw.

Noch ein Beispiel: f(A,B)=not(not (A and B) and (not A and B))
und nach der Vereinfachung: f(A,B) = A and not B

Das ist doch nun einfacher und leichter vorzustellen. Und man benötigt nun weniger Bauteile.
 
schon klar, was du meinst. eine solche code-optimierung ist bei manchen entwicklungsumgebungen integriert. das geht also schon teilweise in die gleiche richtung wie compilerbau.
aber da boolesche algebra ja eigentlich nicht viele schlüsselworte kennt (not, and, or, nor, xor, etc.) lässt sich da sicher was einfaches machen. du kannst ja einfach eine eingegebene logische anweisung wie in deinem beispiel eingeben und in ihre einzelteile zerlegen. danach vereinfachst du dann das ganze, indem du ein paar sachen zusammenfasst, oder einfach nur negierst.
 
Ja, vom Prinzip ist mir das schon klar wie ich das mache.
Aber das ist doch gar nicht so einfach die ganzen Rechengesetze zu beachten. Abgesehen davon basieren die Befehle die du genannt hast (xor,nor ...) alle nur auf den drei befehlen and,or,not. Also sind es noch weniger. Ich finde aber, dass es dadurch nicht einfacher wird.

Schau mal nochmal hier!
So ungefähr soll das Programm werden (nur ohne Diagramm)
 
Zuletzt bearbeitet:
Ich finde aber, dass es dadurch nicht einfacher wird.
was du vorhast, ist nun mal nicht gerade einfach. ich kann dir nur sagen, dass du die logische anweisung in einzelne tokens aufteilen musst, die du dann untersuchst.
bestandteile der anweisung sind dann schlüsselwörter (not, and, or), klammern und werte. im prinzip ist das schon eine art compiler, und compilerbau ist ein nicht ganz so leichtes thema. trotzdem gehört compilerbau zu einem der am besten erforschten gebiete in der informatik und somit gibts auch einiges an lektüre zu diesem thema.
 
Ja,kann ich mir echt gut vorstellen.Aber ich hatte gehofft, dass irgendwer schon ein ähnliches Programm geschrieben hat.
Naja, vielleicht meldet sich ja noch wer.
 

Neue Beiträge

Zurück