[关闭]
@Rays 2018-08-11T11:17:39.000000Z 字数 1879 阅读 1159

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

新技术 量子计算


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

作者: Sergio De Simone

正文:

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

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

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

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

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

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

运行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#

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注