Input: CC(Si, Sj): Matrix of communication cost between sites

CR: Clustering Range

NS: Number of sites in the distributed database system network

Output: CSM: Clusters Set Matrix

Step 1: Set 1 to i

Step 2: Do steps (3 - 12) until i > NS

Step 3: Set 1 to j

Set 0 to k

Set 0 to Sum

Set 0 to Average

Set 0 to clusters matrix CM

Step 4: Do steps (5 - 10) until j > NS

Step 5: If i ¹ j AND CC(Si, Sj) <= CR, go to step (6)

Else, go to step (7)

Step 6: Set 1 to the CM(Si, Sj) and CM(Sj, Si) in the clusters matrix

Add CC(Si, Sj) to sum

Add 1 to k

Go to step 8

Step 7: Set 0 to the CM(Si, Sj) and CM(Sj, Si) in the clusters matrix

Step 8: End IF

Step 9: Add 1 to j

Step 10: Loop

Step 11: Average = Sum/k

Average(i) = Average

Add 1 to i

Step 12: Loop

Step 13: Set 1 to m

Step 14: Do steps (15 - 36) until m > NS

Step 15: Set 1 to q

Set 0 to Minaverage

Set 0 to Minrow

Step 16: Do steps (17 - 20) until q > NS or Minaverage > 0

Step 17: If Average(q) > 0 Then

Minaverage = Average(q)

Else

Go to Step 18

Step 18: End If

Step 19: Add 1 to q

Step 20: Loop

Step 21: If Minaverage = 0 Then

Set site number to a new cluster

Else

Go to Step 22

Step 22: End If

Step 23: Set 1 to p

Step 24: Do steps (25 - 28) until p > NS

Step 25: If Average(p) > 0 AND Average(p) < Minaverage Then

Minaverage = Average(p)

Minrow = p

Step 26: End IF

Step 27: Add 1 to p

Step 28: Loop

Step 29: Set 1 to a

Step 30: Do steps (31 - 34) until a > NS

Step 31: If CM(Sminrow, Sa) = 1 Then

Set 1 to CSM(Sminrow, Sa)

CM(Sminrow, Sa) = 0

Step 32: End IF

Step 33: Add 1 to a

Step 34: Loop

Step 35: Add 1 to m

Step 36: Loop

Step 37: Stop