Erstellen Reduziert Ordered Binary Decision Diagramms (ROBDD) aus Wahrheitstabelle
Ist es ein software-Paket (vorzugsweise eine Anwendung, keine library) erzeugt Reduziert Ordered Binary Decision Diagrams (ROBDDs) aus einer gegebenen Wahrheitstabelle (im text format)?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie auch versuchen, diese: http://formal.cs.utah.edu:8080/pbl/BDD.php
Es ist das beste Werkzeug für die BDDs, die ich bisher verwendet.
BDDs sind ein memory-constrained-data-Struktur wegen der starken Abhängigkeit von der Erkennung doppelte sub-truthtables. Die meisten BDD-Pakete, die Sie finden werden, sind nicht gerade eine gute Passform für große, Allgemeine Wahrheit Tabellen, stattdessen optimiert für eine sehr geringe Dichte, repetitiven Ausdrücke.
Mit den standard-BDD-Pakete, mit denen Sie arbeiten Ausdrücken Betrieb auf Variablen. So hätten Sie zum Durchlaufen Ihrer Wahrheit Tabelle, die Konstruktion so etwas wie ein Produkt-von-Summen-Ausdruck für 1s in der Tabelle. Entlang des Weges, die meisten Bibliotheken werden dynamisch die Reihenfolge der Variablen fit von Speichermangel, was anderen große Verlangsamung. Nach etwa 24 Variablen, auch mit sehr spärlicher Wahrheit Tabellen, diese Bibliotheken beginnen zu thrash auf moderne Systeme.
Wenn Sie nur suchen für die endgültige BDD-Knoten gegeben, eine Wahrheit, die Tabelle mit der variable der Bestellung bereits implizit definiert sind, können Sie überspringen viel von der Komplexität, die mit externen Bibliotheken und schrecklich Laufzeiten, nur mit einigen Unix text processing tools.
Eine gute Ressource, auf BDDs Knuths TAOCP v4.1b, zeigt die Gleichwertigkeit der BDD-Knoten und Ihre "Perlen" sub-truthtables, die non-square strings. Ich werde-Adresse eine einfachere version, ZDDs, die haben ähnliche Strukturen, genannt "zeads": positive Teil sub-truthtables, die sind nicht ganz null. Zu verallgemeinern zurück zu BDDs, ersetzen sed+grep in der pipeline, die mit einem Programm-Filterung square strings anstatt zu halten positiven Teil nicht-null-Zeichenfolgen.
Drucken alle zeads einer truthtable (gegeben als eine Online-Datei im ascii '1 und '0' s, newline am Ende), führen Sie den folgenden Befehl nach der Einstellung der Anzahl der Variablen und dem Dateinamen:
Diese hat viele Vorteile gegenüber BDD-Pakete:
Ich benutze es regelmäßig für truthtables bis zu 32 Variablen, die großen, die sich nicht realistisch kommen mit die Verwendung von BDD-Bibliotheken. Sie Steuern nicht den memory-system überhaupt, kaum mit ein paar MBs. Aber wenn Sie haben eine Tonne von RAM zur Verfügung, ein anständiges OS wie Linux gerne benutze es die ganze Festplatte für die Zwischenspeicherung, um es noch schneller.
Mit jeder BDD-Bibliothek, die Sie tun können, was Sie wollen. Natürlich müssen Sie schreiben ein Stück code selbst.
Wenn Sie auf der Suche für ein leichtes Werkzeug, verwende ich oft ein applet wie dieses zu haben, ein kurzer Blick auf die BDD einer Funktion:
http://tams-www.informatik.uni-hamburg.de/applets/java-bdd/