第三章 提出方法與討論
3.2 分群與邊界點頻譜資源分配
3.2.1 分群
3.2.1.1 最佳化分群介紹
此最佳化演算法主要藉由找到所有滿足限制下分群的可能性,並且從這些可能中找 出最佳解,我們使用到廣度搜尋法(Breadth-first search, BFS)的概念來以遞迴方式搜尋所 有可能,在一開始我們任取一點放進隊列(queue)中,(圖十三)中為點 1 作為這一個子群 的起始點,並且對於每個子群的起始點我們只考慮選的情況,再來會將此點的鄰居放入 對列中,下一步從對列中取出一點,並且對此點在不超過工作負載量的前提下”選”或”
不選”兩種可能皆會考慮,若當對列為空時則開始下一個子群的選點,當找出滿足限制 下所有分群可能性時,演算法才會結束,詳細過程可參照(圖十三)以及 pseudo code。
22
圖十三、最佳化分群演算法實例
23
Parameter :
p : temp Penalty C : cluster number Node : AP’s ID
Node.CN : Cluster’s Number of Node Node.color : AP’s status
- White : 1.Non-clusterd - Black : 2.Clustered
- Gray : 3.Not be clustered but be checked
Initial :
Penalty p = ∞ all Node.CN = -1 all Node.color = white C = 0
Main()
Push Node 0 into Queue
BFS_OPT(Node 0, Queue Q, ClusterNum 0)
24
BFS_OPT(Node N, Queue Q, ClusterNum C)
if(Q is not empty)// find all BFS sub-graphs
tempNode T = pop node from Q
Color T to Gray
Record the Q and color
If(Select node T will not cause overloading) //select this node - Color T to Black
25 Initial State
3.2.1.2 啟發式分群介紹
在啟發式演算法中每個子群的起始點我們找一度數(degree)最低的點當做起始點,
為了防止分群到最後的零碎點太多,而在選點加入子群的部份我們想盡可能降低邊界點 間Xib,jedge的數量,我們的想法是若讓邊界點的數量降低,那麼就可以使Xib,jedge的數量降 低,所以我們定了一個值r 用來表示點 i 與目前正在圈的子集之間的關聯度當選擇某一i 點進入目前子群時會將與此點之間存在邊的其他點的r 值加 1,關聯度越高將此點納入i 此子群我們就可以使得Xib,jedge的數量越少,除此之外在此關聯度r 相同的情況下我們再i 去考慮若將某點選進此子群後此子群對外的 penalty 總和,我們定義此值為i,當r 相i
同時我們就會選擇i較低的點進入目前子群,如圖十四~圖十六在一開始選擇點 0(藍色 點)之後會將與其相鄰的點 1、3、4 的r值加 1,因為這三點r相同所以去計算其值,
並且選值最小的點進入這個子群。其例子與 pseudo code 如下。
圖十四、啟發式分群演算法選點(起始)
26
Step2:choose minimum add into this cluster
圖十五、啟發式分群演算法選點(Step1)
圖十六、啟發式分群演算法選點(Step2)
Step1:choose minimum degree node as initial node in this cluster
27
Parameter :
N:number of node
Initial:
C = 0
ri 0 iV
While(All node be Clustered)
Choose Node v have Min Degree;
Set the cluster number of v = C
Mark Boundary Node of this cluster;
While(this Cluster’s loading < Loading Constrain) - For(1;N)
Choose Boundary Node v have Max
if equal
Choose Node v have Min - Set the cluster number of Node v = C - Mark Boundary Node of this cluster;
C+1
Recovery Not be selected Boundary Node
28
3.2.1.3 時間複雜度分析
針對我們的最佳化分群演算法的時間複雜度做討論,我們的最佳化演算法為列出所 有可能,從其中去找出最佳解,所以我們考慮最差情況下的所有可能數量。
我們定義 N 為點的數量,我們考慮在無線感知網路基地台隨機布建的最差情況,即 為全部的無線感知網路基地台間皆會互相干擾(彼此間皆有邊存在),那麼在這種情況下 我們可以將問題轉變為將 N 個點圈成 K 個子群並且允許子群為空,那麼其可能數量即可 表示為 N+K−1 !
(K−1)! 又 N 個點最多就只能分成 N 個子群所以可以將其可能數量轉變為
N+N−1 !
(N−1)! = 2N−1 !
(N−1)!種可能,因此最佳化分群演算法的時間複雜度為 O( 2N−1 !
N−1 !)。
而啟發式演算法因為每次皆選與當下子群有相連的一個點,與其相連的點必不超過
N 個點,並運算其 值,共抓取 N 個點因此複雜度為 O(N )。 3
啟發式演算法 O(N )。 3
最佳化演算法 O( 2N−1 !
N−1 !)
表二、分群演算法時間複雜度比較
29