QByte的门集

SeeThrough Studios的量子计算项目QByte中选择基本运算的背后思想。

这篇博客文章分为三个部分。 第一部分介绍了量子计算的电路模型,它是QByte的基础模型。 第二部分讨论电路模型中基本操作的选择(“门集”)。 第三部分也是最后一部分描述了QByte的门集的设计选择。

量子计算的电路模型

让我给出一个看起来像圆形但不是圆形的计算机的定义:计算机是执行计算的设备。

我同意这个定义是令人生气的,因为除非我准备定义“计算”,否则该定义将缺乏内容。 您可能会担心,我会将计算定义为计算机的活动,如果我以这种方式定义计算,您将很生气。

好吧,我将几乎完全以这种方式定义计算。 #SorryNotSorry。

计算是称为计算模型的抽象设备的活动。 正是在定义这些抽象设备的过程中,理论计算机科学才开始看起来像是值得的追求,而在研究这些模型时,您可能会原谅我的确令人发指。

如果您以前曾经接触过理论计算机科学,那么您可能会知道两个最古老的计算模型之一:图灵机。 您可能还知道Alonzo Church的lambda演算,它不是抽象设备,而是该抽象设备活动的表示法。

图灵机和lambda演算太复杂了,无法抽象到日常使用中。 我不认识任何认真使用图灵机模型的人,而我认识的使用lambda演算的人是可以理解“笛卡尔封闭类别上的自然变换”之类的人。 我不是那些人中的一个。

我们普通的人类更喜欢专注于更容易理解的计算模型。 在量子计算中,我们倾向于只关注电路模型的量子版本,而将其他量子计算模型留给比我们更有耐心的人。

电路模型由我们世界上无处不在的电子电路提供信息。 大致的想法是,信息沿着电线流动,并通过闸门进行转换。 电线仅在门之间传输信息; 是由门执行计算。

您可能会熟悉电路模型中遇到的各种逻辑门。 有类似AND,OR和NOT的门。 如果ab是位(表示它们可以取值0或值1),则按顺序,

  • 如果a = 1和b = 1,则AND( ab )返回1,否则返回0,
  • 如果a = 0和b = 0,则OR( ab )返回0,否则返回1,并且
  • NOT(0)返回1,而NOT(1)返回0。

需要警告的是,量子计算的电路模型是我们通常所说的经典电路模型的扩展。 扩展电路模型的方法是添加仅在量子范式中可理解的新门。

需要注意的是,每个门都必须是可逆的 ,这意味着可以取消门的操作。 NOT是可逆的,并且实际上会自己撤销:NOT(NOT( a ))返回a ,无论a的值如何。 相反,AND和OR不能撤消,因为它们会丢弃信息:如果我们仅知道AND( ab )返回0或OR( ab )返回1,我们就不能确定ab的值。 。

我们要求可逆性的原因有些微妙,在这里我不会尝试进行适当的解释,只是说我们的需求源于Schrödinger方程是确定性的事实。 幸运的是,每个不可逆的计算都可以在恒定(我认为)的空间开销下可逆,因此我们什么也不会损失。

选择门组

既然我已经给出了计算电路模型的一些解释,请注意该模型的计算能力取决于门的可能选择。 计算模型的重点主要是评估计算成本,但是我们可以通过定义一个门来精确执行我们要执行的计算,就可以为每个计算分配单位成本! 取而代之的是,我们首先列出允许执行的所有基本门,然后尝试从这些门构建我们的计算。 基本门的列表就是我所说的“门集”。

选择门套装时,请务必小心。 我只能允许一个门-不可以-很快让我沮丧的是,使用门集我可能无法执行许多计算。 特别是,我没有办法建立AND门或OR门:我需要某种方式来同时评估两个位,但是NOT门不允许我这样做。

事实证明,门集{AND,OR,NOT}是通用的 :我可以从该门集构建任何计算。 当然,在实践中这样做很复杂。 但是有可能。

我在上一节中选择了门集{AND,OR,NOT},因为每个门都很容易理解,并且不需要从中进行任何认真的计算。 换句话说,根据本博客文章的目标,我对门设置进行了选择。 更一般而言,任何登机口选择都应以登机口旨在服务的目标为依据。

从游戏化量子计算的角度来看,我看到了以下目标。

  • 门集合中的每个门应该(相对)易于理解。
  • 有趣的计算应该(相对)简单地构建。
  • 应尽量避免数学上的细微差别。

这些目标所提供的信息远不止选择闸门,而是针对其他博客文章的讨论。 在这里,我只想说明我们为QByte所做的选择。

QByte的门套

我希望前面的讨论能使我解释这篇博客文章的实质:选择QByte的门集。

在开始讨论时,我将指出尚未最终确定门组。 尽管我们当然只有很少的门,但我完全希望我们会添加符合我在下面阐述的原则的新门。

QByte门集的基本原理是:

  • 不要使用复数,
  • 多量子位门比单量子位门难得多,并且
  • 添加多个控件与添加一个控件一样简单。

我将依次解释每个原则。

复数

相位是量子力学中的核心概念。 您可能已经听说薛定ding的猫处于生与死的叠加中,但是您可能没有意识到薛定ding的猫可以处于生与死的两种不同叠加中。 要使用量子计算中普遍存在的狄拉克表示法,薛定Sch的猫可以是|alive⟩+ |dead⟩或|alive⟩-|dead⟩。 这些状态之间的区别在于,“活动”和“死亡”可能性可以是“同相”或“异相”。

完整的故事要比这复杂得多。 在通常的量子力学描述中,相位可以是1或-1或介于两者之间的任何值。 中间阶段的定义涉及复数。

顾名思义,复数很复杂。 我们应该避免要求玩家对复数有所了解。 幸运的是,量子计算不需要复数,因为我们可以找到不需要使用复数指定的通用量子门集。

除了这些书呆子,令人惊讶的含义是,对于量子力学来说,复数并不是绝对必要的! 它们在数学上很方便

多量子位门

考虑“与”门与“非”门之间的重要区别。 非门仅接受一位,而与门仅接受两位。 为了指定2位可逆门的作用,我们需要考虑2²= 4个可能的输入(每个位2个可能性)。 对于3位可逆门,有2³= 8个可能的输入。 四位? 2⁴= 16。 八? 2⁸= 256。 处理许多位的可逆门可能会成倍地复杂化。

量子门有同样的问题。 我们应该避免将门设置得太大和太复杂,因为这些门会使玩家感到困惑。

控制

但是,如果我们有一种方法可以将作用于少量(qu)位的门扩展到作用于大量(qu)位的门,则可以缓解上述问题。 我们做到了: 受控操作的概念。

让我通过示例解释控制的概念。 考虑门CNOT,它类似于NOT门,但它(可逆地)作用于两个位:

  • CNOT(0,0)返回(0,0),
  • CNOT(0,1)返回(0,1),
  • CNOT(1,0)返回(1,1)和
  • CNOT(1,1)返回(1,0)。

表示CNOT的另一种方法:如果第一位为1,则对第二位执行NOT;如果第一位为0,则对第二位不执行任何操作。第一位称为“控制”,第二位为称为“目标”。

很难想象这个概念可以扩展到多个控件。 例如,CCNOT接受三个位:两个控件和一个目标。 如果两个控件均为1,则门对目标执行“非”操作。 否则,门什么都不做。