注意 https://en.wikipedia.org/wiki/Hadamard_transform#Quantum_computing_applications 写道:
值得注意的是,由于Hadamard变换的张量积结构,计算量子Hadamard变换只是将Hadamard门单独应用于每个量子位。
因此,仅对单个门进行建模并进行多次实例化是有意义的。
但是我怎么能将所有4个国家都用于我的Hadamard门?
门将应用于2-qubit寄存器的所有4个状态。它将对系数对进行操作,即仅在单个位中不同的系数,对应于门应用的位位置。
如果你想要获得更大的图片,首先将Hadamard操作应用到左边的量子位
((| 00?+ | 10?)?00 | +(| 00??| 10?)?10 | +(| 01?+ | 11?)?01 | +(| 01??| 11?)? 11 |)/ sqrt(2)
然后到正确的量子位
((| 00?+ | 01?)?00 | +(| 00??| 01?)?01 | +(| 10?+ | 11?)?10 | +(| 10??| 11?)? 11 |)/ sqrt(2)
用你的系数顺序(第一步右矩阵和第二步左矩阵)将其写成矩阵
?1 1 0 0? ?1 0 1 0? ?1 1 1 1? ?1 -1 0 0? ?0 1 0 1? ?1 -1 1 -1? ? ?0 0 1 1? ?1 0 -1 0? = ? ?1 1 -1 -1? ?0 0 1 -1? ?0 1 0 -1? ?1 -1 -1 1?
如果您愿意,可以用符号编码产品矩阵。但我宁愿找到一种方法来模拟将量子门操作应用于寄存器中的量子位子集,同时通过未经修改的其他位。这可以通过扩展矩阵,就像我上面所做的那样,从我使用的常规2 2到4 4。或者它可能是你评估矩阵时间向量积的方式,以便更好地利用这些矩阵的稀疏性质。
看看你的代码,我有点担心你的两个指数 register.entries[0][0] 。如果第一个索引应该是量子比特的索引而第二个索引是该量子比特的值,那么该表示不适合于对纠缠情况进行建模。
register.entries[0][0]