Algorithmus - Minimierung boolescher Ausdrücke

Ich versuche zu schreiben ein Stück code, das kann reduzieren die LÄNGE eines booleschen Ausdrucks auf ein minimum, so sollte der code reduzieren Sie die Anzahl der Elemente in den Ausdruck ein, um so wenig wie möglich. Jetzt bin ich stecken und ich brauchen etwas Hilfe, = [

Hier ist die Regel: es kann beliebig viele Elemente in einen booleschen Ausdruck, aber es enthält nur und-UND ODER-Operatoren, plus Klammern.

Zum Beispiel, wenn ich pass in einen booleschen Ausdruck: ABC+BCD+DE, die optimale Leistung wäre BC(A+D)+DE, das spart 2-unit-Räume im Vergleich zum original, da die beiden BCs sind kombiniert in einem.

Meine Logik ist, dass ich werde versuchen, die am häufigsten erschien element im Ausdruck und Faktor aus. Dann rufe ich die Funktion rekursiv, das gleiche zu tun, um die einkalkuliert Ausdruck, bis Sie völlig verplant.
Aber wie finde ich das häufigste element im ursprünglichen Ausdruck? Das heißt, im obigen Beispiel, BC? Wie es scheint, ich würde versuchen, alle verschiedenen Kombinationen von Elementen, und findet die Anzahl, wie oft jede Kombination wird in der gesamten Ausdrucks. Aber das klingt sehr naiv.
Zweite

Kann mir jemand einen Tipp geben wie man diese effizient? Sogar einige Stichwörter kann ich die Suche auf Google zu tun.

  • Verwenden Sie die Karnaugh Karte, Luke?
  • Ya hab ich gedacht, aber das ist nur, wenn Sie mit Stift und Papier richtig? Wie kann ich einen computer-code, der es tut?
  • Mit den Klammern, BC - (A+D)+DE-und ABC+BCD+DE sind gleich lang. Ich bin auf das gleiche problem jetzt. Diese link über Sie spricht ein wenig unter die Algebraische Minimierung Abschnitt. Ich denke, es ist einfach zu tun übergibt, gelten die booleschen Identitäten der Formel.
InformationsquelleAutor turtlesoup | 2012-07-04
Schreibe einen Kommentar