npn
v1.1
Paket ini adalah pencocokan Boolean. Ini hanya menghitung perwakilan kanonik, yang unik untuk setiap kelas kesetaraan NPN, untuk fungsi boolean yang diberikan yang diwakili oleh tabel kebenaran.
Backend dari paket ini diimplementasikan oleh C ++ untuk efisiensi.
Saat ini, paket ini mendukung fungsi boolean dengan jumlah input <= 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 ke True untuk mengembalikan informasi transformasi npn ( phase, perm, output_inv ). Misalnya, di sini phase = [False, False, True] , perm = [0, 1, 2] dan output_inv = False mean (x_0, x_1, x_2) harus dipetakan ke (x_0, x_1, x_2) , maka variabel ketiga ( x_2 ) harus dibalik dan hasil akhir tidak boleh dibalik.refinement menjadi True untuk mempercepat perhitungan sambil melanggar urutan leksikografi tabel kebenaran. Lihat "Membangun Detektor Pencocokan dan Simetri Boolean yang Lebih Baik" untuk detailnya. Kompilasi perpustakaan bersama libnpn.dll dan libnpn.so melalui cmake di lingkungan windows dan linux, letakkan di folder npn , lalu
python setup.py sdistUntuk mengunggah ke pypi, jalankan
twine upload . d ist n pn-X.X.tar.gzpip install pytest # if you haven't install it
python -m pytest