Memperkirakan persentil di antara node terdistribusi tanpa mengungkapkan nilai

23

Saya memiliki masalah yang cukup unik untuk dipecahkan dan saya berharap seseorang di sini dapat memberi saya wawasan tentang cara terbaik untuk mengatasinya.


Masalah: Misalkan daftar nomor N dibagikan di antara sekumpulan peserta sedemikian rupa sehingga tidak ada satu pun peserta yang benar-benar mengetahui angka yang dibagikan. Semua peserta tahu N (ukuran daftar angka) dan jumlah semua angka dalam daftar, tetapi tidak lebih apriori.

Dengan bekerja bersama, dimungkinkan untuk membandingkan dua angka bersama a dan b sedemikian rupa sehingga para peserta belajar apakah pernyataan "a <b" itu benar, tetapi tidak lebih. Namun, ini adalah hal yang sangat mahal untuk dilakukan (baca: mungkin butuh beberapa detik, bahkan mungkin beberapa menit, untuk menyelesaikan satu perbandingan). Lihat akhir posting ini untuk informasi lebih lanjut tentang bagaimana hal itu mungkin terjadi.

Pada akhirnya, para pihak ingin menampilkan indeks mana dalam daftar yang sesuai dengan "persen K atas" (% K yang merupakan terbesar) nomor bersama dalam daftar. Ini tentu saja dapat dilakukan dengan menyortir, atau menggunakan algoritma seleksi "top K". Namun, ini cenderung menggunakan banyak sekali perbandingan, yang harus dihindari. (Ini adalah O (n log n) atau O (n), dengan konstanta tersembunyi yang cukup besar.)

Alternatif lain adalah "menebak" pada angka X yang (1-K)% lebih kecil dari X dan K% lebih besar. Kemudian Anda dapat membandingkan setiap elemen dengan X dan melihat berapa banyak yang lebih besar dan berapa banyak yang lebih kecil. Jika tebakan Anda salah, perbaiki menggunakan sesuatu seperti pencarian biner sampai Anda menemukan solusi yang tepat. Ini membutuhkan perbandingan yang jauh lebih sedikit jika tebakan Anda bagus.

Jadi, pertanyaan saya adalah,

Hanya diberi N dan jumlahnya, apa cara terbaik untuk "memprediksi" X?

Tentu saja ini akan tergantung pada distribusi yang mendasarinya. Untuk kasus penggunaan yang berbeda, distribusi yang mendasarinya mungkin akan berbeda tetapi akan diketahui, jadi saya tertarik pada solusi yang baik untuk semua yang umum (normal, seragam, eksponensial, mungkin beberapa lainnya). Saya juga ingin mendengar saran mengenai cara terbaik untuk melakukan pencarian "seperti biner" untuk meminimalkan jumlah langkah yang diberikan asumsi tentang distribusi yang mendasarinya.


LAMPIRAN: Setiap nilai dalam daftar dibagi di antara peserta menggunakan skema berbagi rahasia Shamir. Misalkan ada peserta M dan daftar panjangnya N. Kemudian, nomor ke-10 dalam daftar tersebut diwakili oleh polinomial derajat M-1 di atas beberapa bidang hingga F. Istilah konstanta adalah angka yang dibagikan, semua koefisien lainnya dipilih secara seragam secara acak dari F. Bagian peserta j-th kemudian ,f i f i ( j ) 1 i Nfififi(j)1iN. Mengingat bagian ini, peserta tidak memiliki informasi (dalam arti informasi-teoretis) tentang nomor tersebut; pada kenyataannya, tidak ada subset yang tepat dari peserta yang dapat menggabungkan pengetahuan untuk mempelajari informasi apa pun tentang angka bersama. Namun, dengan menggunakan teknik perhitungan multi-pihak aman yang canggih, dimungkinkan untuk menentukan apakah satu nilai yang dibagikan kurang dari yang lain tanpa mengungkapkan informasi lebih lanjut. Teknik ini melibatkan semua peserta yang bekerja sama, itulah sebabnya sangat mahal untuk dilakukan dan harus dilakukan sesingkat mungkin.

