
Discopy adalah toolkit Python untuk komputasi dengan diagram string.
Diskopi dimulai sebagai implementasi Discocat dan QNLP. Ini sekarang telah menjadi perpustakaannya sendiri: lambeq.
Arrow untuk kategori belati gratis dengan jumlah formal, operator unary dan variabel simbolik dari sympyDiagram untuk diagram string planar dalam kategori monoidal (pra) dalam hierarki bahasa grafis (dengan kepang, tikungan, laba -laba, dll.)Hypergraph untuk diagram string dalam kategori hypergraph dan pembatasannya untuk kategori simetris, dilacak, kompak dan MarkovFunctor ke:Contoh ini terinspirasi dari posting blog Pawel Sobocinski Crema di Mascarpone dan penalaran diagram.
from discopy . symmetric import Ty as Ingredient , Box as Step , Diagram as Recipe
egg , white , yolk = Ingredient ( "egg" ), Ingredient ( "white" ), Ingredient ( "yolk" )
crack = Step ( "crack" , egg , white @ yolk )
merge = lambda x : Step ( "merge" , x @ x , x )
# DisCoPy allows string diagrams to be defined as Python functions
@ Recipe . from_callable ( egg @ egg , white @ yolk )
def crack_two_eggs ( left_egg , right_egg ):
left_white , left_yolk = crack ( left_egg )
right_white , right_yolk = crack ( right_egg )
return ( merge ( white )( left_white , right_white ),
merge ( yolk )( left_yolk , right_yolk ))
# ... or in point-free style using parallel (@) and sequential (>>) composition
assert crack_two_eggs == crack @ crack
>> white @ Recipe . swap ( yolk , white ) @ yolk
>> merge ( white ) @ merge ( yolk )
crack_two_eggs . draw ()
pip install discopyJika Anda ingin melihat Discopy beraksi, lihat tutorial QNLP!
Kami ingin menyambut kontributor baru!
Pertama, baca pedoman yang berkontribusi. Kemudian hubungi perselisihan atau buka masalah.
Jika Anda menggunakan diskotasi dalam konteks publikasi akademik, kami sarankan Anda mengutip:
Jika lebih lanjut pekerjaan Anda terkait dengan komputasi kuantum, Anda juga dapat mengutip:
Jika Anda menggunakan salah satu fitur terbaru (misalnya Hypergraph ), Anda juga harus menyebutkan: