標籤:length from 載入 def 選擇性參數 雜湊表 預設 工作量 default
介紹:
networkx是python的一個庫,它為圖的資料結構提供演算法、產生器以及畫圖工具。近日在使用ryu進行最短路徑擷取,可以通過該庫來簡化工作量。該庫採用函數方式進行調用相應的api,其參數類型通常為圖對象。
函數API的調用,按照以下步驟來建立構建圖:
1.networkx的載入
在python中調用networkx通常只需要將該庫匯入即可
import networkx as nx
2.圖對象的建立
networkx提供了四種基本圖對象:Graph,DiGraph,MultiGraph,MultiDiGraph。
使用如下調用方式,可以建立以上四種圖對象的空圖。
G=nx.Graph()G=nx.DiGraph()G=nx.MultiGraph()G=nx.MultiDiGraph()
在 networkx中,圖的各個節點允許以雜湊表對象來表示,而對於圖中邊的各個參量,則可以通過與邊相關聯的方式來標識,一般而言,對於權重,用weight作為keyword,而對於其他的參數,使用者可以採用任何除weight以外的keyword來命名。
3.在2中,建立的只是一副空圖,為了得到一個有節點、有邊的圖,一般採用下面這個函數:
G.add_edge(1,2) #default edge data=1 G.add_edge(1,2) #specify edge data=0.9
add_edge()函數,該函數在調用時需要傳入兩個參數u和v,以及多個選擇性參數
u和v即圖中的兩個節點,如果圖中不存在節點,在調用時會自動將這兩個節點添加入內,同時構建兩個節點之間的串連關係,選擇性參數通常指這條邊的權重等關係參量。需要注意的是,如果圖中已經存在了這條邊,重新進行添加時會對這條邊進行跟新操作(也就是覆蓋了原有的資訊)。
對於該函數,除了上述的構建方式以外,還有以下幾種方式來建立邊:
G.add_edge(*e) # single edge as tuple of two nodesG.add_edge(1, 3, weight=7, capacity=15, length=342.7) #using many arguements to create edgeG.add_edges_from( [(1, 2)] ) # add edges from iterable container
有時候,當採用預設建立邊以後,我們可能還會往邊裡面添加邊的相關參數,這時候,可以採用下面的方式來更新邊的資訊:
#For non-string attribute keys, use subscript notation.G.add_edge(1, 2)G[1][2].update({0: 5}) #更新邊的資訊G.edges[1, 2].update({0: 5}) #更新邊的資訊#上述兩種更新方式,擇一選取即可
細心的朋友可能注意到我在寫建立圖的內容的時候,提到了add_edges_from()函數,該函數也是用來建立邊的,該方式與add_edges()略有不同,比之add_edges()採用一個一個節點的方式進行建立,它來的更為便利。這個函數在調用時,需要一個節點元組作為參數以及多個選擇性參數作為邊的資訊。你可以這麼傳遞:
預設建立節點之間的邊:
G.add_edges_from([(u,v)])
也可以這麼寫,在建立的同時添加資訊:
G.add_edges_from([(3, 4), (1, 4)], label=‘WN2898‘)
通過上述方式,就構建了一個3-4-1的圖的串連,並給每條邊打上了標籤。
由此你就可以建立出自己的圖模型了。
python-networkx學習(1)