如何为Python列表中的ncpol2sdpa算子应用平方为1的规则?
问题:在ncpol2sdpa中应用算子平方为1的简化规则
问题描述
我有一个由ncpol2sdpa包定义的算子组成的列表:
[1, C0, C1, C1*C0, C0**2, C0*C1, C0*C1*C0, B0, B0*C0, B0*C1, B0*C1*C0, B0*C0**2, B0*C0*C1, B0*C0*C1*C0, B1, B1*C0, B1*C1, B1*C1*C0, B1*C0**2, B1*C0*C1, B1*C0*C1*C0, B1*B0, B1*B0*C0, B1*B0*C1, B1*B0*C1*C0, B1*B0*C0**2, B1*B0*C0*C1, B1*B0*C0*C1*C0, B0**2, B0**2*C0, B0**2*C1, B0**2*C1*C0,...]
其中A0、A1、B0、B1、C0、C1是酉且自伴的算子,满足以下平方规则:A0**2 = 1, A1**2 = 1, B0**2 = 1, B1**2 = 1, C0**2 = 1, C1**2 = 1
预期简化结果
希望将上述规则应用到列表所有元素后,得到如下结果:
[1, C0, C1, C1*C0, 1, C0*C1, C0*C1*C0, B0, B0*C0, B0*C1, B0*C1*C0, B0, B0*C0*C1, B0*C0*C1*C0, B1, B1*C0, B1*C1, B1*C1*C0, B1, B1*C0*C1, B1*C0*C1*C0, B1*B0, B1*B0*C0, B1*B0*C1, B1*B0*C1*C0, B1*B0, B1*B0*C0*C1, B1*B0*C0*C1*C0, C0, C1, C1*C0,...]
现有思路与疑问
我初步想法是把列表每个元素转成字符串,扫描并替换A0**2、A1**2这类模式为1,但不知道怎么把替换后的字符串转回算子对象;同时也觉得应该有更优雅的方式来为列表元素设置这类约束,希望得到解决方案。
内容的提问来源于stack exchange,提问作者Ak9000
相关产品推荐
相关产品推荐

