Deutsch-Jozsa 算法

目录

  • 问题描述
  • 算法描述

问题描述

Deutsch问题:判断函数 f : { 0 , 1 , . . . , 2 n − 1 } → { 0 , 1 } f:\{0,1,..., 2^{n} -1 \}\to\{0,1\} f:{0,1,...,2n1}{0,1}是常函数(对所有 x x x f ( x ) f(x) f(x)是常数)还是平衡函数(恰好对所有 x x x,一半 f ( x ) f(x) f(x)取0,一半 f ( x ) f(x) f(x)取1)。

算法描述

DJ算法对应的量子电路如下:
Deutsch-Jozsa 算法_第1张图片

其中,上面 n n n个量子比特存储于查询寄存器,下面一个量子比特存储于答案寄存器
初始状态:
在这里插入图片描述
通过 H ⊗ n H^{\otimes n} Hn/ H H H门:
在这里插入图片描述
应用 U f U_f Uf
在这里插入图片描述
通过 H ⊗ n H^{\otimes n} Hn/      \;\; 门:
在这里插入图片描述
测量查询寄存器:
1.若全为0,说明函数 f f f 是常函数;
2.否则,说明函数 f f f 是平衡函数。

完整算法流程如下:
Deutsch-Jozsa 算法_第2张图片

注意:量子算法通过对函数 f f f一次查询就可以解决Deutsch问题;而与此相比,经典算法需要计算 2 n / 2 + 1 2^n/2+1 2n/2+1次。

你可能感兴趣的:(量子计算,算法)