Deutsch算法实验

01 IBM Quantum Experience 上的Deutsch 算法实验

本试验严格参照《量子算法与编程入门》4.1节内容。

01.01 五线谱编程

IBM量子芯片信息:
Deutsch算法

Deutsch 算法的五线谱编程。
Deutsch算法
QASM代码:

include "qelib1.inc";
qreg q[5];
creg c[5];

x q[4];
h q[3];
h q[4];
cx q[3],q[4];
h q[3];
measure q[3] -> c[3];

运行结果:
Deutsch算法

Device Calibration
Last Calibration: 2018-05-24T10:02:38.000Z

Fridge Temperature: [] -

CX1_0
e
10
g
 : 0.018987351778312567

CX2_0
e
20
g
 : 0.028947815383612602

CX2_1
e
21
g
 : 0.033101297356880444

CX3_2
e
32
g
 : 0.12036705054411809

CX3_4
e
34
g
 : 0.09772264903319017

CX4_2
e
42
g
 : 0.056823634317806654

Q0
f
 : 5.24232 GHz

T
1
 : 49.5 µs

T
2
 : 14.2 µs

e
g
 : 0.0006867731322012238

e
r
 : 0.043

Q1
f
 : 5.30745 GHz

T
1
 : 56.2 µs

T
2
 : 88.5 µs

e
g
 : 0.0025762039467128184

e
r
 : 0.195

Q2
f
 : 5.35164 GHz

T
1
 : 42.9 µs

T
2
 : 59.7 µs

e
g
 : 0.00197489316929661

e
r
 : 0.081

Q3
f
 : 5.41107 GHz

T
1
 : 33.3 µs

T
2
 : 14.2 µs

e
g
 : 0.004552785022896966

e
r
 : 0.097

Q4
f
 : 5.18931 GHz

T
1
 : 61.9 µs

T
2
 : 30.4 µs

e
g
 : 0.0009443532335046134

e
r
 : 0.045

Executed on: Dec 16, 2018 4:53:45 PM

Results date: Dec 16, 2018 4:53:45 PM

Results from Cache: May 24, 2018 11:34:31 PM

Number of shots: 1024

01.02 QisKit编程

登陆成功后,在自己账号的advanced下申请token.
https://quantumexperience.ng.bluemix.net/qx/account/advanced
安装了python,并且配置好python的环境变量后,直接安装 Qiskit 的python包即可。
pip install qiskit

Deutsch算法的Qiskit代码如下:
Deutsch.py

# Deutsch.py
from IBMQuantumExperience import *
config = {
    "url":'https://quantumexperience.ng.bluemix.net/api'
}
token = 'eae18529c6270048f70f953d2b318c679bc0c454c791d5e615dcf8edb8f84379a0c8dc0bcab3461d0c3a795fd17d60f1462ad70f5219210bfaf27bbee3cb3e79'
api = IBMQuantumExperience(token, config)
code = 'OPENQASM 2.0;include "qelib1.inc";qreg q[5];creg c[5];x q[4];h q[3];h q[4];cx q[3],q[4];h q[3];measure q[3]->c[3];'
data = api.run_experiment(code, 'ibmqx4', 1024, name=None, timeout=60)

result = data['result']['measure']
label = result['labels']
value = result['values']
print("测量结果:")
print(label)
print("对应的概率为:")
print(value)

没运行成功,服务端返回结果{"error":{"status":400,"message":"The device is not available.","code":"DEVICE_NOT_AVAILABLE","statusCode":400}}

