質問は次のようになります。N台のマシンがあり、各マシンがN個の要素を格納して操作できると仮定すると、すべてのN^2要素の中央値を最低のコストで見つけるにはどうすればよいでしょうか。
それは本当に私をとても悩ませます、皆さんからの答えを得ることを望んでいます、ありがとう!
申し訳ありませんが、単純すぎて書き留めておきます。各マシンに格納されている要素はランダムであり、順序はありません。また、コストにはI / Oコストだけでなく、マシン間の通信、RAM、時間もすべて考慮する必要があります。中央値を取得するための最も効率的な方法を見つけたいだけです。
これらは私が思いついたいくつかの解決策です:
- マージソートなどの外部ソートを使用して、中央値を見つけます。
- バケットソートを使用し、すべての要素をその値に従ってX個の連続するバケットに分割します。これにより、中央値がどのバケットにあるかを判断できます。バケットをスキャンすると、中央値が取得されます。
- 「アルゴリズム入門」のO(N)アルゴリズムでk番目の数を見つけることはここでうまくいくはずだと思いますか?
しかし、それでも、これらのソリューションはすべて、その仕事をするために追加のマシンを必要とします。これらのN台のマシンだけを使用して中央値を取得できる方法があるかどうか疑問に思っていますか?
ありがとう!