값을 나타내지 않고 분산 노드 간 백분위 수 추정


23

나는 해결해야 할 상당히 독특한 문제가 있으며 여기 누군가가 그것을 해결하는 가장 좋은 방법에 대한 통찰력을 줄 수 있기를 바랍니다.


문제 : 단일 참가자가 실제로 공유하는 숫자를 알지 못하는 방식으로 N 개의 숫자 목록을 참가자 세트간에 공유한다고 가정합니다. 모든 참가자는 N (숫자 목록의 크기)과 목록에있는 모든 숫자의 합계를 알고 있지만 더 이상 우선 순위는 없습니다.

함께 작업함으로써 참가자들이 "a <b"문장이 참인지 아닌지를 알 수있는 방식으로 두 개의 공유 숫자 a와 b를 비교할 수 있습니다. 그러나 이것은 매우 비싼 일입니다 (읽기 : 단일 비교를 완료하는 데 몇 초, 아마도 몇 분이 걸릴 수 있음). 그러한 일이 어떻게 가능한지에 대한 자세한 내용은이 게시물의 끝 부분을 참조하십시오.

하루가 끝나면 당사자들은 목록의 어느 지수가 목록의 "최고 K %"(최대 K %) 공유 숫자에 해당하는지 출력하려고합니다. 이것은 정렬 또는 "top K"선택 알고리즘을 사용하여 수행 할 수 있습니다. 그러나 이것들은 끔찍한 비교를 많이 사용하는 경향이 있으므로 피해야합니다. (이것은 상당히 큰 숨겨진 상수를 가진 O (n log n) 또는 O (n)입니다.)

다른 대안은 (1-K) %가 X보다 작고 K %가 더 큰 숫자 X에서 "추측"하는 것이다. 그런 다음 각 요소를 X와 비교하여 더 큰 개수와 더 작은 개수를 확인할 수 있습니다. 추측이 틀렸다면 올바른 솔루션에 수렴 될 때까지 이진 검색과 같은 것을 사용하여 수정하십시오. 추측이 좋으면 비교가 훨씬 적습니다.

제 질문은

N과 합계 만 주어지면 X를 "예측"하는 가장 좋은 방법은 무엇입니까?

물론 이것은 기본 분포에 달려 있습니다. 다른 유스 케이스의 경우 기본 분포는 다를 수 있지만 알려질 것이므로 모든 일반적인 것 (정상, 균일, 지수, 아마도 다른 것)에 대한 좋은 솔루션에 관심이 있습니다. 또한 기본 분포에 대한 가정이 주어지면 단계 수를 최소화하기 위해 "이진 유사"검색을 수행하는 최선의 방법에 대한 제안을 듣고 싶습니다.


부록 : 목록의 각 값은 Shamir의 비밀 공유 체계를 사용하여 참가자간에 공유됩니다. 가정 M 참여자가 존재하고이 목록은 목록에있는 i 번째의 개수는 다항식으로 표현되고,이어서 길이 N.이다 F. 중 일정한 기간 어떤 유한 필드도 이상 M-1 있는 숫자 공유하면 다른 모든 계수는 F에서 무작위로 균일하게 선택됩니다. j 번째 참가자의 공유는 ,fififi(j)1iN. 이러한 공유가 주어지면 참가자는 그 수에 대한 정보 (정보 이론적 의미)가 없습니다. 실제로, 참가자의 적절한 서브 세트는 지식을 결합하여 공유 번호에 대한 정보를 학습 할 수 없습니다. 그러나 정교한 안전한 다자간 계산 기술을 사용하면 더 많은 정보를 공개하지 않고 하나의 공유 값이 다른 공유 값보다 작은 지 여부를 확인할 수 있습니다. 이 기술은 모든 참가자의 협력을 필요로하기 때문에 비용이 많이 들고 가능한 한 적은 횟수로 수행해야합니다.


