第一个Q#代码示例提供一种方法“ Set”,其编写方式如下(链接):
operation Set (desired: Result, q1: Qubit) : ()
{
body
{
let current = M(q1);
if (desired != current)
{
X(q1);
}
}
}
Run Code Online (Sandbox Code Playgroud)
该方法将量子位设置为所需值。为此,将测量qubit值,如果该值与预期值不同,则将“交换” qubit状态。
但是在量子物理学中,如果不破坏粒子就无法测量粒子。这是《量子计算和量子信息》一书的引文:
...测量会更改量子位的状态,使其从| 0>和| 1>的叠加变为与测量结果一致的特定状态。例如,如果| +>的测量结果为0,则qubit的测量后状态将为| 0>。
但是使用Q#可以测量一个量子比特并继续使用它。
为什么Q#语言允许我们实现实际上不可能的操作?
预先感谢您的回答。