什么是量子计算机?用一个简单例子来解释

译者:王亮 
作者:YK Sugi 
原文:http://t.cn/EZAElk0

Hi,大家好!

不久前,我参观了加拿大温哥华的D-Wave Systems公司,这是一家制造前沿量子计算机的公司。

我在那里学到了很多关于量子计算机的知识,所以我写这篇文章来和大家分享我在那里所学到的一些知识。

本文的目的是通过一个简单的例子让你清楚地了解什么是量子计算机。

本文所讲的内容很容易理解,不要求你具备量子物理或计算机科学的知识。

好了,我们开始吧。

什么是量子计算机?

下面用一句话来概括什么是量子计算机:

量子计算机是一种使用量子力学的计算机,它能比普通计算机更高效地执行某些特定的计算。

这句话有很多东西需要解释,所以让我用一个简单的例子来告诉你它到底是什么。

为了解释什么是量子计算机,我首先需要解释一下普通(非量子)计算机。

普通计算机如何存储信息

目前一台普通的计算机是用一系列的0和1来存储信息的。

不同类型的信息,比如数字、文本和图像都可能用这种方式来表示。

0和1系列中的每个单位被称为比特(bit,中文也叫位),因此一比特可以被设置为0或1。

那么量子计算机呢?

量子计算机并不是用比特来存储信息的,而是用一种叫量子比特(qubit,quantum bit的简写,中文也叫量子位)的东西。

每个量子比特不仅能设置为1或0,还可以设置为1和0。但,这究竟是什么意思呢?

让我来用一个简单的例子来解释一下。这是一个拟人的例子,但它依然可以帮助理解量子机算机如何工作。

一个用来理解量子计算机的例子

现在,假设你现在经营一家旅行社,你需要把一群人从一个地方运送到另一个地方。

为了简单起见,不妨假设你现在需要运送的只有3人——Alice,Becky和Chris。

并且假设你为此预定了2辆出租车,你得分清楚谁乘坐哪一辆出租车。

另外,你知道谁和谁是朋友关系,谁和谁是敌人关系。

这里,我们认为她们的关系是这样的:

◇ Alice和Becky是朋友
◇ Alice和Chris是敌人
◇ Becky和Chris是敌人

现在你要将这3个人分配到2辆出租车,并要达到下面的目标:

◇ 最大化共用一辆车的朋友对数
◇ 最小化共用一辆车的敌人对数

译注:朋友/敌人的对数,这里的“对”是单位,不是指数学中的对数。比如“一对”就是两人的意思。

好了,这是这个问题的基本前提。让我们先来思考一下如何用普通计算机解决这个问题。

用普通计算机解决这个问题

为了用普通的非量子计算机来解决这个问题,你首先需要弄清楚如何用比特存储相关的信息。

我们先标识这两辆出租车为出租车#1和出租车#0。

然后,你可以用3个比特表示谁进入哪辆车。

例如,我们可用0和1来表示:

◇ Alice乘坐出租车#0
◇ Becky乘坐出租车#0
◇ Chris乘坐出租车#1

由于每个人都有两个选择,因此有2*2*2=8种组合来把她们分配给两辆车。下面是所有可能的组合:

A | B | C
0 | 0 | 0
0 | 0 | 1
0 | 1 | 0
0 | 1 | 1
1 | 0 | 0
1 | 0 | 1
1 | 1 | 0
1 | 1 | 1

你可以用3个比特来表示这些组合中的任意一个。

计算每个组合的分数

现在,用普通计算机我们如何来判断哪一个组合是最佳组合呢?为此,让我们来定义如何计算每个组合的得分。这个得分将代表每个组合达到前面提到的两个目标的程度:

◇ 最大化共用一辆车的朋友对数
◇ 最小化共用一辆车的敌人对数

让我们简单地这样定义我们的分数:

