潜力巨大但道路曲折的量子计算
近一年来,由于工作的原因参观访问了一些量子产业园,接触了量子加密计算机、量子云计算等非常炫酷的概念性产品,这与自己一直认为的“量子技术仍然处于实验室研究阶段”的基本判断与认知产生了强烈的冲突,一刹那间,心中涌出了很多疑问与怀疑:难道自己一直以来的认识是错误的,难道量子技术的发展如此之迅速,难道量子技术都发展到如此实用的程度了?本着对科学负责,对技术负责,对自己负责的态度,花了点时间学习了解一下量子计算与量子通讯,接下来就说说自己的一些心得与体会。
一、“量子”的理解
提到量子,大多数公众都“不明觉厉”(因为不明白,所以觉得很厉害),提到量子力学,对于很多即使受过理工科高等教育的人都感到头晕目眩。事实上,大多数人第一次真正意义上接触量子一词,是在高中物理课本中。还记得高中物理学习原子结构的时候讲到,原子由原子核与核外电子构成,核外电子环绕在原子核的周围做高速运动,再后来我们学到电子只能分布在不同的轨道上的,而这些轨道的半径是不连续(请注意这个词:不连续)的,也就是说,电子只能在距离原子核特定距离的轨道上运行,这些轨道代表了原子的不同能量能级,如果电子吸收了特定的能量,它就能够从低能级轨道上跳跃(跃迁)到高能级轨道,反之,当电子从高能级轨道跳跃回低能级轨道的时候就会放出能量。这里的“不连续”特性,就是大多数人对量子一词的最初印象。
上了大学以后,随着学习的不断深入,很多理工科大学生逐渐接触到了量子的第二个重要内涵“不确定“或者”概率“。仍然以核外电子为例,随着科学家对微观世界研究的不断深入,人们发现在某一个特定的时刻,电子到底在哪条轨道上是不确定的,到底在轨道上的哪个位置也是不确定的,也就是说,人们无法使用数学的方法准确的描述和预测核外电子的位置,人们唯一能做的是寻找到一个概率分布函数,用来描述电子出现在不同轨道,不同位置的概率大小,这就是大名鼎鼎“薛定谔方程”。量子科学认为,我们不观察电子位置的时候,电子无处不在,可以想象成电子向一团云雾(电子云)一样出现在核外的任何位置上(注意,现在我们知道传统科学认为的电子在绕核高速运动的假说是错误的),电子在在某个位置上出现的概率由薛定谔方程描述,科学家还给这种状态起了个名字叫叠加态;当我们观察电子位置的时候,电子才出现在一个具体的位置上,位置确定的状态叫做“坍缩态“,从叠加态到坍缩态的过程称之为“坍缩“。
最后,量子还有第三个重要内涵“纠缠“,纠缠一词经常出现科幻文学作品中,所以很多人都或多或少的有所耳闻。人们发现,可以通过一些特殊的手段,让两个(或者多个)量子在某些特殊的物理属性上处于一种相关联的状态中,例如,一个光子经过某个特殊的装置以后会变成两个偏振方向完全正交的光子,在测量光子的偏振方向之前,两个光子的偏振方向都是不确定的,但如果我们测量了其中一个光子的偏振方向,则对另一个光子的偏振方向测量的结果一定与前一个光子的偏振方向正交,这听上去似乎并没有什么魔幻,量子纠缠魔幻在于它不属于两个量子之间的相互作用,换句话说两个量子之间状态的关联可以超光速存在或传递。现在让我们假象一个场景,假如人类掌握了长时间保持量子纠缠状态的技术与量子状态控制的技术,人类就可以首先通过加速器将两颗纠缠量子中的一颗,加速到无限接近光速的速度,然后将其发送给几光年之外的外星文明,当然这个过程需要好几年的时间,但是在外星文明接收到这个量子以后,两个文明之间就建立起了一个超光速的通信信道。例如人类将信号编码成二进制串,然后将其调制成量子对应的状态,几光年之外的外星文明通过不断地测量手中量子的状态就可以接收到信息,从而实现超光速通信。事实上,上述超光速通讯的想象就是《三体》中质子的情节。
二、计算的本质与传统计算机的理论根基
在介绍完量子之后,再让我们来思考另一个问题“计算的本质”是什么?关于这个问题,不同的人会可能有给出截然不同的回答,正所谓仁者见仁智者见智,这里我们仅从便于类比“量子计算”与“传统计算”的角度给出一个回答:计算是将一组状态按照一定的规则转换到另一组状态的过程。举例说明如下,假如我们要计算1+1=2,我们首先需要将两个1转化为一组状态,然后构造一组加法规则,最终得到结果2的状态表示。这里我们用一位二进制表示一个1,所以初始状态就是11;为了实现加法运算,我们基于布尔代数(也就是与、或、非、异或等逻辑运算)构造一组运算规则,具体逻辑编排如下:
C0 = A xor BC1 = A and B
实施具体计算的时候,使用1替换上面式子中的AB,就能得到结果C1C0=10,正好对应结果2的二进制表示。截至目前,上述设计仍然停留在逻辑的层面上,并没有制造出具体的可以实施计算的“机器”。为了制造一台可以计算的机器,人们还需要解决两个问题:一个是找到0和1的适当物理表示;另一个则是在前述的状态表示的前提下,造出能够实现逻辑门功能的电路。幸运的是,上述两个问题在十九世纪40年代前后都得到了有效的解决,人们使用电压的高和低或者电流的强和弱表示0和1,使用电子管或者半导体三极管构造出了逻辑门电路,于是电子计算机就诞生了。电子计算机自诞生以来得到了持续的发展与进步,以至于后来人们陆续提出存储程序的思想,编译的思想,操作系统的思想,发明了数据库技术,网络技术、多媒体技术、人工智能技术等,但万变不离其宗,其基本的工作原理并没有发生根本性的改变,布尔代数理论与电子技术仍然是其灵魂之所在。
三、量子计算与量子计算机
不同于现在的电子计算机,量子计算目前还处于理论基本成熟,但技术实现上仍然面临巨大挑战的低级发展阶段,所以出现在新闻媒体上的量子计算机看上去更像是一堆复杂的科研装置,而不是人们脑海中固有的显示器+键盘的形象(下图是我国的九章量子计算原型机)。人类对量子计算机的研究仍然停留在如何实现“计算”这一基本问题上,根本无暇顾及体积、功耗、易用等高级需求。
目前的量子计算机之所以被叫做“计算机”,仅仅是因为他们符合我们前文中对计算本质的描述与定义。与电子计算机当年的发展一样,要解决计算的问题,量子计算机同样面临两个类似的挑战:一个是逻辑状态的适当物理表示;另一个则是在前述的逻辑状态表示的前提下,造出能够实现逻辑转换功能的器件,前者成为量子比特,后者成为量子门。
在传统的电子计算机中,比特是一个二进制位,其值非0即1。量子比特虽然也用来表示一个二进制位,但其值是不确定的,它以一定的概率p为0,以剩余概率1-p为1,或者更加专业说法是量子比特处于0与1的叠加状态。所以,在逻辑上量子比特的值是一个概率分布,这一点是量子计算机与传统计算机的一项重要特征。因为量子比特处于叠加态,每个量子比特都是01两种状态的叠加,所以n个量子比特就是2^n(2的n次方,下同)个二进制值的叠加。如果我们对n个量子比特进行了一次运算(注意运算的定义,运算就是状态的转换),也就意味着我们一次(或者说同时)对2^n个可能的取值都进行了一次运算,2^n个结果按照一定的概率分布叠加在运算后的n个量子比特中,这就是为什么人们认为量子计算机或许可以在性能上对传统电子计算机形成降维打击的原因。理论上,我们可以选择特定的展现出量子特性的粒子作为量子比特的具体物理实现,例如:氢原子、电子、光子等。
量子比特解决了逻辑状态的物理表达问题,而量子门则解决逻辑状态变换的具体物理实现问题。最简单的量子门是量子非门,它将一个“以概率p为0以剩余概率1-p为1的量子比特”转换为“以概率1-p为0以剩余概率p为1的量子比特”,换句话说,它实现了两种逻辑状态概率的交换。
除量子非门外,还有受控非门等数种量子门,他们都按照一定的规则,改变一个或者多个量子比特中逻辑状态的概率分布。幸运的是,尽管在实现逻辑与、逻辑或、逻辑非门的过程中,遇到了一些问题与挑战,人类还是基本构建起了完备的量子门集合。这意味着,我们可以使用量子比特与量子门实现功能上与电子计算机等价的计算系统。这也是为什么我们认为量子计算理论基本完备的原因。
因为对不同量子实施状态改变的物理原理可能是不同的,所以量子比特的具体实现方法决定了量子门的具体实现方法。另一方面,有些量子是可以空间位置固定的,例如氢原子、电子等,而另一些量子则是无法空间位置固定的,例如光子,因为宇宙中不存在静止的光子。因此量子比特的具体实现,也注定了量子门的时空排布方式。例如对电子或者氢原子做两次量子门操作时,我们只能先应用第一个量子门,再应用第二个量子门,也就是在时间上排布两个量子门。而如果我们选择光子作为量子比特,则我们就可以在光路上依次布置两个量子门,也就是在空间上排布量子门。
不同的量子比特实现,对应着不同的量子门的实现难度与可靠性,可能一些量子实现量子非门较为容易,而另一些量子实现受控非门(或其他量子门)较为容易,因此如何集合不同量子比特实现的优势,构建更稳定可靠、经济实用的量子计算系统也是目前量子计算领域一个重要的研究方向。
目前,量子计算的基本理论已经基本成熟,但在具体物理实现的层面仍然面临着诸多困难挑战,量子计算机基本相当于十九世纪40年代左右电子计算机的发展水平,人类对量子计算机的研究仍然停留在打通关键技术的阶段,距离大规模应用与通用应用还有相当长的一段距离。
另一方面,尽管量子计算机的基本原理决定了其在某些方面对传统计算机具有压倒性的优势,但这并不意味着量子计算机可以对传统计算机形成全面的碾压,事实上很多传统计算的问题,量子计算机甚至还无法给出具体可行的解决方案,或者无法从性能上与传统计算机向对标。
四、总结
综上,目前量子计算机的发展尚处于非常早期的阶段,距离大规模应用还非常之遥远。几乎所有所有号称使用了量子计算技术制造的电子设备,包含所谓的量子加密PC、量子加密耳机等其他电子设备,都是智商税。
相关文章:

