如何在小空间中按概率顺序遍历向量


12

考虑一个维向量v,其中v { 0 1 }。对于每一个,我们知道p = P v = 1 ,让我们假设v 是独立的。使用这些概率,是否存在一种有效的方法,可以使用输出大小中的空间线性从最大可能性到最小可能性(对关系进行任意选择)从二进制n维向量进行迭代? nvvi{0,1}ipi=P(vi=1)vin

举个例子。最有可能的载体是1 0 1 和最有可能是{ 0 1 0 }p={0.8,0.3,0.6}(1,0,1){0,1,0}

对于非常小的我们可以用概率来标记2 n个向量中的每一个,并简单地进行排序,但这当然仍然不会使用亚线性空间。n2n

之前曾在/cs/24123/how-to-iterate-over-vectors-in-order-of-probability中询问过此问题的近似变体。


您是否也没有提出跟进问题的任何理由?在亚线性空间中,这里的主要问题之一是这样做吗?
Suresh Venkat 2014年

@SureshVenkat是的,问题完全在于亚线性空间(在输出大小中)。我在这里问这个问题,因为我认为这个问题可能很难解决。
Lembik 2014年

空间和时间中解决这个问题似乎需要类似于SUBSET-SUM的技术(迅速知道子集的哪些和几乎抵消了不同的和)。因此,不可能有一个快速的解决方案。poly(n)
2014年

@GeoffreyIrving您认为这种直觉可以变得更正式吗?
Lembik 2014年

Answers:


9

下面给出了使用大约时间和2 n / 2空间的算法。2n2n/2

首先,让我们看一下对项目的所有子集的总和进行排序的问题。n

考虑这个子问题:您有两个长度为排序列表,并且您想要创建一个列表中数字的成对和的排序列表。您希望在大约O m 2时间(输出大小)但亚线性空间中执行此操作。我们可以达到O m 空间。我们保留一个优先级队列,并以升序将总和从优先级队列中拉出。mO(m2)O(m)

让列表为b 1b m,以递增顺序排序。我们取m个a i + b 1i = 1 m,并将它们放在优先级队列中。a1amb1bmmai+b1i=1m

现在,当我们拉剩余最小和出优先级队列的,如果Ĵ < 我们然后把总和一个 + b Ĵ + 1到优先级队列。该空间由优先级队列控制,该队列始终最多包含m个和。时间为O m 2 log m ,因为我们对每个优先级队列操作都使用O log m 。这说明我们可以在O m 2ai+bjj<mai+bj+1mO(m2logm)O(logm)时间和 O m 空间。O(m2logm)O(m)

现在,要对数字的所有子集的总和进行排序,我们只需使用此子例程,其中列表a i是项的前一半的子集的总和的集合,列表b i是子集的总和的集合下半年的项目。我们可以使用相同的算法递归找到这些列表。naibi

现在,我们将考虑原始问题。让是该组其是坐标0,和小号1是该组其是坐标1。然后 Π š 0 p v = 0 Π š 1个 p v = 1 S00S11

iS0p(vi=0)iS1p(vi=1)=1inp(vi=0)iS1p(vi=1)p(vi=0)=1inp(vi=0)exp(iS1logp(vi=1)p(vi=0)).

排序这些数字是相同的排序的数字,因此,我们减少了问题排序的子集的总和Ñ项目。iS1logp(vi=1)logp(vi=0)n


是否有减少的可能性,这将使多时/空解决方案难以置信?
Lembik 2014年

您可能不会获得耗时少于的解决方案,因为那是输出的大小(而我的解决方案需要n2n次)。但是,我没有很好的空间下限。n2n
Peter Shor 2014年

谢谢。我当然不是说poly时间,而是输出大小和poly空间中有些线性。
Lembik 2014年

4

O(n)

  1. x{0,1}nO(n)r(x)xxp(x)>p(x)x{0,1}nxp(x)>p(x)r(x)x
  2. kxr(x)=kO(n)x{0,1}nxr(x)xr(x)=k
  3. k02n1kxr(x)=k

(我们也应该注意可能的联系,但这并不困难。)


谢谢。但是,这是一个很慢的算法:)
Lembik

0

编辑:此答案不正确。有关详细信息,请参见评论。〜甘达特

O(2n)O(n)

  1. (i,pi)|0.5pi|

  2. vvi1pi>0.50vviv

  3. 在排序列表和空向量上调用此递归函数。

010.5

O(2n)O(n)nO(2n)O(n)O(2n)时间步长。因此,该算法在最坏情况下的复杂度最佳。


Θ(2n)

谢谢。我显然没有足够仔细地阅读它!我已经编辑了答案。
gandaliter14年

3
v1=12n1v1=1pi=0.5

没错,这行不通。抱歉!
gandaliter 2014年
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.