(一)量子世界   

今天的计算机使用标准的(或用物理学家的话来说,“经典的”)计算模型来执行计算与处理信息,此计算模型要追溯到图灵(Turing)和冯・诺伊曼(Von Neumann)时期。在此模型中,所有信息可归约为比特(bits),一个比特可取0或1两者之一的值——并且所有处理可以通过简单的逻辑门(与、或、非、与非)来执行,这些逻辑门一次作用于一个或两个比特位。在计算过程中的任意一点,经典计算机的状态由其所有比特的状态所决定,这样一个具有n个比特位的计算机可以存在2n个可能的状态,范围从00...0(全零) 到11...1(全1)。

与此同时,量子计算机的能力在于其丰富地多的全部状态。一个量子计算机也具有比特,正如任一计算机一样。但其量子比特,又称为量子位(qubit,[kju:bit])不是表示0和1,而是可以表示0、1或同时表示0、1(即一个(0, 1)向量),这个属性被称为叠加(superposition)。这对于其本身而言并没有什么帮助,由于一台计算机其比特可能处于0到1之间的中间状态,正是一台模拟(analog)计算机,简直没有一台普通的数字计算机的能力强大。量子计算机利用了一种特殊的叠加,以至于一次允许指数级数量之多的逻辑状态,所有状态从|00...0⟩到|11...1⟩。这是一个强大的技能,并且没有任何一台经典计算机可以实现。这些量子叠加的绝大多数,以及对于量子计算最有用的就是纠缠(entangled)——它们是整个计算机的状态,它们不对应于任一数字分配,也不对应于单个量子位的模拟状态。尽管没有指数级数量之多的经典计算机的能力强大,但一台量子计算机要比任何一台经典计算机要强大得多——无论它是确定的、有概率的,还是模拟的。对于一些著名的问题(诸如因式分解大数),量子计算机很明显相比于经典计算机而言就是大赢家。一台工作的量子计算机在一天所能因式分解的数,对于经典计算机而言可能需要数百万年。

有人可能认为由于需要复杂的数学知识,理解量子计算或量子物理会显得比较困难……但实际上,从数学上而言,量子概念仅比高中代数稍复杂些而已。量子物理是困难的,因为像爱因斯坦的相对论,它要求消化简单却又违反直觉的概念。在相对论上,奇怪的概念是时间与空间是相互联系的,而直觉告诉我们,它们应用是相互独立的。如果你设法通过时间与空间开始给某个人解释相对论,那么你可能会迎来茫然的凝视。一个更好的开始方式就如爱因斯坦所做的,解释相对论遵循一个简单的物理原理:对于所有匀速移动的观察者而言,光速都是相同的。这一适度的概念然后就变为了极其深远的,并通过必然的逻辑通向爱因斯坦的时空。

为了要接触量子物理,我们必须接受的反直觉的概念有:

(1)在一个完美确定状态下的物理系统,仍然可能表现出随机行为。

(2)两个相距甚远而相互影响的系统仍然会以这种方式表现:尽管它们独立地随机,然而又会以某种方式紧密关联。

不幸的是,不像相对论,这些结论没有简单的物理原理可遵循。我们最好能做的就是将量子机制提取为一些听起来抽象的数学定律。从这些数学定律,对量子粒子(以及量子计算机中的量子位)的所有观察到的行为都可以被推导和预测。并且伴随着相对论,我们必须提防试图用经典术语来描述量子概念。

(二)黑、白与黑白中的量子定律

就目前我们所知,量子定律是最基本的物理定律;它们是不可侵犯的。以下是我们提炼出来的五条关键定律。

1、量子是与其它事物相似的系统

对于每个物理系统,相当于一个希尔伯特空间(Hilbert space)的维度等于系统最大个数能确切区分出来的状态。希尔伯特空间是具有复杂系数与内积的一个线性向量空间:⟨Φ|ψ⟩ = ∑Φi*ψi 。对于一单个量子位,有两个标准的正交状态(计算基础状态),一般记为:|0⟩ = (1  0)且|1⟩ = (0  1)。

