**Author details**

**Begin Inner Loop**

While s < sLast

152 Recent Applications in Data Clustering

Inner Loop.

iteration of the Inner Loop.

*For added memory case*:

ous copy).

for all i∈ N<sup>k</sup>

v3 + 1, s3(v<sup>3</sup>

Endwhile

Z = Znext

sLast = sEnd

If v<sup>2</sup> = 1 then

Else.

Endif

**End of Routine for Z = Zo**

) = s, n<sup>e</sup>

Terminate the C(Z) Algorithm

v\* = Max(v: s3(v) < s2(v<sup>2</sup>

ceed to Case (3)): set v<sup>2</sup> = v<sup>2</sup> + 1, s2(v<sup>2</sup>

Continue to the next iteration of the Inner Loop.

Set s: = s + 1 and identify edge e(s) = (p(s), q(s)). Let i′ = p(s), i″ = q(s) and let k′ = L(i′) and k″ = L(i″). For i = i′ and i″: If i = L(i) then set t(i): = t(i) + 1 and if (now) t(i) = tMax(i) then set nTrack: = nTrack +1 and if (now) nTrack = n terminate the

Case (1): If k′ = k″ (i′ and i″ belong to the same cluster), then continue to the next

Case (2): Execute the following for k = k′ and k = k″: If FirstTime(k) = True, then if c(e(s)) > Z + MinCostC(k): set FirstTime(k) = False, set nTrack: = nTrack + n<sup>k</sup>

compute Znext = Min(Znext, c(e(s)) – MinCostC(k) and if (now) nTrack = n, terminate the Inner Loop. After performing the preceding for both k′ and k″: If FirstTime(k) = False for k = k′ or k = k″ execute the following (and otherwise pro-

) = s, Z(v<sup>2</sup>

k ∈K and the arrays L(i), MinCostB(i), MinCostC(i), i∈ N (writing over any previ-

Case (3): Absorb Nk″ into Nk′ to create the larger cluster Nk′: = Nk′∪ Nk″ with its associated edge set Ek″: = Ek′∪ Ek″ ∪{e(s)}. Correspondingly, update L(i) by setting L(i) = k′

MinCostB(i): = Min(MinCostB(i),c(e(s)) for i = i′ and i″ (thus yielding MinCostC(i)

:= n<sup>e</sup> + 1 and if n<sup>e</sup> = n – 1 terminate the Inner Loop.

) = s2(v<sup>2</sup>

); v<sup>2</sup> : = v<sup>2</sup> –1.

″, and set MinCostA(k′): = Min(MinCostA(k′),MinCostA(k″), c(e(s));

Set Copy = True and record a copy of ne, the set K and arrays N<sup>k</sup>

by the definitions of Section 7). Set K: = K \ {k″}, nk′: = nk′ + n<sup>k</sup>

)); v<sup>3</sup> = v\* + 1; s3(v<sup>3</sup>

) = Znext.

, E<sup>k</sup>

″, and sEnd = s. Set v<sup>3</sup>

, MinCostA(k),

Fred Glover<sup>1</sup> \* and Yang Wang<sup>2</sup>

\*Address all correspondence to: fredwglover@yahoo.com

1 School of Engineering and Science, University of Colorado, Boulder, CO, USA

2 School of Management, Northwestern Polytechnical University, Xian, China
