[英]In BGL, how to efficiently find an adjacent vertex using a property of a vertex
我有一個雙向圖(即有向圖,可以同時迭代邊緣和邊緣)。
每個頂點以及其他內部屬性中,都有一個特殊的ID屬性,該屬性是程序啟動時已知的有限集(成對的數百個)中的整數,即–在程序的生命周期中不會改變,但未知在編譯時。
該屬性在圖的范圍內不是唯一的(即,可以有兩個具有相同ID的頂點),因此不能與named / labeled_graph一起使用。 但是,它在給定頂點的范圍內是唯一的 ,即頂點的傳入鄰居和傳出鄰居都應具有不同的ID。
我的問題是,是否有在BGL機制構建到有效地找到相鄰的頂點u,v的給定的u“S標記,圖形,和u的ID。
當然,這可以使用一些外部映射來實現,但是感覺很普通,並且考慮到adjacency_list的第一個模板參數可以是一個關聯容器-擁有某種find_adjacent(v,g,ID )功能,las,我找不到類似的東西。
非常感謝,安德烈
您無需發布示例,但可以從給出的描述中選擇OutEdgeList
的有序集合,並按目標頂點ID(在該范圍內是唯一的)對其進行排序。
現在,您可以在任何給定節點的out_edges上使用std::lower_bound
/ std::upper_bound
/ std::equal_range
。
如果您願意,可以輕松添加諸如find_adjacent
類的免費功能來隱藏實現。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.