2、一个量子状态是系统的一个配置

希尔伯特空间中的每个方向(射线)对应于系统的一个可能状态,有两个状态是明确可区分的,当且仅当这两个方向是正交的(即内积为零)。其它量子状态包括:|+⟩ = (1/√2)(1  1),|-⟩ = (1/√2)(1  -1),|↻⟩ = (1/√2)(1  i),|↺⟩ = (1/√2)(1  -i)。

3、一个量子状态改变;它自然想要演化,但它总是可以被撤销。

一个封闭系统的演化是在其希尔伯特空间的一个单位变换。单位意味着保留线性与内积。

4、组成——如何将各个部分组合成一个整体

一个复合系统的希尔伯特空间是各个部分希尔伯特空间的张量积。一个双量子位系统可以存在于一个乘积状态,诸如|00⟩或|0+⟩,但也可以存在于一个纠缠状态(|00⟩ + |11⟩) / √2,在这种情况下,任一量子位都不具有一个明确的状态,即便两个组合在一起会具有。

5、量子测量是概率性的

对相应于将其希尔伯特空间分解为正交子空间{∏j}系统的每一次可能测量,这里∑∏j = 1。在状态|ψ⟩上,结果j以概率P(j) = ⟨ψ|∏j|ψ⟩发生,并且在测量之后的状态为|ψj⟩ = ∏j|ψ⟩ / √P(j)。测量导致系统概率性地做出行为,并忘记其先前测量状态,除非该状态正好整个位于子空间∏j的其中之一。

(三)量子合成器

量子合成器是我们用于对一个量子处理器编程的图形化用户界面。对量子计算熟悉的人可以将合成器看作为构件量子电路的一个工具,可以使用包含良好定义的门电路以及测量的库。对于不熟悉的人来说,我们将会解释一些关键部分。

当你第一次点击上面的“Composer”标签,系统会询问你当前想要运行一个理想的量子处理器还是一个真实的量子处理器。这涉及到了系统的拓扑。在理想的处理器中,门可以被放置在任何地方,而在真实的处理器中,拓扑由正在我们实验室里运行的物理设备设置(注意,这限制了两个量子位门的某些使用性)。

