用于根方法的Python库

root-tomograph的Python项目详细描述


根法量子层析成像

Python库用于离散变量量子态层析成像。该库包含一套由互补测量结果和统计充分性估计重建量子态的例程。在

安装

pip install root-tomography

数据格式

测量协议由密度矩阵rho上的一组互补测量实验定义。每个实验都要重复多次,并且有几种可能的测量结果。得到k-结果的概率由测量运算符M_k确定为p_k=trace(rho*M_k)。测量运算符集和实验重复次数定义了^{str1}$测量协议。每个结果的观察数定义了测量结果。下面的代码描述了所需的数据格式。在

^{pr2}$

下面的代码生成一个理想的N-qubit因子分解MUB协议的示例,每个测量实验重复n次。在

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,那么j-次实验运行的次数将被视为所有计数的总和。在

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空间H中由密度矩阵rho描述的量子态。 根据根方法,秩-r量子态参数化是由sxrs=dimH)的复矩阵r)定义的,使得rho=cc+。要得到量子态最大似然估计,必须解下列拟线性方程(似然方程[1]

这里的总和涵盖了所有测量实验和其中可能的结果。k_j是与测量运算符M_j和测量重复次数n_j相对应的观察结果数。在

通过定点迭代法搜索似然方程解:

这里alpha是正则化参数。我们使用Moore-Penrose伪反转得到c_0。在

参考文献

[1]于博格达诺夫。一、 通过纯化重构量子态的统一统计方法//JETP^{str1}$108(6)928-935(2009);doi:10.1134/S106377610906003X

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java为什么这个循环打印1020之间的所有值?我想让它打印出可以被5整除的值   java如何在JTable中集中单元格   java无法通过一个键从hashmap获取对象,该键具有相同的hashcode,并且两个键等于()   不兼容的类型?JAVA   将字符串开头与空格匹配时java replaceAll的正则表达式混淆结果   java为非java应用程序创建jar文件。类文件   java无法从另一个普通Http Servlet访问筛选器Servlet的会话属性   java Ejb,第二个方法中的错误回滚第一个方法   swing java操作侦听器在菜单上,而不是在菜单项上   分析文件时出错:分析文件时出错:无法在Java的XSSF中分析excel文件   java将实体注入到ViewScope Bean中   java如何关闭终端而不终止正在运行的jar文件进程   爪哇力下传   java不能隐式地将[T]强制转换为AT,其中[T]扩展为AT   java Spring项目在jsp页面中显示mysql表数据   java在创建新实例SQLITE时出错