Microsoft Quantum Katas 帮助开发人员探索使用 Q#实现量子计算

  • 2018-08-11
  • 本文字数:1478 字

    阅读完需:约 5 分钟

Microsoft 根据“软件招式”(Code Katas)这一理念,开源了一个称为“ Quantum Katas ”的项目。该项目意在帮助开发人员迈出使用 Q#语言实现量子计算的第一步。它提供了一组复杂度递增的编程练习,并可向学习者提供即刻反馈。

Quantum Katas 当前提供四种招式,每种招式涵盖一个特定的量子计算主题:

  • 如何使用基本的量子计算逻辑门,包括使用单量子位(qubit)门和多量子位门。
  • 准备叠加(Superposition)状态。叠加和纠缠(entanglement)是量子系统独具的特性。叠加允许在某个特定的量子位中同时存在多个逻辑状态。
  • 在量子实验中,使用测量抽取经典信息(classical information)。测量步骤可能会使量子位脱离叠加态,这将会破坏量子系统的相干性。
  • 编写实现经典函数和 Deutsch–Jozsa 算法的量子预言机(Oracle)。Deutsch–Jozsa 算法是一种比确定性经典算法的速度快指数级别的量子算法。

招式组织为一组复杂度递增的编程任务。每个任务使用测试驱动编程(TDD),关联到一个初始未通过的单元测试。在可用的参考资料帮助下,开发人员需要填充其中的代码,使测试得以通过。参考资料和参考解决方案一并提供在招式中。

招式中涵盖的问题来自于Microsoft 于去年九月首次推出的 Q#编程大赛

下面给出两个例子。一个是几乎最简单的招式,翻转一个量子位的状态。另一个招式稍为复杂,根据当前状态更改量子位的状态。

//////////////////////////////////////////////////////////////////
    // 第一部分,单量子位逻辑门(Single-Qubit Gates)
    //////////////////////////////////////////////////////////////////
    // 任务 1.1: 状态翻转:从 "|0>" 翻转为 "|1>",或是反之。
    // 输入:一个量子位,状态为|ψ> = α|0> + β|1>.
    // 目标:将量子位状态更改为 α|1> + β|0>。
    // 例子: 
    //        如果量子位处于状态“|0>”,更改其状态为“|1>”。
    //        如果量子位处于状态“|1>”,更改其状态为“|0>”。
    // 注意:该操作是自伴的(self-adjoint),即再次应用同一操作,量子位将恢复原状态。
    operation StateFlip (q : Qubit) : ()
    {
        body
        {
            // Pauli X 门将更改状态“|0>”为状态“|1>”,或是反之。 
            // Type X(q);
            // 然后重新构建项目,并重运行测试。现在,测试 T11_StateFlip_Test 将会通过~
            // ……
        }
        adjoint self;
    }
    // 任务 1.6*:更改相位(Phase change)。
    // 输入:
    //     1. 一个状态为“β|0> + γ|1>”的量子位。 A qubit in state β|0⟩ + γ|1⟩.
    //     2.  以弧度表示的α角度,表示一个 Double。
    // 目标:将量子位的状态更改如下:
    //        如果量子位的状态为“|0>”,不更改其状态;
    //        如果量子位的状态为“|1>”,更改其状态为“exp(i*alpha)|1>”;
    //        如果量子位处于叠加态,根据基矢量(basis vectors)的效果更改其状态。
    operation PhaseChange (q : Qubit, alpha : Double) : ()
    {
        body
        {
            // ……
        }
        adjoint auto;
    }

运行 Microsoft Quantum Katas 需安装 Quantum Development Kit 开发包。该开发包提供了 Windows 10、macOS 和 Linux 上的可用版本。每个招式位于独自的目录中,并关联一个 Visual Studio 解决方案。在 macOS 和 Linux 上,只要安装了.NET Core SDK 2.0 或以后的版本,开发人员就可以使用 Visual Studio Code 或命令行运行各个招式。

查看英文原文: Microsoft Quantum Katas Help Developers Discover Quantum Computing with Q#