写点什么

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

2018 年 8 月 12 日

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:16532
用户头像

发布了 376 篇内容, 共 93.7 次阅读, 收获喜欢 214 次。

关注

评论

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

架构师训练营 2 期 大作业一

CJian

架构师 架构师训练营第2期

ARTS打卡 第30周

引花眠

微服务 ARTS 打卡计划

华为 Python网络自动化

艺博东

Python 网络

经典面试题:在浏览器地址栏输入一个 URL 后回车,背后发生了什么

飞天小牛肉

程序员 面试 计算机网络 网络协议 2月春节不断更

大作业一

ray-arch

作业4

瑾瑾呀

Redis Sentinel 源码:Redis的高可用模型分析

华为云开发者社区

数据库 redis 高可用 框架 redis sentinel

「产品经理训练营」第四章作业

Sòrγy_じò ぴé

产品经理训练营 极客大学产品经理训练营 产品训练营

产品经理训练营 -- 第四周作业

Denny-xi

产品经理 产品经理训练营

解决Homebrew下载更新速度慢问题

现实中游走

homebrew

大学寒假这样过,过完惊艳所有人,不只是你的宿友,还有千千万万个程序员同行们!!!

沉默王二

程序员

第6周作业

MR.X

金牛来到,福气来到——TcaplusDB新年放送

TcaplusDB

数据库 nosql 互联网 数据安全 TcaplusDB

研发效能,productivity 还是 performance

李小腾

产品训练营作业:业务流程与产品文档(用例)

Geek_06d2e5

京东App Swift 混编及组件化落地

京东科技开发者

swift 开发者

一看就懂的var、let、const三者区别

蛙人

JavaScript

【STM32】点亮LED

AXYZdong

硬件 stm32 2月春节不断更

技术干货 | 基于Doris构建的小程序私域流量增长

百度开发者中心

百度智能小程序 百度 Doris

第4周左右

林亚超

第四章作业(一)

LouisN

数据库领域又一里程碑式突破!腾讯云TcaplusDB支持过亿DAU游戏

TcaplusDB

nosql TcaplusDB Tcaplus

编程范式( Programming paradigm )简介

引花眠

编程范式

使用Travis CI为工程搭建一个持续集成服务。

梁龙先森

持续集成 前端工程化 2月春节不断更

大作业二

ray-arch

如何用 4 个小时搭建一个新 “Clubhouse” ,引爆声音社交新风口

阿里云视频云

App 音视频 WebRTC RTC clubhouse

Elastic query string search

escray

Lucene Elastic Search 七日更 死磕Elasticsearch 60天通过Elastic认证考试 2月春节不断更

无责任畅想:云原生中间件的下一站

阿里巴巴云原生

容器 微服务 云原生 dubbo 中间件

1.1w字,10图,轻松掌握 BlockingQueue 核心原理

源码兴趣圈

阻塞队列 图解源码分析 JUC

阿里云第七代ECS云服务器: 整体算力提升40%

赵钰莹

第四次作业&第五次作业

yoki

4月17日 HarmonyOS 开发者日·上海站

4月17日 HarmonyOS 开发者日·上海站

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