2015-06-22 31 views
1

我想寫一個蠻力的方法來檢查,如果兩個圖是同構的。我正在使用類networkx,但我不想使用內置函數進行同構。
我知道我必須檢查圖的所有節點排列,但我不知道該怎麼做。那麼我將如何置換networkx圖中的節點呢?蠻力圖同構與網絡x

+0

爲什麼不想使用內置函數來執行此操作? – jme

+1

我有幾種不同的方法來檢查同構,並希望看到運行時間的差異。也作爲練習。 – sebastian

回答

1

下面給出的圖表H.

from itertools import permutations 

list(permutations(H.nodes(), len(H.nodes())) 

的節點之後的所有排列的列表,你可以比較它們的鄰接矩陣。請參閱以下代碼:https://github.com/jgloves/graphTheory/blob/master/are_isomorphic.py

+0

您提供的代碼似乎不起作用。首先,它不知道第42行中的all屬性。如果我將其更改爲'if np.array_equal(a_h,a_g):'它從來不是真的,因爲它應該是奇怪的。有任何想法嗎? – sebastian

+0

對不起,這是幾年前寫的。感謝您的支持。 – jgloves

+0

嘗試: A =(a_g == a_h),然後 if(elt for elt in A): – jgloves