部屋のセットで最小スパン回廊を見つけるアルゴリズムを実装しています。現在、私はアルゴリズムを理解しており、それを実装しようとしています。その一部には、特定の部屋のいわゆる「特別なポイント」を見つけることが含まれます。長方形の「特別な点」は、別の長方形の最も遠い点までの最小距離を持つ点です。例えば:
部屋 R1 の特別なポイントは v6 または v7 になります。どちらも R1 以外の長方形の最も遠いポイントまでの最小距離が同じだからです。同様に、長方形 R8 の特別な点は v13 または v14 です。どちらも R8 以外の長方形の最も遠い点までの最小距離が同じだからです。現在、リスト内のすべての隣接ポイントを含む隣接リストでポイントを表しています。さらに、各境界点を値として持つ隣接リストにすべての部屋があります。また、それが属するすべての部屋にすべてのポイントがあります。
現在、その点の周りのすべての長方形の最も遠い点までの距離を見て、特別な点を計算しています。これは高速ですが、次の例では明らかに失敗しています。
私の現在の実装では、V1 と V2 を R9 の特別なポイントのタイとして識別しますが、V2 が特別なポイントであることは明らかです (V2 から R3 の最も遠いポイントまでの距離は、V1 から最も遠いポイントまでの距離よりも明らかに小さいため)。 R2で)。グラフ内のすべての長方形の最も遠い点までの距離を計算し、最小値を選択することで実装できますが、より効率的な方法があると感じています。私の考えでは、部屋を並べ替えて一部の部屋のみをチェックする方法について考えていますが、まだ完全なアルゴリズムはありません。何か案は?
前もって感謝します。