이것은 흥미로운 것 같지만 아직 프로세스를 완전히 이해하지 못했습니다. 특히 두 번째 단락을 명확히 할 수 있습니까? 얼마나 많은 참가자 ? 는 큰보다 미만 또는 동등 ? 각 참가자는 숫자의 일부를 알고 있습니까? 분명히 그들은 모두 없습니다 알고 다음 방법에 대한이 집계 정보 질문이나 협력을 요청 할 수있는 방법이 없기 때문에와 합 . 질문 할 수있는 질문에 제한이 있습니까? 나는 당신의 편집을 기대합니다. MMNNa<b

1
이 질문은 통계보다 알고리즘적인 것으로 보이며 (이 점에서 설명 요청은 응답이 없음) 통계 커뮤니티는 실행 가능한 응답을 제공하지 않았으므로 TCS로 마이그레이션하여 관심이 있는지 확인하십시오.
whuber

6
실제 질문은 단순히 다음과 같다. "분포를 알고 있다면, 비교 기반 선택 알고리즘 의 설계에서이 정보를 어떻게 활용할 수 있을까? 알고리즘은 가능한 적은 수의 비교를 사용해야한다 (예상; 상수 요소) 문제)." 내가 이걸 얻었 니?
Jukka Suomela

2
야오의 백만장 자 문제 를 고려 했습니까 ? 훨씬 적은 계산으로 안전하게 비교할 수 있습니다 .
MS Dousti

3
"실제로 참가자의 적절한 하위 집합이 지식을 결합하여 공유 번호에 대한 정보를 학습 할 수 없다"는 가정은 거짓입니다. 실제로, Shamir의 비밀 공유 체계는 실제로 임계 값 체계이며 , 적어도 공유가 비밀을 성공적으로 재구성 할 수 있도록 (보간을 사용하여) 비밀 을 분배 합니다 . 방식 의 경우에도 모든 참가자는 함께 비밀을 재구성 할 수 있습니다. 물론 일반적으로 과 함께이 체계를 사용합니다 . (k,n) nk(n,n)k<<n
Massimo Cafaro

답변:


1

두 가지 관련 질문을하는 것 같습니다.

  1. "목록의 색인이 상단에 해당합니다"
  2. “백분위 수 추정”,“… K %가 더 큰 숫자 X”

서로 다른 수의 쌍별 비교가 필요할 수 있습니다.

중요한 영향을 줄 수있는 다른 측면은 정보가 공유되는 것입니다. 모든 사람은 자신이받은 숫자를 알고 합계를 알고 그들이 참여한 비교의 예 / 아니요 결과를 알고 있습니다. 그러나 당신은 또한“당사자들이 목록에있는 어떤 지수가 상단에 해당하는지 출력하길 원합니다”라고 말합니다. 지수에 대한 일부 정보가 공유 될 것입니다. 정확히 공유되는 내용에 따라 매우 다른 솔루션을 다시 얻을 수 있습니다.


죄송합니다. 충분히 명확하지 않아야합니다. 아무도 목록에서 하나의 숫자를 모른다. 대신 N 개의 숫자 공유 목록이 있습니다 (숫자의 공유 개념에 익숙하지 않은 경우 Shamir의 비밀 공유 체계 사용). 따라서 단일 참가자가 가진 유일한 우선 정보는 N과 목록의 모든 숫자의 합계입니다. 그들은 각각의 숫자에 대한 약간의 정보를 가지고 있지만 그 숫자가 무엇인지 알기에 충분한 정보는 없습니다.

두 가지 관련 질문이있는 한 두 번째 질문은 첫 번째 질문에 대한 효율적인 솔루션을 의미합니다. 몇 가지 비교를 사용하여 X를 찾을 수 있다면 (합리적으로 좋은 초기 추측을 생각해 낼 수 있다면) N보다 많은 비교를 사용하여 X보다 큰 모든 값의 인덱스를 찾습니다 (이러한 비교도 저렴합니다. X를 공유하는 대신 X를 알면 비교 비용이 약 1/3 감소합니다.) 상위 K를 찾기위한 범용 알고리즘은 일반적으로 ~ log를 사용하여 X를 찾을 수 있다고 가정 할 때 큰 목록 크기에 대해 훨씬 더 많은 비교를 사용합니다 ( X) 비교

의견 답변과 원래 질문에 대한 부록에 감사드립니다. 이제 문제가 다르게 보입니다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.