潜力巨大但道路曲折的量子计算
近一年来,由于工作的原因参观访问了一些量子产业园,接触了量子加密计算机、量子云计算等非常炫酷的概念性产品,这与自己一直认为的“量子技术仍然处于实验室研究阶段”的基本判断与认知产生了强烈的冲突,一刹那间,心中…...

LabVIEW驱动电机实现样品自动搜索
利用LabVIEW控制电机驱动相机在XY平面上进行扫描,以检测样品位置。样品最初可能位于相机视野范围之外,需要实现自动搜索样品位置并完成精确定位扫描的功能。该系统需具有以下特点: 高效搜索:能够快速确定样品位置,缩短…...
React Native Hooks开发指南
一、什么是Hooks Hooks 是 React 16.8 的新增特性。在不编写 class 的情况下使用 state 以及其他的 React 特性。Hooks 是一种在函数式组件中使用有状态函数的方法。 二、类组件 componentDidMount、componentDidUpdate 和 componentWillUnmount 这三个函数的组合。 三、常用…...

腾讯云AI代码助手编程挑战赛-厨房助手之AI大厨
腾讯云AI代码助手编程挑战赛-厨房助手之AI大厨 作品简介 身处当今如火箭般迅猛发展的互联网时代,智能聊天助手已然化身成为提升用户体验的关键利器,全方位渗透至人们的数字生活。 紧紧跟随着这股汹涌澎湃的时代浪潮,我毅然投身于极具挑战性…...
ubuntu22.04 gcc,g++从10.5切换到低版本9.5
一、安装gcc-9.5 mkdir gcc cd gcc sudo apt-get download $(apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances --no-pre-depends gcc-9 | grep -v i386 | grep "^\w") sudo dpkg -i *.deb sudo…...
在 WSL 中使用 Jupyter Notebook 的 TensorBoard 启动问题与解决方法
在 WSL(Windows Subsystem for Linux)环境中,通过 Jupyter Notebook 使用 %tensorboard --logdir outputs有时会出现 “Timed out waiting for TensorBoard to start” 错误。常见原因通常是先前的 TensorBoard 进程尚未结束,占用…...

