第七届·2025 MindSpore量子计算黑客松全国大赛——热身赛通关攻略
第七届·2025 MindSpore量子计算黑客松全国大赛——热身赛通关攻略
无论您是初学小白,还是技术达人,参赛即有收获!报名截止日期5月20日,诚邀您报名参赛,勇攀量子世界的高峰,挑战黑客松年度总冠军,赢取属于你的荣誉和机遇!
大赛报名:https://developer.huaweicloud.com/competition/information/1300000041

# 01 答题准备
热身赛为量子计算基础学习和编程演练,完成热身赛的前100名选手将有机会获得定制礼品和电子证书,数量有限,不容错过。
第一步:注册并完成华为云账号实名认证[1];
第二步:准备开发环境,详见本地安装使用MindSpore Quantum操作指导[2];
第三步:了解热身赛答题指南[3];
**热身赛题目文档:**https://developer.huaweicloud.com/competition/information/1300000041/html2

每道题目的上方都有两个链接:MindSpore Quantum教程和MindSpore Quantum API参考,两个链接中都能找到题目的解答。答题小技巧:在MindSpore Quantum API参考中搜索题目中的关键词,可以快速找到对应的内容。
**直播预告:**我们将于2025年4月8日 周二晚上19:00准时直播《第七届·2025 MindSpore量子计算黑客松全国大赛——热身赛通关攻略直播宣讲》

# 02 热身赛答题指导 一 题目1:制备一个量子线路

题目描述:
制备一个量子线路,该线路包含三个量子比特(q0, q1, q2)。线路由以下三个门组成:
1、一个作用在q0比特上的H门。
2、一个X门,作用在q1比特上,受q0比特控制。
3、一个X门,作用在q2比特上,受q0和q1比特共同控制。
题目图示:(这里对应 1.ipynb 中显示的量子线路图)
解题思路:
这道题考查的是如何在MindSpore Quantum中构建基础的量子线路,特别是如何使用量子门的on方法来指定目标比特和控制比特。
- on 方法:
MindSpore Quantum中几乎所有的量子门都继承自BasicGate类,并拥有on()方法。这个方法的第一个参数是目标比特的索引(一个整数),第二个可选参数是控制比特的索引(可以是一个整数,或者一个包含多个整数的列表)。
解题步骤:
1)对于作用在q0上的H门,目标比特是 0,没有控制比特,所以使用H.on(0)。
2)对于作用在q1上、受q0控制的X门,目标比特是1,控制比特是0,所以使用 X.on(1, 0)。
3)对于作用在q2上、受q0和q1控制的X门,目标比特是2,控制比特是0和1。当有多个控制比特时,需要将它们的索引放在一个列表里作为on方法的第二个参数,所以使用 X.on(2, [0, 1])。
将这三步添加到Circuit对象中即可完成线路的构建。
相关API文档:
量子门模块(mindquantum.core.gates):
BasicGate.on 方法:
二、 题目2:为量子线路添加控制比特

题目描述:
给定一个已有的量子线路u1(在此例中是作用在q0和q1上的2比特量子傅里叶变换线路),要求使用q2作为控制比特,将其转换为一个受控量子线路u2。也就是说,u1中的每一个量子门操作,在u2中都将受到q2的控制。
题目图示:(这里对应 2.ipynb 中显示的量子线路图)
解题思路:
这道题主要考查 mindquantum.core.circuit.controlled() 函数的使用。这个函数非常方便,它可以将一个完整的量子线路(或者单个算符)整体添加上控制位。
- controlled() 函数:
它接受一个参数circuit_fn:需要被控制的对象,可以是一个Circuit 实例(如此题中的 u1),也可以是可以生成量子线路的函数。
该函数返回一个新的函数,这个函数需要传入控制比特的索引,然后才会返回添加控制比特后的电路。
解题步骤:
1)题目已经给出了原始线路u1=qft(range(2))。
2)题目要求将q2添加为控制位。由于u1作用在q0和q1(索引为0和1),新添加的控制位q2的索引自然就是2。
3)先调用 controlled(u1) 获取一个可以添加控制位的函数,再传入控制位索引2生成目标线路u2。该函数会自动处理u1中的所有门,为它们添加上索引为2的控制位。
相关API文档:
controlled 数: https://www.mindspore.cn/mindquantum/docs/zh-CN/r0.10/core/circuit/mindquantum.core.circuit.controlled.html
三、 题目3:量子线路的厄米共轭


解题思路:
这道题考查的是如何获取一个量子线路的厄米共轭形式。MindSpore Quantum提供了便捷的mindquantum.core.circuit.dagger()函数来完成这个任务。
- dagger() 函数:
该函数接受一个 Circuit 对象(或其他支持厄米共轭操作的对象,如算符)作为输入,并返回一个新的 Circuit 对象,该对象即为输入线路的厄米共轭线路。它会自动处理门顺序的反转和每个门自身的厄米共轭替换。
解题步骤:
1)首先,根据“原始线路”图示,构建出circ对象。这需要依次添加H门、受控T门、S门和受控X (CNOT)门。
2)然后,直接调用 dagger(circ) 函数,将返回的厄米共轭线路赋值给dag_circ。
相关API文档:
dagger 数:
更多答题攻略,请点击下方链接查看:
https://h5.clewm.net/?url=qr61.cn%2FoxlATu%2Fqb38fRV&hasredirect=1
参考链接
[1]https://support.huaweicloud.com/usermanual-account/zh-cn\_topic\_0077914254.html
[2]https://www.hiascend.com/developer/blog/details/0272153713041042040
[3]https://www.hiascend.com/forum/thread-0201177851995961032-1-1.html