npn
v1.1
Este pacote é um Matcher booleano. Ele simplesmente calcula o representante canônico, que é único para cada classe de equivalência da NPN, para uma determinada função booleana representada pela tabela de verdade.
O back -end deste pacote é implementado pelo C ++ para eficiência.
Atualmente, este pacote suporta funções booleanas com o 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 como True para retornar as informações de transformação NPN ( phase, perm, output_inv ). Por exemplo, aqui phase = [False, False, True] , perm = [0, 1, 2] e output_inv = False meios (x_0, x_1, x_2) devem ser mapeados para (x_0, x_1, x_2) , então a terceira variável ( x_2 ) deve ser invertida e o resultado final não deve ser invertido.refinement como True para acelerar a computação enquanto quebra a ordem lexicográfica das tabelas da verdade. Consulte "Construindo um Matcher Booleano e Detector de Simetria melhor" para obter detalhes. Compilar a biblioteca compartilhada libnpn.dll e libnpn.so via cmake no ambiente Windows e Linux, coloque -os na pasta npn , então
python setup.py sdistPara fazer upload para Pypi, execute
twine upload . d ist n pn-X.X.tar.gzpip install pytest # if you haven't install it
python -m pytest