작은 공간에서 확률 순서대로 벡터를 반복하는 방법


12

고려 차원 벡터 V를 여기서 V I{ 0 , 1 } . 각각의 i에 대해 우리는 p i = P ( v i = 1 )를 알고 있으며 v i 가 독립적 이라고 가정합시다 . 이러한 확률을 사용 하면 출력 크기에서 하위 라인 공간을 사용하여 가능성이 가장 낮은 것부터 (가능한 임의의 선택으로) 순서대로 이진 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

@SureshVenkat 예, 문제는 전적으로 하위 선형 공간 (출력 크기)에 관한 것입니다. 질문이 매우 어려울 수 있다고 생각하여 여기에 물었습니다.
Lembik

이를 공간 및 시간 에서 해결 하려면 SUBSET-SUM과 유사한 기술이 필요합니다 (어떤 하위 집합의 합계가 다른 합계를 거의 취소하는지 신속하게 알고 있음). 따라서 빠른 해결책이 없을 것입니다. poly(n)
Geoffrey Irving

@GeoffreyIrving이 직관을보다 공식적으로 만들 수 있다고 생각하십니까?
Lembik

답변:


9

다음은 알고리즘을 제공하는 용도로 약 번 및 2 N / 2 공간.2n2n/2

먼저 개 항목 의 모든 하위 집합의 합계를 정렬하는 문제를 살펴 보겠습니다 .n

이 하위 문제를 고려하십시오. 길이가 인 두 개의 정렬 된 목록이 있고 목록에있는 숫자의 쌍별 합계로 정렬 된 목록을 작성하려고합니다. 대략 O ( m 2 ) 시간 (출력 크기)이지만 하위 선형 공간 에서이 작업을 수행 하려고합니다. 우리는 O ( m ) 공간을 얻을 수 있습니다 . 우선 순위 대기열을 유지하고 우선 순위 대기열에서 합계를 증가하는 순서로 가져옵니다.mO(m2)O(m)

목록을 b 1b m 으로 오름차순으로 정렬하십시오. 우리는 취할 m의 합을 I + B (1)가 , = 1 ... m을 하고, 우선 순위 큐에 넣어.a1amb1bmmai+b1i=1m

이제 우선 순위 대기열 에서 가장 작은 나머지 합계 가져올 때 j < m 이면 합계 a i + b j + 1 을 우선 순위 대기열에 넣습니다. 공간은 항상 최대 m 개의 합계를 포함하는 우선 순위 큐에 의해 지배됩니다 . 각 우선 순위 큐 조작에 O ( log m ) 를 사용하므로 시간은 O ( m 2 log m ) 입니다. 이것은 우리가 O 에서 하위 문제를 할 수 있음을 보여줍니다 ( m 2ai+bjj<mai+bj+1mO(m2logm)O(logm) 시간 및 O ( m ) 공간.O(m2logm)O(m)

이제, 모든 부분 집합의 합을 정렬하기 위해 , 우리는이 서브 루틴을 사용합니다.리스트 a i 는 항목의 전반부의 부분 집합의 집합이고, 목록 b i 는 부분 집합의 집합입니다. 품목의 후반부. 동일한 알고리즘을 사용하여 이러한 목록을 재귀 적으로 찾을 수 있습니다.naibi

우리는 이제 원래 문제를 고려할 것입니다. 하자 이다 좌표들의 집합 0S 1 이다 좌표들의 집합 1 . 그런 다음 i S 0 p ( v i = 0 ) i S 1 p ( v i = 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)).

이러한 수치를 정리하면 숫자 정렬과 동일 , 우리의 서브 세트의 합 분류에 문제가 감소되도록 N 항목.iS1logp(vi=1)logp(vi=0)n


폴리 시간 / 공간 솔루션을 믿기 어려울 정도로 축소가 있습니까?
Lembik

당신은 아마 미만 걸리는 솔루션을 얻을하지 않을거야 그 출력의 크기이기 때문에, 시간을 (그리고 내 솔루션은 필요 없음2n 시간). 그러나 공간에 대한 좋은 하한은 없습니다. n2n
피터 쇼어

감사합니다. 물론 폴리 시간을 의미하는 것이 아니라 출력 크기와 폴리 공간에서 선형적인 것을 의미했습니다.
Lembik 2016 년

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)

감사. 나는 그것을 충분히 신중하게 읽지 못했습니다! 내 답변을 편집했습니다.
간 달리 터

3
v1=12n1v1=1pi=0.5

당신 말이 맞아요, 작동하지 않습니다. 죄송합니다!
간 달리 터
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.