一旦你处于“Composer”标签页面,你可以开始制作你自己的量子电路!我们把这个描述为一个量子谱,因为它在某些方面类似于音乐上的五线谱(即乐谱

第一部分:IBM量子体验的更多相关文章

  1. IBM Bluemix体验:Containers

    国际版的Bluemix目前有三个region,US South,United Kingdom和Sydney.其中US South是功能最全的,UK其次,Sydney功能最少.Containers服务在 ...

  2. IBM Bluemix体验:Containers持久存储

    上一篇介绍了在Bluemix Containers服务中使用docker hub镜像和container的高可用配置.接下来我们尝试如何在容器中使用持久存储. 在Bluemix的Containers服 ...

  3. 寒假生活第一天——Github初体验

    快开学了,今天体验了一下github这个对我来说很是神秘的东西 它的定义来源于百度百科,如有异议,那就有吧.//gitHub是一个面向开源及私有软件项目的托管平台,因为只支持git 作为唯一的版本库格 ...

  4. IBM Bluemix体验:Containers进阶

    上一篇中介绍了Bluemix的Containers服务以及如何使用自定义的docker image创建一个容器实例并对外提供服务.除了自定义镜像之外,Bluemix Containers还可以使用Do ...

  5. 第一天的php体验

    第一次了解php.以前对于程序猿的认知是很片面的.因为没有了解过.今天通过一天的了解交流,有了新的认知.对于这个主要应用于前端的语言还是很有兴趣的.毕竟可以亲眼看到自己做出来的网页,心里的成就感肯定满 ...

  6. IBM新合作伙伴计划助力企业转型升级

        IBM作为老牌企业,一直在引领者技术方面的变革.当IBM再一次从自我革新开始,期望能够更快的将认知计算和云推广给自己的合作伙伴和用户们,以帮助他们在新的转型期内,能够快人一步.         ...

  7. Ruby 基础教程 第一部分总结

    第一部分:Ruby 初体验 第一章: Ruby 初探 前言 开头的这一章节讲了一些十分基础的内容,重要的几个话题有: ruby 命令的执行方法 对象.方法的概念 常见的打印方法 ruby 命令的执行方 ...

  8. Docker下实战zabbix三部曲之一:极速体验

    对于想学习和实践zabbix的读者来说,在真实环境搭建一套zabbix系统是件费时费力的事情,本文内容就是用docker来缩减搭建时间,目标是让读者们尽快投入zabbix系统的体验和实践: 环境信息 ...

  9. [转帖]IBM开源Power指令集:国产高性能CPU迎来新机遇?

    IBM开源Power指令集:国产高性能CPU迎来新机遇? https://www.cnbeta.com/articles/tech/880971.htm cnbeta的新闻.. 希望高性能CPU 能快 ...

随机推荐

  1. 【技术贴】VirtualBox给VDI格式的虚拟机扩容

    新建立了一个虚拟机用来装一些比较烦的软件,比如数据库什么的,但是初始的时候硬盘放小了,找了很久才找到解决方案(我的数据库是动态大小的): 1.直接在虚拟机关闭的状态下,在设置-->存储--> ...

  2. Java EE 参考文档及sample

    http://docs.oracle.com/javaee/6/tutorial/doc/ https://svn.java.net/svn/javaeetutorial~svn/ 检索: site: ...

  3. (转) 在C#用HttpWebRequest中发送GET/HTTP/HTTPS请求

    转自:http://blog.csdn.net/zhoufoxcn/article/details/6404236 通用辅助类 下面是我编写的一个辅助类,在这个类中采用了HttpWebRequest中 ...

  4. spinner与arrays.xml的使用

    在Android中,用string-array是一种简单的提取XML资源文件数据的方法. 例: 把相应的数据放到values/arrays.xml文件里 <?xml version=" ...

  5. C语言itoa()函数和atoi()函数详解(整数转字符C实现)

    1.int/float to string/array: C语言提供了几个标准库函数,可以将任意类型(整型.长整型.浮点型等)的数字转换为字符串,下面列举了各函数的方法及其说明. ● itoa():将 ...

  6. Swift的排序算法总结

    下面让我们一起来见识一下swift中基于Array的扩展的冒泡排序,选择排序和快速排序吧. 1.冒泡排序 冒泡排序再基础不过了,这里就不再讲其原理了,实在不会可以看下百度百科冒泡排序 既然冒泡排序避免 ...

  7. 修改注册表来修改IE的设置---资料汇总

    原文链接: http://blog.csdn.net/wangqiulin123456/article/details/17068649 附带批处理执行脚本: @echo off &title ...

  8. C#中的ThenBy是如何实现的

    C#中给继承自IEnumerable的对象(最熟知的就是List了)提供了很丰富的扩展方法,涉及列表操作的方方面面.而扩展方法ThenBy就是很有意思的一个,它的实现也很巧妙. 如果有这样的一个Tea ...

  9. Ubuntu命令--CURL用法

    curl命令是个功能强大的网络工具,支持通过http.ftp等方式下载文件.上传文件.还可以用来抓取网页.网络监控等方面的开发,解决开发过程中遇到的问题. 常用参数curl命令参数很多,这里只列出我曾 ...

  10. java5 Lock用法

    锁是控制多个线程对共享资源进行访问的工具.通常,锁提供了对共享资源的独占访问.一次只能有一个线程获得锁,对共享资源的所有访问都需要首先获得锁.不过,某些锁可能允许对共享资源并发访问,如 ReadWri ...