樹同構判定
樹同構判定
圖同構與樹同構
同的同構問題還沒有有效算法。
樹的同構本質上尋找不同樹之間的雙射關係。
通過對樹編碼,將樹的同構問題轉化爲編碼比較問題。
有根樹的同構嚴格強於圖同構關係。
如上,圖同構的兩張圖轉化成樹,如果選取的根不同,則樹不同構。
如何選取根?
概念定義:
-
dis(v1, v2)表示v1到v2點的距離
-
ex(v), 偏心率, ex(v)保存樹中距離v最遠的點的距離。
ex(v1) = max(dis(v1, vk)) , k = 1 → n
-
C(T), 成爲中心,表示圖中偏心率最小的點集合。
一種重要性質
對於一個樹來說(對於圖不成立),他的中心最多含有兩個點,且若含有兩個點,這兩個點必定相鄰。
所以,尋找一個樹的中心,只需要迭代地刪掉葉子節點,最後剩下的單個節點或者兩個節點就是樹的中心。
樹的編碼(有根樹的同構判定)
將樹轉換字符串,但是通過比較字符串的字典序來比較兩個編碼的大小關係。
字典序比較規則:
編碼方法
採用如上編碼方案,兩個樹只有編碼相同的時候纔會同構。
reference
https://zh.coursera.org/lecture/discrete-mathematics-ch/you-gen-shu-tong-gou-de-pan-ding-NAxTd