第六届・2024 MindSpore 量子计算黑客松火热进行中。本次大赛由量子信息网络产业联盟主办,昇思 MindSpore Quantum 社区承办,多所高校和单位联合举办。开发者将全面体验全新一代通用量子计算框架 MindSpore Quantum。

第六届·2024 MindSpore 量子计算黑客松热身赛赛题解读_量子计算

热身赛为量子计算基础学习和编程演练。完成热身赛的前 100 名选手将有机会获得定制文化衫 1 件,数量有限,不容错过。

第一步:关注 MindQuantum 代码仓,参见量子软件编程指南

第二步:注册并完成华为云账号实名认证

第三步:登录 HiQ 量子计算云平台进行在线答题。

热身赛参考文档:https://competition.huaweicloud.com/information/1000042022/noise

第六届·2024 MindSpore 量子计算黑客松热身赛赛题解读_MindSpore Quantum_02

每道题目的上方都有两个链接:MindQuantum 教程和 MindQuantum API 参考。两个链接中都能找到题目的解答。小技巧:在 MindQuantum API 参考中搜索题目中的关键词,可以快速找到对应的内容。

热身赛通过攻略视频回放:https://www.koushare.com/live/details/33684


第一题

第六届·2024 MindSpore 量子计算黑客松热身赛赛题解读_量子计算_03

这道题考的是如何在线路中用 on 的方式添加量子门,在 MindQuantum 中,每个量子门都有 on 方法,比如 X.on (0, 1) 就意味着将 X 门作用在第 0 个比特上,并且受第 1 个比特控制。本题要求 X 门作用在第 2 个比特上,受第 0 个和第 1 个比特控制。因此可以用 X.on(2, [0, 1]) 来表示。可以看到,on 方法的第二个参数可以接受包含多个控制位的列表,因此可以方便的添加多控制门。详细用法可以参考 on 方法的 API 文档


第二题

第六届·2024 MindSpore 量子计算黑客松热身赛赛题解读_MindSpore Quantum_04

这道题考的是如何对量子线路进行压缩。在 MindSpore Quantum 中,Circuit 类是量子线路模块,其中实现了很多操作量子线路的方法。其中就有一个方法可以压缩线路,接口名就叫作 compress()。因此,这道题调用 compress() 方法就可以成功通过了。


第三题

第六届·2024 MindSpore 量子计算黑客松热身赛赛题解读_MindSpore Quantum_05

这道题考的是线路翻转,也就是说,我们需要将线路的比特顺序上下颠倒。题中给出了一个很长的线路,但是我们并不需要关心线路的具体内容,因为 Circuit 类中有一个方法可以直接实现线路翻转的功能 ——reverse_qubits(),我们在代码中直接调用该方法就可以成功通过了。


第四题

第六届·2024 MindSpore 量子计算黑客松热身赛赛题解读_MindSpore Quantum_06

这道题考的是如何给参数化量子线路中的变量名添加后缀,掌握这种技巧就可以很方便的搭建变分量子线路了。在 mindquantum.core.circuit 模块中,add_suffix() 函数就可以实现添加后缀的功能。具体来说,它需要接受一个量子线路和一个后缀字符串作为输入参数,然后返回一个添加了后缀的新的量子线路。选手只需要将这个新的量子线路通过 += 的方式添加到新构造的线路后面,就可以构造出多层的变分线路了。题中的代码如下:

第六届·2024 MindSpore 量子计算黑客松热身赛赛题解读_MindSpore_07

首先我们需要将 add_suffix() 函数 import 进来。题目中需要搭建 3 层线路,因此可以用一个循环实现,在每次循环中都对 new_circ 用 += 的方式添加 add_suffix() 函数返回的新线路,后缀字符串设置为循环计数器的值 p,就可以成功通过题目了。


第五题

第六届·2024 MindSpore 量子计算黑客松热身赛赛题解读_MindSpore Quantum_08

题目中给出了所有需要用到模块的链接,点击即可查看用法。其中,第三个门 ——RY 受控门可以用 RY 门简单搭建出来:circ += RY (0.1).on (1, 0) 。QubitOperator 可以构造泡利算子,Hamiltonian 则是构造哈密顿量的类,因此题中的哈密顿量可以这样构建:ham = Hamiltonian (QubitOperator (“X0 Y1”)) 。最后,运行 sim.get_expectation (ham, circ) 就得到哈密顿量的期望值了。


第六题

第六届·2024 MindSpore 量子计算黑客松热身赛赛题解读_MindSpore Quantum_09

