今年大赛的四大亮点:
- 新增量子启发式算法赛道,三大独立赛道,助您开启量子计算之旅,探索新世界。
- 新增特等奖,奖品重磅升级,决赛大奖、鼓励奖、推广奖等多重奖项均可叠加,获奖概率极大提高。
- 专家团队提供全方位服务:赛题解读和演练、课程培训、答疑等,助力开发者快速成长。
- 体验全新一代通用量子计算编程框架MindSpore Quantum和新版HiQ量子计算云平台。
黑客松三大赛道火力全开!欢迎各位开发者报名参赛,探索量子新世界。报名截止6月30日,在8月进行决赛答辩。
1 赛程安排
对量子计算感兴趣,具备基本Python编程能力的所有开发者,均可报名参加。
2 热身赛答题指导
热身赛为量子计算基础学习和编程演练,完成热身赛的前100名选手将有机会获得定制文化衫1件,数量有限,不容错过。
第一步:关注MindSpore Quantum代码仓,参见量子软件编程指南[1]。
第二步:注册并完成华为云账号实名认证[2]。
第三步:登录HiQ量子计算云平台[3]进行在线答题。
热身赛参考文档:https://competition.huaweicloud.com/information/1000042022/noise
每道题目的上方都有两个链接:MindSpore Quantum教程和MindSpore Quantum API参考。两个链接中都能找到题目的解答。小技巧:在MindSpore Quantum API参考中搜索题目中的关键词,可以快速找到对应的内容。
-
往期直播:2023年6月14日赛题讲解直播
-
-
扫码观看(2024年大赛第1~4题、第8题的答题攻略,可参去年视频)
- 直播预告:我们将于2024年4月18日 晚上19:00准时直播《第六届·2024 MindSpore 量子计算黑客松——热身赛通关攻略直播宣讲》
第一题
这道题考的是如何在线路中用on的方式添加量子门,在MindSpore Quantum中,每个量子门都有on方法,比如X.on(0, 1)就意味着将X门作用在第0个比特上,并且受第1个比特控制。本题要求X门作用在第2个比特上,受第0个和第1个比特控制。因此可以用X.on(2, [0, 1])来表示。可以看到,on方法的第二个参数可以接受包含多个控制位的列表,因此可以方便的添加多控制门。详细用法可以参考on方法的API文档。
on方法的API文档:
https://www.mindspore.cn/mindquantum/docs/zh-CN/r0.9/core/gates/mindquantum.core.gates.BasicGate.html#mindquantum.core.gates.BasicGate.on
第二题
这道题考的是如何对量子线路进行压缩。在MindSpore Quantum中,Circuit类是量子线路模块,其中实现了很多操作量子线路的方法。其中就有一个方法可以压缩线路,接口名就叫作compress()。因此,这道题调用compress()方法就可以成功通过了。
Circuit类:
https://www.mindspore.cn/mindquantum/docs/zh-CN/r0.9/core/circuit/mindquantum.core.circuit.Circuit.html#mindquantum.core.circuit.Circuit
compress():
https://www.mindspore.cn/mindquantum/docs/zh-CN/r0.9/core/circuit/mindquantum.core.circuit.Circuit.html#mindquantum.core.circuit.Circuit.compress
第三题
这道题考的是线路翻转,也就是说,我们需要将线路的比特顺序上下颠倒。题中给出了一个很长的线路,但是我们并不需要关心线路的具体内容,因为Circuit类中有一个方法可以直接实现线路翻转的功能——reverse_qubits(),我们在代码中直接调用该方法就可以成功通过了。
reverse_qubits():
https://www.mindspore.cn/mindquantum/docs/zh-CN/r0.9/core/circuit/mindquantum.core.circuit.Circuit.html#mindquantum.core.circuit.Circuit.reverse_qubits
第四题
这道题考的是如何给参数化量子线路中的变量名添加后缀,掌握这种技巧就可以很方便的搭建变分量子线路了。在mindquantum.core.circuit模块中,add_suffix()函数就可以实现添加后缀的功能。具体来说,它需要接受一个量子线路和一个后缀字符串作为输入参数,然后返回一个添加了后缀的新的量子线路。选手只需要将这个新的量子线路通过+=的方式添加到原先的线路的后面,就可以构造出多层的变分线路了。题中的代码如下:
# 在变分量子算法中,我们通常会遇到很多结构一样,但是参数不一样的量子线路,在 MindQuantum 中,我们可以通过添加后缀的方式,改变参数化量子线路中的变量名。请完成如下代码,制备一个 3 层的纠缠线路。
from mindquantum.core.circuit import Circuit
circ = Circuit().rx('a', 1, 0).rx('b', 2, 1).rx('c', 0, 2)
# 请补充如下代码片段
from mindquantum.core.circuit import
new_circ = Circuit()
for p in range(3):
new_circ +=
首先我们需要将add_suffix()函数 import 进来。题目中需要搭建3层线路,因此可以用一个循环实现,在每次循环中都对 new_circ 用+=的方式添加add_suffix()函数返回的新线路,后缀字符串设置为循环计数器的值p,就可以成功通过题目了。
mindquantum.core.circuit:
https://www.mindspore.cn/mindquantum/docs/zh-CN/r0.9/core/mindquantum.core.circuit.html
add_suffix():
https://www.mindspore.cn/mindquantum/docs/zh-CN/r0.9/core/circuit/mindquantum.core.circuit.add_suffix.html
第五题
题目中给出了所有需要用到模块的链接,点击即可查看用法。其中,第三个门——RY受控门可以用RY门简单搭建出来:circ += RY(0.1).on(1, 0)。QubitOperator可以构造泡利算子,Hamiltonian则是构造哈密顿量的类,因此题中的哈密顿量可以这样构建:ham = Hamiltonian(QubitOperator(“X0 Y1”))。最后,运行 sim.get_expectation(ham, circ)就得到哈密顿量的期望值了。
第六题
mindquantum.algorithm.nisq中可以看到各种已实现的Ansatz线路,只需要传入比特数和层数即可构造(题中ansatz为RYCascade),构造完成后,circ = RYCascade(n_qubits, depth).circuit 就得到ansatz线路了。
mindquantum.algorithm.nisq:https://www.mindspore.cn/mindquantum/docs/zh-CN/r0.9/algorithm/mindquantum.algorithm.nisq.html
第七题
这题考的是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])。
第八题:
本题考的是如何在线路中添加噪声。在MindQuantum中,通过ChannelAdder可以构建噪声模型。首先我们通过GateSelector设置需要添加噪声的门,然后用MixerAdder结合想要添加的噪声,例如:MixerAdder([GateSelector('x'),DepolarizingChannelAdder(0.05, 1)]) 。Y门和CNOT门以此类推,最后,通过SequentialAdder结合成一个噪声模型:
noise_model = SequentialAdder([
MixerAdder([
GateSelector('x'),
DepolarizingChannelAdder(0.05, 1)
]),
MixerAdder([
GateSelector('y'),
DepolarizingChannelAdder(0.05, 1)
]),
MixerAdder([
GateSelector('cx'),
DepolarizingChannelAdder(0.01, 2)
])
])
ChannelAdder:
https://www.mindspore.cn/mindquantum/docs/zh-CN/master/core/circuit/mindquantum.core.circuit.NoiseChannelAdder.html?highlight=channeladder#mindquantum.core.circuit.NoiseChannelAdder
MixerAdder:
https://www.mindspore.cn/mindquantum/docs/zh-CN/master/core/circuit/mindquantum.core.circuit.MixerAdder.html
第十题
奖品图片仅做参考,以实际收到奖品为准,数量有限,先到先得!
参考链接
[1]https://hiq.huaweicloud.com/document/parameterized-quantum-circuit#%E5%87%86%E5%A4%87MindQuantum%E4%BB%A3%E7%A0%81%E4%BB%93
[2]https://support.huaweicloud.com/usermanual-account/zh-cn_topic_0077914254.html
[3]https://auth.huaweicloud.com/authui/login.html?locale=zh-cn&service=https%3A%2F%2Fhiq.huaweicloud.com%2Fportal%2Flogin#/login