5.1 Rigid Components
While concurrent flexibility offers the possibility to
choose from all flexibility intervals [t
−
,t
+
] simulta-
neously, the mere fact that all time-point variables
are included, paradoxically enough, might severely
restrict the concurrent flexibility. 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 flexibility 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
flexibility, however, gives flex(S) = max{(t
+
1
−t
−
1
) +
(t
+
2
− t
−
2
)} = 0, while the naive flexibility results in
flex
N
(S) = 200. Again, the naive flexibility is a se-
rious overestimation of the available flexibility, since
t
2
is determined as soon as t
1
is determined. On the
other hand, the concurrent flexibility seems to be a se-
rious underestimation of the available flexibility. So,
intuitively, the concurrent flexibility metric fails for
these kind of instances.
The reason for this underestimation is not difficult
to see: if there is a rigid functional relationship be-
tween two or more variables, this relationship will re-
duce the concurrent flexibility 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 fixed 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 flexibility by giving up the idea of
assigning a flexibility interval to every variable in T .
Let us make these ideas more precise. First of all,
we define what it means to for a set of variables to be
rigidly coupled:
Definition 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
flexibility of every variable in a rigid component X is
0 and therefore the total sum of all individual flexibil-
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 flexibility 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. flex(S
(T −X)∪{t}
) ≥ flex(S).
Based on Proposition 1 we propose to improve the
concurrent flexibility of a system by contracting every
rigid component to a single variable. The concurrent
flexibility of this reduced system then should repre-
sent the flexibility of the original system. First of all,
it avoids the disadvantage of assigning a flexibility of
0 to every variable in a rigid component and assigns
a flexibility at least as large as the concurrent flexibil-
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 flex-
ibility metric the improved flexibility metric, denoted
by flex
∗
(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 flexibility on the remaining system S
RC
. So our
5
Slightly abusing terminology, flex(X) stands for the to-
tal flexibility of all vars in X.
Optimising Flexibility for Simple Temporal Networks
527