(给定组合的得分)=(#共用一辆车的朋友对数)-(#共用一辆车的敌人对数)

例如,假设Alice,Becky和Chris都乘坐出租车#0,可以用3个比特表示为111

在这种情况下,只有一对朋友共用一辆车——Alice和Becky。

然而,有两对敌人共用一辆车——Alice和Chris,Becky和Chris。

所以,这个组合的总分是1-2 = -1。

解决这个问题

有了所有这些预设,我们终于可以着手解决这个问题了。

对于一台普通的计算机,要找到最好的组合,你基本上需要遍历所有的组合,看看哪个得分最高。

你可以构建这样一个表格:

A | B | C | Score
0 | 0 | 0 | -1
0 | 0 | 1 |  1 <- 最佳组合之一
0 | 1 | 0 | -1
0 | 1 | 1 | -1
1 | 0 | 0 | -1
1 | 0 | 1 | -1
1 | 1 | 0 |  1 <- 最佳组合之一
1 | 1 | 1 | -1

如你所见,这里有两个正确的组合——001和110,都达到了1分。

这是个相当简单的问题。然而随着越来越多的人参与到这个问题中来,用一台普通计算机就很难解决这个问题。

我们看到,3个人需要遍历8种可能的组合。

如果有4个人呢?在这种情况下,我们需要遍历2*2*2*2 = 16个组合。

对于n个人,我们需要通过2的n次方个组合来找到最佳组合。

所以,如果有100个人,我们需要遍历:

2¹⁰⁰ ~= 10³⁰ = 一百万百万百万百万百万个组合。

要遍历这么多的组合,对普通计算机来说是不现实的。

用量子计算机解决这个问题

我们如何用量子计算机来解决这个问题呢?

让我们回到把3个人分配给2辆出租车的例子。

正如我们前面看到的,这个问题有8种可能的组合:

A | B | C
0 | 0 | 0
0 | 0 | 1
0 | 1 | 0
0 | 1 | 1
1 | 0 | 0
1 | 0 | 1
1 | 1 | 0
1 | 1 | 1

用一台普通计算机,用3个比特,我们一次只能表示其中一个组合——例如001。

然而,使用量子计算机,3个量子比特可以同时表示所有8个组合

关于这个量子比特词的确切含义存在争议,但我的看法是这样的。

首先,检查这3个量子比特中的第一个量子比特。当你同时将它设置为0和1时,就像是创建了两个平行世界。(是的,很奇怪,但随我看下去。)

译注:一个世界相当于一个普通计算机,理解这点很重要。

在平行世界中,其中一个的量子比特被设置为0,另一个的量子比特被设置为1。

现在,如果你把第二个量子比特也设为0和1呢?然后,这就有点像创造了4个平行世界了。

在第一世界中,两个量子比特被设置为00,第二个是01,第三个是10,第四个是11。

类似地,如果你将这三个量子比特都设置为0和1,你就创建了8个平行世界——000,001,010,011,100,101,110和111。

这是一种奇怪的思考方式,但它是解释量子比特在现实世界中的行为的正确方式之一。

现在,当你对这三个量子比特进行某种计算时,你实际上是在同时对这8个平行世界进行同样的计算。

因此,我们可以同时计算所有组合的分数,而不是按顺序遍历所有这些可能的组合。

有了这个特殊的例子,理论上,你的量子计算机可以在几毫秒内找到最好的组合, 即我们之前看到的001或110:

A | B | C | Score
0 | 0 | 0 | -1
0 | 0 | 1 |  1 <- 最佳组合之一
0 | 1 | 0 | -1
0 | 1 | 1 | -1
1 | 0 | 0 | -1
1 | 0 | 1 | -1
1 | 1 | 0 |  1 <- 最佳组合之一
1 | 1 | 1 | -1

实际上,要解决这个问题,你需要让你的量子计算机做两件事情:

◇ 所有可能的组合都用量子比特表示。
◇ 将每个可能的组合转换成分数的函数。在本例中,这个函数计算共用一辆车的朋友对数和敌人对数。

能做这两件事,你的量子计算机将在几毫秒内得出最好的组合。在本例中,最好的组合是分数为1的001或110。

现在,从理论上讲,量子计算机每次运行都能找到最好的解。

然而,实际上,在运行量子计算机时会存在错误。所以,它可能会找到次优解,第三优解,等等。

随着问题变得越来越复杂,这些错误会变得越来越突出。

因此,在实践中,你可能希望在量子计算机上数十次甚至数百次地运行相同的操作,然后从你得到的结果中选出最好的。

量子计算机的计算规模如何

即使有我提到的错误,量子计算机也没有和普通计算机那样的计算规模问题。

当有3个人需要分配给2辆车时,我们需要在量子计算机上执行的操作次数是1。这是因为量子计算机会同时计算所有组合的分数。

当有4个人的时候,操作次数仍然是1。

当有100人的时候,操作次数仍然是1。量子计算机在同一时间计算所有2¹⁰⁰ ~= 10³⁰ = 一百万百万百万百万百万个组合的分数只需一次操作。

正如我之前提到的,在实践中,最好是运行量子计算机几十次或几百次,然后从得到的结果中选出最好的结果。

然而,它仍然比在普通计算机上运行同样的问题并且必须重复同样类型的计算一百万百万百万百万百万次要好得多。

最后

特别感谢D-Wave Systems公司的每个人耐心地向我解释这一切。

D-Wave最近推出了一个与量子计算机交互的云环境。

如果你是一名开发人员,并且想尝试使用量子计算机,使用云环境可能是最简单的方法。

它叫Leap,网址是:

https://cloud.dwavesys.com/leap

你可以免费用它来解决成千上万的问题,而且一旦你注册了量子计算机,他们还提供了手把手的教程。

补充说明:

在本文中,我使用术语“普通计算机”来指代非量子计算机。然而,在量子计算领域,非量子计算机通常被称为经典计算机。

640?wx_fmt=jpeg


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/317213.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解决Azure DevOps部署到Azure后.NET Core网站无法启动的问题

点击上方蓝字关注“汪宇杰博客”最近我遭遇了一个奇怪的问题。使用Azure DevOps配置CI/CD管线&#xff0c;自动部署到Azure App Service以后&#xff0c;.NET Core的网站竟然会启动失败。我们来看看如何解决这个问题。查找问题首先&#xff0c;幸好&#xff0c;这是个staging环…

Acwing 135 最大子序和

Acwing 135 最大子序和 题目&#xff1a; 输入一个长度为 n 的整数序列&#xff0c;从中找出一段长度不超过 m 的连续子序列&#xff0c;使得子序列中所有数的和最大。 题解&#xff1a; 我们把这个问题的集合分成n份&#xff0c;第k份表示以A[k]结尾的最大连续子序列是多少…

.net core自定义高性能的Web API服务网关

网关对于服务起到一个统一控制处理的作用&#xff0c;也便于客户端更好的调用&#xff1b;通过网关可以灵活地控制服务应用接口负载&#xff0c;故障迁移&#xff0c;安全控制&#xff0c;监控跟踪和日志处理等。由于网关在性能和可靠性上都要求非常严格&#xff0c;所以针对业…

微软宣布 Visual Studio 2019 将于4月2日正式发布

微软于去年发布了 Visual Studio 2019 预览版。今天&#xff0c;该公司宣布 Visual Studio 2019 正式版将于4月2日发布。微软在公告中表示&#xff1a;“欢迎加入我们在4月2号当天举办的 VS 2019 线上发布活动&#xff0c;这是一款更加现代化、创新且实用的生产力工具”。据悉&…

DotNetty 实现 Modbus TCP 系列 (三) Codecs Handler

DotNetty 实现 Modbus TCP 系列 (一) 报文类DotNetty 实现 Modbus TCP 系列 (二) ModbusFunction 类图及继承举例DotNetty 作为一个半成品&#xff0c;我们不需要关注细节的实现&#xff0c;只需要关注自己的业务即可&#xff0c;所以最主要的就是处理 Codecs 和 Handler。所有…

Acwing -- 单调队列优化的DP问题

文章目录引入acwing154 滑动窗口应用135 最大子序和1088.旅行问题AcWing 1087. 修剪草坪28AcWing 1089. 烽火传递AcWing 1090. 绿色通道AcWing 1091. 理想的正方形引入 acwing154 滑动窗口 题目链接 题解 应用 闫氏最优化问题分析法 135 最大子序和 题目&#xff1a; 输入…

模板:半平面交(计算几何)

所谓半平面交&#xff0c;就是和“半平先生”当面交谈。顾名思义&#xff0c;这是一个源于日本的算法。 &#xff08;逃&#xff09; 前言 感觉应用很灵活的一个算法&#xff0c;一切有两个变量的线性规划问题都可以转化为半平面交。 有时可能要注意取等问题&#xff08;指射…

[小技巧]C#中如何为枚举类型添加描述方法

背景在我们的日常开发中&#xff0c;我们会经常使用枚举类型。有时我们只需要显示枚举的值或者枚举值对应名称&#xff0c; 但是在某些场景下&#xff0c;我们可能需要将枚举值显示为不同的字符串。例&#xff1a; 当前我们有如下枚举Level这个枚举有4个可选值B, N, G, VG。 现…

Loj#3320-「CCO 2020」旅行商问题

正题 题目链接:https://loj.ac/p/3320 题目大意 有一张nnn个点的无向完全图&#xff0c;每一条边是红色或者蓝色&#xff0c;对于每个点sss求从这个点出发的一条尽量短的经过所有点的路径。 1≤n≤20001\leq n\leq 20001≤n≤2000 解题思路 显然地猜测一下最短的长度肯定是n…

AcWing 1087. 修剪草坪28

AcWing 1087. 修剪草坪 题意: 有n个数&#xff0c;不能选超过连续的k个数&#xff0c;问所能选的最大值是多少&#xff1f; 题解&#xff1a; 我们首先分析dp过程&#xff1a; dp[i]表示选择完前i个数的最大值 sum[i]表示前i项和 对于第i个数&#xff0c;它有两个情况&#…

工业通信的开源项目 HslCommunication 介绍

前言&#xff1a;本项目的孵化说来也是机缘巧合的事&#xff0c;本人于13年大学毕业后去了一家大型的国企工作&#xff0c;慢慢的走上了工业软件&#xff0c;上位机软件开发的道路。于14年正式开发基于windows的软件&#xff0c;当时可选的技术栈就是MFC和C#的winform&#xff…

【地狱副本】数据结构之线段树Ⅲ——区间最值/赋值/修改/历史值操作(HDU5306,Tyvj 1518,【清华集训2015】V,HDU6315,HDU1828,POJ3162)

文章目录Gorgeous SequenceTyvj 1518 CPU监控【清华集训2015】VNaive OperationsPictureWalking RaceGorgeous Sequence HDU5306 操作 区间与xxx取min\rm minmin查询区间最大值查询区间和 比较暴力的线段树维护区间 Max : 区间最大值sub_max : 严格小于最大值的区间次大值…

Acwing 1089. 烽火传递

Acwing 1089. 烽火传递 题意&#xff1a; 有n个数&#xff0c;要保证每m个数中必须选一个&#xff0c;问所选数的最小总和是多少 题解&#xff1a; 我一开始设的状态为:dp[i]表示前i个数选完的最小值&#xff0c;第i个数可以选也可以不选&#xff0c;但是这样一个状态&…

IIS作为ASP.NET Core2.1 反向代理服务器未说的秘密

--以下内容针对 ASP.NET Core2.1&#xff0c;2.2出现IIS进程内寄宿 暂不展开讨论---相比ASP.NET&#xff0c;出现了3个新的组件:ASP.NET Core Module、Kestrel、dotnet.exe&#xff0c; 后面我们会理清楚这三个组件的作用和组件之间的交互原理。 ASP.NET Core 设计的初衷是开源…

程序员修神之路--分布式缓存的一条明路(附代码)

菜菜呀&#xff0c;由于公司业务不断扩大&#xff0c;线上分布式缓存服务器扛不住了呀程序员主力 Y总如果加硬件能解决的问题&#xff0c;那就不需要修改程序菜菜我是想加服务器来解决这个问题&#xff0c;但是有个问题呀程序员主力 Y总&#xff1f;&#xff1f;&#xff1f;菜…

长沙.NET技术社区正式成立

感谢大家的关注&#xff0c;请允许我冒昧的向大家汇报长沙.NET技术社区第一次交流会的会议进展情况。活动过程汇报2019年2月17日&#xff0c;继深圳&#xff0c;广州&#xff0c;西安&#xff0c;成都&#xff0c;苏州相继成立了.net社区之后&#xff0c;酝酿已久的长沙.net社区…

Asp.NetCore轻松学-部署到 IIS 进行托管

前言经过一段时间的学习&#xff0c;终于来到了部署服务这个环节&#xff0c;.NetCore 的部署方式非常的灵活多样&#xff0c;但是其万变不离其宗&#xff0c;所有的 Asp.NetCore 程序都基于端口的侦听&#xff0c;在部署的时候仅需要配置侦听地址、端口&#xff08;一个或者多…

响应式编程知多少 | Rx.NET 了解下

1. 引言An API for asynchronous programming with observable streams. ReactiveX is a combination of the best ideas from the Observer pattern, the Iterator pattern, and functional programming.ReactiveX 使用可观察数据流进行异步编程的API。 ReactiveX结合了观察者…

.NET Core中的验证组件FluentValidation的实战分享

今天有人问我能不能出一篇FluentValidation的教程&#xff0c;刚好今天在实现我们的.NET Core实战项目之CMS的修改密码部分的功能中有用到FluentValidation&#xff0c;所以就以修改用户密码为实例来为大家进行一下ASP.NET Core中的验证组件FluentValidation的实战分享&#xf…

笛卡尔树详解带建树模板及例题运用(Largest Submatrix of All 1’s,洗车 Myjnie,Removing Blocks,SPOJ PERIODNI)

文章目录笛卡尔树介绍例题Largest Submatrix of All 1’s应用「POI2015」洗车 Myjnie[AGC028B] Removing BlocksSPOJ PERIODNI笛卡尔树 介绍 笛卡尔树是一种数据结构&#xff0c;每个点由两个值&#xff0c;键值key和权值val&#xff0c;组成 其键值满足二叉树性质 即点的左子…