C:\Python36\python.exe D:/git/Quantum/qiskit/demo/Deutsch.py
Got a 400 code response to https://quantumexperience.ng.bluemix.net/api/codes/execute?access_token=zuXWfJweGAMx4ylueljtftG2sly2G5wZO95VkPFVZE1ds7kPJ8KQDCmLDyw9aBzc&shots=1024&deviceRunType=ibmqx4: {"error":{"status":400,"message":"The device is not available.","code":"DEVICE_NOT_AVAILABLE","statusCode":400}}
Got a 400 code response to https://quantumexperience.ng.bluemix.net/api/codes/execute?access_token=zuXWfJweGAMx4ylueljtftG2sly2G5wZO95VkPFVZE1ds7kPJ8KQDCmLDyw9aBzc&shots=1024&deviceRunType=ibmqx4: {"error":{"status":400,"message":"The device is not available.","code":"DEVICE_NOT_AVAILABLE","statusCode":400}}
Got a 400 code response to https://quantumexperience.ng.bluemix.net/api/codes/execute?access_token=zuXWfJweGAMx4ylueljtftG2sly2G5wZO95VkPFVZE1ds7kPJ8KQDCmLDyw9aBzc&shots=1024&deviceRunType=ibmqx4: {"error":{"status":400,"message":"The device is not available.","code":"DEVICE_NOT_AVAILABLE","statusCode":400}}
Got a 400 code response to https://quantumexperience.ng.bluemix.net/api/codes/execute?access_token=zuXWfJweGAMx4ylueljtftG2sly2G5wZO95VkPFVZE1ds7kPJ8KQDCmLDyw9aBzc&shots=1024&deviceRunType=ibmqx4: {"error":{"status":400,"message":"The device is not available.","code":"DEVICE_NOT_AVAILABLE","statusCode":400}}
Got a 400 code response to https://quantumexperience.ng.bluemix.net/api/codes/execute?access_token=zuXWfJweGAMx4ylueljtftG2sly2G5wZO95VkPFVZE1ds7kPJ8KQDCmLDyw9aBzc&shots=1024&deviceRunType=ibmqx4: {"error":{"status":400,"message":"The device is not available.","code":"DEVICE_NOT_AVAILABLE","statusCode":400}}
Traceback (most recent call last):
  File "D:/git/Quantum/qiskit/demo/Deutsch.py", line 10, in <module>
    result = data['result']['measure']
KeyError: 'result'

Process finished with exit code 1

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

以下是Python实现Deutsch-Jozsa算法的代码和解释: ```python from qiskit import QuantumCircuit, Aer, execute from qiskit.visualization import plot_histogram # 定义一个函数,输入黑箱函数f和比特数n,返回一个量子电路 def dj_circuit(f, n): # 初始化n+1个量子比特和n个经典比特 qc = QuantumCircuit(n+1, n) # 将最后一个量子比特初始化为|1> qc.x(n) qc.barrier() # 应用Hadamard门到所有量子比特上 qc.h(range(n+1)) qc.barrier() # 应用黑箱函数f for i in range(n): qc.cx(i, n) qc.barrier() # 再次应用Hadamard门到前n个量子比特上 qc.h(range(n)) qc.barrier() # 测量前n个量子比特 qc.measure(range(n), range(n)) return qc # 定义一个常量函数,输入一个比特,返回0 def constant_zero(x): return 0 # 定义一个常量函数,输入一个比特,返回1 def constant_one(x): return 1 # 定义一个平衡函数,输入一个比特,返回输入比特的值 def balanced(x): return x # 测试常量函数 qc = dj_circuit(constant_zero, 2) backend = Aer.get_backend('qasm_simulator') result = execute(qc, backend=backend, shots=1024).result() plot_histogram(result.get_counts()) # 测试平衡函数 qc = dj_circuit(balanced, 2) backend = Aer.get_backend('qasm_simulator') result = execute(qc, backend=backend, shots=1024).result() plot_histogram(result.get_counts()) ``` 上述代码实现了Deutsch-Jozsa算法,并定义了三个函数:dj_circuit用于生成量子电路,constant_zero和constant_one分别表示恒定的0函数和恒定的1函数,balanced表示平衡函数。我们可以通过调用dj_circuit函数并传入不同的函数作为参数来测试不同的函数类型。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值