《基于张量网络的机器学习入门》学习笔记7

《基于张量网络的机器学习入门》学习笔记7

量子算法

什么是量子算法

例如我们求解一个问题,一个 1 1 1千克的铁球,从 3 3 3米高的地方丢下来,多久接触地面?经典计算机的算法会例用物理学公式直接计算,而量子计算机却是“模拟真实情况”,假设有个铁球,实际丢几次。使用量子算法,类似于一种实验过程,发挥其物理特性,按我们设计的算法退出叠加态,退出叠加态的量子,有些推成了 1 1 1,有些成 0 0 0,最后测量到的 01100 01100 01100就是计算结果。由于量子算法利用了量子的物理特性,所以我们可以让叠加态的量子高概率的塌陷到我们想要的结果上。

量子计算机不能独立于经典计算机独立存在。因为量子计算机的计算过程其实就是把算法设计成一个实验,而实验才是提速的原因。其实本质就是换个思路把传统的计算设计成了实验,然后观察实验结果。所以全过程应该是用经典计算机进行一些状态的预处理,然后转化为合适的实验让量子计算机实现,实验完成后再用经典计算机处理实验结果,如果结果不理想(因为实验会有误差的存在),那就再做一次实验,最终获得想要的结果。

量子计算机对比经典计算机 :
在这里插入图片描述


接下来,我们会学习三个经典的量子算法

三个经典量子算法

Grover、Shor、HHL算法


Grover算法

背景

1996 1996 1996年,计算机科学家 G r o v e r Grover Grover提出一个量子搜索算法,通常成为 G r o v e r Grover Grover算法。该算法指的是从 n n n个未分类的元素种寻找出某个特定的元素,其本质是一个搜索遍历问题。由于很多问题都可以看成一个搜索问题,因此 G r o v e r Grover Grover算法的用途十分广泛,再量子计算领域中的影响仅次于 S h o r Shor Shor算法。

基本原理

假设在 N N N个元素的空间中搜索,方便起见,假定 N = 2 N=2 N=2,且搜索问题恰好有 M M M个解,这个问题的特里可以方便地表示为一个输入 x x x的函数 f ( x ) f(x) f(x) x x x是从 0 0 0 N − 1 N-1 N1的整数, f f f的定义是:若 x x x是搜索问题的一个解,则 f ( x ) = 1 f(x)=1 f(x)=1,若 x x x不是解,则 f ( x ) = 0 f(x)=0 f(x)=0。于是,搜索问题可归结为判决函数:
f : Ω ⟶ { 0 , 1 } f:\Omega\longrightarrow\{0,1\} f:Ω{ 0,1}
对每个输入都可计算出来的条件下,从 N N N元的可能解集合 Ω \Omega Ω中找出一个满足 f ( x ) = 1 f(x)=1 f(x)=1的点 x x x的问题。函数 f f f称为一个 O r a c l e Oracle Oracle(黑匣子)。

例题

假设有一个映射: 1 , 2 , ⋯   , N → { 0 , 1 } 1,2,\cdots,N\to\{0,1\} 1,2,,N{ 0,1},有一个函数 f ( x ) → { 0 , 1 } f(x)\to\{0,1\} f(x){ 0,1}。当 N = 4 N=4 N=4时,假如, f ( 1 ) = 0 , f ( 2 ) = 1 , f ( 3 ) = 0 , f ( 4 ) = 1 f(1)=0,f(2)=1,f(3)=0,f(4)=1 f(1)=0,f(2)=1,f(3)=0,f(4)=1,我们的目的就是找到 f ( x ) = 1 f(x)=1 f(x)=1的解,这就是一个搜索问题。在这个例题中 2 , 4 2,4 2,4就是搜索解,二七只要搜索到一个解即可。但是,这个目标如何找得到呢?

假设被查找的集合为: { ∣ i ⟩ } = { ∣ 0 ⟩ , ∣ 1 ⟩ , ⋯   , ∣ N − 1 ⟩ } \{|i\rangle\}=\{|0\rangle,|1\rangle,\cdots,|N-1\rangle\} { i}={ 0,1,,N1}且有一个量子 O r a c l e Oracle Oracle可以识别搜索问题的解,识别的结果通过 O r a c l e Oracle Oracle的一个量子比特给出,可以将 O r a c l e Oracle Oracle定义为: ∣ x ⟩ ∣ q ⟩ ⟶ O r a c l e ∣ x ⟩ ∣ q ⊗ f ( x ) ⟩ |x\rangle|q\rangle\stackrel{Oracle}{\longrightarrow}|x\rangle|q\otimes f(x)\rangle xqOraclexqf(x)
其中, ∣ q ⟩ |q\rangle q是一个结果寄存器。通过 O r a c l e Oracle Oracle,当搜索的索引为目标结果时,结果寄存器翻转;不是目标结果时,结果寄存器不变。因此,可以通过判断结果寄存器的值来确定搜索的对象是否为目标值。
简单来说, O r a c l e Oracle Oracle的大致功能可以作如下定义:
O ω ∣ x ⟩ = { ∣ x ⟩ , i f x ≠ ω − ∣ x ⟩ , i f x = ω O_\omega|x\rangle= \left\{ \begin{array}{lr} |x\rangle,if\quad x\ne\omega \\ -|x\rangle,if\quad x=\omega \end{array} \right. Oωx={ x,ifx=ωx,ifx=ω
配合两个寄存器, O r a c l e Oracle Oracle对量子态的具体操作为:先将初态制备在态 ∣ 0 ⟩ ⊗ n ∣ 1 ⟩ |0\rangle\otimes^n|1\rangle 0n1上, ∣ 0 ⟩ ⊗ n |0\rangle\otimes^n 0n为查询寄存器, ∣ 1 ⟩ |1\rangle 1为结果寄存器。经过 H H H门操作后,可以将查询寄存器的量子态,变为所有结果的叠加态,即得到所有结果的索引,且记过寄存器变为 H ∣ 1 ⟩ = ( ∣ 0 ⟩ − ∣ 1 ⟩ ) / 2 H|1\rangle=(|0\rangle-|1\rangle)/\sqrt{2} H1=(01)/2 ,再使其通过 O r a c l e Oracle Oracle,可以对每一个索引进行检验,若是目标结果,则将结果寄存器的量子态进行 0 、 1 0、1 01翻转,即:
1 2 ( ∣ 1 ⟩ − ∣ 0 ⟩ ) = − 1 2 ( ∣ 1 ⟩ − ∣ 0 ⟩ ) \frac{1}{\sqrt{2}}(|1\rangle-|0\rangle)=-\frac{1}{\sqrt{2}}(|1\rangle-|0\rangle) 2 1(10)=2 1(10)
而查询寄存器不变。当检验的索引不是目标结果时,结果寄存器不变。因此, O r a c l e Oracle Oracle可以换一种表示方式:
∣ x ⟩ ( ∣ 0 ⟩ − ∣ 1 ⟩ 2 ) ⟶ O r a c l e ( − 1 ) f ( x ) ∣ x ⟩ ∣ ∣ 0 ⟩ − ∣ 1 ⟩ 2 > |x\rangle\left(\frac{|0\rangle-|1\rangle}{\sqrt{2}}\right) \stackrel{Oracle}{\longrightarrow} (-1)^{f(x)}|x\rangle\left|\frac{|0\rangle-|1\rangle}{\sqrt{2}}\right> x(2 01)Oracle(1)f(x)x2 01
由此可得, O r a c l e Oracle Oracle的作用是通过改变解的相位,标记搜索问题的解。
当查询寄存器由初态经过 H H H门后,其将变成所有肯情况的等额叠加态,即包含着所有搜索问题的解与非搜索问题的解,记为:
∣ 0 ⟩ ⊗ n ⟶ H a d a m a r d ∣ ψ ⟩ = 1 N ∑ x ∣ x ⟩ |0\rangle\otimes^n\stackrel{Hadamard}{\longrightarrow} |\psi\rangle=\frac{1}{\sqrt{N}}\sum\limits_x|x\rangle 0nHadamardψ=N 1xx
再将所有非搜索问题 ( N − M ) (N-M) (NM)的解定义为一个量子态 ∣ α ⟩ |\alpha\rangle α,记为:
∣ α ⟩ = 1 N − M ∑ x 1 ∣ x ⟩ |\alpha\rangle=\frac{1}{\sqrt{N-M}}\sum\limits_{x_1}|x\rangle α=NM 1x1x</

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值