• 沒有找到結果。

第三章 提出方法與討論

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

相關文件