该文档稍后将在几个部分中提供此信息 使用Qubits 。
目标机器期望量子位在| 0?马上说 在解除分配之前,它们可以被重用并提供给其他人 using 分配块。
using
考虑在量子计算机上运行程序:量子位的数量非常有限,并且您希望在程序的其他部分重用已发布的量子位。如果它们到那时还没有处于零状态,它们可能仍然与尚未释放的量子位纠缠在一起,因此对它们执行的操作可能会影响程序其他部分的状态。
当超出量程的范围时,自动将量子比特重置为零状态 using 块也是危险的:如果它们与其他人纠缠在一起,测量它们以重置它们会影响未释放的量子位的状态,从而改变程序的结果 - 没有开发人员注意到这一点。
量子位在释放之前应该处于零状态的要求旨在提醒开发人员仔细检查已经从量子位中正确提取所有必要信息,并且它们不再与未释放的量子位纠缠在一起。
注意使用 Reset 要么 ResetAll 在释放量子比特之前并不是一个硬性要求。例如,在Deutsch-Jozsa算法中,算法的最后一步是测量除最后一个之外的所有量子位。这意味着对于每个量子比特,您已经知道它们的状态是| 0?或| 1?,你可以在| 1中的量子位上应用X门?状态将它们转换为| 0?没有打电话 Reset 再次测量它们。已知最后一个量子位在| - ?状态,你可以将其转换为| 0?通过应用H和X门。
Reset
ResetAll
我找到了解决方案 这里 。
事实证明我需要 的 释放量子比特 强> 调用 Reset(qubits[0]) 。
Reset(qubits[0])
根据 文件 Reset() 执行以下操作:
Reset()
给定一个量子比特,测量它并确保它在 |0? 声明它可以安全释放
|0?
因此,在量子操作完成之前,显然需要在操作中使用所有量子位 |0> 州。
|0>