我有一组来自图形的边缘,并希望使用与任何边共享顶点的所有边展开它。我怎么能用boost::graph
s有效地做到这一点?
我能够想出的唯一方法是提取所有源顶点和目标顶点的天真解决方案,使用boost::adjacent_vertices
获取所有邻接,然后使用{{1}创建所有新边}。有没有更好的方法呢?
上下文:图形顶点是地形三角剖分的质心,边缘连接相应三角形相邻的顶点(所以是双重图形的类型)。我想要扩展的边缘集合对应于被阻挡的三角形间路径,并且被阻挡的区域正在扩展。该区域是圆形的,因此我将使用上面的天真方法看到的大部分边缘已经是该组的一部分。
答案 0 :(得分:1)
不是考虑每个步骤中的所有相邻顶点来生成新边,而是使用属性贴图来标记已经遇到的边。因此,您只需要在每个步骤中考虑未标记的边。将所有与其相关的边添加到您的集合后,会标记一个顶点。
鉴于boost :: graph使用的内部数据结构是邻接列表或邻接矩阵,我认为不可能进一步改进。