状況
単位正方形 [0, 1]x[0, 1] 上のn 個の点と正の実数rが与えられたとします。グラフG (点 1、点 2、...、点n、r ) を頂点 {1、2、...、n }上のグラフとして定義します。対応するポイント間の距離がr以下の場合。(ポイントは、範囲r内にある限り相互に通信できる送信機と考えることができます。)
単位正方形 [0, 1]x[0, 1] 上のn 個の点が与えられた場合、G(点 1、点 2、...、点n、r ) が接続される最小のrとして接続距離を定義します。 .
問題 1) G (点 1、点 2、...、点n、r ) が接続されているかどうかを判断するアルゴリズムを見つける
問題 2) 与えられた任意のn点の接続距離を求めるアルゴリズムを見つける
私の部分的な解決策
問題 1 のアルゴリズム (アルゴリズム 1) を念頭に置いています。まだ実装していませんが、機能すると確信しています。(大まかに言えば、頂点 1 から開始し、エッジを介して他のすべての頂点に到達しようとする考えです。これにいくぶん似ていると思います。)
残っているのは問題 2 だけです。この問題のアルゴリズムも考えています。ただ、時間的に効率が悪いと思います。それがどのように機能するかを説明しようとします:
最初に、接続距離r minが必ずpとqなどの指定された 2 つの点の間の距離であることを自分自身に納得させる必要があります。したがって、 r minの可能な値は最大で *n**( n -1)/2です。
したがって、最初に、私のアルゴリズムはすべての *n**( n -1)/2 距離を測定し、昇順で (たとえば、C の配列に) 格納します。次に、アルゴリズム 1 を使用して、保存されている各値を (昇順で) テストし、グラフがそのような範囲に関連付けられているかどうかを確認します。仕事をする最初の値は答えr minです。
私の質問は: 問題 2 のためのより良い (時間的に) アルゴリズムはありますか?
備考: ポイントはランダムに生成されます (10000 個のようなもの)。これは、アルゴリズムが「迅速に」解決することになっているタイプのものです。さらに、これを C で実装します (違いがあれば)。