2017-02-14 16 views
1

因此,我今天從大學圖書館獲得了這本非常酷的書籍,由Magnus Lie Hetland撰寫的Python算法以及本書的第二章,他創建瞭如下的鄰接表,這很酷:Python中的Adjacency Set Representaion

a,b,c,d,e,f,g,h = range(8) 
N = [{b,c,d,e,f},{c,e},{d},{e},{f},{c,g,h},{f,h},{f,g}] 

當我做:

N[a]我得到N的第一個元素,這有點令人驚訝的我它是怎麼以這種方式得到映射?

我發現這個問題,但它比我要求還是讓我知道,如果它是一個重複的不同。

Adjacency List and Adjacency Matrix in Python

感謝, Prerit

回答

2

這只是Python的。

a,b,c,d,e,f,g,h = range(8) 

是元組賦值。它指定0到a,1至b

N = [{b,c,d,e,f},{c,e},{d},{e},{f},{c,g,h},{f,h},{f,g}] 

創建一個名爲N在第0元素是集{b,c,d,e,f}的陣列等

所以,當你說N[a],你還說N[0],這就是你看到的那套。

它是通過硬編碼在Python構建一個常數圖的酷技巧,但是如果你需要建立動態的基礎上,從另一個算法的輸入或輸出的圖形,那麼你會希望有一個不同的表示。

+0

我有我的懷疑,但我認爲這只是映射不管我上面創建的,但如果裏面的元素超過字母表的26個字符的數量,所以它開始通過什麼AA,AB,AC ...等索引呢? – Prerit

+0

我知道其他代表我只是通過這本書。你永遠不知道你可能從介紹性書籍(某種)中學到什麼。 :) – Prerit