npn
v1.1
Este paquete es una matcher booleana. Simplemente calcula el representante canónico, que es único para cada clase de equivalencia de NPN, para una función booleana dada representada por la tabla de verdad.
El backend de este paquete es implementado por C ++ para la eficiencia.
Actualmente, este paquete admite funciones booleanas con un número de entradas <= 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 en True para devolver la información de transformación NPN ( phase, perm, output_inv ). Por ejemplo, aquí phase = [False, False, True] , perm = [0, 1, 2] y output_inv = False medios (x_0, x_1, x_2) debe asignar (x_0, x_1, x_2) , entonces la tercera variable ( x_2 ) debe ser invertida y el resultado final no se debe invertir.refinement en True para acelerar el cálculo mientras rompe el orden lexicográfico de las tablas de verdad. Consulte "Construir un mejor detector de simetría y combate booleano" para más detalles. Compile la biblioteca compartida libnpn.dll npn libnpn.so
python setup.py sdistPara subir a Pypi, ejecutar
twine upload . d ist n pn-X.X.tar.gzpip install pytest # if you haven't install it
python -m pytest