Grover算法试验

Grover算法试验量子算法与编程入门 4 3Grover 算法 01grover 算法在 Qiskit 上试验 grover py grover py 量子算符与编程入门 4 3Grover 算法 基于 QISKit 实现 Grover 算法 mytoken mytoken myconfig url https quantumexper ng bluemix

《量子算法与编程入门》4.3 Grover算法

01 grover算法在Qiskit上试验

grover.py

# grover.py # 《量子算符与编程入门》 4.3 Grover算法 # 基于QISKit实现Grover算法 # mytoken = "mytoken" myconfig = { 
    "url": 'https://quantumexperience.ng.bluemix.net/api' } from IBMQuantumExperience import * api = IBMQuantumExperience(token=mytoken, config=myconfig) # 每行前面不要有空格和tab键 # code代码的格式要求比较严格 # 1 include "qelib1.inc" 与引号之间对多只能有一个回车换号符 code = '''include "qelib1.inc"; qreg q[5]; creg c[5]; h q[0]; h q[1]; x q[2]; h q[2]; h q[2]; h q[1]; h q[2]; cx q[2],q[1]; h q[1]; h q[2]; tdg q[2]; h q[0]; h q[2]; cx q[2],q[0]; h q[0]; h q[2]; t q[2]; h q[1]; h q[2]; cx q[2],q[1]; h q[1]; h q[2]; tdg q[1]; tdg q[2]; h q[0]; h q[2]; cx q[2],q[0]; h q[0]; h q[2]; h q[0]; h q[1]; cx q[1],q[0]; h q[0]; h q[1]; t q[2]; tdg q[1]; h q[2]; h q[0]; h q[1]; cx q[1],q[0]; h q[0]; h q[1]; t q[0]; s q[1]; h q[0]; h q[1]; x q[0]; x q[1]; h q[1]; h q[0]; h q[1]; cx q[1],q[0]; h q[0]; h q[1]; x q[0]; h q[1]; h q[0]; x q[1]; measure q[0] -> c[0]; h q[1]; measure q[1] -> c[1]; ''' # 我申请的个人账号没有使用物理芯片的权限 # data = api.run_experiment(qasm=code, backend='ibmqx4', shots=1024, name=None, timeout=180, access_token=mytoken) data = api.run_experiment(qasm=code, backend='simulator', shots=1024, name=None) result = data['result']['measure'] label = result['labels'] value = result['values'] print("测量结果:") print(label) print("对应的概率为:") print(value) print("data的完整返回结果:") print(data) import matplotlib.pyplot as plt plt.bar(label, value) plt.show() 

用模拟设备运行结果:

C:\Python36\python.exe D:/tmp/tensorflow/grover.py 测量结果: ['00011'] 对应的概率为: [1] data的完整返回结果: {'status': 'DONE', 'idExecution': '5c30a53a65bbf3e2f', 'idCode': '5c30a53965bbf3e2e', 'result': {'extraInfo': {'seed': }, 'measure': {'qubits': [0, 1], 'labels': ['00011'], 'values': [1]}}} 

在这里插入图片描述

在ibmqx4上的试验结果
在这里插入图片描述

02 grover算法在Liqui|>上试验

grover.fsx

#if INTERACTIVE #r@"..\bin\Liquid1.dll" #else namesapce Microsoft.Research.Liquid #endif open System open System.Collections.Generic open Microsoft.Research.Liquid open Util open Operations module Script= [ 
  
    ] let Grover() = show "Grover算法" let ket = Ket(3) let qs = ket.Qubits X qs.Tail.Tail H >< qs CCNOT qs let target = !!(qs, 0, 1) H >< target X >< target H target.Tail CNOT target H target.Tail X >< target H >< qs M >< target for q in target do show "测量得到的结果是: %s"(q.ToString()) #if INTERACTIVE do Script.Grover() #endif 
  

运行结果:

d:\git\Quantum\Liquid\Samples>fsi grover.fsx 0:0000.0/Grover算法 0:0000.0/ 0:0000.0/=========================================================================================== 0:0000.0/= The Language-Integrated Quantum Operations (LIQUi|>) Simulator = 0:0000.0/= Copyright (c) 2015,2016 Microsoft Corporation = 0:0000.0/= If you use LIQUi|> in your research, please follow the guidelines at = 0:0000.0/= https://github.com/StationQ/Liquid for citing LIQUi|> in your publications. = 0:0000.0/=========================================================================================== 0:0000.0/ 0:0000.0/测量得到的结果是: 0|0>+ 1|1> 0:0000.0/测量得到的结果是: 0|0>+ 1|1> 

03 grover算法在ProjectQ上试验

grover.py

