如何置换(重新排列)n位输入?


14

我对一种量子算法感兴趣,该算法获取n位序列作为输入,并生成此n位序列的改组(置换)版本。

例如,如果输入为0,0,1,1(因此在这种情况下,n = 4),则可能的答案是:

  • 0,0,1,1
  • 0,1,0,1
  • 0,1,1,0
  • 1,0,0,1
  • 1,0,1,0
  • 1,1,0,0

注意,仅应生成一个输出,该输出是在所有可能的有效输出中随机选择的。

如何最好地在量子算法中实现呢?

已经提出了一种解决方案,作为“ 如何创建一个量子算法来生成具有相等数量的1位的2个n位序列 ”的答案之一。但是此解决方案的问题在于,这需要大约(n2)帮助量子位,如果n大,则它们会迅速变得巨大。

注意:

  • 请不要在没有解释经典算法的步骤如何映射到通用量子计算机的情况下提供经典算法。
  • 对我而言,有两种解释“在所有可能的好产出中随机选择”的好方法:(1)每个可能的好产出都有相等的被选择的机会。(2)每个可能的良好输出都有被选择的机会> 0。

1
输入是长度的二进制串其中比特均为1,并且输出是任何的的的可能置换?这可以在一台经典计算机上完成,只需一步即可。你想alll可能的输出?nk(nk)1
user1271772

不,应该只生成一个输出,该输出是在所有可能的输出中随机选择的。
JanVdA

经典算法是否足够好?(您仍然可以在量子计算机上运行它。)或者您是否需要……。哪个优于最佳经典算法?
Norbert Schuch

1
@JanVdA:为什么不只选择1和0并在经典计算机上交换它们呢?
user1271772

1
由于您尚未指定所需的随机分布,因此我将其保留在此处:DilbertXKCD ;)
Ali

Answers:


4

可以通过以下行用其他量子位来完成:logn

  1. 转换其他量子位,以使它们编码均匀地随机选择的数字 。k{0,,n1}

  2. 将输入量子比特循环移位次。k

  3. 让最后一个原始输入qubit固定为输出,然后递归其余个。n1

这是一种经典算法,但是您可以在量子计算机上运行它,正如Norbert在评论中建议的那样。(关于算法是量子的问题方面对我来说仍然不清楚,因此如果运行像我在量子计算机上建议的那样的经典算法还不够,这对于解决该问题将很有帮助加以澄清。)

请注意,由于该问题要求随机输出,因此该算法将不得不在某个点上产生熵,大概是通过测量或对量子位执行其他非单一运算(例如初始化它们)来实现。在上面的算法中,第一步是生成熵:在执行步骤1中的操作之前,无论其他量子位的状态如何,它们都应具有状态 (执行(用二进制编码的编码))。

1nk=0n1|kk|
k

感谢您的回答。我对解决该问题的实际量子算法感兴趣-如果您可以将上述经典算法映射到量子程序,那么它也可以,但是我不知道如何执行此操作。
JanVdA

2
我认为这个问题现在已经成为焦点:您并不是真正在寻找一种算法,而是在寻找代码。我所描述的是一种算法,剩下的任务是将该算法(或其他算法)实现为某种语言的代码或量子电路的低级描述。我建议您修改问题以使其更清楚-但请注意,您正在要求某人为您做乏味且概念上无趣的工作。自己学习如何执行此操作的替代方法似乎令人生畏,但从长远来看可能最终是更好的解决方案。
John Watrous

我已经向问题添加了注释。我认为我们对概念量子算法的解释 有所不同。对我来说,经典算法不是量子算法,而是可以映射为量子算法
JanVdA

@JanVdA:您所说的量子算法是什么意思?例如,您是否要求它至少涉及一个门?还是至少需要一个门?还是需要其他一些特定的门设置?您希望该算法使用哪个门集?HY
user1271772

量子算法是一种可以(在步骤级别)映射到通用量子计算机程序的算法。量子算法步骤的输入和输出是量子位(或可以映射到一系列量子位)。量子算法的最后一步=读取(观察)量子位的值(这样,量子位就映射到实际位)门集没有任何限制。这个想法是完整的算法可以在通用量子计算机上运行。
JanVdA

3

注意:此答案假设您希望排列是连贯的,即您希望而不是1/3的机会,三分之一的机会的,和一个1/3的机会。13(|001+|010+|100)001010100

请特别注意如何指定此任务,因为由于可逆性限制,它很容易实现。例如,对于输入,要输出GHZ状态。但是,如果您还想输出输入和的GHZ状态,那将不起作用。您不能将多个输入状态发送到相同的输出状态(无相干性)。只要您说“我只关心0000111而不是1110000或0010110之类的升序输入;您可以使用这些输入做任何您想做的事情”,这将很好。|001|31=13(|001+|010+|100)|010|100

产生已排序输入的量子排列的一个技巧是,通过将分类网络应用于均一重叠的种子值列表,首先准备“排列状态”。排序网络将输出保存已排序种子的量子位,但还将输出保存排序网络比较的量子位。排列状态仅仅是比较量子位。要将其应用于输入,您只需通过反向排序网络运行输入即可。注意这里有一些棘手的细节。参见论文“ 制备费米哈密顿量本征态的改进技术 ”。您将不得不推广这种技术,以处理具有重复值的输入,而不仅仅是唯一值。

您可能还需要研究“ 量子压缩 ”,它与紧密相关状态(要设置位的所有位状态的均匀叠加)。主要区别在于您将反向运行量子压缩电路,并且期望数字编码为“其中有几个?” 而不是“给我一个数量正确的状态”。|nknk

我想我想说的是,产生这种状态比您预期的要复杂。我认为它之所以复杂是因为输出中幅度的大小取决于输入的计算基础状态。例如,对于您需要一个输出,该输出是四个经典状态的叠加,因此您在隐藏了式。但是对于,所需的输出具有六个经典状态,因此隐藏的前置因子。|000114|41|0011|4216


我需要进一步研究才能重视您的答案,但我不太同意您关于可逆性约束的第二段。请注意,您已经使用作为解决方案,但是随着我们的工作,还有更多解决方案具有复数的数字(例如,以下也是可行的解决方案13(|001+|010+|100)|00113(|001|010+i.|100)
rangle-

1
@JanVdA正确,可以使用相位使各个输出正交。我对您的问题的理解是,在所有情况下您都希望处于同一阶段。
Craig Gidney

0

量子计算机可以进行经典计算。最佳算法将是:

  1. 选择任意一点(您可以访问的最快的一点)。
  2. 查找具有相反值的位(如果在步骤1中得到0,则找到1)
  3. 切换它们(0变为1,1变为0)。

步骤2涉及搜索一个位字符串,该字符串使用经典运算进行运算,但是如果您可以通过评估一个函数来获得位值,则您可以使用Grover的量子算法通过操作查找相反的位。 ON n th O NO(N)nthO(N)


谢谢,但是该算法只能切换2位(因此它不会生成所有排列),它仍然是经典算法,而我希望看到一个量子算法。
JanVdA
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.