参赛攻略 | 第六届·2024 MindSpore 量子计算黑客松 热身赛通关秘籍

image.png

今年大赛的四大亮点:

  • 新增量子启发式算法赛道,三大独立赛道,助您开启量子计算之旅,探索新世界。
  • 新增特等奖,奖品重磅升级,决赛大奖、鼓励奖、推广奖等多重奖项均可叠加,获奖概率极大提高。
  • 专家团队提供全方位服务:赛题解读和演练、课程培训、答疑等,助力开发者快速成长。
  • 体验全新一代通用量子计算编程框架MindSpore Quantum和新版HiQ量子计算云平台。

黑客松三大赛道火力全开!欢迎各位开发者报名参赛,探索量子新世界。报名截止6月30日,在8月进行决赛答辩。

1 赛程安排

对量子计算感兴趣,具备基本Python编程能力的所有开发者,均可报名参加。

image.png

2 热身赛答题指导

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

第一步:关注MindSpore Quantum代码仓,参见量子软件编程指南[1]

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

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

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

image.png

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

  • 往期直播:2023年6月14日赛题讲解直播

  • image.png

  • 扫码观看(2024年大赛第1~4题、第8题的答题攻略,可参去年视频)

  • 直播预告:我们将于2024年4月18日 晚上19:00准时直播《第六届·2024 MindSpore 量子计算黑客松——热身赛通关攻略直播宣讲》

image.png

第一题

image.png

这道题考的是如何在线路中用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

第二题

image.png

这道题考的是如何对量子线路进行压缩。在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


第三题

image.png

这道题考的是线路翻转,也就是说,我们需要将线路的比特顺序上下颠倒。题中给出了一个很长的线路,但是我们并不需要关心线路的具体内容,因为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

第四题

image.png

这道题考的是如何给参数化量子线路中的变量名添加后缀,掌握这种技巧就可以很方便的搭建变分量子线路了。在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

第五题

image.png

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

第六题

image.png

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

第七题

image.png

这题考的是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])

第八题:

image.png

cke_41749.png

cke_45716.png

image.png

本题考的是如何在线路中添加噪声。在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

第十题

image.png

cke_67891.png

image.png

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

image.png

参考链接

[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

  • 15
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值