# grover.py # ProjectQ上Grover算法 from projectq.backends import CircuitDrawer from projectq import MainEngine from projectq.ops import * def grover(eng, t): qs = eng.allocate_qureg(3) X | qs[2] All(H) | qs H |qs[2] CNOT | (qs[1], qs[2]) Tdagger | qs[2] CNOT | (qs[0], qs[2]) T | qs[2] CNOT | (qs[1], qs[2]) Tdagger | qs[2] CNOT | (qs[0], qs[2]) Tdagger | qs[1] T | qs[2] CNOT | (qs[0], qs[1]) H | qs[2] Tdagger | qs[1] CNOT | (qs[0], qs[1]) T | qs[0] S | qs[1] H | qs[0] H | qs[1] X | qs[0] X | qs[1] H | qs[1] CNOT | (qs[0], qs[1]) H | qs[1] X | qs[0] X | qs[1] All(H) | qs All(Measure) | qs eng.flush() if t == 'simulator': print("执行Grover算法,检索到的元素是:" + str(int(qs[0])) + str(int(qs[1]))) elif t == 'drawer': drawing_engine = CircuitDrawer() latex = drawing_engine.get_latex() circuit = open("grover.tex", 'w') circuit.write(latex) circuit.close(); else: pass if __name__ == "__main__": eng = MainEngine() types = 'simulator' grover(eng, types) drawing_engine = CircuitDrawer() eng = MainEngine(drawing_engine) types = 'drawer' grover(eng, types) 

运行结果:

C:\Python36\python.exe D:/tmp/tensorflow/grover.py 执行Grover算法,检索到的元素是:11 Process finished with exit code 0 

运行pdflatex grover.tex生成pdf没成功。

如有错误之处,欢迎批评指正。:。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/204259.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午8:38
下一篇 2026年3月19日 下午8:39


相关推荐

  • ActionList中Action的快捷鍵

    ActionList中Action的快捷鍵nbsp 本文的目的是說明 這里的快捷鍵是如何被觸發的 nbsp nbsp nbsp nbsp nbsp 從控件自身來看 快捷鍵的進入點是在 TWincontrol IsMenuKey 在分析 IsMenuKey 之前 我們先看一下 IsMenuKey 是哪里被調用的 nbsp nbsp nbsp nbsp 搜索 Controls Pas 可以發現 他是在 CNKeyDown 事件里被觸發的 如下 Line13 varMask Integer b

    2026年3月26日
    2
  • maven 环境变量的配置「建议收藏」

    maven 环境变量的配置「建议收藏」我的电脑是win10_64位的。一、安装,我使用的是免安装版的,直接解压缩就可以使用。二、配置环境变量。  1.打开环境变量配置。右键计算机→属性→高级系统设置→高级→环境变量,在系统变量中配置。  2.配置MAVEN_HOME。在系统变量中新建,变量名MAVEN_HOME,变量值,maven文件夹路径,我的路径是F:\Wab\资料\maven\资料\apach…

    2022年4月19日
    54
  • 页面的高度设置_word页面高度在哪设置

    页面的高度设置_word页面高度在哪设置问题1:页面加上doctype后height=100%不好使解决:增加css设置:html{height:100%}body{height:100%};另外,其他的容器也需要设置height

    2022年8月1日
    15
  • WPF Visifire 图表控件「建议收藏」

    WPF Visifire 图表控件「建议收藏」VisifireWPF图表控件激活成功教程可能用WPF生成过图表的开发人员都知道,WPF虽然本身的绘图能力强大,但如果每种图表都自己去实现一次的话可能工作量就大了,尤其是在开发时间比较紧的情况下。这时候有必要借助一种专业的图表工具。Visifire是专为WPF、SliverLight、WP开发人员制定的一套图表控件,实现了一系列的专业图表(如:柱图、…

    2022年7月21日
    18
  • Jsplumb基础教程(vue+jsplumb+d3)

    Jsplumb基础教程(vue+jsplumb+d3)目前 github 社区存在几款可用于设计流程图的绘图框架 go js http www gojs net latest index html go js 提供一整套的 JS 工具 支持各种交互式图表的创建 目前 go js 是闭源收费的 jsPlumb https jsplumbtoolk com jsPlumb 是一套开源的流程图创建工具 小巧精悍 使用简单 jsPlumb 有社区版跟收费版 我们可使用的是社区版 JointJS https www jointjs com

    2026年3月20日
    2
  • 游戏数值策划

    游戏数值策划游戏数值-拆解方法篇大家好,我是Alice,一名喜欢捣腾数字的游戏数值策划12345~o(* ̄▽ ̄*)ブ工作中我会经常拆解游戏数值,通过数值理解市面上优秀游戏的设计思路。今天想在这里跟大家分享一下我研究游戏数值的流程。如果各位有什么好方法,也请在评论区留言,期待看到你的想法。我平时拆解数值的流程主要分为六个阶段:准备阶段 数据收集 分析数据规律 提出猜想 根据数据验证猜想 拆解的应用不过在介绍具体流程之前,我想和你们先聊一下,数值拆解的目的。我认为数值拆解的目的大概可以分

    2022年5月5日
    49

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号