Spring Boot 2 学习全攻略
Spring Boot 2 学习资料 Spring Boot 2 学习资料 Spring Boot 2 学习资料 在当今快速发展的 Java 后端开发领域,Spring Boot 2 已然成为一股不可忽视的强大力量。它简化了 Spring 应用的初始搭建以及开发过程,让开发者能够更加专注于业务逻辑的实现&am…...

海豚调度DolphinScheduler-3.1.9配置windows本地开发环境
源代码下载地址https://dolphinscheduler.apache.org/zh-cn/docs/3.1.9 1.Zookeeper安装与使用 如图下载解压zookeeper安装包,并创建data和log目录 下载地址 https://archive.apache.org/dist/zookeeper/zookeeper-3.6.4/apache-zookeeper-3.6.4-bin.tar.gz 进入…...
【机器学习:十九、反向传播】
1. 计算图和导数 计算图的概念 计算图(Computation Graph)是一种有向无环图,用于表示数学表达式中的计算过程。每个节点表示一个操作或变量,每条边表示操作的依赖关系。通过计算图,可以轻松理解和实现反向传播。 计算…...

线形回归与小批量梯度下降实例
1、准备数据集 import numpy as np import matplotlib.pyplot as pltfrom torch.utils.data import DataLoader from torch.utils.data import TensorDataset######################################################################### #################准备若干个随机的x和…...

