基本门 Q# 的高阶版本

Higher order versions of basic gates Q#

Q#语言有高阶H门吗?例如,如果我想将 Hadamard 门应用于 3 个量子位的数组(组合状态)。有没有办法生成 H 门或其他门的张量积版本?

Q# 不允许您传递比基本门允许的更多的量子位。所以你必须像这样 运行 通过 H() 门手动 运行 每个量子位

let n = Length(qs);
for(index in 0 .. (n-1)) {
H(qs[index]);
}

或者使用方便的标准库函数

ForEach(H,qs);

不能应用更高阶 H 门的基本原因是它会将函数签名增加到更多的量子位,从而导致复杂化。此外,您可能只想将同一数组的部分量子位传递给门,在这种情况下,您也无法传递整个数组,必须手动进行。

想到它的一种方法是想到幺正运算符 H = |+⟩⟨0| + |−⟩⟨1|和量子运算 H 分开。 从这个角度来看,幺正 H 就是我们如何模拟在理想量子处理器上应用操作 H 的效果。 量子运算 ApplyToEach(H, _) 然后由酉算子 HH ⊗ ⋯ ⊗ HH 的表示方式完全相同 H.

这种心智模型的一个结果是张量积是在酉算子之间定义的,不是在量子运算之间。相反,作用于不同量子位的量子运算的理想作用由每个单独运算的酉表示的张量积表示。