Efficient Parallel k-Set Chain Range-Join in Hypercubes ? Hong Shen School of Computing and Information Technology Griffith University Nathan , QLD 4111 , Australia September 24 , 1993 Abstract The chain range-join of k sets , S1 , S2 , ? ? ? , Sk , is the set containing all tuples -LRB- s1 ; s2 ; ? ? ? ; sk -RRB- that satisfy e -LRB- 1 -RRB- i < = jsi ? si +1 j < = e -LRB- 2 -RRB- i , where sk 2 Sk , si 2 Si , e -LRB- 1 -RRB- i < = e -LRB- 2 -RRB- i are fixed constants , 1 < = i < = k ? 1 . This paper presents an efficient parallel algorithm for computing the k-set chain range-join in hypercube computers . The proposed algorithm applies the technique of permutation-based range-join -LSB- 10 -RSB- and works by joining data sets one by one along the chain . To compute the range-join of k sets S1 , S2 , ? ? ? , Sk in a hypercube of p processors , p < = jSij = ni and 1 < = i < = k , our algorithm requires only O -LRB- ? ki = 1ni p -RRB- local memory at each processor , and has a time complexity at most O -LRB- -LRB- nkp + nk ? 1 -RRB- log nkp -RRB- in the best case when no element in St +1 matches any element in St for 1 < = t < = k ? 1 , O -LRB- kTsort + k Qki = 1 nip -RRB- in the worst case when all elements in St +1 match each element in St , where Tsort = O -LRB- k Qki = 2 nip log Qki = 2 nip -RRB- when all elements in St +1 are distinct , and Tsort = O -LRB- k Qki = 2 nip -RRB- when all elements in St +1 are equal . The general-case time complexity of the algorithm is also shown . 1 Introduction The problem of k-set chain range-join is to compute another set whose elements are those tuples -LRB- s1 ; s2 ; ? ? ? ; sk -RRB- in the Cartesian product of k given data sets , S0 , S1 , ? ? ? , Sk ? 1 , such that the -LRB- absolute value -RRB- difference between si +1 and si is within the range -LSB- e -LRB- 1 -RRB- i , e -LRB- 2 -RRB- i -RSB- , where < = e -LRB- 1 -RRB- i < = e -LRB- 2 -RRB- i are fixed constants -LRB- bounds -RRB- , 1 < = i < = k ? 1 . When k = 2 the k-set chain range-join problem is the standard -LRB- 2-set -RRB- range-join problem raised in -LSB- 10 -RSB- . When e -LRB- 2 -RRB- i = 0 , 1 < = i < = k ? 1 , k-set chain range-join becomes ? This work was partially supported by Australia Research Council under its Small Grants Scheme . k-set equijoin -LSB- 12 -RSB- which is the ordinary join operation in most cases . For simplicity and without loss of generality , we assume that elements in R and S are all numbers . Covering both equijoin and non-equijoin , range-join is an important operation with wide applications in database management , information processing and statistics . There have been enormous results on sequential and parallel equijoin -LSB- 1-4 , 6-8 , 13 -RSB- and most of them use hash-based join technique which has been shown to be most effective and promising for equijoin . Few results are known on non-equijoin for which the hash-based join technique is ineffective -LSB- 5 , 10-11 -RSB- . There have been two alternative techniques proposed for computing the range-join of two sets , one called permutation-based join -LSB- 10 -RSB- and the other namely selection-based join -LSB- 11 -RSB- . As to the k-set chain range-join problem raised in this paper , no result has been known yet . In this paper , we present an efficient parallel algorithm for solving the k-set chain range-join problem that runs in a hypercube SIMD machine without shared memory or disk . 2 Preliminaries A d-dimensional hypercube consists of 2d -LRB- d > = 0 -RRB- processors addressed from to 2d ? 1 by d-bit numbers -LRB- id ? 1id ? 2 ? ? ? i0 -RRB- . All the processors in the hypercube are connected via bidirectional links defined by a set of interconnection functions : I0 , I1 , Id ? 1 , where Iw connects each pair of processors whose addresses differ only at the precise wth bit , < = w < = d ? 1 . All the -LRB- 2d ? 1 -RRB- pairs of processors connected by Iw form the wth dimension of the hypercube . For integer i = id ? 1id ? 2 ? ? ? i0 , i -LRB- w -RRB- is defined to be the integer whose binary representation differs from i 's only at the wth bit : i -LRB- w -RRB- = id ? 1 ? ? ? iw +1 iwiw ? 1 ? ? ? i0 . Thus Iw connects Pi and P -LRB- w -RRB- i for all < = i < = p ? 1 . Figure 1 shows processor connection and dimensioning in a hypercube of 16 processors . Below are some usual assumptions on a hypercube computer which are followed in this paper : ffl Hypercube is an SIMD -LRB- Single Instruction-stream and Multiple Data-stream -RRB- machine without shared memory . ffl Each processor has a local memory of size O -LRB- Pp -RRB- , where P is the problem size -LRB- a function on input-size and output-size -RRB- . It has also a local disk of fixed size . ffl Each processor can perform the following operations in constant time : conventional arithmetic and logic operations , data comparison , transferring a -LRB- fixedsized -RRB- block of data to a neighbouring processor , and writing a block of data to local disk . The k-set chain range-join is defined as follows : Definition 1 Let S1 , S2 , ? ? ? , Sk be k sets containing n1 , n2 , ? ? ? , nk elements respectively , e -LRB- 1 -RRB- i and e -LRB- 2 -RRB- i constants -LRB- 0 < = e -LRB- 1 -RRB- i < = e -LRB- 2 -RRB- i , 1 < = i < = k -RRB- . The chain range-join P1 P0 P4 P5 7P P6 P12 13P 3P P2 P15 d-0d-1 d-3 d : dimension d-2 P P P11 10 8 9P P14 Figure 1 : A 4-dimensional hypercube of 16 processors of S1 , S2 , ? ? ? , Sk , denoted by Vk ? 1 i = 1 -LRB- Si 1e -LRB- 2 -RRB- ie -LRB- 1 -RRB- i Si +1 -RRB- , is a set T containing all tuples -LRB- s1 ; s2 ; ? ? ? ; sk -RRB- satisfying e -LRB- 1 -RRB- i < = jsi ? si +1 j < = e -LRB- 2 -RRB- i , where si 2 Si and 1 < = i < = k . We say that si 2 Si matches si +1 2 Si +1 -LRB- in range -LSB- e -LRB- 1 -RRB- i , e -LRB- 2 -RRB- i -RSB- -RRB- if e -LRB- 1 -RRB- i < = jsi ? si +1 j < = e -LRB- 2 -RRB- i . Thus each pair of neighbouring components of any tuple in T are matching components . Definition 2 Let S1 and S2 be two sets whose elements are tuples of arity t1 and t2 respectively . The range-join of S1 and S2 with respect to the rth component -LRB- 1 < = r < = minft1 ; t2g -RRB- , denoted by S1 1e2e1 S2jr , is a set T containing all tuples -LRB- s1 ; s2 -RRB- satisfying e1 < = js1 -LRB- r -RRB- ? s2 -LRB- r -RRB- j < = e2 , where s1 2 S1 , s2 2 S2 , si -LRB- r -RRB- is the rth component of si -LRB- i = 1 ; 2 -RRB- . The size of set T depends entirely on the data distribution in S1 , S2 , ? ? ? , Sk . The following theorem gives a trivial lower bound of time complexity in the worst case -LRB- data distribution -RRB- : Lemma 1 A lower bound for computing Vk ? 1 i = 1 Si 1e -LRB- 2 -RRB- ie -LRB- 1 -RRB- i Si +1 in the worst case is ? -LRB- k Qki = 1 ni -RRB- and it is tight . The correctness of the lemma is trivial since the range-join of S1 , S2 , ? ? ? , Sk will have Qki = 1 ni tuples , each having k components , in the worst case when all elements in Si match every element in Si +1 for 1 < = i < = k ? 1 . 3 The algorithm Let data sets S1 , S2 , ? ? ? , Sk be each distributed evenly over p processors in a hypercube , p = 2d < = jSij = ni , and processor Pj holds Sji , where < = i < = k and < = j < = p ? 1 . We are required to compute the chain range-join of S1 , S2 , ? ? ? , Sk : Vk ? 1 i = 1 -LRB- Si 1e -LRB- 2 -RRB- ie -LRB- 1 -RRB- i Si +1 -RRB- . The basic idea of our algorithm is the following : ffl Permute Sk ? 1 in the hypercube such that all its subsets meet Svk at processor Pv to form all possible combinations of Suk ? 1 and Svk for < = u ; v < = p ? 1 . ffl Following each step of permutation , use a proper sequential algorithm to compute the local range-join of Suk ? 1 and Svk at processor Pv . Thus T vk ? 1 = -LSB- p ? 1 u = 0 -LRB- Suk ? 1 1e -LRB- 2 -RRB- k ? 1 e -LRB- 1 -RRB- k ? 1 -RRB- Svk is obtained at processor Pv , < = v < = p ? 1 , after Sk ? 1 is fully permuted . Hence Tk ? 1 = -LSB- p ? 1 v = 0T vk ? 1 = Sk ? 1 1e -LRB- 2 -RRB- k ? 1 e -LRB- 1 -RRB- k ? 1 Sk is produced . ffl For i = k ? 2 ; k ? 3 ; ? ? ? ; 1 permute Si and compute Ti = Si 1e -LRB- 2 -RRB- ie -LRB- 1 -RRB- i Ti +1 by repeating the above procedure . Finally we have obtained T = T1 which is distributed over the local disks of p processors of the hypercube : T = -LSB- p ? 1 i = 0 T i1 , where the local disk of Pi holds T i1 for < = i < = p ? 1 . Theorem 1 -LSB- 10 -RSB- Assume that p equal-sized data blocks , A0 , A1 , Ap ? 1 , are distributed evenly over p = 2d processors of a hypercube , where each processor Pi holds Ai . Transfer of these data blocks to each Pi , < = i < = p ? 1 , can be realized by permuting data p ? 1 times , where the qth permutation is data exchange in the w0th dimension between each pair of processors connected via Iw0 , that is , Ai ! Ai -LRB- w0 -RRB- for all < = i < = p ? 1 , where w0 is the least significant \ 1 '' bit in q 's binary representation : q = 2wt ? 1 + 2wt ? 2 + ? ? ? + 2w0 , wj > wj ? 1 for 1 < j < = t ? 1 . Let \ ? '' denote the logic -LRB- bit-wise -RRB- AND operation , \ ? '' the logic COMPLEMENT operation , that is , if a = at ? 1at ? 2 ? ? ? a0 -LRB- binary code -RRB- and b = bt ? 1bt ? 2 ? ? ? b0 , then a ? b = -LRB- at ? 1ANDbt ? 1 -RRB- -LRB- at ? 2ANDbt ? 2 -RRB- ? ? ? -LRB- a0ANDb0 -RRB- , and ? a = at ? 1at ? 2 ? ? ? a0 . The following lemma is a well-known fact that shows how to compute the least significant \ 1 '' bit in an integer 's binary representation . Lemma 2 -LSB- 10 -RSB- For any positive integer q , the position of its least significant \ 1 '' bit in its binary representation is given by w0 = log -LRB- q ? -LRB- ? q + 1 -RRB- -RRB- : -LRB- 1 -RRB- As AND and COMPLEMENT are conventional logic operations which each processor in a hypercube can provide , Equation -LRB- 1 -RRB- is computed in constant time . Consequently , by Theorem 1 the dimension number for the qth data permuting can be computed in constant time , 1 < = q < = p ? 1 . Remark Computing w0 by Equation -LRB- 1 -RRB- is needed only for those q that are even and have more than one \ 1 '' bit in their binary representations , since it is trivial that w0 = for odd q , and w0 = log q for q = 2k , < k < = t ? 1 . 2 By Theorem 1 , we know that for all u and a given v -LRB- 0 < = u ; v < = p ? 1 -RRB- the p combinations of Sui ? 1 and T vi will be obtained at Pv in p ? 1 steps of data permuting , each exchanging two data blocks of size ni ? 1p , and requiring local memory O -LRB- ni ? 1p + jT vi j -RRB- . To realise the local range-join for computing Sui ? 1 1e -LRB- 2 -RRB- i ? 1 e -LRB- 1 -RRB- i ? 1 T vi at processor Pv , our approach is the following : First sort T vi in nondecreasing order of the first component -LRB- t -LRB- 0 -RRB- -RRB- -LRB- from left to right -RRB- by using a sequential sorting algorithm ; then search -LRB- binary search -RRB- T vi to find the correct position -LRB- h -RRB- for each element of Sui ? 1 ; finally join each element -LRB- s -RRB- of Sui ? 1 with the next neighbour -LRB- th ? -RRB- on the left to its position in T vi if s ? th ? -LRB- 0 -RRB- > = e1 until s ? th ? -LRB- 0 -RRB- > e2 , and with the next neighbour -LRB- th + -RRB- on the right to its position in Si if th + -LRB- 0 -RRB- > = e1 until th + -LRB- 0 -RRB- ? s > e2 . Assume that ft0 ; t1 ; ? ? ? ; tjTvi j ? 1g is the sequence of T vi sorted in nondecreasing order of the first component . It is obvious that if s ? tx -LRB- 0 -RRB- > e2 then s ? tx ? -LRB- 0 -RRB- > e2 for all < = x ? < x , and if tx -LRB- 0 -RRB- ? s > e2 then tx + -LRB- 0 -RRB- ? s > e2 for all x < x + < jT vi j ? 1 . This means that when s is \ inserted '' into T vi , it needs to be joined only with its left-side matching neighbours and right-side matching neighbours in T vi one by one respectively until the difference of their values exceeds e2 . Let Y be a set whose elements are tuples of arity r. Assume that we are given a sequential procedure SEQSORT -LRB- Y -RRB- that sorts all tuples in Y in nondecreasing order of their first components , and a sequential binary-search procedure SEARCH -LRB- Y , x , h -RRB- that searches for the correct position of x in sorted sequence Y and outputs position -LRB- h -RRB- such that yh < = x < = yh +1 . Clearly the time complexity is O -LRB- rjY j log jY j -RRB- for SEQSORT and O -LRB- log jY j -RRB- for SEARCH . Given two sets A and B , where A 's elements are single data items and B 's elements are tuples of arity r , the following procedure realises sequential range-join of A and B w.r.t. the first component which will be used for local range-join at each processor in our parallel algorithm . Procedure RANGE-JOIN -LRB- A , B , r , e1 , e2 , M , C -RRB- f * Compute the range-join of A and B w.r.t. the first component on a uniprocessor using memory M . Input A = fa0 ; a1 ; ? ? ? ; ajAj ? 1g , B = fb0 ; b1 ; ? ? ? ; bjBj ? 1g , r , e1 and e2 , where ai is a single data item and bj is a tuple of arity r , B is sorted in nondecreasing order of the first component . Output C = fc0 ; c1 ; ? ? ? ; cjBj ? 1 -RRB- . * g t : = 0 ; for i : = to jAj ? 1 do if -LRB- jai ? b0 -LRB- 0 -RRB- j < = e2 -RRB- ^ -LRB- jai ? bjBj ? 1 -LRB- 0 -RRB- < = e2 -RRB- then for j : = to jBj ? 1 do if jai ? bj -LRB- 0 -RRB- j > = e1 then ct -LRB- 0 -RRB- : = ai ; for m : = to r ? 1 do ct -LRB- m +1 -RRB- : = bj -LRB- m -RRB- ; if t = b M r +1 c ? 1 then write C to -LRB- local -RRB- disk ; t : = -LRB- t + 1 -RRB- mod b M r +1 c ; f * ai may match all elements in B. Join all matching pairs of ai and bj and write the result to disk when it fills C -LRB- \ block '' -RRB- . * g if -LRB- b0 -LRB- 0 -RRB- ? ai < = e2 -RRB- ^ -LRB- ai ? bjBj ? 1 -LRB- 0 -RRB- < = e2 -RRB- then f * ai may match some elements in B. * g SEARCH -LRB- B , ai , h -RRB- ; f * Search for the correct position -LRB- h -RRB- of ai in B : bh -LRB- 0 -RRB- < = ai < = bk +1 -LRB- 0 -RRB- , where ? 1 < = h < = jBj ? 1 , b ? 1 -LRB- 0 -RRB- = ? 1 and bjBj -LRB- 0 -RRB- = 1 . * g j : = h ; while -LRB- ai ? bj -LRB- 0 -RRB- < = e2 -RRB- ^ -LRB- j > = 0 -RRB- do if jai ? bj -LRB- 0 -RRB- j > = e1 then ct -LRB- 0 -RRB- : = ai ; for m : = to r ? 1 do ct -LRB- m +1 -RRB- : = bj -LRB- m -RRB- ; if t = b M r +1 c ? 1 then write C to disk ; t : = -LRB- t + 1 -RRB- mod b M r +1 c ; j : = j ? 1 ; f * Join ai with its left-side neighbours in B within range -LSB- e1 , e2 -RSB- . * g j : = h + 1 ; while -LRB- bj -LRB- 0 -RRB- ? ai < = e2 -RRB- ^ -LRB- j < = jBj ? 1 -RRB- do if jai ? bj -LRB- 0 -RRB- j > = e1 then ct -LRB- 0 -RRB- : = ai ; for m : = to r ? 1 do ct -LRB- m +1 -RRB- : = bj -LRB- m -RRB- ; if t = b M r +1 c ? 1 then write C to -LRB- local -RRB- disk ; t : = -LRB- t + 1 -RRB- mod b M r +1 c ; j : = j + 1 ; f * Join ai with its right-side neighbours in B within range -LSB- e1 , e2 -RSB- . * g if t > then write C to disk ; f * Write the last unfilled block of result to disk . * g end . The complexity of the above procedure is clearly O -LRB- PjAj ? 1 i = 0 -LRB- log jBj + jB -LRB- ai -RRB- j ? r -RRB- -RRB- , where B -LRB- ai -RRB- is the subset of B whose elements match ai . This time complexity becomes O -LRB- jAj log jBj -RRB- in the best case when no more than O -LRB- log jBj r -RRB- elements in B match ai , and O -LRB- rjAjjBj -RRB- in the worst case when all elements in B match ai -LRB- jB -LRB- ai -RRB- j = jBj -RRB- , for < = i < = jAj ? 1 . Following the basic idea described before , our hypercube parallel algorithm for computing the range-join of S1 , S2 , ? ? ? , Sk is presented as follows . Algorithm CUBE-CHAIN-RANGE-JOIN -LRB- S1 , ? ? ? , Sk , e -LRB- 1 -RRB- 1 , e -LRB- 2 -RRB- 1 , ? ? ? , e -LRB- 1 -RRB- k ? 1 , e -LRB- 2 -RRB- k ? 1 , p , T -RRB- f * Compute the range-join of S1 , S2 , ? ? ? , Sk in a hypercube of p = 2d processors . Input Si = -LSB- p ? 1 u = 0Sui for 1 < = i < = k , e -LRB- 1 -RRB- j and e -LRB- 2 -RRB- j for 1 < = j < = k ? 1 , p , where Sui , e -LRB- 1 -RRB- j , e -LRB- 2 -RRB- j and p are stored in Pu ; output T = -LSB- p ? 1 i = 0 Ti , where Tu = Vk ? 1 i = 1 -LRB- -LSB- p ? 1 j = 0 -LRB- Sji 1e -LRB- 2 -RRB- ie -LRB- 1 -RRB- i Sui +1 -RRB- -RRB- is stored in Pu . * g 1 . for i : = to p ? 1 do in parallel for j : = to nkp ? 1 do T ik -LSB- j -RSB- : = Sik -LSB- j -RSB- ; 2 . for t : = k ? 1 downto 1 do 2.1 for i : = to p ? 1 do in parallel 2.1.1 SEQSORT -LRB- T it +1 -RRB- ; 2.1.2 RANGE-JOIN -LRB- Sit , T it +1 , k ? t , e -LRB- 1 -RRB- t , e -LRB- 2 -RRB- t , ? ki = 1ni p , T it -RRB- ; f * T it : = Sit 1e -LRB- 2 -RRB- te -LRB- 1 -RRB- t T it +1 . * g 2.2 for q : = 1 to p ? 1 do f * Permute Sit p ? 1 times to transfer it to all processors in the hypercube for all < = i < = p ? 1 . * g 2.2.1 for i : = to p ? 1 do in parallel 2.2.2 if q mod 2 = 1 then w : = f * q is odd . * g else if q ? 2blog qc = then w : = log q f q contains only one \ 1 '' bit . * g else w = log -LRB- q ? -LRB- ? q + 1 -RRB- -RRB- ; f * q is even and contains more than one \ 1 '' bit . * g 2.2.3 Sit ! Si -LRB- w -RRB- t ; 2.2.4 RANGE-JOIN -LRB- Sit , T it +1 , k ? t , e -LRB- 1 -RRB- t , e -LRB- 2 -RRB- t , ? ki = 1ni p , T it -RRB- ; f * Exchange Sit and Si -LRB- w -RRB- t and compute T it = Sit 1e -LRB- 2 -RRB- te -LRB- 1 -RRB- t T it +1 . * g end . The correctness of the procedure is apparent from the comments interspersed with the procedure . The time complexity of the algorithm is analysed as follows : ffl Step 1 needs time O -LRB- nkp -RRB- ; ffl Step 2.1.1 needs time O -LRB- -LRB- k ? t -RRB- jT it +1 j log jT it +1 j -RRB- ; ffl Steps 2.1.2 and 2.2.4 need time O -LRB- ntp ? 1 X j = 0 p ? 1 max i = 0 flog jT it +1 j + jT i -LRB- si ntp + j t -RRB- t +1 jg -RRB- ; where T i -LRB- si ntp + j t -RRB- t +1 is the subset in T it +1 whose elements match si ntp + j t ; ffl Steps 2.2.2 and 2.2.3 can be completed in time O -LRB- 1 -RRB- . The total running time of CUBE-PERMUTE-JOIN is therefore T1e2e1 = k ? 1 X t = 1 O -LRB- -LRB- k ? t -RRB- jT it +1 j log jT it +1 j -RRB- + -LRB- p ? 1 -RRB- ntp ? 1 X j = 0 p ? 1 max i = 0 flog jT it +1 j + jT i -LRB- sintp + j t -RRB- t +1 jg -RRB- : -LRB- 2 -RRB- Obviously jT ikj = nkp . In the best case when no element in Sk matches any element in Sk ? 1 , jT it j = for t = k ? 1 ; k ? 2 ; ? ? ? ; 1 , and thus jT i -LRB- si ntp + j t -RRB- t +1 j = 0 . Hence Equation -LRB- 2 -RRB- becomes T1e2e1 = O -LRB- -LRB- nk p + nk ? 1 -RRB- log nk p -RRB- : -LRB- 3 -RRB- In one worst case when all elements in St +1 are distinct and match each element in St for t = k ? 1 ; k ? 2 ; ? ? ? ; 1 , jT i -LRB- si ntp + j t -RRB- t +1 j = jT it +1 j and jT it j = jT ii +1 j?jSitj = ntp jT it +1 j = Qkq = t +1 nqp for all i and j . So Equation -LRB- 2 -RRB- is T1e2e1 = k ? 1 X t = 1 O -LRB- -LRB- k ? t -RRB- kY q = t +1 nq p log kY q = t +1 nq p + -LRB- p ? 1 -RRB- nt p -LRB- log kY q = t +1 nq p + kY q = t +1 nq p -RRB- -RRB- < = O -LRB- k2 kY q = 2 nq p log kY q = 2 nq p + k kY q = 1 nq p -RRB- : -LRB- 4 -RRB- In another worst case when all elements in St +1 are equal and match each element in St , k ? 1 < = t < = 1 , the first item in the above equation will disappear as sorting of Ti +1 can be simply completed in time O -LRB- jT it +1 j -RRB- = O -LRB- Qkq = t +1 nqp -RRB- using quicksort -LRB- only one partitioning phase , no data exchange is needed -RRB- , so the total time for sorting T ik , T ik ? 1 , ? ? ? , T i2 -LRB- 0 < = i < = p ? 1 -RRB- will be no more than O -LRB- -LRB- k ? 1 -RRB- Qkq = 2 nqp -RRB- . The second item of Equation -LRB- 2 -RRB- is same as in Equation -LRB- 4 -RRB- . Thus the worst-case time complexity of the algorithm becomes T1e2e1 = O -LRB- k kY q = 1 nq p -RRB- ; -LRB- 5 -RRB- which shows that the algorithm is cost-optimal by Lemma 1 . Apparently , the algorithm requires at most O -LRB- ? ki = 1ni p -RRB- local memory at each processor in any case . In summary , we have the following main theorem : Theorem 2 Let sets S1 , S2 , ? ? ? , Sk be each distributed evenly over p processors in a hypercube , where p < = jStj = nt and processor Pi holds subsets Sit , where 1 < = t < = k and < = i < = p ? 1 . The chain range-join of S1 , S2 , ? ? ? , Sk can be computed in the hypercube with O -LRB- ? ki = 1ni p -RRB- local memory at each processor in time at most -LRB- a -RRB- k ? 1 X t = 1 O -LRB- -LRB- k ? t -RRB- jT it +1 j log jT it +1 j -RRB- + -LRB- p ? 1 -RRB- ntp ? 1 X j = 0 p ? 1 max i = 0 flog jT it +1 j + jT i -LRB- si ntp + j t -RRB- t +1 jg -RRB- in the general case , where T i -LRB- si ntp + j t -RRB- t +1 is the subset in T it +1 whose elements match si ntp + j t ; -LRB- b -RRB- O -LRB- -LRB- nk p + nk ? 1 -RRB- log nk p -RRB- in the best case when no element in St +1 matches any element in St for 1 < = t < = k ? 1 ; -LRB- c -RRB- O -LRB- k -LRB- Tsort + kY i = 1 ni p -RRB- -RRB- in the worst case when all elements in St +1 match each element in St for 1 < = t < = k ? 1 , where Tsort = O -LRB- k Qki = 2 nip log Qki = 2 nip -RRB- when all elements in St +1 are distinct , and Tsort = O -LRB- k Qki = 2 nip -RRB- when all elements in St +1 are equal . 4 Concluding remarks Computing the range-join of data sets is an interesting problem with important applications in many fields . In this paper we have addressed the problem of kset chain range-join which is defined as that of computing a set containing all ktuples whose components are elements of k given data sets and in each of which each pair of neighbouring components have a difference within a given range . The k-set chain range-join problem is a general form of the conventional range-join . We have proposed an efficient parallel algorithm for solving the k-set chain rangejoin problem in hypercube computers . Our algorithm is based on the technique of permutation-based range-join described in -LSB- 10 -RSB- and works by joining sets one by one along the chain . To compute the chain range-join of k sets S1 , S2 , ? ? ? , Sk in an SIMD hypercube computer of p processors with O -LRB- ? ki = 1ni p -RRB- local memory , where p < = jSij = ni for 1 < = i < = k , our algorithm needs time at most O -LRB- -LRB- nkp + nk ? 1 -RRB- log nkp -RRB- in the best case when no element in St +1 matches any element in St for 1 < = t < = k ? 1 , O -LRB- k2 Qki = 2 nip log Qki = 2 nip + k Qki = 1 nip -RRB- in the worst case when all elements in St +1 are distinct and match each element in St , and O -LRB- k Qki = 1 nip -RRB- in the worst case when all elements in St +1 are equal and match each element in St. Like the algorithm in -LSB- 10 -RSB- , the proposed algorithm will also work correctly in the case when jSij < p and p < = jSjj for i = ss1 ; ss2 ; ? ? ? ; sst and j = sst +1 ; sst +2 ; ? ? ? ; ssk , where fss1 ; ss2 ; ? ? ? ; sskg is a permutation of f1 ; 2 ; ? ? ? ; kg . We leave the poof to the reader . Our algorithm is designed for the usual case data distribution : Si is distributed evenly over p processors of the hypercube . Below are the solutions for other typical cases of data distribution : -LRB- i -RRB- If Si is stored in processor Pi ? 1 of the hypercube , 1 < = i < = k , the k-set chain range-join of S1 , S2 , ? ? ? , Sk can be computed simply by repeatedly -LRB- log k phases -RRB- pair-wise sequentially joining S2j and S2j +1 for j = to k2 in parallel , with necessary data movements following each phase . -LRB- ii -RRB- If Si is stored in subcube Ci ? 1 of the hypercube , where 1 < = i < = k and C0 , C1 , ? ? ? , Ck ? 1 are disjointed and have equal size , the k-set chain range-join of S1 , S2 , ? ? ? , Sk can be computed similarly as -LRB- i -RRB- , with each sequential join being replaced by parallel join on Ci using the algorithm given in -LSB- 10 -RSB- . -LRB- iii -RRB- Let S = fS1 ; S2 ; ? ? ? ; Skg = -LSB- t ? 1 j = 0 ? Sj and ? Si \ ? Sj = ; for any i < > j . If the sets in ? Sj are each distributed evenly over all processors in Cj , < = j < = t ? 1 , the k-set chain range-join of S1 , S2 , ? ? ? , Sk can be computed by first joining the sets ? Sj in Cj using the proposed algorithm in this paper for j = to t ? 1 in parallel ; then , after necessary data movements , joining the resulting sets in the same way as described in -LRB- ii -RRB- . References -LSB- 1 -RSB- D. Bitton , H. Boral , D.J. DeWitt and W.K. Wilkinson , Parallel algorithms for the execution of relational database operations , ACM Trans . Database Systems 8 -LRB- 3 -RRB- -LRB- 1983 -RRB- 324-353 . -LSB- 2 -RSB- S.D. Chen , H. Shen and R. Topor , An improved hash-based join algorithm in the presence of double skew on a hypercube computer , Res . Rep. No. 68 , School of Comput . and Inform . Tech. , Griffith University , submitted for publication , 1993 . -LSB- 3 -RSB- V. Deshpande , P. Larson and T.P. Martin , Parallel join algorithms for nested relations on shared-memory multiprocessors , Proc . 2nd IEEE Symposium on Parallel and Distributed Processing , IEEE Comput . Soc . Press , 1990 , 344-347 . -LSB- 4 -RSB- D.J. Dewitt and R.H. Gerber , Multi processor hash-based join algorithms , Proc . 11th Int . Conf . Very Large Data Bases , Stockholm , 1985 , 151-164 . -LSB- 5 -RSB- D.J. Dewitt , J.F. Naughton and D.A. Schnrider , An evaluation of non-equijoin algorithms , technical report , 1990 . -LSB- 6 -RSB- M. Kitsuregawa , H. Tanaka and T. Moto-oka , Application of hash to data base machine and its architecture , New Generation Computing 1 -LRB- 1 -RRB- -LRB- 1983 -RRB- 63-74 . -LSB- 7 -RSB- H.J. Lu , K.L. Tan and M.C. Shan , Hash-based join algorithms for multiprocessor computers with shared-memory , Proc . of the 16th VLDB Conf. , Brisbane , Australia , 1990 , 198-209 . -LSB- 8 -RSB- E. Omiecinski and E. Tien , A hash-based join algorithm for a cube-connected parallel computer , Information Processing Letters , 30 -LRB- 5 -RRB- -LRB- 1989 -RRB- 269-275 . -LSB- 9 -RSB- E. Omiecinski and E. Tien , The adaptive-hash join algorithm for a hypercube multicomputer , IEEE Trans . Parallel and Distributed Systems 3 -LRB- 3 -RRB- -LRB- 1992 -RRB- 334-349 . -LSB- 10 -RSB- H. Shen , An efficient permutation-based parallel algorithm for range-join in hypercubes , Res . Rep. No. 69 , School of Comput . and Inform . Tech. , Griffith University , submitted for publication , 1993 . -LSB- 11 -RSB- H. Shen , Selection-based parallel range-join in hypercubes , Res . Rep. No. 71 , School of Comput . and Inform . Tech. , Griffith University , submitted for publication , 1993 . -LSB- 12 -RSB- J.D. Ullman , Principles of Database Systems , Computer Science Press , Rockville -LRB- 1980 -RRB- . -LSB- 13 -RSB- P. Valduriez and G. Gardarin , Join and semi-join algorithms for a multiprocessor database machine , ACM Trans . Database Systems 9 -LRB- 1 -RRB- -LRB- 1984 -RRB- 133-161 . -LSB- 14 -RSB- M.T. ? Ozsu and P. Valduriez , Principles of Distributed Database Systems , Prentice-Hall , Englewood Cliffs -LRB- 1991 -RRB- .

