解決すべきかなりユニークな問題があり、ここで誰かがそれをどうやってうまくやるのかについての洞察を与えてくれることを望んでいます。
問題:単一の参加者が共有する番号を実際に知らないような方法で、N個の番号のリストが参加者セット間で共有されているとします。すべての参加者は、N(数値のリストのサイズ)とリスト上のすべての数値の合計を知っていますが、先験的なことは何も知りません。
一緒に作業することにより、参加者が「a <b」という文が真であるかどうかを学習するように、2つの共有番号aとbを比較できますが、それ以上はできません。ただし、これは非常に高価です(1回の比較を完了するのに数秒、場合によっては数分かかることがあります)。そのようなことがどのように可能かについてのもう少しの情報については、この投稿の終わりを見てください。
一日の終わりに、当事者は、リスト内のどのインデックスを、リスト内の「上位Kパーセント」(最大のK%)共有番号に対応させるかを出力します。もちろん、これはソートするか、「トップK」選択アルゴリズムを使用して実行できます。ただし、これらは非常に多くの比較を使用する傾向があるため、回避する必要があります。(これらは、O(n log n)またはO(n)のいずれかで、かなり大きな隠し定数があります。)
別の選択肢は、(1-K)%がXより小さく、K%が大きい数値Xでの「推測」です。次に、各要素をXと比較して、どれだけ大きいか、小さいかを確認できます。推測が間違っていた場合は、正しいソリューションに収束するまで、バイナリ検索などを使用して修正します。推測が正しければ、比較にかかる時間ははるかに少なくなります。
だから、私の質問は、
Nと合計のみを考えると、Xを「予測」する最良の方法は何ですか?
もちろん、これは基礎となるディストリビューションに依存します。さまざまなユースケースでは、基礎となる分布は異なる可能性がありますが、既知であるため、すべての一般的なもの(通常、均一、指数関数、おそらくいくつか)の優れたソリューションに興味があります。また、基礎となる分布についての仮定を前提として、「バイナリのような」検索を実行してステップ数を最小限に抑える最善の方法に関する提案を聞きたいと思います。
付録:リストの各値は、Shamirの秘密共有スキームを使用して参加者間で共有されます。仮定M参加者が存在すると、リストは、リスト上のi番目の数は多項式で表現され、そして長さNであり、いくつかの有限体Fの一定期間にわたり度M-1のfはiが数であります共有されていることを、他のすべての係数はj番目の参加者の株式は次いで、F.からランダムに一様に選択されるfをI(J )、1 ≤ I ≤ N。この共有を考えると、参加者はその番号に関する情報を(情報理論的には)持っていません。実際、参加者の適切なサブセットでは、知識を組み合わせて共有番号に関する情報を学習することはできません。ただし、高度な安全なマルチパーティ計算手法を使用すると、情報を公開せずに、ある共有値が別の共有値よりも小さいかどうかを判断できます。この手法では、すべての参加者が協力する必要があります。そのため、実行するのに費用がかかるため、できる限り少ない回数で実行する必要があります。