簡體   English   中英

Boost Graph Library Undirected Graph沒有並行邊緣強制執行

[英]Boost Graph Library Undirected Graph No parallel edges enforcement

我正在使用Boost Graph Library來處理無向圖,並聲明了我的圖

typedef property<vertex_index_t, int, property<vertex_name_t, string> > VertexProperty;
typedef adjacency_list<vecS, setS, undirectedS, VertexProperty > UndirectedGraph; 

如您所見,OutEdgeList的類型為std :: set,我之所以選擇它,是因為文檔說這種類型會強制缺少平行邊。

現在,我的程序讀取一個文本文件,指示節點之間的邊緣,如果以前沒有看到則創建節點,並在它們之間添加邊緣。

我最近運行了大量數據的代碼,發現了奇怪的結果。 幾個小時后,我發現一些用戶的度數比圖中頂點的數量多,所以我嘗試了一個簡單的文本文件代碼,該文件只描述了同一對節點之間的兩條邊,但是反向源,目標,這樣boost將執行以下操作:

add_edge(A,B)
add_edge(B,A)

並注意到Boost最終增加了兩個邊緣。 out_degree為它們返回2。

現在,問題是:我做錯了嗎? 對於具有setS作為OutEdgeList類型的無向圖,add_edge(a,b)是否應該與add_edge(b,a)相同?

謝謝。 ;)

問題是OutEdgeList是第一個模板參數,而不是第二個,所以我實際上使用的是vecS而不是setS。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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