*Initialization(C) for* Z = Zo:

**Begin Inner Loop**

= K \ {k″}.

Endwhile

Z = Znext

**End of C(Z) Algorithm**

Endwhile

algorithm.

L(i′) and k″ = L(i″).

Set s: = s + 1 and identify edge e(s) = (p(s), q(s)). Let i′ = p(s), i″ = q(s) and let k′ =

Case (2): If c(e(s)) > Z + MinCostC0 (for MinCostC0 determined by the preceding definitions), then compute Znext = Min(Znext, c(e(s)) – MinCostC0) and

Case (3) (If (1) and (2) do not apply): Absorb Nk″ into Nk′ to create the larger clus

Correspondingly, update L(i) by setting L(i) = k′ for all i∈ Nk″, and set MinCostA(k′): = Min(MinCostA(k′),MinCostA(k″), c(e(s)); MinCostB(i): = Min(MinCostB(i),c(e(s)) for i = i′ and i″ (thus yielding MinCostC(i) by the definitions above).Finally, set K:

The next section shows how to carry out accelerated updates in the context of the preceding

We build on the relationships identified in Section 4 to apply them to the more general C(Z) algorithm. By the implications described earlier, our general updates also apply directly to the C(W) and C(Y) algorithms by respectively replacing Z with W and Y (hence Znext with Wnext

Early termination for the Inner Loop of C(Z) is effected by creating an Initialization(C) immediately following Initialization(B) (hence inheriting the assignments of Initialization(B)) and modifying the Inner Loop as follows. We apply these changes for Z = Zo and thereafter take advantage of setting sLast = sEnd as indicated below, in order to allow for the advanced

**7. Implementing accelerated updates for the C(Z) algorithm**

and Ynext) and replacing MinCostC(∙) by MinCost(∙) and MinCostB(∙).

**7.1. Early termination for the C(Z) inner loop**

updating of C(Z) for successive Z values.

Case (1): If k′ = k″, then continue to the next iteration of the Inner Loop.

continue to the next iteration of the Inner Loop.

ter Nk′: = Nk′∪ Nk″ with its associated edge set.

Ek″: = Ek′∪ Ek″ ∪ {e(s)}.

While s < sLast

146 Recent Applications in Data Clustering

Set n<sup>k</sup> = 1, k ∈ K \ {k′}, and nk′ = 2 (hence n<sup>k</sup> = |N<sup>k</sup> |, k ∈ K); set t(i) = 0 for i∈ N \{i′, i″}and set t(i′) = t(i″) = 1 (hence t(i) identifies the number of edges e(s) = (i,j) for all s currently examined in the Inner Loop (and its initialization). Finally, set nTrack = 0 and set FirstTime(k) = True, k ∈ K (to identify the sets that have not been prevented from having an edge added to them).
