量子模拟:棋子与量子
一、问题描述
假设有一款这样的下棋游戏:棋子可以放置的位置有n个,由0到n-1号排成一条直线。
棋子每轮可放置在一个位置中,每次只能向前或向后移动一格。
如果棋子不在这条线的两头(0号位和n-1号位),那么棋子下一轮向前或向后移动的概率都是0.5。
如果棋子在这条线的末端(即这个棋子位于0号位或n-1号位),那么棋子下一轮只能向一个方向移动。即:如果棋子在0位上,那么下一轮棋子100%会到1位上;如果棋子在n-1位上,那么下一轮棋子100%会到n-2位上。
这样的话,给一个初态,过了很多轮后,棋子所在的位置会是多个位置可能性的叠加。我们希望知道棋子在不同位置出现的概率的大小。
二、量子计算思路
量子计算中的含时薛定谔方程的演化或许可以为我们解决这个问题提供一些灵感。
含时薛定谔方程如下:(用高斯单位制省略普朗克常量)
其中,H是哈密顿量,i是虚数单位,是量子态。解一阶微分方程得:
所以,要想知道任意一个t时刻的量子态,需要:
(1)将量子态用量子比特 0和1表示
(2)制备初态
(3)设计能模拟的量子线路
(4)在上加上算符
(5)对量子态多次测量,得到各个态的概率幅
所以对于这个问题,我们也可以将棋子处在一个位置视为一个量子态,那么n个位置就会有n个量子态。思路与上相似:
(1)将量子态用量子比特 0和1表示。
在这个问题中,我选择使用一个量子比特代表一个占据状态,0表示空置,1表示占据。比如,n=5,棋子100%占据0位,那么量子状态表示为|00001>(我设最右边量子态代表零位);n=6,棋子各50%概率占据2位和3位,那么量子状态表示为
注意概率幅的模方才是概率,所以0.5需要开根号。
(2)制备初态 (第四章)
(3)设计模拟“演化算符”M的线路(第三章)
我们希望能设计一个类似哈密顿量H的“演化算符”M。M的意义是:每作用一个M在现有量子态上,游戏就会进行一轮,得到新的一个量子态
(4)将M多次作用在|上(第五章)
这其中会使用到经典计算机的循环,因此我们会在第五章寻找更迭量子态概率幅的方法
(5)测量各个态的概率
接下来就可以在这个思路下,讨论量子模拟的细节
三、“演化算符”的设计
3.1量子态
首先注意到,在我的这种“用一个量子比特表示一个棋子可能占据的位置”的表示方法中,由于只有一个棋子的移动,在n个量子比特表示的量子态中量子比特只能有一个为1,其它的为0。
比如说n=6时|001000>可以表示棋子的一个状态,因为只有3号(从右往左数0,1,2,3)量子比特是1,其它都是0(表示棋子占据3号位);而|001100>就不可以表示棋子的一个状态,因为2号和3号量子比特都是1,表示棋子在某一时刻同时出现在2号空位和3号空位,这是在这个游戏中不允许的;也不能是|000000>,因为任何一轮都会有棋子摆在上面。
3.2 “演化算符”的表示
根据游戏规则,我们希望设计一个算符M,它应当满足这些等式:
第一个式子表示如果棋子一开始在0位,则作用M后,量子态会变成棋子态100%占据1位;第二个式子表示如果棋子一开始在n-1位,则作用M后会变成100%占据n-2位。
它表示如果M作用在占据中间位置的态,那么会产生占据两边位置的态的叠加态。
从上面可以看到,M作用于不同的态矢会有不同的结果。所以我们可以将M拆分
每一个分量分管一个态矢。例如M0是分管占据0位的态矢|00……001>,那么
而作用于其它态则保持该态不变
“作用于其它态保持该态不变”这一步是人为规定的,目的是保持M的每个分量的可逆性。如果M的分量作用于其它态时由于不是它的本征矢而使得结果为0
那么:
从而M0在量子线路上不可逆,但量子线路中除了测量操作外量子门都是可逆的,这就为模拟M带来了困难。
仿照哈密顿量的二次量子化,我们尝试把M写成升降算符的组合。
对于M0,从升降算符的角度,它作用在|00……001>时,可以看成先把0位上的“1”湮灭,再把1位上的“0”产生。用a表示湮灭算符,表示产生算符,那么:
角标表示作用在量子比特的标号。比如,作用在0位的量子比特上。
同理对于:
对于中间位置的M分量,类似可以写出:
那么M就是各个分量的加和。如n=5时:
从上面的式子中我们可以发现M并不是厄米的。因此它并不能像哈密顿量可以被观测到,即它不是一个能被观测到的物理量。这也是我为什么使用字母M而不是H的原因。
3.3“演化算符”的量子线路
对于M0,为了分析方便我们只考虑前两个量子比特。
后两个式子虽然在本问题中没有意义,但根据“作用于其它态保持该态不变”的设定,我们同样将其写出。
可以发现,当0位上的量子比特为1时,第0位和第1位量子比特交换(对于|00>和|11>同样成立),对应于SWAP门。同样,由于是否执行交换由0位比特决定,我们可以考虑增加一个量子比特,负责记录0位上量子比特信息(用CNOT传递),然后再利用这个增加的比特控制SWAP门的执行,即构造C-SWAP门。
而SWAP门可以由三个CNOT门构造
所以C-SWAP无非是加了一个比特控制,用3个Toffoli门
因此M0就是1个CNOT+3个Toffoli
同理,Mn-1可以写成: