彼得是一個生物專家,他從不同的資料中分析同一群物種間的演化關係,經常會得到不同的演化樹,他想知道不同演化樹間的相似程度。為了節省比較時間,他的想法是先將每一棵演化樹 的結構用一個稱為「指紋 (fingerprint)」的數字來表示,然後再進一步去仔細比較「指紋」相近的不同演化樹。
演化樹是一棵無向無根樹 (undirected, unrooted tree),葉節點代表現存物種。令 是一個現存物種集合,令 是 的一棵演化樹;也就是說 的葉節點集合是 ;令 表示與節點 相鄰之節點個數,對於一個點 ,當 時,我們稱 為 的葉節點;而不是葉節點的點就稱作為內節點,代表著物種的演化過程。對任兩個物種 ,定義它們間的距離 為 到 路徑 (path) 上的邊數 (number of edges)。彼得用 來表示 的「指紋」並定義 的「指紋」為任兩物種距離平方的總和;也就是說
以下圖中的演化樹 為例,這個演化樹的「指紋」 。
:::align{center}
:::
請撰寫一個程式來計算一棵演化樹 的「指紋」 。因為 可能很大,所以你只要求出 除以 的餘數。