教程
在该教程中,我们将会从对Cirq的一无所知到创建创建一个量子变分算法(quantum variational algorithm)
,请注意,本教程不是量子计算101教程,我们假设在Nielsen和Chuang的教科书《量子计算和量子信息》的水平上熟悉量子计算. 有关概念性概述,请参阅概念文档。
首先,请遵循安装的说明。
背景: 变分量子算法
量子理论中的变分法是用于发现一个量子系统低能态的经典方法。该方法的大致思想是是将一个试波函数(有时称为ansatz)定义为某些参数的函数,然后找到这些参数的值,以最小化能量相对于这些参数的期望值。这个最小化的anstaz是最低能量特征态的近似值,并且其期望值用作基态能量的上界。
在最近几年(以 arXiv:1304.3061和arXiv:1507.08969作为示例),人们已经意识到量子计算机可以模拟经典的技术,并且量子计算机具有特点优点。特别地,当我们把经典的量子变分法应用到一个 n n n位量子位的系统中,需要指数( n n n个)的复数来一般地表示系统的波函数。然而,随着量子计算机可以用参数化的量子电路直接产生这种状态,然后通过重复测量估计能量的期望值。
这种想法导致了一类称为变分量子算法的算法。实际上,这种方法不仅限于寻找低能量本征态,而是能最小化任何可以表示为量子可观测量的目标函数。确定这些量子变分算法在什么条件下能够成功是一个有待解决的问题,探索这类算法是研究有噪声的中等规模量子计算机的一个关键部分。
我们将关注的经典问题是具有横向场的2D +/- Ising模型(ISING). 这个问题是NP完全的,因此量子计算机极不可能在所有实例中有效地解决它。然而,这类问题说明了Cirq旨在解决的一般问题。
考虑能量函数
E ( s 1 , . . . , s n ) = ∑ < i , j > J i , j s i s j + ∑ i h i s i E(s_1, ..., s_n) = \sum_{<i, j>}J_{i,j}s_is_j+\sum_{i}h_is_i E(s1,...,sn)=<i,j>∑Ji,js