写点什么

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

  • 2018 年 8 月 12 日
  • 本文字数: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#

2018 年 8 月 12 日 03:16781
用户头像

发布了 387 篇内容, 共 106.3 次阅读, 收获喜欢 243 次。

关注

评论

发布
暂无评论
发现更多内容

[架构实战营][模块二作业]

KK_TTN

架构实战营

【架构设计模块二】:微信朋友圈的高性能复杂度

Ryoma

架构实战营

【Java特性专题】JDK(8-11)特性分布变化简介

浩宇天尚

Java Java新特性 7月日更 Java11

【数据结构】Java 同步工具 AQS

Alex🐒

Java 源码 数据结构

你真的了解 Session 和 Cookie 吗?

陈皮的JavaLib

Java HTTP session Cookie

性能测试误差分析文字版-上

FunTester

性能测试 自动化测试 接口测试 测试框架 测试开发

智能运维系列之五:总结

micklongen

AIOPS 智能运维

微信朋友圈架构设计

summer

极客时间 极客时间架构师一期

面试算法之螺旋数组查找问题

泽睿

面试 二分查找

健康讲座:如何提升人体免疫能力

石云升

学习 健康 7月日更

编程的本质是什么?

白色蜗牛

Java 编程 程序员 软件 计算机

架构训练营 1 期 - 模块二作业

蔸蔸

[架构实战营一期] 模块二作业

trymorewang

架构实战营

央视曝光APP弹窗广告三大陷阱:如何监管应用软件弹窗广告

石头IT视角

大数据训练营-第一次作业

西伯利亚鼯鼠

知乎热文 | 如何高效学习Spring Boot?

Jackpop

Java Spring Boot

Selenium4 Alpha-7升级体验

FunTester

maven 自动化测试 Gradle 测试开发 selenium

Presto原理&调优&面试&实战全面升级版

王知无

MVP on Board 没用小技巧 👌

newbe36524

.net MVP ASP.NET Core

《面试补习》--来聊聊削峰填谷!

九灵

Java 分布式 消息队列 异步削峰

微信朋友圈高性能架构分析

面向对象的猫

基于P4的SCION -- 构建太比特的未来互联网

俞凡

网络

架构训练营模块二作业

Honey拯救世界

「架构师训练营第 1 期」

进阶指南!深入理解Java注解

Jackpop

Java

【硬刚Kylin】Kylin入门/原理/调优/OLAP解决方案和行业典型应用

王知无

2.4如何提高架构设计的质量

Lemon

2.2如何设计高性能架构

Lemon

高性能架构

架构实战营模块二作业

老猎人

架构实战营

性能测试误差统计实践

FunTester

软件测试 测试 性能测试 测试开发

性能测试误差分析文字版-下

FunTester

软件测试 性能测试 接口测试 测试框架 测试开发

2.3如何设计高可用架构

Lemon

存储高可用

Microsoft Quantum Katas帮助开发人员探索使用Q#实现量子计算_微软_Sergio De Simone_InfoQ精选文章