5.1 Rigid Components
While concurrent ﬂexibility offers the possibility to
choose from all ﬂexibility intervals [t
−
,t
+
] simulta-
neously, the mere fact that all time-point variables
are included, paradoxically enough, might severely
restrict the concurrent ﬂexibility. Consider the fol-
lowing example:
Example 4. Let S = (T,C) where T = {z,t
1
,t
2
} and
C = {0 ≤ t
1
− z ≤ 100, 0 ≤ t
2
− t
1
≤ 0}. Note C
implies t
1
= t
2
. Intuitively, the ﬂexibility of this
STN should be equal to 100: we can choose a value
for t
1
(or t
2
) and then the value for the other vari-
able is simply determined. Computing the concurrent
ﬂexibility, however, gives ﬂex(S) = max{(t
+
1
−t
−
1
) +
(t
+
2
− t
−
2
)} = 0, while the naive ﬂexibility results in
ﬂex
N
(S) = 200. Again, the naive ﬂexibility is a se-
rious overestimation of the available ﬂexibility, since
t
2
is determined as soon as t
1
is determined. On the
other hand, the concurrent ﬂexibility seems to be a se-
rious underestimation of the available ﬂexibility. So,
intuitively, the concurrent ﬂexibility metric fails for
these kind of instances.
The reason for this underestimation is not difﬁcult
to see: if there is a rigid functional relationship be-
tween two or more variables, this relationship will re-
duce the concurrent ﬂexibility of all the variables in-
volved to zero, since a choice v for one of the variables
involved will immediately reduce the possible values
for all the other variables to a ﬁxed value determined
by v. Hence, v itself cannot be allowed to vary, there-
fore all intervals associated with these variables have
length 0. Intuitively, this is unwanted, since, in gen-
eral, there is always one variable in such a collection
of rigidly coupled variables we can choose several
values for. Therefore, in such a situation, we should
choose a representative for the set of coupled vari-
ables and let the values of the other variables in the
set be determined as soon as we have chosen a value
for the representative. This means that in such cases,
we have to rescue ﬂexibility by giving up the idea of
assigning a ﬂexibility interval to every variable in T .
Let us make these ideas more precise. First of all,
we deﬁne what it means to for a set of variables to be
rigidly coupled:
Deﬁnition 1. Given an STN S = (T,C), a subset of
variables X ⊆ T is rigidly coupled, if for every pair
t
i
,t
j
∈ X it holds that t
i
− t
j
= c
i, j
is a constraint im-
plied by C. A rigid component
4
is a maximal subset
of rigidly coupled variables.
4
The term rigid components has been borrowed from
Hunsberger (Hunsberger, 2002).
So X is a rigid component if taking a value for any
variable t
k
∈ X , the values of the remaining variables
in X are completely determined. Since the distance
matrix D
S
contains the tightest upper bounds for the
constraints between any pair of variables t
i
,t
j
∈ T , it
is easy to see that the following observations do hold:
Observation 1. A subset of variables X ⊆ T in an
STN S = (T,C) is rigidly coupled, if for every pair
t
i
,t
j
∈ X it holds that D
S
(t
i
,t
j
) = −D
S
(t
j
,t
i
). Hence,
for such a pair of variables we have D
S
(t
i
,t
j
) +
D
S
(t
j
,t
i
) = 0.
Due to the strict dependencies between them, the
ﬂexibility of every variable in a rigid component X is
0 and therefore the total sum of all individual ﬂexibil-
ities in X is 0. Furthermore, it is easy to see that rigid
components, due to their maximality must be disjoint.
Therefore, we have:
Observation 2. Let S = (T,C) be an STN. Let X
and Y be rigid components. Then: (i) f lex(X) =
f lex(Y ) = 0
5
and (ii) X ∩Y =
/
0.
Note that rigid components can be easily found by
inspecting the distance matrix D
S
.
The following proposition states that whenever an
STN has rigid components, we might safely remove
all elements but one from each rigid component and
then concentrate the ﬂexibility computation on the re-
maining variables:
Proposition 1. Let S = (T,C) and X ⊆ T a rigid com-
ponent. Let t ∈ X be arbitrary. Then
1. for every schedule σ
0
for S
(T −X)∪{t}
, there exists a
schedule σ for S extending σ
0
.
2. ﬂex(S
(T −X)∪{t}
) ≥ ﬂex(S).
Based on Proposition 1 we propose to improve the
concurrent ﬂexibility of a system by contracting every
rigid component to a single variable. The concurrent
ﬂexibility of this reduced system then should repre-
sent the ﬂexibility of the original system. First of all,
it avoids the disadvantage of assigning a ﬂexibility of
0 to every variable in a rigid component and assigns
a ﬂexibility at least as large as the concurrent ﬂexibil-
ity of the original system. Secondly, it ensures that
whatever schedule for the reduced system is taken,
such a schedule can be extended to a schedule of the
original system. We therefore call the resulting ﬂex-
ibility metric the improved ﬂexibility metric, denoted
by ﬂex
∗
(S). In this context, the metric is based on
removal of rigid components while keeping only rep-
resentatives of them and then computing the concur-
rent ﬂexibility on the remaining system S
RC
. So our
5
Slightly abusing terminology, ﬂex(X) stands for the to-
tal ﬂexibility of all vars in X.
Optimising Flexibility for Simple Temporal Networks
527