1 回答
TA贡献1898条经验 获得超8个赞
如果我正确理解你的描述,量子开发工具包提供的资源估计器准确地报告你的操作没有使用任何量子位或量子指令。这是因为 Q# 操作使用的 qubits 恰好是usingorborrowing语句显式使用的 qubits,加上调用的任何其他操作使用的 qubits。
例如,如果你在 Q# 中编写传送操作,你可能会喜欢以下内容:
operation PrepareEntangledPair(left : Qubit, right : Qubit) : Unit {
body (...) {
H(left);
CNOT(left, right);
}
adjoint auto;
}
operation ApplyCorrection(here : Qubit, msg : Qubit, there : Qubit) : Unit {
if (M(msg) == One) { Z(there); }
if (M(here) == One) { X(there); }
}
operation TeleportMessage(msg : Qubit, there : Qubit) : Unit {
using (here = Qubit()) {
// Create some entanglement that we can use to send our message.
PrepareEntangledPair(here, there);
// Move our message into the entangled pair by using a Bell
// measurement.
Adjoint PrepareEntangledPair(msg, here);
// Measure out the entanglement.
ApplyCorrection(here, msg, there);
// Reset our "here" qubit before releasing it.
Reset(here);
}
}
operation TeleportClassicalFlag() : Unit {
using ((msg, there) = (Qubit(), Qubit())) {
X(msg);
TeleportMessage(msg, there);
ApplyToEach(Reset, [msg, there]);
}
}
在此报告上运行资源估算器,使用了三个量子位(两个TeleportClassicalFlag直接使用,一个使用TeleportMessage,被调用TeleportClassicalFlag):
相比之下,经典逻辑始终保持经典。这旨在使混合经典逻辑和量子逻辑变得容易,例如在实现迭代相位估计算法时。在上面的示例中,使用的if
语句和==
运算符用于ApplyCorrection
描述隐形传态算法的经典部分。
添加回答
举报