Stima di un percentile tra nodi distribuiti senza rivelare valori


23

Ho un problema abbastanza singolare da risolvere e spero che qualcuno qui possa darmi un'idea di come affrontarlo al meglio.


Problema: supponiamo che un elenco di N numeri sia condiviso tra un insieme di partecipanti in modo tale che nessun singolo partecipante conosca effettivamente nessuno dei numeri che condividono. Tutti i partecipanti conoscono N (la dimensione dell'elenco di numeri) e la somma di tutti i numeri nell'elenco, ma niente di più a priori.

Lavorando insieme, è possibile confrontare due numeri condivisi aeb in modo tale che i partecipanti apprendano se l'affermazione "a <b" è vera, ma niente di più. Tuttavia, questa è una cosa estremamente costosa da fare (leggi: potrebbero essere necessari molti secondi, forse anche minuti, per completare un singolo confronto). Vedi la fine di questo post per ulteriori informazioni su come una cosa del genere sia possibile.

Alla fine della giornata, le parti desiderano produrre quali indici nell'elenco corrispondono al "massimo K percento" (il K% che è il maggiore) numeri condivisi nell'elenco. Questo può ovviamente essere fatto ordinando o usando un algoritmo di selezione "top K". Tuttavia, questi tendono ad usare un sacco di confronti terrificanti, che deve essere evitato. (Questi sono O (n log n) o O (n), con costanti nascoste abbastanza grandi.)

Un'altra alternativa è "indovinare" un numero X per cui (1-K)% è più piccolo di X e K% è più grande. Quindi puoi confrontare ogni elemento con X e vedere quanti sono più grandi e quanti sono più piccoli. Se la tua ipotesi era errata, revisionala usando qualcosa come una ricerca binaria fino a quando convergi su una soluzione corretta. Questo richiede molti meno confronti se la tua ipotesi è buona.

Quindi la mia domanda è

Dati solo N e la somma, qual è il modo migliore per "prevedere" X?

Naturalmente questo dipenderà dalla distribuzione sottostante. Per diversi casi d'uso la distribuzione sottostante sarà probabilmente diversa ma sarà conosciuta, quindi sono interessato a buone soluzioni per tutti i comuni (normale, uniforme, esponenziale, forse alcuni altri). Mi piacerebbe anche ricevere suggerimenti su come effettuare al meglio la ricerca "di tipo binario" per ridurre al minimo il numero di passaggi dato un presupposto sulla distribuzione sottostante.


APPENDICE: Ogni valore nell'elenco è condiviso tra i partecipanti usando lo schema di condivisione segreta di Shamir. Supponiamo che ci siano M partecipanti e che la lista sia di lunghezza N. Quindi, l'i-esimo numero nella lista è rappresentato da un polinomio di grado M-1 su un campo finito F. Il termine costante dififi è il numero che è condivisi, tutti gli altri coefficienti sono scelti in modo uniforme a caso da F. Le azioni del j-esimo partecipante sono quindi ,fi(j)1iN. Data questa condivisione, il partecipante non ha informazioni (in senso teorico-informativo) sul numero; infatti, nessun sottoinsieme adeguato di partecipanti può combinare le conoscenze per apprendere qualsiasi informazione sui numeri condivisi. Tuttavia, utilizzando una sofisticata tecnica di calcolo multipartitica sicura, è possibile determinare se un valore condiviso è inferiore a un altro senza rivelare ulteriori informazioni. Questa tecnica prevede la collaborazione di tutti i partecipanti, motivo per cui è così costoso da eseguire e dovrebbe essere eseguita il minor numero di volte possibile.


MMNNa<b

1
Poiché questa domanda sembra essere più algoritmica che statistica (una richiesta di chiarimenti in tal senso non ha ottenuto risposta) e la comunità delle statistiche non ha offerto una risposta praticabile, migriamo a TCS per vedere se genera interesse lì.
whuber

6
La vera domanda sembra essere semplicemente la seguente: "Se conosciamo la distribuzione, come possiamo sfruttare queste informazioni nella progettazione di un algoritmo di selezione basato sul confronto ? L'algoritmo dovrebbe utilizzare il minor numero di confronti possibile (in previsione; i fattori costanti importa)." Ho capito bene?
Jukka Suomela,

2
Hai considerato il problema dei milionari di Yao ? Consente un confronto sicuro con un calcolo molto inferiore.
MS Dousti,

3
(k,n) nk(n,n)k<<n
Massimo Cafaro,

Risposte:


1

Sembra che tu faccia due domande correlate:

  1. "Quali indici nell'elenco corrispondono ai primi"
  2. "Stima di un percentile", "un numero X per il quale ... K% è maggiore"

Questi potrebbero richiedere un numero molto diverso di confronti a coppie.

Un altro aspetto che può avere un impatto significativo è quello delle informazioni condivise. Tutti conoscono il numero che ha ricevuto, conoscono la somma e i risultati sì / no dei confronti a cui hanno preso parte. Tuttavia, si dice anche che "le parti desiderano produrre di quali indici nell'elenco corrispondono alla parte superiore", quindi suggerisci che alcune informazioni sugli indici saranno condivise. A seconda di cosa è esattamente condiviso, potresti ottenere di nuovo soluzioni molto diverse.


Scusa, non devo essere stato sufficientemente chiaro. Nessuno conosce un solo numero nell'elenco; invece, ciascuno di essi ha un elenco di N "condivisioni di numeri" (usando lo schema di condivisione segreta di Shamir, se non si ha familiarità con i concetti di condivisioni di un numero). Quindi, l'unica informazione a priori che ogni singolo partecipante ha è N e la somma di tutti i numeri nell'elenco. Ognuno di essi ha un po 'di informazioni su ciascun numero, ma non abbastanza per sapere qual è quel numero.

Per quanto riguarda le due domande correlate, la seconda domanda implica una soluzione efficace alla prima. Se riesco a trovare X usando pochi confronti (cosa che posso fare se riesco a trovare un'ipotesi iniziale ragionevolmente buona), allora trovo gli indici di tutti i valori più grandi di X usando solo N più confronti (questi confronti sono anche più economici, poiché conoscere X invece di avere una quota di X riduce il costo di un confronto di circa 1 terzo.) Gli algoritmi per scopi generali per trovare la K più alta in genere useranno molti più confronti per elenchi di grandi dimensioni, supponendo che riesca a trovare X usando ~ log ( X) confronti

Grazie per le risposte al commento e l'appendice alla domanda originale. Ora il problema sembra diverso.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.