Оцінка відсотків серед розподілених вузлів без виявлення значень


23

У мене є досить унікальна проблема, яку потрібно вирішити, і я сподіваюся, що хтось тут може дати мені деяке уявлення про те, як найкраще вирішити цю проблему.


Проблема: Припустимо, що список з N номерів поділяється між набором учасників таким чином, що жоден учасник насправді не знає жодного з номерів, якими вони поділяються. Усі учасники знають N (розмір списку чисел) та суму всіх чисел у списку, але не більше апріорі.

Працюючи разом, можна порівняти два спільних числа a і b таким чином, щоб учасники дізналися, чи є твердження "a <b" правдивим, але нічого більше. Однак це надзвичайно дорога річ (читай: на повне порівняння може знадобитися багато секунд, можливо, навіть хвилин). Дивіться наприкінці цього допису, щоб дізнатися більше про те, як таке можливо.

Наприкінці дня сторони бажають вивести, які індекси у списку відповідають "найвищим К відсоткам" (К%, який є найбільшим) загальним числом у списку. Звичайно, це можна зробити сортуванням або використанням алгоритму вибору "верхнього К". Однак вони, як правило, використовують жахливу кількість порівнянь, яких слід уникати. (Це або O (n log n), або O (n), з досить великими прихованими константами.)

Інша альтернатива - "здогадуватися" для числа X, для якого (1-K)% менше, ніж X, а K% - більші. Потім ви можете порівняти кожен елемент з X і побачити, скільки більше, а скільки менше. Якщо ви здогадалися, помилилися, перегляньте це, використовуючи щось на зразок двійкового пошуку, доки не сходиться правильне рішення. Це потребує набагато менше порівнянь, якщо ваші здогадки хороші.

Отже, моє питання:

Враховуючи лише N та суму, який найкращий спосіб "передбачити" X?

Of course this will depend on the underlying distribution. For different use-cases the underlying distribution will likely be different but will be known, so I am interested in good solutions for all the common ones (normal, uniform, exponential, perhaps a few others). I would also love to hear suggestions regarding how best to do the "binary-like" search to minimize the number of steps given an assumption about the underlying distribution.


ДОДАТОК: Кожне значення у списку ділиться між учасниками, використовуючи таємну схему обміну Шаміром. Припустимо, є M учасників, а список має довжину N. Тоді i-е число у списку представлене поліномом ступеня M-1 над деяким кінцевим полем F. Постійний - це число, яке є Спільне, всі інші коефіцієнти вибираються рівномірно випадково від F. Частки j-го учасника тоді ,f i f i ( j ) 1 i Nfififi(j)1iN. Враховуючи цю частку, учасник не має інформації (в інформаційно-теоретичному сенсі) про кількість; насправді жоден належний підмножина учасників не може поєднувати знання, щоб дізнатися будь-яку інформацію про загальні номери. Однак, використовуючи складну безпечну багатосторонню техніку обчислення, можна визначити, чи є одне спільне значення менше іншого, не розкриваючи більше інформації. Ця методика включає всіх учасників, які співпрацюють, тому це так дорого робити, і це потрібно зробити за найменшу кількість можливих разів.


Це звучить цікаво, але я ще не повністю розумію процес. Чи можете ви уточнити, особливо другий абзац? Скільки учасників ? Чи більше , менше або дорівнює ? Чи знає кожен учасник якоїсь підмножини чисел? Очевидно, що вони не можуть просто знати та суму з тих пір немає можливості задати будь-яке запитання чи співпрацювати таким чином, щоб агрегувати інформацію про . Чи існують обмеження щодо тих питань, які можна задати? Я з нетерпінням чекаю вашої редакції. M N N a < bMMNNa<b

1
Оскільки це питання виглядає більш алгоритмічним, ніж статистичним (на запит на роз'яснення з цього приводу не було відповіді), а спільнота статистики не запропонувала відповіді, давайте перейдемо до TCS, щоб побачити, чи викликає він там інтерес.
whuber

6
Справжнє питання видається просто таким: "Якщо ми знаємо розподіл, як ми можемо використовувати цю інформацію при розробці алгоритму відбору на основі порівняння ? Алгоритм повинен використовувати якомога менше порівнянь (у очікуванні; постійні фактори матерія) ". Чи правильно я це зробив?
Jukka Suomela

2
Ви розглядали проблему мільйонерів Яо ? Це дозволяє безпечне порівняння з набагато меншими обчисленнями.
MS Dousti

3
(k,n) nk(n,n)k<<n
Массімо Кафаро

Відповіді:


1

Ви ніби задаєте два пов'язані питання:

  1. "Які показники у списку відповідають верхній частині"
  2. "Оцінка процентилу", "число X, для якого ... K% більше"

Вони можуть потребувати дуже різних парних порівнянь.

Інший аспект, який може мати суттєвий вплив, - це те, що поділяється інформацією. Всі знають отриману ним кількість, знають суму та результати порівняння «так / ні», в яких вони брали участь. Однак ви також говорите, що «сторони бажають вивести, які індекси у списку відповідають вершині», таким чином ви пропонуєте що деяка інформація про індекси буде надана. Залежно від того, що саме поділяється, ви знову можете отримати дуже різні рішення.


Вибачте, я не повинен був бути достатньо чітким. Ніхто не знає єдиного номера в списку; натомість у кожного з них є список N "акцій чисел" (використовуючи схему Таємного обміну Шаміра, якщо ви не знайомі з поняттями акцій числа). Отже, єдиною апріорною інформацією, яку має кожен учасник, є N та сума всіх чисел у списку. Кожен з них має трохи інформації про кожне число, але недостатньо інформації, щоб знати, що таке число.

Що стосується двох пов'язаних питань, друге питання передбачає ефективне рішення першого. Якщо я можу знайти X за допомогою декількох порівнянь (що я можу зробити, якщо я можу прийти з досить хорошою початковою здогадкою), то я знаходжу показники всіх значень, більших за X, використовуючи лише N більше порівнянь (ці порівняння також дешевші, оскільки знаючи, що X замість частки X зменшує вартість порівняння приблизно на 1 третину.) Алгоритми загального призначення для пошуку верхнього K зазвичай використовують набагато більше порівнянь для великих розмірів списку, припускаючи, що я можу знайти X за допомогою ~ log ( X) порівняння

Дякуємо за відповіді за коментарі та додаток до оригінального питання. Зараз проблема виглядає інакше.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.