【问题标题】:Generalization of the Deutsch algorithmDeutsch 算法的推广
【发布时间】:2012-12-13 05:26:51
【问题描述】:

这个问题涉及对多于一位作为输入的函数所讨论的 Deutsch 问题的简单概括。这一次,我们有一个布尔函数 f,它接受一个 4 位数字作为输入并输出 0 或 1,即f:{0,1}4→{0,1}。因此,f 的输入是 16 个可能的 4 位二进制数之一:

0000, 0001, 0010, 0011, 0100, 0101, 0110, 0111, 1000, 1001, 1010, 1011, 1100, 1101, 1110, 1111.

我们还被告知 f 是以下两种类型之一:

either f is a constant function, i.e., f(x) is the same for all 16 possible values of the input x, or
f is a balanced function, i.e., f(x) is 0 for exactly 8 of the possible 16 inputs and f(x) is 1 for the remaining 8 of the possible 16 inputs.

我们可以将 f 的电路用作“黑匣子”,将输入 x 提供给 f 的电路并观察输出 f(x)。这称为“查询”操作。

表明经典概率算法可以通过使用 2 个查询以至少 2/3 的概率确定 f 是否平衡或恒定。

提示:(显然,我们不能使用确定性算法来做到这一点。除非确定性算法看到至少 9 个输入值的输出,否则它无法确定函数是否是平衡的或恒定的)。

考虑从 16 个可能的输入集合中均匀随机地选择两个输入。您的最终结果可能在概率上取决于这两个查询的结果。

【问题讨论】:

  • 这是我大学一门课程带回家的期末考试题(逐字复制粘贴)。这不应该在这里发布,也不应该提供进一步的帮助。

标签: algorithm probability quantum-computing


【解决方案1】:

编辑:我错误地计算了一些概率。我现在还提到,我们需要为函数 f 随机选择 2 个不同的输入,以保证如果 f 是平衡的,那么我们知道看到各种可能结果的概率。

函数为常数的先验概率未知这一事实使这个问题变得更加困难,因为这意味着我们无法直接计算任何算法的成功概率。然而,我们将能够计算出这个概率的界限

我提出以下概率算法:

  • 随机选择两个不同的 4 位值,并将每个值提供给函数 f。
  • 如果看到 0,0 或 1,1,则以 2/3 的概率输出“常数”,以 1/3 的概率输出“平衡”。
  • 否则(如果看到 0,1 或 1,0),始终报告“平衡”。

让我们先来看看我们可以实际计算的东西:条件概率。

  1. “什么是 P(正确|常数),即在 f 为常数的情况下,我们的算法给出正确答案的概率?” 当 f 为常数时,我们的算法报告正确答案的 2/3时间。
  2. “什么是 P(correct|balanced),即在 f 平衡的情况下,我们的算法给出正确答案的概率?” 当 f 平衡时,看到 0,1 或 1,0 的概率是 2*(8/16 * 8/15) = 8/15,这种情况下肯定会输出正确的答案。在剩下的 7/15 的情况下——即看到 0,0 或 1,1 的情况——正确答案将输出 1/3 的时间,因此正确输出的总比例将是 8/15 * 1 + 7/15 * 1/3 = 31/45 = 2/3 + 1/45 ≈ 0.6889。

现在假设函数为常数的先验概率为 p。那么算法给出正确答案的概率为

pCorrect(p) = p*P(正确|常数) + (1-p)*P(正确|平衡)。

鉴于 0 因此 pCorrect 的下界是 2/3,因为函数的任何先验概率都是常数。(考虑一下可能会有所帮助p 作为一个“混合杠杆”,它控制每个术语包含多少。如果 p = 0 或 p = 1,那么我们实际上分别只有 P(正确|平衡) 或 P(正确|常数),对于任何p 的中间值,我们将得到一个中间值。)

【讨论】:

  • -1 您假设看到任何特定输入的任何给定输出的概率是已知的,即平衡函数为输入 0000 返回 1 的概率是 50%。如果您不能假设具有平衡函数的概率是已知的,那么您就不能假设获得特定输出的概率是已知的。
  • @Guffa:我的回答有一些错误,感谢您的评论,我现在注意到并修复了这些错误,但前提是我们随机为函数选择 2 个不同的输入(我现在已经提到过),我们确实知道特定结果的概率。对于平衡函数,它在 随机 输入上返回 0 的概率是 8/16 = 50%。如果它为那个输入返回 0,那么它在不同的随机输入上返回 1 的概率是 8/15,因为有 15 个其他可能的输入,它必须为其中的 8 个返回 1。
  • 如何选择输入并不重要,知道所有输入的概率并不意味着您知道特定输入的概率。
  • @Guffa:是的。如果我们对二进制函数一无所知,只知道它有 16 个输入并且它是平衡的,这就像我们有 16 个盒子,要么都包含一个球,要么什么都没有,我们所知道的是总共有 8 个球分布在其中不知何故。如果我们随机选择一个框(输入)并打开它(用它调用函数),我们知道我们会看到一个球(见结果 1),概率为 8/16。
  • 不,它没有。仅仅因为您知道 16 个框中有 8 个包含特定值,这并不意味着任何框包含特定值的概率是已知的。
【解决方案2】:

查看不同类型的函数对于两个给定值返回不同结果的概率:

constant  0,0  50%
constant  1,1  50%
balanced  0,0  4/8 * 3/7 = 21,4%
balanced  0,1  4/8 * 4/7 = 28.6%
balanced  1,0  4/8 * 4/7 = 28.6%
balanced  1,1  4/8 * 3/7 = 21.4%

如果结果为 0,0 或 1,1,则函数有 70% 的可能性是恒定的,而对于结果 0,1 和 1,0,则有 100% 的可能性是函数是平衡的。因此,对于发生率为 71.4% 的情况,我们有 70% 的把握,而发生在 28.6% 的时间的情况,我们是 100% 确定的。平均而言,我们有 78.6% 的把握。

【讨论】:

  • “如果结果是 0,0 或 1,1,则函数有 70% 的可能性是常数”——假设函数为常数的先验概率是已知的。例如。如果函数为常数的先验概率为 1,则有 100% 的机会看到 0,0 或 1,1 表示该函数为常数,而如果函数为常数的先验概率为 0,则有0%的机会。一般来说,如果先验概率是 p,那么概率 p*1 + (1-p)*2*(4/8 * 3/7) 会出现 0,0 或 1,1。
  • @j_random_hacker:是的,我做这个假设,就像我(和你)做一个假设,即给定输入的输出概率是已知的。
猜你喜欢
  • 2015-05-12
  • 1970-01-01
  • 2023-04-01
  • 2011-11-12
  • 2021-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多