2

グラフからエッジのセットがあり、任意のエッジと頂点を共有するすべてのエッジで展開したいと考えています。sでこれを効率的に行うにはどうすればよいboost::graphですか?

私が思いついた唯一の方法は、すべてのソース頂点とターゲット頂点を抽出し、 を使用boost::adjacent_verticesしてすべての隣接関係を取得し、 を使用してすべての新しいエッジを作成する単純なソリューションですboost::edge。これを行うより良い方法はありますか?

コンテキスト: グラフの頂点は、地形の三角形分割の重心です。エッジは、対応する三角形が隣接している頂点を接続します (双対グラフのようなものです)。拡大しようとしているエッジのセットは、ブロックされている三角形間のパスに対応しており、ブロックされた領域が拡大しています。この領域は一種の円形であるため、上記の単純なアプローチを使用して表示されるエッジのほとんどは、すでにセットの一部になっています。

4

1 に答える 1

1

各ステップですべての隣接する頂点を考慮して新しいエッジを生成する代わりに、プロパティ マップを使用して、既に検出されたエッジをマークします。したがって、各ステップでマークされていないエッジのみを考慮する必要があります。頂点は、それに付随するすべてのエッジをセットに追加した後にマークされます。

boost::graph によって使用される内部データ構造が隣接リストまたは隣接行列のいずれかであるという事実を考えると、これ以上の改善は可能ではないと思います。

于 2011-09-08T14:12:14.750 に答える