npn
v1.1
Ce package est un correspondant booléen. Il calcule simplement le représentant canonique, qui est unique pour chaque classe d'équivalence NPN, pour une fonction booléenne donnée représentée par la table de vérité.
Le backend de ce package est implémenté par C ++ pour l'efficacité.
Actuellement, ce package prend en charge les fonctions booléennes avec le nombre d'entrées <= 8.
pip install npn import npn
# the truth table of f(x_2, x_1, x_0) as [f(0, 0, 0), f(0, 0, 1), f(0, 1, 0), f(0, 1, 1), ...]
tt = [ True , True , True , False , True , True , True , True ]
c = npn . npn_canonical_representative ( tt ) # [True, True, True, True, True, True, True, False]
c_int = npn . tt_to_int ( c ) # 254 (11111110)
c , phase , perm , output_inv = npn . npn_canonical_representative ( tt , return_details = True , refinement = True )return_details sur True pour renvoyer les informations de transformation NPN ( phase, perm, output_inv ). Par exemple, ici phase = [False, False, True] , perm = [0, 1, 2] et output_inv = False signifie (x_0, x_1, x_2) doit être mappé à (x_0, x_1, x_2) , alors la troisième variable ( x_2 ) doit être inversée et le résultat final ne doit pas être inversé.refinement sur True à l'accélération du calcul tout en brisant l'ordre lexicographique des tables de vérité. Voir «Construire un meilleur matchur booléen et détecteur de symétrie» pour plus de détails. Compilez la bibliothèque partagée libnpn.dll et libnpn.so via Cmake sur Windows et Linux Environment, placez-les dans le dossier npn , puis
python setup.py sdistPour télécharger sur PYPI, courez
twine upload . d ist n pn-X.X.tar.gzpip install pytest # if you haven't install it
python -m pytest