这个问题涉及对多于一位作为输入的函数讨论的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(x)来将f的电路用作“黑盒子”。这称为“查询”操作。
显示经典概率算法可以通过使用2个查询来确定f是平衡的还是常数,概率至少为2/3。
提示:(显然,我们不能使用确定性算法。除非确定性算法看到输出至少9个输入值,否则无法找出函数是平衡的或恒定的。)
考虑从16个可能的输入集合中均匀和随机地选择两个输入。您的最终结果可能在概率上取决于这两个查询的结果。
答案 0 :(得分:0)
编辑:我错误地计算了一些我的概率。我现在还提到我们需要为函数f随机选择2个不同的输入,以保证如果f是平衡的,那么我们就知道了看到各种可能结果的可能性。
函数不变的先验概率未知的事实使得这个问题更难,因为这意味着我们无法直接计算任何算法的成功概率。但是,我们将能够计算界限这个概率。
我提出以下概率算法:
让我们先看一下我们可以实际计算的东西:条件概率。
现在假设函数的先验概率是p。那么算法给出正确答案的概率是
pCorrect(p)= p * P(校正|常数)+(1-p)* P(校正)。
假设0 <= p <= 1,则pCorrect(p)必须至少为min(P(校正),P(校正)),并且至多为max(P(校正|常数) ),P(纠正|平衡))。 2/3和31/45的最小值是2/3,因此,对于任何先前的函数常数概率,pCorrect从下面以2/3为界。(可能有助于想到p作为一个“混合杠杆”,控制每个术语包括多少。如果p = 0或p = 1,那么我们实际上分别有P(正确|平衡)或P(正确|常数),对于任何在p的中间值,我们将有一个中间总数。)
答案 1 :(得分:-1)
查看不同类型函数的概率,以便为两个给定值返回不同的结果:
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%。