2020年3月26日更新:添加了嚴謹一些的證明的鏈接,補充了一些說明
shuffle-exchange network是一種interconnection network,可用於並行計算中multiple processors的組織。
它的diameter比較容易看出來是 ,但是bisection width可能不那麼直觀,這裏提供一個我個人的(錯誤的)思路:
先把switches分成數量相等的兩個集合,組成兩個子網絡,最容易想到的分割方法就是按最高有效位是0還是1劃分,按照Figure 2.9就是把上下兩行switches分開。無向邊只出現在最低位相同的兩個節點間,不用考慮;自環只在全0和全1的節點出現,也不用考慮;只考慮左循環移位導致的有向邊。
顯然,這些有向邊構成了一個個環,一個環在兩個子網絡間產生一個出度一個入度(這裏有問題,因爲可能產生多個出度和入度),所以一個環增加1的bisection width,環的個數等於節點二進制編碼的pattern個數,一個pattern對應一組循環移位。pattern的個數很難計算,所以我們這樣來考慮,一共由n個節點,也就是由n個二進制編碼,一個pattern對應的編碼個數位大約是(有些pattern會比少),所以pattern的個數 ,也就是bisection width
事實上,如果要按圖中的上下進行劃分,上面的節點都是0xxx…,下面的都是1xxx…,那麼兩個子網絡之間的邊只有01xxx…和10xxx…的邊產生(每個這樣的節點產生一個有向邊),bisection width就變成的了。
然而wiki裏bisection width的定義中有這麼一句“Bisection should be done in such a way that the bandwidth between two partitions is minimum.”,所以這樣劃分是不行的。
這裏有一個嚴謹一些的證明(最後一節),用到了複平面,大概的證明思路是:
- 把所有的節點表示成複平面的點(節點的二進制編碼->一組d次單位根的加和,,N是節點個數)
- exchange edge將節點連成了一個個necklace,有full的(d個節點),有degenerate的(個)
- 實軸上的點有個
- 碰到實軸的邊有個
- 實軸上下點的個數一樣,實軸上的點的任意對半分,形成兩個元素個數相等的集合
需要注意的是這個證明只證明了bisection width的上界,沒有證明下界