SpringCloud微服务:基于Nacos组件,整合Dubbo框架
dubbo和fegin的差异 一、Feign与Dubbo概述 Feign是一个声明式的Web服务客户端,使得编写HTTP客户端变得更简单。通过简单的注解,Feign将自动生成HTTP请求,使得服务调用更加便捷。而Dubbo是一个高性能、轻量级的Java RPC框架,提供了…...

Golang 简要概述
文章目录 1. Golang 的学习方向2. Golang 的应用领域2.1 区块链的应用开发2.2 后台的服务应用2.3 云计算/云服务后台应用 1. Golang 的学习方向 Go 语言,我们可以简单的写成 Golang 2. Golang 的应用领域 2.1 区块链的应用开发 2.2 后台的服务应用 2.3 云计算/云服…...

web前端第三次作业---制作可提交的用户注册表
制作可提交的用户注册表: 代码: <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</tit…...
教育邮箱的魔力:免费获取Adobe和JetBrains软件
今天想和大家聊聊一个超级实用的话题——如何利用Edu教育邮箱来免费获取Photoshop等Adobe系列软件,以及JetBrains的各种开发工具。 Edu邮箱的价值 首先,Edu邮箱真的是个宝藏!如果你在学校或教育机构注册过,通常会获得一个这样的…...
sympy常用函数与错误笔记
文章目录 前言一、sympy基本函数介绍变量定义1. sp.Symbol("x") 或 sp.symbols("m n")2. sp.Function("y")3. func(x).diff(x, n) 定义方程与求解符号1. sp.Eq(lhs, rhs)2. 求解函数(*代表了常用且重要,其他部分作为拓展&…...
47_Lua文件IO操作
文件I/O(Input/Output)操作在Lua中用于与外部文件进行交互,包括读取文件中的数据和将数据写入文件。Lua提供了两种模式来进行文件操作:简单模式和完全模式。下面将详细介绍这两种模式的基本使用。 1.简单模式 1.1 简单模式介绍 简单模式提供了基本的文件操作功能,它主要…...
nginx-lua模块处理流程
一. 简述: nginx的模块化设计使得每一个http模块可以只专注于完成一个独立的,简单的功能。一个请求的完整处理过程可以由多个http模块共同协作完成,这种设计具有简单性,测试性,扩展性,灵活性。关于nginx 的…...

【大数据】机器学习-----最开始的引路
以下是关于机器学习的一些基本信息,包括基本术语、假设空间、归纳偏好、发展历程、应用现状和代码示例: 一、基本术语 样本(Sample): 也称为实例(Instance)或数据点(Data Point&…...
【前端】自学基础算法 -- 21.图的广度优先搜索
图的广度优先搜索 简介 图的广度优先搜索,沿着图的宽度遍历图的节点,先访问离起始节点最近的节点,然后逐渐向外扩展。 基本步骤: 选择一个起始节点作为当前节点。将当前节点加入队列。当队列不为空时,重复以下步骤…...

ChatGPT与Claude AI:两大生成式对话模型的比较分析
自ChatGPT推出以来,这款强大的AI聊天机器人迅速吸引了全球的关注。其出色的对话能力和多样化的应用场景,成为许多人初次体验基于大规模语言模型的潜力。然而,在这个快速发展的领域中,另一款AI也在悄然崭露头角,那就是由…...

Opencv中的addweighted函数
一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...

Linux中《基础IO》详细介绍
目录 理解"文件"狭义理解广义理解文件操作的归类认知系统角度文件类别 回顾C文件接口打开文件写文件读文件稍作修改,实现简单cat命令 输出信息到显示器,你有哪些方法stdin & stdout & stderr打开文件的方式 系统⽂件I/O⼀种传递标志位…...

【UE5 C++】通过文件对话框获取选择文件的路径
目录 效果 步骤 源码 效果 步骤 1. 在“xxx.Build.cs”中添加需要使用的模块 ,这里主要使用“DesktopPlatform”模块 2. 添加后闭UE编辑器,右键点击 .uproject 文件,选择 "Generate Visual Studio project files",重…...

软件工程 期末复习
瀑布模型:计划 螺旋模型:风险低 原型模型: 用户反馈 喷泉模型:代码复用 高内聚 低耦合:模块内部功能紧密 模块之间依赖程度小 高内聚:指的是一个模块内部的功能应该紧密相关。换句话说,一个模块应当只实现单一的功能…...

02.运算符
目录 什么是运算符 算术运算符 1.基本四则运算符 2.增量运算符 3.自增/自减运算符 关系运算符 逻辑运算符 &&:逻辑与 ||:逻辑或 !:逻辑非 短路求值 位运算符 按位与&: 按位或 | 按位取反~ …...

客户案例 | 短视频点播企业海外视频加速与成本优化:MediaPackage+Cloudfront 技术重构实践
01技术背景与业务挑战 某短视频点播企业深耕国内用户市场,但其后台应用系统部署于东南亚印尼 IDC 机房。 随着业务规模扩大,传统架构已较难满足当前企业发展的需求,企业面临着三重挑战: ① 业务:国内用户访问海外服…...
文件上传漏洞防御全攻略
要全面防范文件上传漏洞,需构建多层防御体系,结合技术验证、存储隔离与权限控制: 🔒 一、基础防护层 前端校验(仅辅助) 通过JavaScript限制文件后缀名(白名单)和大小,提…...

【Java多线程从青铜到王者】单例设计模式(八)
wait和sleep的区别 我们的wait也是提供了一个还有超时时间的版本,sleep也是可以指定时间的,也就是说时间一到就会解除阻塞,继续执行 wait和sleep都能被提前唤醒(虽然时间还没有到也可以提前唤醒),wait能被notify提前唤醒…...

Win系统权限提升篇UAC绕过DLL劫持未引号路径可控服务全检项目
应用场景: 1、常规某个机器被钓鱼后门攻击后,我们需要做更高权限操作或权限维持等。 2、内网域中某个机器被钓鱼后门攻击后,我们需要对后续内网域做安全测试。 #Win10&11-BypassUAC自动提权-MSF&UACME 为了远程执行目标的exe或者b…...
用鸿蒙HarmonyOS5实现国际象棋小游戏的过程
下面是一个基于鸿蒙OS (HarmonyOS) 的国际象棋小游戏的完整实现代码,使用Java语言和鸿蒙的Ability框架。 1. 项目结构 /src/main/java/com/example/chess/├── MainAbilitySlice.java // 主界面逻辑├── ChessView.java // 游戏视图和逻辑├── …...