簡體   English   中英

在BGL中,如何使用頂點的屬性有效地找到相鄰的頂點

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM