Professional Documents
Culture Documents
DOI 10.1007/s10479-006-0063-2
A primogenitary linked quad tree data structure and its
application to discrete multiple criteria optimization
Minghe Sun
Published online: 22 August 2006
C _
Springer Science Business Media, LLC 2006
Abstract Adata structure called the primogenitary linked quad tree is developed. Each node
in the data structure has a pointer to its parent, a pointer to its immediate existing younger
sibling, a pointer to its eldest existing son, and an integer as its successorship to its parent.
To access any other son of a node, the rst-born existing son must be accessed rst. The
siblings of the same parent are managed as a linked list. This data structure is an extension or
enhancement of the traditional quad tree data structure. The primogenitary linked quad tree is
applied to discrete multiple criteria optimization for the identication, storage, and retrieval
of nondominated criterion vectors. Algorithms managing this data structure are developed
and implemented. Major advantages of using the primogenitary linked quad tree instead of
the traditional quad tree are savings in memory or storage space and savings in execution time.
Examples are provided to demonstrate the application. A computational experiment is con-
ducted to test the performances of the data structure and the algorithms. Computational results
showthat this data structure uses only a small fraction of the CPUtime used by the traditional
quad tree to perform the same task. Using this data structure, the identication, storage and
retrieval of nondominated criterion vectors become an easy task for discrete multiple criteria
optimization problems with many criteria and hundreds of thousands criterion vectors. This
data structure can also be used for storage and retrieval of data with composite keys in other
applications.
Keywords Data structures
.
Quad tree
.
Primogenitary linked quad tree
.
Multiple criteria
optimization
.
Multiple criteria decision making
Trees have been the most widely used data structures in computer science for keeping track
of hierarchical relationships among their elements, called nodes. Binary trees are the basic
types of trees that are appropriate data structures for storing and representing linearly ordered
data or data with linearly ordered keys. Quad trees, as generalizations of binary trees, are
M. Sun (
)
College of Business, The University of Texas at San Antonio,
San Antonio, TX 78249-0632
e-mail: minghe.sun@utsa.edu
Springer
88 Ann Oper Res (2006) 147:87107
appropriate data structures for storing and representing data, or data with composite keys, in
+
k
for k 1. The quad tree data structure was rst introduced and implemented by Finkel
and Bentley (1974). Among others, quad trees have been employed in discrete multiple
criteria optimization (DMCO) (Borges, 2000; Habenicht, 1982, 1991; Sun, 1992; Sun and
Steuer, 1996a, 1996b, 2000), geometric information systems (Bern, 1993; Chen, Szczerba,
and Uhran, 1997; Pemmaraju and Shaffer, 1994; Roberts, Gahegan, and Hoyle, 1991; Samet,
Shaffer, and Webber, 1987), image processing (Bao and Grabowski, 1998; Chung and Yan,
2001; Finnigan, Hathaway, and Lorensen, 1990; Lee, 2000; Lee and Chang, 2000; Markas
and Reif, 1992; Unnikrishnan, Shankar, and Venkatesh, 1988; Wu and Fang, 1994), and com-
puter aided design and computer aided manufacturing (Allada and Anand, 1992; Saxena and
Irani, 1993).
In this study, a data structure called the primogenitary linked quad tree (PLQT) is in-
troduced. Each node in this data structure has three pointers, one to its parent, one to its
immediate existing younger sibling, and the other to its eldest, or rst-born, existing son. In
addition, it stores an integer as its successorship to its parent. For notational convenience, the
quad tree with a pointer to each of its sons is called the traditional quad tree (TQT) in this
study. Using different connections between its nodes, the PLQT is an extension or enhance-
ment of the TQT. As compared to the TQT, the PLQT saves memory or storage space and
speeds up the execution of the algorithms managing the data structure. The PLQT is applied
to DMCO for the identication, storage and retrieval of nondominated criterion vectors. Al-
gorithms for inserting elements into, deleting elements from, and searching elements in the
PLQT are developed and implemented. The performances of the PLQT and the algorithms
are compared with those of the TQT and of the linear list through a computational experi-
ment. Computational results on a variety of test problems show that the PLQT approach is
clearly superior to the other two approaches.
The rest of the paper is organized as follows. In Section 1, the denitions and concepts
of the PLQT are given and the structure of the PLQT is described. The application of the
PLQT to DMCO is discussed in Section 2. Algorithms and operations managing the PLQT
are developed in Section 3. Examples are presented in Section 4. Computational results are
reported in Section 5. Concluding remarks are given in Section 6.
1 The primogenitary linked quad tree (PLQT) data structure
APLQT is used to process, store and retrieve data, or data with composite keys, in +
k
for k
1. A generic vector in +
k
is represented by z +
k
and a specic vector in +
k
is represented
by z +
k
with superscript, such as z
r
, z
s
or z
t
, or subscript, such as z
or z
l
. As for any tree
data structures, the terminologies used to describe a PLQT are borrowed from genealogy
that describes the hierarchical relationship between a person and his or her ancestors and
successors (Stubbs and Webre, 1987). The denition of a PLQT is given recursively.
Denition 1. A primogenitary linked quad tree (PLQT) is a nite set of elements one of
which, if any, is called the root and the rest are partitioned into 2
k
disjoint sets each of which
is itself a PLQT, called a subtree.
An element of a PLQT is a node that consists of two parts, a data part and an address
part. The data part is a record that may be a vector z +
k
or may have a vector z +
k
as its
composite key. In the later case, the record has other data elds. Because the composite key
uniquely identies a data record, z refers to both the composite key and the record. Since
reference to a node is an implicit reference to z, z is also used to represent both a node and
Springer
Ann Oper Res (2006) 147:87107 89
the vector that it contains. The address part contains locations of other nodes to which the
node is directly connected in the hierarchy. When implemented, a node may be represented
by a structure, such as a struct in C, or by rows of multiple multidimensional arrays, such
as in Fortran. A generic PLQT is represented by T and a PLQT rooted at z is represented by
T
z
. The fact that z is a node in T is represented by z T .
Denition 2. If z
r
T is the root of T and z
s
T is the root of any of its subtrees, z
r
is
called the parent of z
s
and z
s
is called a son of z
r
. P(z) is used to denote the parent of z.
For data in+
k
, a node mayhave upto2
k
sons. The sons are ordered, or indexed, sequentially
from 0 to 2
k
1. Some of the sons may not exist in T . A position in T is available for each
son even if it does not exist.
Denition 3. If z
s
is a son of z
r
and is at the t h position when the sons are ordered, z
s
is
called the -son of z
r
and is called the successorship of z
s
to z
r
. S(z) is used to denote the
successorship of z to its parent, i.e., z is the S(z)-son of its parent. The son of z T with the
smallest successorship among all existing sons of z is called the eldest (rst-born) existing
son of z. F(z) is used to denote the eldest existing son of z.
It is not absolutely necessary to store S(z) for any z because S(z) can be determined when
needed. However, storing S(z) saves execution time.
Denition 4. Nodes sharing the same parent are siblings. If z
s
is the -son of z
r
and z
t
is the
-son of z
r
with < , then z
s
is an elder sibling of z
t
and z
t
is a younger sibling of z
s
.
In addition, if no other sibling exists between z
s
and z
t
, z
s
is the immediate existing elder
sibling of z
t
and z
t
is the immediate existing younger sibling of z
s
. N(z) is used to denote
the immediate existing younger sibling of z.
In a PLQT, every node except for the root has a unique parent. A node that does not have
an existing son is a leaf node. Every node that is not a leaf node has at least one existing son
and may have up to 2
k
existing sons.
Denition 5. If z T is the root, it does not have any ancestors; otherwise, P(z) and all the
ancestors of P(z) are the ancestors of z. Node z does not have any other ancestors.
Denition 6. If z T is a leaf node, it does not have any successors; otherwise, each son of
z and all the successors of each son of z are the successors of z. Node z does not have any
other successors. If the successorship of z
s
to z
r
T is , z
s
is called a -successor of z
r
.
Denition 7. Each node in a PLQT is at a particular level. The root is assigned level 0, and
each son has a level that is 1 greater than the level of its parent. The height of a PLQT is the
maximum level of any of its nodes.
Afully lled, or balanced, PLQThas 2
lk
nodes at level l except for the last level. Otherwise,
the PLQT is partially, or sparsely, lled.
Denition 8. All the subtrees rooted at z
r
and at the younger siblings of z
r
form a lineage
forest led by z
r
. F
z
is used to denote a lineage forest led by z.
Springer
90 Ann Oper Res (2006) 147:87107
The address part of a node z T has four elds, three pointers pointing to P(z), N(z) and
F(z), respectively, and one integer, S(z). NULL is used to denote a node that does not exist. A
pointer, or node, points to NULL if it points to nowhere. From z, P(z), N(z) and F(z) can be
accessed directly and all other nodes in T can be accessed from z only through these nodes.
Specically, P(z) has to be accessed before other ancestors of z can be accessed, F(z) has
to be accessed before other sons of z can be accessed, and N(z) has to be accessed before
other younger siblings of z can be accessed. The siblings of the same node are connected and
managed as a linked list. Therefore, the data structure is called the primogenitary linked
quad tree to reect the way that the nodes are connected. In addition, compositions of the
above notations may be used when convenient. For example, F(P(z)) is used to represent the
eldest existing son of the parent, i.e., the eldest sibling, of z.
A node in a TQT also has a data part and an address part. The data part is exactly the
same as that in a PLQT. The address part has 2
k
pointers each of which points to one son
and has one additional pointer which points to the parent. Following the pointer to its -son
from z for any 0 2
k
1, we can nd where its -son is located or if its -son exists.
When k is small, e.g., when k < 4, the TQT can be very efcient in both memory utilization
and execution speed because not much memory space is used to store the address part and
because any node can be accessed directly from its parent. However, the TQT becomes less
efcient when k becomes large, especially when it is sparsely lled. It becomes inefcient
in memory utilization because many sons of a node may not exist so that the corresponding
pointers point to NULL and these memory spaces are wasted. It becomes inefcient in
execution because the pointer to each son needs to be checked when the TQT is traversed
whether the son exists or not. However, it is unnecessary to store S(z) for any z in a TQT.
Other researchers also showed that using linked lists and/or other auxiliary structures in
trees can improve efciency although the implementation details were not the aim of their
research. For example, Borges (2000) used associative arrays when implementing the TQT.
When depicted graphically, a node is usually represented by a rectangle and a pointer from
a node is shown as an arc. A node in a TQT and a node in a PLQT are shown in Fig. 1. The
successorship of the node to its parent, S(z), in a PLQT is shown on the top and the data part
is shown at the bottom. Small example PLQTs storing data in +
3
are presented graphically
in Figs. 24. In these gures, pointers to NULL are not shown.
One advantage of the PLQT over the TQT is that the memory space needed to store the
address part of a node is independent of k. When k is small, e.g., when k = 2, there are no
savings in memory space. However, when k increases, the memory space needed to store
the address part in a TQT increases exponentially with k while that in a PLQT does not
change. Another advantage of the PLQT over the TQT is the speed of execution when k
is large and when the data structure is sparsely lled. Although it is impossible to reach
its -son directly from z if > S(F(z)), it is also not necessary to check many pointers
to NULL. Furthermore, many operations on the data structure traverse the sons of a node
sequentially.
2 Application to discrete multiple criteria optimization (DMCO)
Multiple criteria optimization models can be used to represent and solve many practical
decision making problems (Steuer, 1986; Yu, 1985). A general multiple criteria optimization
model can be stated formally as
max z = f (x) (1)
Springer
Ann Oper Res (2006) 147:87107 91
(b) Structure of a Node in a PLQT (a) Structure of a Node in a TQT
2 1
k
son
0son 1son
( ) z P
z
( ) z P
( ) z N
( ) z F
( ) z S
z
Fig. 1 Comparison of a node in a TQT and a node in a PLQT
s.t. x X. (2)
In (2), X +
n
is the feasible region and each x X is a feasible solution in decision
space. For a DMCO problem, X is a set of discrete points in +
n
. The vector of objective
functions (1), f : +
n
+
k
, maps each x +
n
to a z +
k
. The set Z +
k
, such that
Z = {z[z = f (x), x X], is the feasible region in criterion space and each z Z is a criterion
vector. The criterion vector z = f (x) measures the quality of the solution x X. A DMCO
problem can be analyzed directly in criterion space because all z Z are explicitly known
if all x X are explicitly known.
A z Z is nondominated if and only if there does not exist any z Z such that z
i
z
i
for all i = 1, . . . , k and z
i
> z
i
for at least one i (Steuer, 1986). A z Z strongly dominates
another z Z if z
i
> z
i
for all i = 1, . . . , k (Sun and Steuer, 1996b). If z strongly dominates
z, z also dominates z. The vector z
+
k
, such that z
i
= max {z
i
[ z Z], is the ideal
point. For practical problems, z
is obtained from
z
by adding an
i
to z
i
, i.e., z
i
= z
i
i
, where
i
> 0 and small for all i . Although
z
and z
are infeasible, they are usually used as reference points in solution procedures.
An optimal solution is dened to be a nondominated solution that maximizes the decision
makers value function. However, the value function is unknown or hard to assess and is used
only conceptually to dene the optimal solution (Steuer, 1986; Yu, 1985).
When a DMCO problem is solved, the rst step is usually to identify all nondominated
criterion vectors because dominated solutions are not contenders for an optimal solution
(Steuer, 1986). The set of all nondominated criterion vectors is called the nondominated set.
The next step is to select a solution from the nondominated set as the nal solution. Different
solution procedures use different strategies in identifying nondominated criterion vectors and
in selecting the nal solution.
When a PLQT is used to solve DMCO problems, like in the TQT approach, the nondom-
inated criterion vectors are identied and stored in a domination-free PLQT, also denoted
by T . The data part of a node in a PLQT in this application is a criterion vector z Z.
A PLQT is domination-free if no z
s
T is dominated by any other z
t
T (Habenicht,
Springer
92 Ann Oper Res (2006) 147:87107
1982). Nondominated criterion vectors are then retrieved from T when the nal solution is
selected.
2.1 Identication of nondominated criterion vectors
When two criterion vectors z
r
Z and z
t
Z are compared component wise, a binary digit
i
is dened as
i
=
0, if z
t
i
z
r
i
1, otherwise
(3)
and an integer is dened as
=
k
i =1
i
2
i 1
. (4)
Then is the successorship of z
t
to z
r
, i.e., z
t
is a -successor of z
r
, and
k
k1
. . .
1
is
the binary equivalent of . Although there are other ways to dene the successorship of z
t
to
z
r
, i.e., to order the successors of z
r
, the way given in (3) and (4) is convenient to implement
and efcient to execute.
Let S() = {1, 2, . . . , k 1, k] be the set of indices of the binary representation of or
the set of indices of the components of a criterion vector z +
k
. Partition S() into two
subsets S
0
() and S
1
() as follows
S
0
() = {i [
i
= 0] and S
1
() = {i [
i
= 1]. (5)
Given z
t
a -successor of z
r
, then z
t
dominates z
r
if and only if = 0, and z
t
is dominated
by z
r
if and only if z
t
i
= z
r
i
for all i S
0
() (Habenicht, 1982). In addition if = 2
k
1, z
r
(strongly) dominates z
t
. Therefore, a node in a domination-free PLQT does not have a 0-son
or a (2
k
1)-son because a 0-son dominates its parent and a (2
k
1)-son is dominated by
its parent. As a result, a node in a domination-free PLQT has at most 2
k
2 sons.
If z
s
is a -successor of z
r
and z
t
is a -successor of z
r
, the domination relationship
between z
s
and z
t
can be partially determined by comparing and . If z
s
dominates z
t
,
then and S
1
() S
1
(). If z
s
is dominated by z
t
, then and S
0
() S
0
()
(Habenicht, 1982). Let be the bitwise and operator and be the bitwise or
operator. If S
1
() S
1
(), then = . If S
0
() S
0
(), then = . Suppose z
t
is processed for possible insertion into T
z
r and has been determined to be a -successor of
z
r
. Then only the -successors of z
r
such that and = may dominate z
t
and
only the -successors of z
r
such that and = may be dominated by z
t
. Hence,
only a small subset of the nodes in a PLQT needs to be searched to nd a criterion vector
dominating z
t
or to nd all the criterion vectors dominated by z
t
. The conditions =
and = rather than S
1
() S
1
() and S
0
() S
0
() are used because the former
are easier to implement and faster to execute.
Nondominated criterion vectors in Z are identied through the construction of a
domination-free PLQT. Like in the TQTapproach, the process of z
t
for possible insertion into
T
z
r starts from z
r
. A comparison is made between z
t
and z
r
to determine the successorship
of z
t
to z
r
. If z
t
i
= z
r
i
for all i S
0
(), z
t
is discarded. If = 0, z
t
replaces z
r
and the
successors of z
r
not dominated by z
t
are inserted into T
z
t . Otherwise, the sons of z
r
, if any,
are checked sequentially by following the pointers from one node to its immediate existing
Springer
Ann Oper Res (2006) 147:87107 93
younger sibling starting with F(z
r
). The -successors of z
r
such that < and =
are searched to nd a node dominating z
t
. If z
s
is a -son of z
r
with = and if z
t
is a
/
-successor of z
s
, only the
/
-successors of z
s
such that
/
/
and
/
/
=
/
are
searched, and so on. If a node dominating z
t
is found, z
t
is discarded; otherwise, F
z
v is
searched to nd nodes dominated by z
t
where z
v
, if exists, is the son of z
r
with the small-
est successorship greater than . In F
z
v , only the -successors of z
r
with = are
searched. If z
s
is the -son of z
r
with = and if z
t
is a
/
-successor of z
s
, only the
/
-successors of z
s
such that
/
/
and
/
/
=
/
are searched, and so on. Each node
dominated by z
t
is deleted and the successors of the deleted node, if any, reorganize into a
new subtree. Finally, z
t
is inserted, if not discarded, as the -son of z
r
if z
r
does not have
any other existing -successors. If the -son of z
r
, say z
a
, exists, z
t
is further processed for
possible insertion into T
z
a . After all z Z are processed, the ones dominated by others are
discarded and the ones not dominating each other are stored in a domination-free PLQT.
2.2 Retrieval of nondominated criterion vectors
Let be the weighting vector space, where
=
+
k
[
i
> 0,
k
i =1
i
= 1
. (6)
Each is a weighting vector. When a nal solution is searched, a criterion vector z
is
retrieved from T for each given such that
[[z
[[
= min {[[z
z[[
[ z T ], (7)
where[[z
z[[
and z. By doing so we
can retrieve a set of widely dispersed criterion vectors from T to represent the (reduced)
nondominated set if we have a set of widely dispersed weighting vectors in (a reduced subset
of) . To solve a DMCO problem with an interactive method, we may need to retrieve many
criterion vectors fromT iteration after iteration. Given the fact that z
i
> z
i
for all 1 i k
and for all z T , [[z
z[[
is computed with
[[z
z[[
= max {
i
(z
i
z
i
) [ 1 i k]. (8)
Dene a vector +
k
such that = (
1
1
,
1
2
, . . . ,
1
k
) for any given . For z T ,
dene a vector z +
k
for a given such that
z = [[z
z[[
. (9)
Then searching for a z
T such that
there is not any z T that strongly dominates z
is retrieved from T
z
r , we rst initialize z
to z
r
and compute z
(9). We then
search for a criterion vector in T
z
r that strongly dominates z
. If z
is a -successor of z
r
,
we only need to search the -successors of z
r
such that and = . Once a
vector, say z
s
, strongly dominating z
is found, we update z
to z
s
, compute a new z
(9),
and continue the search for a new vector in T
z
r strongly dominating the new z
only among
Springer
94 Ann Oper Res (2006) 147:87107
those z T
z
r that have not been searched. If no more such vector can be found, the current
z
l
stores the successorship of z
t
to the node compared at level l of F
z
r . The following are
the steps of the routine.
Step 1. Let z
s
z
r
, z
q
z
p
, l 1 and
l
.
Step 2. If S(z
s
) = S(z
s
), go to Step 4.
Springer
96 Ann Oper Res (2006) 147:87107
Step 3. If N(z
s
) ,= NULL, let z
q
z
s
and z
s
N(z
s
) and go to Step 2; otherwise, go to
Step 9.
Step 4. Determine by which z
t
is a -successor of z
s
. If ,= 0, go to Step 6.
Step 5. If z
q
= NULL, execute Step 5a; otherwise execute Step 5b:
a. Let z
v
P(z
s
), execute DELETE(z
s
, NULL). If F(z
v
) ,= NULL, let z
s
F(z
v
) and
go to Step 4; otherwise, let z
s
z
v
, l l 1 and
l
and go to Step 3.
b. Execute DELETE(z
s
, z
q
). Let z
s
z
q
and
l
and go to Step 3.
Step 6. If F(z
s
) = NULL, go to Step 3; otherwise, let z
s
F(z
s
), z
q
NULL, l l 1
and
l
.
Step 7. If S(z
s
) , go to Step 2.
Step 8. If N(z
s
) ,= NULL, let z
q
z
s
and z
s
N(z
s
) and go to Step 7.
Step 9. If l = 1, RETURN. Let l l 1 and z
q
P(z
s
).
Step 10. If N(z
q
) ,= NULL, let z
s
N(z
q
) and
l
and go to Step 2; otherwise, let
z
s
z
q
and go to Step 9.
3.4 Routine DELETE(z
r
, z
p
)
This routine deletes z
r
from T
z
r . The purpose of passing z
p
, the immediate existing elder
sibling of z
r
, to this routine is to reconnect the links after z
r
is deleted. If z
p
is NULL,
z
r
is the eldest existing son of its parent. If z
r
does not have any successors, the deletion
is simple; otherwise, the successors of z
r
reorganize into a new subtree. In the later case,
F(z
r
), denoted by z
s
, along with all its successors, moves up one level to take the position
of z
r
and all nodes in the lineage forest led by N(z
s
), denoted by z
t
if exists, are inserted
into T
z
s . Hence, this routine merges a subtree and a lineage forest. The current node being
detached from F
z
t and inserted into T
z
s is denoted by z
b
. The insertion of z
b
starts from
z
s
. The root of the current subtree into which z
b
is inserted is denoted by z
a
. After the
successorship of z
b
to z
a
is determined, the sons of z
a
are checked to nd a position
for z
b
. The son of z
a
currently being checked is denoted by z
v
and the immediate existing
elder sibling of z
v
is denoted by z
q
. If the -son of z
a
does not exist, z
b
is inserted as the
-son of z
a
; otherwise, the -son becomes the root of the new subtree to insert z
b
. The node
z
u
is the starting point to determine the new z
b
to detach from F
z
t . If z
u
is a leaf node, it
will become the new z
b
; otherwise, a leaf node is located starting from F(z
u
). This process
continues until all nodes in F
z
t have been inserted into T
z
s . The steps of the routine are given
next.
Step 1. If F(z
r
) ,= NULL, go to Step 3.
Step 2. If z
p
= NULL, let F(P(z
r
)) N(z
r
); otherwise, let N(z
p
) N(z
r
). Discard z
r
and
RETURN.
Step 3. Let z
s
F(z
r
). If z
p
= NULL, let F(P(z
r
)) z
s
; otherwise, let N(z
p
) z
s
. Let
z
t
N(z
s
), P(z
s
) P(z
r
), N(z
s
) N(z
r
) and S(z
s
) S(z
r
). If z
t
=NULL, discard z
r
and RETURN; otherwise, let z
b
z
t
.
Step 4. While F(z
b
) ,= NULL, let z
b
F(z
b
).
Step 5. If N(z
b
) ,= NULL, let z
u
N(z
b
); otherwise, let z
u
P(z
b
) and F(z
u
) NULL.
Let z
a
z
s
.
Step 6. Determine by which z
b
is a -successor of z
a
. Let z
v
F(z
a
) and z
q
NULL.
Step 7. If z
v
=NULL or S(z
v
) > , go to Step 9. If S(z
v
) = , let z
a
z
v
and go to Step 6.
Step 8. Let z
q
z
v
and z
v
N(z
v
) and go to Step 7.
Springer
Ann Oper Res (2006) 147:87107 97
Step 9. If z
q
=NULL, let F(z
a
) z
b
; otherwise, let N(z
q
) z
b
. Let N(z
b
) z
v
, F(z
b
)
NULL, P(z
b
) z
a
, and S(z
b
) .
Step 10. If z
u
,= z
r
, let z
b
z
u
and go to Step 4; otherwise, discard z
r
and RETURN.
3.5 Routine REPLACE(z
r
, z
t
, z
p
)
This routine replaces z
r
with z
t
in T
z
r . Notations used in this routine are similar to those in
Routine DELETE. The function performed by this routine is also similar to that by Routine
DELETE. Successors of z
r
not dominated by z
t
, if any, are inserted into T
z
t . Therefore, this
routine merges two subtrees. The difference between the merge operation and that in Routine
DELETE is that a domination test is done at the root node of the new subtree in this routine
but not in Routine DELETE. The steps of the routine are listed in the following.
Step 1. Let P(z
t
) P(z
r
), N(z
t
) N(z
r
), F(z
t
) NULL and S(z
t
) S(z
r
). If z
p
=
NULL, let F(P(z
r
)) z
t
; otherwise, let N(z
p
) z
t
. If F(z
r
) = NULL, discard z
r
and
RETURN; otherwise, let z
b
F(z
r
).
Step 2. While F(z
b
) ,= NULL, let z
b
F(z
b
).
Step 3. If N(z
b
) ,= NULL, let z
u
N(z
b
); otherwise, let z
u
P(z
b
) and F(z
u
) NULL.
Step 4. Determine by which z
b
is a -successor of z
t
. If z
b
i
= z
t
i
for all i S
0
(), discard
z
b
and go to Step 9; otherwise, let z
a
z
t
, z
v
F(z
a
) and z
q
NULL.
Step 5. If z
v
=NULL or S(z
v
) > , go to Step 8. If S(z
v
) = , let z
a
z
v
and go to Step 7.
Step 6. Let z
q
z
v
and z
v
N(z
v
) and go to Step 5.
Step 7. Determine by which z
b
is a -successor of z
a
, let z
v
F(z
a
) and z
q
NULL and
go to Step 5.
Step 8. If z
q
=NULL, let F(z
a
) z
b
; otherwise, let N(z
q
) z
b
. Let N(z
b
) z
v
, F(z
b
)
NULL, P(z
b
) z
a
, and S(z
b
) .
Step 9. If z
u
,= z
r
, let z
b
z
u
and go to Step 2; otherwise, discard z
r
and RETURN.
3.6 Routine RETRIEVE(z
r
, )
This routine retrieves a z
from T
z
r for a . After z
is initialized, z
is computed. The
node currently being checked is denoted by z
s
when T
z
r is searched to nd a node strongly
dominating z
. Given z
a -successor of P(z
s
), a comparison between z
and z
s
is made
only if S(z
s
) and S(z
s
) = S(z
s
). If z
s
strongly dominates z
, z
is updated to z
s
and z
and z
s
whether z
to P(z
s
) and z
l
stores z
to P(z
s
) is determined only if z
l
,= z
, i.e., z
and P(z
s
) were
compared. The following is the routine.
Step 1. Let z
s
z
r
, l 0, and (
1
1
,
1
2
, . . . ,
1
k
).
Step 2. Let z
z
s
, d [[z
[[
and z
d.
Step 3. Determine by which z
is a -successor of z
s
. If = 2
k
1, go to Step 2. If F(z
s
) ,=
NULL, let l l 1,
l
, z
l
z
and z
s
F(z
s
) and go to Step 5.
Step 4. If z
l
= z
, let
l
; otherwise, determine by which z
is a -successor of P(z
s
)
and let
l
and z
l
z
. Go to Step 6.
Springer
98 Ann Oper Res (2006) 147:87107
Step 5. If S(z
s
) > , go to Step 7. If S(z
s
) = S(z
s
), go to Step 3.
Step 6. If N(z
s
) ,= NULL, let z
s
N(z
s
) and go to Step 5.
Step 7. If l = 1, output z
from the
PLQT in Fig. 2 for = (0.4, 0.2, 0.4) assuming z
is initialized to z
must be 1-,
2- or 3-successors of the root.
The 1-successors of the root are searched rst. Because z
must be a 2-, 4- or
6-successor of (10, 73, 74). Being a 6-successor of (37, 62, 78), z
is deter-
mined to be a 7-successor and, therefore, is strongly dominated. As a result, z
is updated
to z
is a 5-successor of (54, 40, 83), any node in the subtree rooted at (54, 40, 83) strongly
dominating z
is determined to be a
6-successor of (52, 61, 82), no more successors of (54, 40, 83) need to be compared.
Because z
is
compared with (58, 60, 68) and is determined to be a 3-successor. Therefore, any node
that may strongly dominate z