ポイント数を均等に分割する線を見つけるアルゴリズム


7

私は最近、インタビューで、ポイントの半分がラインの片側にあり、残りのポイントが反対側になるように、座標系でポイントのセットを分割するアルゴリズムを考案するように依頼されました。

ポイントは不均等に配置され、ラインはどのポイントも通過してはなりません。

誰もが問題を解決するために何らかのアプローチをすることができますか?アルゴリズムの分析は高く評価されています。

ヒント:ポイントを数え、中央値を使用します。

ポイントの数は偶数と見なされます。


ポイントはすべてあると思います 2D面?
Aryabhata

回答:


9

1つのアプローチは、「一般的な」方向(実際にはランダムな方向)を選択し、この方向に沿ってすべてのポイントを投影し、中央値アルゴリズムを使用することです(線は2つの中央値の間にあるすべての平行移動に対応する必要があります)。不適切な方向を選択すると、ポイントがまとまり、その方向に沿ってポイントを分離できなくなる場合があります。ただし、「一般的な」方向を選択した場合、これは起こりません(ポイントが異なると仮定した場合)。線形時間中央値アルゴリズムがあるため、これはOアルゴリズム。ランダム化されたクイック選択アルゴリズムを使用すると、実用的な線形時間アルゴリズムが得られます。


これは同じ考えを説明するのにより良い仕事をすると感じます。「線」の代わりに「方向」は私を混乱させました。
ベルンハルトバーカー2013年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.