私はテストのために学んでいます、そして私はこの問題で管理することができません:
n<1000ポイントのセットと整数dが与えられます。タスクは、 A_i(i = 1または2の場合)からのポイントの各ペア間の距離(ユークリッド)が小さくなるように、ポイントA_1とA_2の2つの互いに素なセット(この和集合にはnポイントのセットが与えられます)を作成することです。 dに等しい。不可能な場合は、-1を出力します。
たとえば、次のように入力します。
d = 3、およびポイント:
(5,3)、(1,1)、(4,2)、(1,3)、(5,2)、(2,3)、(5,1)
作成できます:
A_1 = {(2,3)、(1,3)、(1,1)}
A_2 = {(5,3)、(4,2)、(5,2)、(5,1)}
A_iからのポイントの各ペア(i = 1または2の場合)は十分に近いためです。
私は本当にそれを解決する方法を知りたいのですが、わかりません。nが小さいので、アルゴリズムはO(n ^ 2 log n)でもかまいませんが、開始方法がわかりません。おそらく、ポイントの各ペア間の距離を数えることから始めて、最大距離の2つのポイントを取り、それらを異なるセットに配置することを考えていました(それらの距離がdより大きい場合)。次に、残りのペアについてこの手順を繰り返しますが、問題は、次のポイントを合法的にどこに置くことができるかをどのように決定するかです。誰かがこのアルゴリズムを手伝ってもらえますか?