用于根方法的Python库
root-tomograph的Python项目详细描述
根法量子层析成像
Python库用于离散变量量子态层析成像。该库包含一套由互补测量结果和统计充分性估计重建量子态的例程。在
安装
pip install root-tomography
数据格式
测量协议由密度矩阵上的一组互补测量实验定义。每个实验都要重复多次,并且有几种可能的测量结果。得到-结果的概率由测量运算符确定为。测量运算符集和实验重复次数定义了^{str1}$测量协议。每个结果的观察数定义了测量结果。下面的代码描述了所需的数据格式。在
^{pr2}$下面的代码生成一个理想的-qubit因子分解MUB协议的示例,每个测量实验重复次。在
import root_tomography.tools as tools
N = 1 # Number of qubits
n = 1e3 # Number of repetitions in every experiment
proto = tools.protocol("MUB", [2]*N)
nshots = tools.nshots_devide(n, len(proto), "equal")
我们可以模拟一些密度矩阵的测量。在
dm_true = tools.gen_state("haar_dm", 2, rank=1) # Generate Haar-random single-qubit pure state density matrix
clicks = tools.simulate(dm_true, proto, nshots) # Simulate measurements
量子态重构
重建密度矩阵,并与真实状态比较估计保真度。在
from root_tomography.reconstruction import dm_reconstruct
dm, _ = dm_reconstruct(clicks, proto, nshots, display=True)
print("Fidelity: {}".format(tools.fidelity(dm, dm_true)))
输出:
=== Automatic rank estimation ===
Try rank 1
Iteration 19 Difference 9.3151e-09
Rank 1 is statistically significant at significance level 0.05. Procedure terminated.
Fidelity: 0.9999793077308207
如果不指定nshots
,那么-次实验运行的次数将被视为所有计数的总和。在
dm_reconstruct(clicks, proto) # same as nshots[j] = sum(clicks[j])
代替自动的秩估计,人们可以选择量子态模型的特定秩。例如,在一些实验中,它可能有一个纯(秩1)状态。在
dm, _ = dm_reconstruct(clicks, proto, nshots, rank=1, display=True)
print("Fidelity: {}".format(tools.fidelity(dm, dm_true)))
输出:
Iteration 16 Difference 7.9310e-09
Fidelity: 0.9997600124722302
通常,可以指定从1到Hilbert空间维的任何秩。在
算法
考虑Hilbert空间中由密度矩阵描述的量子态。 根据根方法,秩-量子态参数化是由()的复矩阵)定义的,使得。要得到量子态最大似然估计,必须解下列拟线性方程(似然方程)[1]:
这里的总和涵盖了所有测量实验和其中可能的结果。是与测量运算符和测量重复次数相对应的观察结果数。在
通过定点迭代法搜索似然方程解:
这里是正则化参数。我们使用Moore-Penrose伪反转得到。在
参考文献
[1]于博格达诺夫。一、 通过纯化重构量子态的统一统计方法//JETP^{str1}$108(6)928-935(2009);doi:10.1134/S106377610906003X
- 项目
标签: