Bernstein-Vazirani算法
B-V算法
(1) 问题描述
给定布尔函数 f : { 0 , 1 } n → 0 , 1 f:{\left\{ {0,1} \right\}^n} \to{0,1} f:{0,1}n→0,1, 函数 f f f的值是由输入比特串 x x x和确定的比特串 s s s做模2意义下的内积: f ( x ) = x ⋅ s ( m o d 2 ) , f\left( x \right) = x \cdot s\left( {\bmod 2} \right), f(x)=x⋅s(mod2),其中 x ⋅ s = ∑ i ( x i ⊕ s i ) x \cdot s = \sum\limits_i {\left( {{x_i} \oplus {s_i}} \right)} x⋅s=i∑(xi⊕si)
前提:可以调用访问函数 f f f的黑盒
问题:计算出比特串 s s s
经典意义下:
依次输入比特串 x x x:
00...00 00...01 00...10 . . . 01...00 10...00 \begin{array}{l} 00...00\\ 00...01\\ 00...10\\ ...\\ 01...00\\ 10...00 \end{array} 00...0000...0100...10...01...0010...00
对于第 i i i次输入:
000100...00 → x ⋅ s ( m o d 2 ) = s i 000100...00 \to x \cdot s\left( {\bmod 2} \right) = {s_i} 000100...00→x⋅s(mod2)=si
重复该流程 n n n次,即可确定比特串 s s s,上述方法的查询复杂度为 O ( n ) O\left( n \right) O(n)
(2) 量子算法核心思路:
基础知识: H ⊗ n ∣ s ⟩ = 1 2 n 2 ∑ x ( − 1 ) s ⋅ x ∣ x ⟩ H^{\otimes n}|s\rangle=\frac{1}{2^{\frac{n}{2}}} \sum_{x}(-1)^{s \cdot x}|x\rangle H⊗n∣s⟩=22n1∑x(−1)s⋅x∣x⟩
Step1:制备初始量子比特 ∣ Φ 0 ⟩ = ∣ 0 ⟩ ⊗ n \left| {{\Phi _0}} \right\rangle ={\left| 0 \right\rangle ^{ \otimes n}} ∣Φ0⟩=∣0⟩⊗n
Step2:作用 H ⊗ n {H^{ \otimes n}} H⊗n,得到量子态 ∣ Φ 0 ⟩ = 1 2 n 2 ∑ x ∣ x ⟩ \left| {{\Phi _0}} \right\rangle = \frac{1}{{{2^{\frac{n}{2}}}}}\sum\limits_x {|x\rangle } ∣Φ0⟩=22n1x∑∣x⟩
Step3:作用量子黑盒 O f {O_f} Of, O f : ∣ x ⟩ → ( − 1 ) x ⋅ s ∣ x ⟩ {O_f}:\left| x \right\rangle \to {\left( { - 1} \right)^{x \cdot s}}\left| x \right\rangle Of:∣x⟩→(−1)x⋅s∣x⟩,此时系统状态为 ∣ Φ 1 ⟩ = 1 2 n 2 ∑ x ( − 1 ) s ⋅ x ∣ x ⟩ \left| {{\Phi _1}} \right\rangle = \frac{1}{{{2^{\frac{n}{2}}}}}\sum\limits_x {{{\left( { - 1} \right)}^{s \cdot x}}|x\rangle } ∣Φ1⟩=22n1x∑(−1)s⋅x∣x⟩
Step4:作用 H ⊗ n {H^{ \otimes n}} H⊗n,系统状态变为 ∣ s ⟩ |s\rangle ∣s⟩
此时测量量子系统即可得到比特串 s s s,该算法的查询复杂为 O ( 1 ) O(1) O(1)
备注:上述量子黑盒 O f O_f Of的实现方法与Deutsh算法相似,具体方法如下
(1) 制备量子态 ∣ Ψ 0 ⟩ = ∣ 0 ⟩ n ∣ 1 ⟩ \left| {{\Psi _0}} \right\rangle = {\left| 0 \right\rangle ^n}\left| 1 \right\rangle ∣Ψ0⟩=∣0⟩n∣1⟩
(2) 作用 H ⊗ n {H^{ \otimes n}} H⊗n,量子系统变为 ∣ Ψ 1 ⟩ = 1 2 n 2 ∑ x ∣ x ⟩ ∣ − ⟩ \left| {{\Psi _1}} \right\rangle = \frac{1}{{{2^{\frac{n}{2}}}}}\sum\limits_x {|x\rangle } \left| - \right\rangle ∣Ψ1⟩=22n1x∑∣x⟩∣−⟩
(3) 作用 U f : ∣ x ⟩ ∣ y ⟩ → ∣ x ⟩ ∣ y ⊕ f ( x ) ⟩ U_f:\left|x\right\rangle\left|y\right\rangle \to\left|x\right\rangle\left|y\oplus f\left( x \right)\right\rangle Uf:∣x⟩∣y⟩→∣x⟩∣y⊕f(x)⟩,量子系统演变为 ∣ Ψ 2 ⟩ = 1 2 n 2 ∑ x ∣ x ⟩ 1 2 1 2 ( ∣ 0 ⊕ f ( x ) ⟩ − ∣ 1 ⊕ f ( x ) ⟩ ) \left| {{\Psi _2}} \right\rangle = \frac{1}{{{2^{\frac{n}{2}}}}}\sum\limits_x {|x\rangle } \frac{1}{{{2^{\frac{1}{2}}}}}\left( {\left| {0 \oplus f\left( x \right)} \right\rangle - \left| {1 \oplus f\left( x \right)} \right\rangle } \right) ∣Ψ2⟩=22n1x∑∣x⟩2211(∣0⊕f(x)⟩−∣1⊕f(x)⟩)
当 f ( x ) = 0 {f\left( x \right)}=0 f(x)=0时, ∣ x ⟩ 1 2 1 2 ( ∣ 0 ⊕ f ( x ) ⟩ − ∣ 1 ⊕ f ( x ) ⟩ ) = ∣ x ⟩ 1 2 1 2 ( ∣ 0 ⟩ − ∣ 1 ⟩ ) = ∣ x ⟩ ∣ − ⟩ \left|x\right\rangle \frac{1}{{{2^{\frac{1}{2}}}}}\left( {\left| {0 \oplus f\left( x \right)} \right\rangle - \left| {1 \oplus f\left( x \right)} \right\rangle } \right) = |x\rangle \frac{1}{{{2^{\frac{1}{2}}}}}\left( {\left| 0 \right\rangle - \left| 1 \right\rangle } \right) = |x\rangle \left| - \right\rangle ∣x⟩2211(∣0⊕f(x)⟩−∣1⊕f(x)⟩)=∣x⟩2211(∣0⟩−∣1⟩)=∣x⟩∣−⟩
当 f ( x ) = 1 {f\left( x \right)}=1 f(x)=1时, ∣ x ⟩ 1 2 1 2 ( ∣ 0 ⊕ f ( x ) ⟩ − ∣ 1 ⊕ f ( x ) ⟩ ) = ∣ x ⟩ 1 2 1 2 ( ∣ 0 ⟩ − ∣ 1 ⟩ ) = − ∣ x ⟩ ∣ − ⟩ \left|x\right\rangle \frac{1}{{{2^{\frac{1}{2}}}}}\left( {\left| {0 \oplus f\left( x \right)} \right\rangle - \left| {1 \oplus f\left( x \right)} \right\rangle } \right) = |x\rangle \frac{1}{{{2^{\frac{1}{2}}}}}\left( {\left| 0 \right\rangle - \left| 1 \right\rangle } \right) = -|x\rangle \left| - \right\rangle ∣x⟩2211(∣0⊕f(x)⟩−∣1⊕f(x)⟩)=∣x⟩2211(∣0⟩−∣1⟩)=−∣x⟩∣−⟩
不难发现 U f U_f Uf的作用为: ∣ x ⟩ ∣ − ⟩ → ( − 1 ) f ( x ) ∣ x ⟩ ∣ − ⟩ = ( − 1 ) s ⋅ x ∣ x ⟩ ∣ − ⟩ |x\rangle \left| - \right\rangle \to {\left( { - 1} \right)^{f\left( x \right)}}|x\rangle \left| - \right\rangle={\left( { - 1} \right)^{s \cdot x}}|x\rangle \left| - \right\rangle ∣x⟩∣−⟩→(−1)f(x)∣x⟩∣−⟩=(−1)s⋅x∣x⟩∣−⟩
舍弃掉最后一个量子比特(辅助比特) ∣ − ⟩ \left| - \right\rangle ∣−⟩,即实现了Step3中的黑盒 O f O_f Of
参考资料
[1] Bernstein-Vazirani Algorithm 学习笔记
[2] 量子计算【算法篇】第7章 Deutsch-Josza算法及实现
(3) 由 Fourier Sampling 到 Deutsch-Jozsa Algorithm & Bernstein-Vazirani Algorithm
Bernstein-Vazirani算法相关推荐
- 经典算法书籍推荐以及算法书排行【算法四库全书】
经典算法书籍推荐以及算法书排行[算法四库全书] 作者:霞落满天 https://linuxstyle.blog.csdn.net/ https://blog.csdn.net/21aspne ...
- bezier曲线_Bezier算法
个人博客: vectormoon's blogwww.vectormoon.net bezier算法的背景 vm公司设计出了一个原型车--moon,这样的: 产品经理一看觉得有点抽象,他使用了Bez ...
- 转 常见hash算法的原理
散列表,它是基于快速存取的角度设计的,也是一种典型的"空间换时间"的做法.顾名思义,该数据结构可以理解为一个线性表,但是其中的元素不是紧密排列的,而是可能存在空隙. 散列表(Has ...
- .NET平台开源项目速览(12)哈希算法集合类库HashLib
阅读目录 1.哈希算法介绍 2.HashLib功能介绍 .NET的System.Security.Cryptography命名空间本身是提供加密服务,散列函数,对称与非对称加密算法等功能.实际上,大部 ...
- (11)DJBX33A APR哈希默认算法
这是很出名的times33哈希算法,此算法被perl语言采用并在Berkeley DB中出现.它是已知的最好的哈希算法之一,在处理以字符串为键值的哈希时,有着极快的计算效率和很好哈希分布.最早提出这个 ...
- 几种经典的hash算法
计算理论中,没有Hash函数的说法,只有单向函数的说法.所谓的单向函数,是一个复杂的定义,大家可以去看计算理论或者密码学方面的数据.用"人 类"的语言描述单向函数就是:如果某个函数 ...
- Hash算法大全(java实现)
http://www.java3z.com/cwbwebhome/article/article5/51002.html Hash算法有很多很多种类.具体的可以参考之前我写的Hash算法的一些分析.本 ...
- 常见的hash函数算法
散列表,它是基于快速存取的角度设计的,也是一种典型的"空间换时间"的做法.顾名思义,该数据结构可以理解为一个线性表,但是其中的元素不是紧密排列的,而是可能存在空隙. 散列表(Has ...
- 经典的Times 33 哈希算法
一个好的散列函数通常倾向于"为不相等的对象产生不相等的散列码".理想情况下,散列函数应该把集合中不相等的实例均匀地分布到所有可能的散列值上.要想完全达到这种理想的情形是非常困难的. ...
- 算法导论中英文版下载
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 算法导论 ...
最新文章
- java instanceof 报错_java instanceof方法
- OpenCV 4.0 Dis光流算法 运动检测
- 北京师大网络教育计算机离线作一,北师大网络教育 离线作业 计算机组成原理(一、二、三)...
- Windows系统安全模式妙用全接触
- 贴一个数据结构老师布置的作业(各种排序) c 语言实现
- java 前台商品展示模块_SSH框架网上商城项目第10战之搭建商品类基本模块
- python爬虫从小白到高手 Day1 爬取百度音乐歌单
- oracle 时间戳生成语句(秒级+毫秒级)
- ant design pro(二)布局
- php 邮编 类,邮编查询示例
- cs1.6联机服务器没有响应,cs1.6联机问题解说
- c语言的area的用法,area的用法说明
- client-go的使用及源码分析
- 服务器pe安装win7系统安装教程,win7pe装系统步骤详解
- Windows 提示“缺少所需的 CD/DVD 驱动器设备驱动程序”
- 【cmd】cmd怎么到达指定的文件夹
- ​ leetcode 460. LFU 缓存 hard​
- 腾讯mars xlog源码解析
- 线性运放HCNR201-500E构成的模拟信号隔离放大电路
- log4cpp-【写日志】:使用log4cpp的基本步骤
热门文章
- 程伟健:珠海游玩指南请收好!十大主题十条线路吃喝玩乐一条龙体验
- 电子倒车镜(侧后视镜)CMS解决方案
- 独立站运营 | ManyChat是什么?有什么优缺点?
- 计算机网络工程师的自我评价,计算机网络专业简历的自我评价.docx
- ECLIPSE明明能跳到头文件,却提示Unresolved Inclusion,怎么办?
- ARMv8 Cortex-a 编程向导手册学习_6.aarch64 应用移植注意事项与 AArch64 ABI
- 共建智慧园区,联想集团与徐州市泉山区人民政府达成战略合作
- 【转】计算机类学术论文 28个常见出版社一般写法(参考文献用)
- pycharm的使用python基本语法
- 【愚公系列】2021年12月 Java教学课程 34-接口