2011-09-28 6 views
-1

J'écris un outil qui traite de l'algèbre booléenne. Il s'agit essentiellement d'un outil permettant de créer une machine d'état basée sur un fichier défini par l'utilisateur qui contient des noms d'état, des conditions et des informations de transition. La méthode par laquelle les transitions d'état se produisent consiste essentiellement à regarder une table logique booléenne. par exemple. transition de State1 à STATE2 si:Je recherche une bonne bibliothèque d'algèbre booléenne

(A & B) | (C & ~D) | (E) 

J'ai tout cela mis en œuvre, mais maintenant je dois ajouter la possibilité de faire des choses amusantes comme inverser tout le tralala:

~((A & B) | (C & ~D) | (E)) = (via DeMorgan) (~A & ~C & ~E) | (~A & D & ~E) | (~B & ~C & ~E) | (~B & D & ~E) 

Le résultat doit être en Disjunctive Normal Form. Fondamentalement, je ne veux pas écrire moi-même et j'espère qu'il y a une bibliothèque quelque part qui sait comment faire face à ce genre de choses. Je suis tombé sur SymPy, mais je ne suis pas sûr qu'il existe un module d'algèbre booléenne.

Mon application est écrite en C (probablement ne devrait pas être), mais tout peut aider.

+2

... Pourquoi ne pas inverser le résultat juste? –

+0

@TomZych - Fondamentalement, toute opération que j'effectue doit se terminer sous la forme de (X & Y) | (W & Z) | ... – BabaBooey

+0

@Tom Zych: Donc en d'autres termes, il semble qu'il cherche quelque chose qui retournera une arborescence d'expression affichable ou une liste de symboles ou autre. –

Répondre

1

Plutôt que d'incorporer du code, j'ai trouvé quelques excellentes applications qui sont libres pour n'importe quel usage (via l'Université de Californie). Un outil appelé Logic Friday a une bonne interface à quelques autres applications: misii et expresso (inclus dans l'installation), qui effectuent l'algèbre booléenne symbolique.

Il n'y a pas une très bonne interface de ligne de commande, mais vous pouvez passer des fichiers pour faire le travail. Cela effectue la minimisation que je cherchais.

+0

Merci Tim. Je cherchais aussi quelque chose comme ça. – Dilawar

0

Vous pouvez essayer ce projet open source, bien que ce ne est pas une bibliothèque, vous pouvez simplement copier le Boolean Algebra Class ajouter à votre projet

Questions connexes