O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O B O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O B O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O B O O O O O O O O O O O O B O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O B O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O B O O O O O O O O B O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O B O O O O O O O O O B O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O B O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O B O O O O O O O O O O O O O B O O B O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O B O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O

hypercube
parallel algorithms
permutation
processors
rangejoin
time complexity


Finding Extremal Sets of A Normal Family of Sets in O -LRB- N2 log2 N -RRB- Time and O -LRB- N2 log3 N -RRB- Space ? Hong Shen School of Computing and Information Technology Griffith University Nathan , QLD 4111 , Australia hong@cit.gu.edu.au March 20 , 1995 Abstract Yellin and Jutla -LSB- 2 -RSB- proposed an algorithm for the problem of finding the extremal sets in a family of sets containing N elements that can be implemented in O -LRB- N2 log N -RRB- time and O -LRB- N2 log N -RRB- space due to Pritchard -LSB- 1 -RSB- who also showed that an earlier algorithm can be adapted to solve the problem in O -LRB- N2 log N -RRB- time and O -LRB- N2 log2 N -RRB- space . We show that this problem can be solved in O -LRB- N2 log2 N -RRB- time and O -LRB- N2 log3 N -RRB- space in the worst case when F is normal , thus present the first algorithm that reaches the lower bound both in time and space complexity for this case . References -LSB- 1 -RSB- P. Pritchard . On computing the subset graph of a collection of sets . Manuscript , School of Computing and Information Technology , Griffith University , 1994 . -LSB- 2 -RSB- D. M. Yellin and C. S. Jutla . Finding extremal sets in less than quadratic time . Inform . Process . Lett. , 48:29 -LCB- 34 , 1993 . ? This work was partially supported by Australia Research Council under its Small Grants Scheme .

O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O

complexity analysis
extremal set
partial order
set inclusion