
Дископия - это инструментарий Python для вычислений с помощью струнных диаграмм.
Дископия началась как реализация Discocat и QNLP. Теперь это стало его собственной библиотекой: Lambeq.
Arrow для бесплатных категорий кинжала с формальными суммами, унарными операторами и символическими переменными из симпыDiagram для плоских строковых диаграмм в любой (до) моноидной категории в иерархии графических языков (с косичками, поворотами, пауками и т. Д.)Hypergraph для строковых диаграмм в категориях гиперграфа и ее ограничения на симметричные, прослеженные, компактные и марковские категорииFunctor в:Этот пример вдохновлен в блоге Павела Собоцински в блоге Crema di Mascarpone и схематических рассуждениях.
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 discopyЕсли вы хотите увидеть дископию в действии, ознакомьтесь с учебником QNLP!
Мы стремимся приветствовать новых участников!
Во -первых, прочитайте руководящие принципы. Затем свяжитесь с Discord или откройте проблему.
Если вы использовали дископию в контексте академической публикации, мы предлагаем вам цитировать:
Кроме того, ваша работа связана с квантовыми вычислениями, вы также можете привести:
Если вы используете какую -либо из недавних функций (например, Hypergraph ), вы также должны упомянуть: