目录
Deutsch-Jozsa问题与Deutsch-Jozsa算法
量子算法
在此之前,我们已经简要了解了量子计算的相关基础理论,从先前的论述中,不难看出量子计算与经典计算一脉相承,是经典计算基发展的必然产物。因此,量子算法中“算法”的概念以及复杂度分析均与经典计算中的理论相通,这里不再赘述。
本文将介绍 Deutsch-Jozsa量子算法,并使用本源量子QPanda量子虚拟机进行量子编程。
Deutsch问题
问题概述
设是一个函数,若且,或且,则称这个函数为常数函数;若,,或,则称这个函数为平衡函数。
考虑一个“黑盒”,我们不知道这个黑盒内部是什么结构,也不知道它会执行什么运算,只清楚这个黑盒会对输入的0或1按照常数函数或平衡函数执行一次运算,除此之外我们一无所知。想要清楚这个(黑盒)到底是常数函数还是平衡函数我们只能将0与1输入,并观察输出结果是否相同。
在经典计算中,我们只能依次输入0、1,共进行两次观察,下面来考虑量子计算的情况。
量子算法
设有一“黑盒”U,可根据输入值计算输出U(x),,这个黑盒执行酉变换:
仅当f(x) = 1时,这个酉变换才会反转高量子位。考虑以叠加态作为该黑盒的输入,使用H门制备叠加态输入高量子位:
只考虑高量子位,若f(x) = 0,则:
若f(x) = 1,则:
不难看出,两式形式相同,仅符号有区别且与f(x)取值有关,因此整理可得:
(1)
将此