Kaveh
sumber
Ini terdengar menarik, tapi saya belum sepenuhnya memahami prosesnya. Bisakah Anda mengklarifikasi, terutama paragraf kedua? Berapa banyak peserta ? Apakah lebih besar dari, kurang dari, atau sama dengan ? Apakah setiap peserta mengetahui beberapa bagian dari angka-angka? Jelas mereka tidak bisa semua hanya tahu dan jumlahnya sejak itu tidak ada cara untuk mengajukan pertanyaan atau berkolaborasi dengan cara yang mengumpulkan informasi tentang . Apakah ada batasan pada jenis pertanyaan yang dapat ditanyakan? Saya menantikan suntingan Anda. M N N a < bMMNNa<b
1
Karena pertanyaan ini tampaknya lebih algoritmik daripada statistik (permintaan untuk klarifikasi dalam hal ini tidak mendapat tanggapan) dan komunitas statistik belum menawarkan jawaban yang layak, mari bermigrasi ke TCS untuk melihat apakah itu menghasilkan minat di sana.
whuber
6
Pertanyaan sebenarnya tampaknya hanyalah sebagai berikut: "Jika kita mengetahui distribusi, bagaimana kita dapat mengeksploitasi informasi ini dalam desain algoritma seleksi berbasis perbandingan ? Algoritme harus menggunakan perbandingan sesedikit mungkin (dengan harapan; faktor konstan masalah)." Apakah saya benar?
Jukka Suomela
2
Sudahkah Anda mempertimbangkan Masalah Yao's Millionaires ? Ini memungkinkan perbandingan yang aman dengan perhitungan yang jauh lebih sedikit.
MS Dousti
3
Harap perhatikan bahwa asumsi Anda "pada kenyataannya, tidak ada subset peserta yang tepat yang dapat menggabungkan pengetahuan untuk mempelajari informasi apa pun tentang nomor yang dibagikan" adalah salah. Memang, skema berbagi rahasia Shamir sebenarnya adalah skema ambang di mana Anda mendistribusikan bagian dari rahasia Anda sehingga setidaknya berbagi dapat berhasil merekonstruksi rahasia (menggunakan interpolasi). Bahkan dalam kasus skema semua peserta bersama-sama dapat merekonstruksi rahasia. Tentu saja, Anda biasanya menggunakan skema ini dengan . n k ( n , n ) k < < n(k,n) nk(n,n)k<<n
Massimo Cafaro

Jawaban:

1

Anda sepertinya mengajukan dua pertanyaan terkait:

  1. “Indeks mana dalam daftar yang sesuai dengan atas”
  2. "Memperkirakan persentil", "angka X yang ... K% lebih besar"

Ini mungkin membutuhkan jumlah perbandingan berpasangan yang sangat berbeda.

Aspek lain yang mungkin memiliki dampak signifikan adalah informasi apa yang dibagikan. Semua orang tahu jumlah yang diterimanya, mengetahui jumlah, dan hasil perbandingan ya / tidak yang telah mereka ikuti. Namun, Anda juga mengatakan bahwa "para pihak ingin menampilkan indeks mana dalam daftar yang sesuai dengan bagian atas" sehingga Anda menyarankan bahwa beberapa informasi tentang indeks akan dibagikan. Bergantung pada apa yang dibagikan secara persis, Anda mungkin mendapatkan solusi yang sangat berbeda lagi.


sumber
Maaf, saya belum cukup jelas. Tidak ada yang tahu nomor tunggal dalam daftar; alih-alih, mereka masing-masing memiliki daftar N "berbagi angka" (menggunakan skema Berbagi Rahasia Shamir, jika Anda tidak terbiasa dengan konsep pembagian nomor). Jadi, satu-satunya informasi apriori yang dimiliki oleh setiap peserta adalah N dan jumlah semua angka dalam daftar. Mereka masing-masing memiliki sedikit informasi tentang masing-masing nomor, tetapi tidak cukup informasi untuk mengetahui apa nomor itu.
Sejauh dua pertanyaan terkait pergi, pertanyaan kedua menyiratkan solusi yang efisien untuk yang pertama. Jika saya dapat menemukan X menggunakan beberapa perbandingan (yang dapat saya lakukan jika saya dapat menghasilkan tebakan awal yang cukup baik), maka saya menemukan indeks semua nilai lebih besar dari X menggunakan hanya perbandingan N lebih banyak (perbandingan ini juga lebih murah, karena mengetahui X daripada memiliki bagian X memotong biaya perbandingan turun sekitar 1 ketiga.) Algoritma tujuan umum untuk menemukan K atas biasanya akan menggunakan perbandingan yang jauh lebih banyak untuk ukuran daftar besar, dengan asumsi saya dapat menemukan X menggunakan ~ log ( X) perbandingan
Terima kasih atas jawaban komentar dan lampiran untuk pertanyaan awal. Sekarang masalahnya terlihat berbeda.