2

仕事

重複していない (しかし接触している) 多角形のセットから双対グラフを計算します。

ポリゴンAB、およびC、それらの部分的に共有された座標 1 ~ 22 (黄色) および双対グラフ (青色)。

ポリゴンとその双対グラフ

データ

ポリゴンのセットSがあります。すべてのポリゴンP iは、座標の順序付きリストとして表されます。ポリゴンP iのエッジa_b は、 P i,(a,b) で表さます

考え

多角形は面を表し、したがって双対グラフのノードを表します。ポリゴンP iの隣接する面を識別するには、P iのすべてのエッジを他のすべてのポリゴンP jのすべてのエッジと比較します。エッジが他の多角形と共有されている場合、P iP jは隣接しています。

これにより、後で削除できる大量の複数のエッジが作成されます。

問題

このアルゴリズムは、 O(E 2 )で実行されるため、あまり効率的ではありません。ここで、Eは多角形のセットSのエッジの数を示します。

改善案

最初のステップでエッジ インデックスを作成します。これにより、実行時間がO(2×E) = O(E)に短縮されます

次数 2 のすべてのノードを削除します (これはデュアル グラフには影響しないと思いますか?)

質問

  • 私は正しい軌道に乗っていますか?
  • このタスクに対して承認されたアルゴリズムはありますか?
4

1 に答える 1