mindquantum.algorithm.nisq 中可以看到各种已实现的 Ansatz 线路,只需要传入比特数和层数即可构造(题中 ansatz 为 RYCascade),构造完成后,circ = RYCascade (n_qubits, depth).circuit 就得到 ansatz 线路了。


第七题

第六届·2024 MindSpore 量子计算黑客松热身赛赛题解读_MindSpore Quantum_10

这题考的是 Rn 门的构造,以及如何求变分线路参数关于哈密顿量的期望值和梯度。Rn 门有 3 个参数,因此可以像这样构造含参线路: circ += Rn (‘a’,’b’,’c’).on (0) ,哈密顿量的构造方法与第五题类似:ham = Hamiltonian (QubitOperator (“Z0”)) ,梯度算子需要调用模拟器的类方法来得到:grad_ops = sim.get_expectation_with_grad (ham, circ) ,得到的梯度算子可以传入线路参数的具体数值,并返回相应的期望值和梯度: f, g = grad_ops (np.array ([alpha, beta, gamma])) ,由于题目需要求 α 的导数值,最后将得到的梯度值的第一个参数的实部返回即可:return np.real (g [0,0,0]) 。


第八题

第六届·2024 MindSpore 量子计算黑客松热身赛赛题解读_MindSpore_11

此题中涉及的数学概念较多,但总的来说考的是 TimeEvolution 模块的使用,下面我们详细分析一下。

TimeEvolution 类属于 mindquantum.core.operator 模块,主要功能是根据哈密顿量生成式子对应的量子线路。它接受两个输入参数:第一个是哈密顿量 H,第二个是演化时间 t。调用 TimeEvolution().circuit 方法将返回一个量子线路,对应于算符。在某些情况下,生成的线路只是理论值的一种近似,因此会出现精度问题,而这种近似可以通过增加近似阶数 n 来提高精度(具体近似公式如题中所述)。在本题中,我们需要用 TimeEvolution 生成 n 阶的近似线路,并与理论计算得到的精确值相比较。

第六届·2024 MindSpore 量子计算黑客松热身赛赛题解读_量子计算_12

可以看到,在题目代码中已经给出了哈密顿量 H(第 7 行)和精确值 m1(第 8 行),并且在循环中给出了线路对应的矩阵 m2(第 14 行),以及 m1 与 m2 比较的代码(第 15 行)。我们只需要补充第 12 行,即:用 TimeEvolution 生成 n 阶的近似线路。

在近似公式中可以发现,所谓 n 阶近似,就是将演化时间 t 除以 n,变成,再将该式子作用 n 次,即。这个式子可以这样构造:括号中的式子可以用 TimeEvolution 模块生成量子线路,然后将该线路重复 n 次,即可得到 n 阶近似线路。我们可以很简洁的实现整个过程:TimeEvolution(h, 1.0/n).circuit*n,一行简短的代码就构造出了 n 阶近似。

之后这个线路的矩阵 m2 会与理论解 m1 相比较,如果达到精度 1e-2 的话,则跳出循环,这样就得到了达到精度所需的最小的 n。


第九题

第六届·2024 MindSpore 量子计算黑客松热身赛赛题解读_MindSpore_13

本题考的是如何在线路中添加噪声。在 MindQuantum 中,通过 ChannelAdder 可以构建噪声模型。首先我们通过 GateSelector 设置需要添加噪声的门,然后用 MixerAdder 结合想要添加的噪声,例如:MixerAdder ([GateSelector ('x'),DepolarizingChannelAdder (0.05, 1)]) 。Y 门和 CNOT 门以此类推,最后,通过 SequentialAdder 结合成一个噪声模型:

第六届·2024 MindSpore 量子计算黑客松热身赛赛题解读_量子计算_14


第十题

第六届·2024 MindSpore 量子计算黑客松热身赛赛题解读_MindSpore Quantum_15

本题考虑的是运行真实量子硬件的情况,此时我们无法直接求得关于哈密顿量的期望值,只能通过处理多次采样获得的比特串来得到结果。 假设线路末态为

,则期望值为(因为)。在采样 10000 次后,得到的比特串分布应当近似于相应的系数,因此可以认为:a=res.data.get ('00', 0)/shots,以此类推,最后将计算出的期望值返回即可。


大赛报名 & 邀请好友参赛

点击查看奖品和操作步骤:https://competition.huaweicloud.com/information/1000042022/invite

第六届·2024 MindSpore 量子计算黑客松热身赛赛题解读_量子计算_16

奖品图片仅做参考,以实际收到奖品为准,数量有限,先到先得!

大赛链接:https://competition.huaweicloud.com/information/1000042022/introduction

点击关注,第一时间了解华为云新鲜技术~