Çözmem gereken oldukça benzersiz bir problemim var ve burada birinin nasıl en iyi şekilde mücadele edebileceği konusunda bana biraz fikir verebileceğini umuyorum.
Sorun: N sayısının bir listesinin, hiçbir katılımcının paylaştığı sayıları bilmeyeceği şekilde, bir dizi katılımcı arasında paylaşıldığını varsayalım. Tüm katılımcılar N (sayı listesinin boyutu) ve listedeki tüm sayıların toplamını bilir, fakat daha önce hiçbir şey ifade etmez.
Birlikte çalışarak, a ve b paylaşılan iki sayısının, katılımcıların "a <b" ifadesinin doğru olup olmadığını öğreneceklerini, başka bir şey olmadığını öğrenebilecekleri şekilde karşılaştırmak mümkündür. Ancak, bu yapılması çok pahalı bir şeydir (okuma: tek bir karşılaştırmayı tamamlamak için birkaç saniye, hatta belki de dakikalar sürebilir). Böyle bir şeyin nasıl mümkün olabileceği hakkında daha fazla bilgi için bu yazının sonuna bakın.
Günün sonunda, taraflar listedeki hangi endekslerin "yüzde üst K" (en büyük yüzde K) listesindeki paylaşılan sayılara karşılık geldiğini göstermek ister. Elbette bu, sıralama yaparak veya "üst K" seçim algoritmasını kullanarak yapılabilir. Bununla birlikte, bunlar kaçınılması gereken çok sayıda kıyaslama kullanma eğilimindedir. (Bunlar oldukça büyük gizli sabitleri olan O (n log n) veya O (n) 'dir.)
Diğer bir alternatif, (1-K)% 'in X'ten daha küçük ve% K'nin daha büyük olduğu bir X sayısında "tahmin etmektir". Sonra, her bir elemanı X ile karşılaştırabilir ve kaç tanesinin daha büyük ve kaç tanesinin küçük olduğunu görebilirsiniz. Tahmininiz yanlışsa, doğru bir çözüm elde edene kadar ikili arama gibi bir şey kullanarak düzeltin. Bu, tahmininiz iyi ise, çok daha az karşılaştırma gerektirir.
Yani benim sorum
Yalnızca N ve toplamı göz önüne alındığında, X'i "tahmin etmenin" en iyi yolu nedir?
Elbette bu, altta yatan dağılıma bağlı olacaktır. Farklı kullanım durumları için altta yatan dağılım muhtemelen farklı olacaktır ancak bilinecektir, bu yüzden tüm yaygın olanlar için iyi çözümler ile ilgileniyorum (normal, tek tip, üstel, belki de birkaçı). Ayrıca, altta yatan dağıtımla ilgili bir varsayım verilen adım sayısını en aza indirmek için "ikili benzeri" aramanın en iyi nasıl yapılacağına ilişkin önerileri duymayı çok isterim.
EK: Listedeki her değer, Shamir'in gizli paylaşım şemasını kullanarak katılımcılar arasında paylaşılmaktadır. Varsayalım M katılımcı ve listenin i-inci sayı polinom ile temsil edilir, sonra uzunluk N'ye ait F sabit terimi sonlu bir alan üzerinde derecesi M-1 olan sayıdır paylaşılan, diğer tüm katsayılar F'den rasgele seçilmektedir. J-inci katılımcının hisseleri ,f i f i ( j ) 1 ≤ i ≤ N. Bu pay göz önüne alındığında, katılımcının sayı hakkında bilgisi yoktur (bilgi teorik anlamda); Aslında, uygun bir katılımcı alt grubu, paylaşılan sayılar hakkında herhangi bir bilgi edinmek için bilgiyi birleştiremez. Bununla birlikte, sofistike bir güvenli çok partili hesaplama tekniği kullanarak, daha fazla bilgi açığa çıkmadan paylaşılan bir değerin diğerinden daha düşük olup olmadığını belirlemek mümkündür. Bu teknik işbirliği yapan tüm katılımcıları kapsar, bu yüzden mümkün olan en az sayıda yapılması ve yapılması çok maliyetlidir.