A MULTIMEDIA TESTBED FOR FACIAL ANIMATION CONTROL PREM KALRA1 ENRICO GOBBETTI2 NADIA MAGNENAT THALMANN1 DANIEL THALMANN2 1 MIRALab , CUI , University of Geneva , 24 , rue du General Dufour , 1211 Geneva , Switzerland 2 Computer Graphics Lab Swiss Federal Institute of Technology 1015 Lausanne , Switzerland ABSTRACT This paper presents an open testbed for controlling facial animation . The adopted controlling means can act at different levels of abstraction -LRB- specification -RRB- . These means of control can be associated with different interactive devices and media thereby allowing a greater flexibility and freedom to the animator . Possibility of integration and mixing of control means provides a general platform where a user can experiment with his choice of control method . Experiments with input accessories like the keyboard of a music synthesizer and gestures from the DataGlove are illustrated . 1 . Introduction The human face is an extremely interesting but intricate object . The complexity is not due just to complex anatomical structure but also to muscle actions , dynamics , and psychological and behavioral response . Thus , design of a facial animation system involves several components . In addition these components may include information from different media and sources . Animating the face manually for every action is a very tedious task and may not even yield the desired results . Faces have their own language where facial actions may express emotions , illustrate speech , comment on feelings or show attitude . Knowledge of such a language and its interaction with the face is essential to improve facial animation system . In addition , understanding of gesture motions of the head and eyes which accompany speech and amplify the communication process is very important . Most existing and earlier systems1 ,8,12,14,18,20,22,26 do not integrate all the aspects in one package . Further , there have not been many experiments which explore various means of specifying facial animation . Where and how the animation characteristics -LRB- temporal and spatial -RRB- should be specified has been given little attention in the literature . Multi-level parameterization19 seems to be a solution for better control . However , simple addition of higher levels of control may not always be an appropriate answer , as the animator may want to obtain some specific features or to perform some low-level ` fine-tuning ' . Furthermore , providing manipulation at every level may burden the task of the animator and seemingly obscure the basic goals of the system . There are presently three main types of facial animation systems in terms of driving mechanism or animation control . One type of systems uses a script or command language for specifying the animation9 ,11,15,21 . These systems are simple but non-interactive and thus are not very appropriate for real time animation . In addition , fine-tuning an animation is difficult when merely editing the script , as there exists a non-trivial relation between textual description and animation results . Another type of system is performance-driven where motion parameters are captured from live performance3 ,24,27 . These types of motion copying systems are non-flexible and the external control on animation is very limited when used in isolation . Though it provides high accuracy for timings , it is extremely difficult to edit . Systems driven by speech8 ,13 are focused in lip-synchronization and speech decomposition into phonemes . These are adequate when animation involves only speech . What would in fact be more desirable , is a system which can encapsulate different kinds of animation specifications and control mechanisms . Such a system would meet the needs of the animator for almost every situation by giving access to the different means of control . The tracking of a live video sequence may provide the basic sequence of a synthetic animation , textual data may produce speech with audio feedback , a hand gesture may govern the gesture motion of the head and eyes , and so on . Here , our attempt is to present how the information from different sources can be related and controlled to give a sequence of animation . As there does not exist what one can refer to as the ` best ' framework for motion control for facial animation , this suggests having an open system where one can try several possibilities and chose the one which is subjectively the ` best . ' In order to gain flexibility and modularity in the execution of the system we need a high degree of interaction . We present some of the advanced input accessories which provide natural interaction and thus intuitive control . 3D interaction is already quite popular for many applications , and here we integrate some of the novel paradigms to experiment in the context of controlling facial animation . Possibilities for control with different interactive situations are examined ; e.g. gesture dialogue using a DataGlove and musical streams from a MIDI -LRB- Musical Instrument Digital Interface -RRB- - keyboard . We believe that it is more important to provide a wide range of interaction components than to enforce a particular style of interface . One of the interactive systems for facial expressions presented by deGraf3 contains the philosophy of using various puppet interfaces to drive facial animation , however , it seems to have hard wiring of devices for manipulations , which restricts flexibility and interchangeability of different device components . The paper is organized as follows . First we provide the overall structure of the system in Section 2 . Section 3 briefly gives the underlying face model . Animation control is presented in the following section . The input accessories developed for facial animation are given in Section 5 . A discussion about the system?s present status and future enhancement is presented in the subsequent section . 2 . System Architecture Facial movements , like other body movements rely on perception-driven behaviors . Cognitively , these can be understood as externalization or manifestation of verbal or nonverbal communication agents on a face . These agents activate certain channels of a face associatively which in turn triggers the relevant muscles and which eventually deforms the face . In a computational model , such a behavior can be interpreted as translating behavioral or cerebral activity into a set of functional units which embody the necessary activityinformation . The resulting actions are then combined in a sequence of discrete actions which when applied cause the necessary movements on the face . In our system we model such a behavior by separating facial animation into three major components , namely face model , animation controls and composer . The face model primarily describes the geometric structure of the face , deformation controller and muscle actions . The model receives streams of actions to perform . These actions are decomposed into the required muscle actions and a new instance of the face is derived for each frame . The animation controls specify animation characteristics16 . A facial animation system needs to incorporate adequate knowledge about its static and dynamic environments to enable animators to control its execution with -LRB- maybe -RRB- predefined , yet flexible set of commands . The system 's structure therefore should embed such a know-how in a natural way . In order to satisfy this need , our system employs hierarchical structure and modular design . Fig 1 . shows the system?s basic structure . Commands to the top level of the system need not be detailed descriptions of movement , instead these are like task description -- for example : SAY `` I wo n't go '' while LOOKING left-right . The levels underneath are like functional synergies28 where the task description is processed after having been decomposed into relevant low level motion parameters . The task description contains higher level abstraction entities such as emotion , head motion and speech . Stimuli Input Components 1 2 3 Composer Feedback Global Control Basic Actions Deformation Controller Model -LRB- Abstraction Levels -RRB- Fig. 1 System 's Basic Structure . The composer acts like a multiplexer and performs integration of the animation controls coming from different sources in -LRB- almost -RRB- real time . It transmits streams of performable actions to the face model for each time interval . The animation controls may be driven by different types of input accessories . This provides ease of control specification and handling . The system also allows parallel execution of various operations -LRB- tasks -RRB- ; for example , the deformation controller and composer may run in parallel . Similarly , input accessories run independently and produce controlling attributes which are fed to the composer . The system is modular which makes it easy to change certain aspects of the system or to use predefined methods used in other applications . It thereby allows the interchangeability of the input accessories and permits evaluation of their applicability . The major structural components are described in the following three sections . The first component deals with the facial model , basically addressing the static environment of the system . One can conceive this as a kind of machine-level end or kernel for the system . 3 . Face Model In our facial model the skin surface of a human face , an irregular structure , is considered as a polygonal mesh . Muscular activity is simulated using rational free form deformations10 . To simulate the effects of muscle actions on the skin of a human face , we define regions on the facial mesh corresponding to the anatomical description of the regions of face where a muscle action is desired . A control lattice can then be defined on the region of interest . The deformations obtained by actuating muscles to stretch , squash , expand and compress the inside volumes of the facial geometry are simulated by displacing the control points of the control lattice . The region inside the control lattice deforms like a flexible volume , according to the displacement and the weight at each control point . Isolating muscle actions from the 3D facial topology avoids the hard-wiring of performable actions . Development of a muscle process that is non-specific to a facial-topology and can be controlled by a small number of parameters provides a more general approach for the modeling and animation of the primary facial expressions . We use what we call a Minimal Perceptible Action9 -LRB- MPA -RRB- as a basic facial motion parameter . Each MPA has a corresponding set of visible movements of the eyebrows , jaw , or mouth and others occurring as a result of muscles contracting and pulling . MPAs also include non-facial muscle actions such as nodding and head turning and movement of the eyes . An MPA can be considered as an atomic action unit similar to the AU -LRB- Action Unit -RRB- of FACS -LRB- Facial Action Coding System -RRB- 5 , execution of which results in a visible and perceptible variation of a face . We can aggregate a set of MPAs and define expressions and phonemes in our system as facial snapshots , i.e. , a particular position of the face at a given time . For phonemes , only the lips are considered during the emission of sound . The face deformation controller for the face model is a process which waits for each frame described as a sequence of MPAs with their respective intensities and executes the frame by rendering the face at each time interval . The mutual independence and orthogonality of deformation parameters do not force any temporal ordering or sequencing in the execution of the set of MPAs being fed . 4 . Animation Controls Creation of animation is based on the simple principle of motion development which basically needs to provide a temporal sequence of spatial changes . For example , an animation can be produced by simply providing a stream of MPAs to the deformation controller . This however , does not address the mechanism of motion control . Animation control , in general refers to the specification and manipulation of spatial and temporal characteristics for the various entities involved in the process of animation at different levels . Animation at the lowest level is specified as a sequence of MPAs with their intensities and time of occurrence . This is an explicit one-level control scheme . The discrete action units defined in terms of MPAs can be used as fundamental building blocks or reference units for the development of a parametric facial process . The control of facial muscles based on MPAs provides a better tool for the creation of grouped functional synergies which avoids the direct control of individual muscles . However , the type of control offered by MPAs is tedious and not adequate enough from an animator 's point of view . Specification of animation in terms of expressions and phonemes makes unnecessary manipulation of MPAs at the lower level . The animator has to define expressions with their respective intensities and duration . The effective intensity of each MPA contained in an expression is influenced by the global intensity of the expression . Animation control using expressions and phonemes is still not natural enough to specify . The animator would rather like to specify and control the animation at the task level where he can describe animation directly in terms of its inherent sources . Thus , in our system we allow the animator to specify animation directly in terms of emotions , head movements and sentences for speech9 . Such control saves an animator from learning the detailed knowledge of lowerlevel entities in the system . The possibility of describing the dimensions of facial animation separately enables us to decompose relevantly a facial animation along a number of independent performable actions . The final decomposition is done at the level of MPAs . The final animation is obtained by summing together the individual sets of actions . In addition , considering different dimensions for facial movements offers the possibility of investigating the meaning and significance of each entity for a given array of animation . This can be easily accomplished by turning off one of the component channels and visualizing the resulting animation . For example , a particular emotion or gesture motion of head alone could be turned on/off to examine its effect on the overall animation . 5 . Composer When an event elicits more than one feeling , emotional blend may occur . For example a person can be surprised and frightened at the same time . Such phenomenon happens when two or more emotions appear simultaneously or when emotions succeed each other rapidly . The measure -LRB- strong or feeble -RRB- of emotion controls not only the amount of movement but also the appearance of some movements . Therefore blending could also mean blurring the movements . There could also be blending of an emotion , head movements and concurrent speech , all sharing the same MPAs . This can be interpreted when the same type of signal is coming from various channels and one wants to know the resulting amplitude of the signal at that instance of time . There does not exist a physiological model for blending . However , for emotion blending Ekman and Friesen4 suggest superimposition of characteristic masks for certain regions of the face , part of the face shows one emotion and part shows another . For example , a blend of surprise and fear is achieved by combining the activities of eyebrows and eyes from the emotion `` surprise '' and the activities of lower face from `` fear '' . This can be considered as mask-blending . In our model this is realized by providing the facility to activate or deactivate the different regions like eyes , eyebrows , mouth , jaw etc. . Fig 2 shows mask-blending for the emotion ? surprise ? and ? fear ? . For blending at MPA level which merges emotion , head motion and speech we employ an adhoc method . Blending here though similar to a union operation , is not simply the summation of individual MPAs . The direct sum may yield values exceeding the extreme limits . For composition of MPAs , we perform summation of the respective MPAs intensities and normalize the sum using a trigonometric sine function . Fig 3 shows the blending function , S -LRB- i -RRB- refers to the sum of intensities and R -LRB- i -RRB- to the resulting intensity . Such a composition in a way corresponds to the behavior of neurons where input stimulies are composed with a weighted sum followed by a non-linear transformation function . 1 -1 R -LRB- i -RRB- S -LRB- i -RRB- Fig. 3 : Blending function . The composing or blending of actions is performed by Composer . Composer can also be considered as a control manager . Its function is to accept task descriptions in terms of a set of MPAs and build an MPA queue to feed to the face model . The Composer can integrate the controls coming from different sources . Global control is introduced to affect overall changes at the time of the composition . For example , resulting MPAs may be accentuated or delineated by multiplying their intensities by an appropriate factor . In fact , each input component can be attributed with an attached weight factor which can be changed to suitably affect the output stream of MPAs from that input component -LRB- see Fig 4 -RRB- . This yields better overall control . The following section demonstrates the input components used in our system with respect to their potential as control means . I1 I3 I2 S w1 w2 w3 MPAs MPAs Global Control Composer Fig. 4 : Composition and global control . 6 . Input Accessories As the system considers the specification of different input components separately from the animation , we can try various ways of controlling the animation . Also , various input components can be used at the same time . Such an approach provides a platform where we can experiment with new methods of control . This analysis may allow us to identify the kind of access we may require for defining and controlling varying levels of abstractions for computational animation models in virtual environments . These accessing components may demand different kinds of interaction which may establish the need for experimentation with several types of devices . As no single mode of control can give completeness , such a test-bed environment can evaluate what device can be used for which means of control . Possibility of composing and mixing different types of controls enhances the reconfigurability of the system . This also allows cooperative group tasks for animation , where more than one person can control the animation in real time . We present here three types of input accessories we have tried . All have some advantages and disadvantages . As there could be simultaneous use of different types at the same type we can overcome some of the disadvantages . 6.1 Script Script is a standard method of specifying animation consisting of different types of entities . It is like a special language using a few key words for specific operations . Most automated facial animation systems employ this approach . In our system a language HLSS -LRB- High Level Script Scheduler -RRB- 9 is used to specify the synchronization in terms of an action and its duration . From action dependence , the starting and the ending times of an action can be deduced . The general format of specifying an action is as follows : while <duration> do <action> . The duration of an action can be a default duration , a relative percentage of the default duration , an absolute duration in seconds , or deduced from other actions preceding or succeeding the present action . The starting time of each action can be specified in different ways , for example , sequentially or parallel using the normal concepts of `` fork '' and `` end '' employed in scheduling problems . One of the major advantages of such an input accessory is that it is in text form . Users can very conveniently change it by editing a text file . On the other hand , being noninteractive it is not possible to change certain parameters while the script is running . Therefore , it is not very suitable for real time animation . It is more useful for background animation . 6.2 MIDI-Keyboard MIDI-keyboards can be another type of source for controlling the animation . The keyboard has a number of keys enabling us to associate several parameters with the keys . Activation of each key gives two kinds of information : initial velocity with which the key is hit and the pressure variation . System G6 a real-time , video animation system uses Korg M1 keyboard to move different parts of the mask of a face . However , the system has special purpose processing hardware to perform the animation . In our system , this device can be used as direct manipulator for MPAs , each key may be assigned to an MPA and the initial velocity of the key may be attached to its intensity . This type of control is at a rather low level . Higher level control can also be obtained by assigning the keys to expressions and phonemes . Fig 5 shows a sequence of facial animation using the key presses of the MIDI-keyboard . Here , some of the expressions and phonemes have been associated with particular keys of the keyboard , the intensity of the expression or phoneme is governed by the velocity of the key hit . The duration of an expression can be determined by the duration for which the key is pressed . That means an expression starts with the intensity corresponding to the velocity of the key hit and continues until the key is released . At present , the pressure variation of the key hit is not being used , however , we intend to include it to modulate the intensity of an expression during its execution . Sound output from MIDI can provide the needful feedback at the execution of an action . At expression level , it may reflect its intensity . It may be interesting to use array of keys to control a single emotion , here , the mapping of keys would be with the included expression instances or channels , for example , an emotion containing eye , head and mouth motion , each may be associated with a set of keys respectively . The advantage of such a device is that it provides a number of keys which can be assigned individually to the motion parameters . This gives simultaneous control on many parameters . But at the same time it demands hardwiring of the meaning of desirable action with a particular key . Each time a modification or an extension in the control method will require reconfiguration of the meaning of keys . Also , unidimensional arrangement of keys in the keyboard forces a certain type of order in the manner of control . For music the ordering is with respect to frequency . However , it is not evident how to arrange facial expressions in a unidimensional fashion , consequently this constrains the use of the device in its natural form . 6.3 Postures and Gestures Dialogue The type of control presented in the previous section is directly dependent on the physical structure of the device used : the mapping between a user 's actions and animation controls is obtained by associating a meaning to the various key presses . This device dependency is a factor that limits the animator 's expressiveness . The use of devices which simply sense user 's motions , and the use of adaptive pattern recognition can overcome these problems . This gives more freedom to the animator and allows the definition of the mapping between sensor measurements and interpretations to be more complex . Hand gesture recognition is a domain where these techniques can be used . The use of hand-gestures can provide non-verbal cues for a natural human-computer interaction . In our system , we use posture recognition on data obtained from the DataGlove to obtain categorical and parametric information to drive facial animation . In the ensuing sections we present briefly the posture recognition technique , its continuous classification and application to facial animation control . 6.3.1 Recognition Technique Posture recognition is a multi-class learning problem : this means that the system has to find an approximate definition for an unknown function f mapping a feature vector x to its class f -LRB- x -RRB- , given a set of training examples of the form -LCB- x -LSB- i -RSB- , f -LRB- x -LSB- i -RSB- -RRB- -RCB- , where the x -LSB- i -RSB- represents vectors containing the various angles of flexion of the fingers . It therefore involves extraction of invariant feature vectors from the raw sensor data , and the definition of the right mapping function . The recognition technique here is based on multi-layer perceptrons -LRB- MLPs -RRB- 23 , a type of artificial neural network which is potentially able to approximate any real function2 . A multi-layer perceptron consists of several layers of processing units with multiple inputs and one single output which are connected by weighted links . During training each output unit is taught to discriminate between its associated class and all the others by presenting a binary target value equal to +1 if the current input is a member of the class and -1 if not . For training we use a scaled conjugate gradient algorithm7 to minimize the objective function . Once learning is completed , the weights are frozen and classification is done corresponding to the most active output unit for each of the patterns presented to the network . 6.3.2 Continuous Classification In order to use the classifier for continuous recognition we use activation thresholds and multiple networks trained on the same examples from different initial conditions . When no posture is currently selected , the system waits until the hand fingers are considered `` steady . '' We compare the maximum instantaneous flex speed with a user-defined threshold . When the hand is considered steady , different networks -LRB- usually three -RRB- are asked to classify the current hand configuration . A network recognizes a posture only if its most active output unit has a value superior to an upper activation threshold while all the others have their value inferior to a lower activation threshold . The results are then compared and a classification is chosen only if all of the network gives the same response . When a posture is selected , the classifier asks the three networks to classify the data using the same techniques , but with less demanding activation thresholds in order to obtain a stable classification . 6.3.3 Facial Animation Control Once a posture is recognized , parametric information can be extracted from the location of hand and how it moves . This information can then be used to drive the facial animation . The type of posture as the categorical information can be associated with a type of action performed by the face . We experimented with two types of controls : direct control at the expression level and higher level control at the emotion level . In the first case , putting the hand in a given posture sets the type of expression for face , while the orientation of the hand controls the expression 's intensity . We found this way of control to be adequate for facial editing , but inadequate for real-time animation control . Control at the higher level , for example the emotion level , is much more appropriate . In this case : putting the hand in a posture selects the type of emotion , while the orientation of the hand at the beginning of the posture with respect to the absolute vertical direction controls the overall intensity of the emotion , and the amount of rotation between the beginning and the end of the posture controls the overall duration . Gesture dialogue for facial animation control provides a continuous dynamic interaction . In this approach one can specify his own definition of a particular gesture by training the gesture recognition system and can associate it with one type of emotion or other task-entity . This gives more flexibility and freedom to the user for controlling the animation . The position of the hand with respect to a fixed reference frame is normally used to control geometric information such as head and eye rotations . A typical use of this kind of control is to have the synthetic human look at the position of the real hand . Fig 6 shows the example where the movement of the hand correspondingly moves -LRB- turns -RRB- the head . There does not exist rules to establish the correspondence of a given gesture and an expression , however , experimentation has lead to some natural associations . For example , a gesture from closed fist to completely open hand can indicate the total onset of an expression like `` surprise '' , similarly bending fingers interiorly may be attached to `` eyes blinks '' or to `` head nodding '' . The advantage of the gesture recognition system is to have the flexibility of defining ones own gesture for a given expression . One of the main disadvantages using gesture dialogue as a control means for facial animation is the poor precision offered by the DataGlove . This prohibits the use of this device for fine-tuning . However , for global action manipulation , this provides a natural means of nonverbal communication and interaction method . For duration control of emotion , it is better to associate it with the duration of the gesture itself so as to establish a temporal correspondence between animator 's action and the action executed . 7 . Discussion In the preceding section we have described the input accessories for facial animation control showing their positive and negative potentials . Adhering to one type of accessory may not give the suitable control for every situation . Therefore , in order to obtain better animation control , it is desirable to integrate the different means of control . The integration may be at functional unit level where different actions are performed using different input accessories . For example , the head motion may be coming from gesticulation of the DataGlove and other emotions and conversational signals may be coming from the MIDI - keyboard or the script . Consequently , we can combine the positive features of different means of controls . A final script in the form of set of MPAs with respective intensity for each frame can be generated , which may be used later for the production of final animation . There may also be a possibility to have multi-pass system where execution of each pass gives feedback for further refinement and the corresponding change is incorporated in the subsequent pass . For example , there may be a script running with a pre-defined animation and at certain point , a modification is required for the running action . A change in this action may be initiated by another input accessory and the output script is now a modified script of animation . This script when running in the next pass would render the desired animation . This provides incremental refinement of animation without going back to redefine the definition of involved entities . Independent execution of input accessories enables multi-user control at the same time , each user can control one type of accessory and manipulate the relevant functions associated with it . The system described is an experimental software still under development . The animation results obtained have still limitations on speed and the type of control . The control for fine-tuning is restricted . Possibility to reconfigure and redefine the higher level entities in terms of set of lower level actions using multiple-pass concept will give richer vocabulary for the process of control . We have employed blending of actions only in the spatial context , we propose to include temporal blending where the history of an action will affect the score of its current status . We can also use live video performance to generate synthetic facial animation17 . We intend to integrate this in the system . A live video performance can provide fast the temporal characteristics for an animation template . This template may then be modified , enhanced and complemented as per the requirements using other accessories . Integration of voice and speech recognition will provide another dimension in the control mechanism . 8 . Implementation The System is written in C with the interface built on top of the Fifth Dimension Toolkit25 . The various input components are independent processes running on UNIX workstations . The communication between the processes is done through sockets in stream mode -LRB- sequenced two-way communication based on byte streams -RRB- using the Internet protocol . Figure 7 shows the components of a proposed system where each component is a different 3D device or a media . The input components communicate with the central process through inter process communication -LRB- IPC -RRB- . A command IPC-server starts the server on the machine , the command is executed . The server basically accepts and distributes messages to all its clients . The output of each component is further processed by IPC-filter to get the desired mapping between the IPC outgoing messages of each components to the incoming action streams to the central process . The central process basically composes the IPC messages coming from different sources and produces the relevant stream of actions -LRB- MPAs -RRB- to be performed by the face model . Sensory feedback can be provided to users by different means , e.g. real time animation serves as the visual feedback , MIDI output may provide audio feedback and a text output may provide the final animation sequence script . IPC protocol allows the flexibility of developing each component individually and then hook up with the main process . Voice Speech Gesture MIDI LVD Text `` smile '' Central Process FACE MODEL Clock-Tick Visual Audio Text Outputs Fig. 7 : Proposed system with multimedia components for facial animation control . 9 . Conclusion Face is a multisignal and multimessage system5 . To interact with such a system we need multiple channels of inputs . We present an open hybrid system for facial animation . It encapsulates a considerable amount of information regarding facial models , movements , expressions , emotions and speech . The complex description of facial animation can be handled better by assigning multiple input accessories . These input accessories may be a simple script or a multi-input musical keyboard or a gesture dialogue from the DataGlove or some other type of interactive physical or virtual device . Integration of all means of control offers flexibility and freedom to the animator . The scope of such an open system is tremendous . Virtual worlds would be desolate indeed without things like synthetic faces that we can relate to and understand . Acknowledgments We are grateful to Hans Martin Werner for editing the manuscript . The research is supported by Le Fonds National pour la Recherche Scientifique . References 1 . Bergeron P , Lachapelle P -LRB- 1985 -RRB- Controlling Facial Expressions and Body Movements in the Computer Generated Animated Short ? Tony de Peltrie ? . SIGGRAPH ? 85 Tutorial Notes , Advanced Computer Animation Course . 2 . Cybenko G -LRB- 1989 -RRB- Approximation by Superposition of a Signoidal Function , Math , Control Signals and Systems -LRB- 2 -RRB- , pp . 303-314 . 3 . deGraf B -LRB- 1989 -RRB- in State of the Art in Facial Animation , SIGGRAPH '89 Course Notes No. 26 , pp. 10-20 . 4 . Ekman P , Friesen WV -LRB- 1975 -RRB- , Unmasking the Face : A Guide to Recognizing Emotions from Facial Clues , Printice-Hall 5 . Ekman P , Friesen WV -LRB- 1978 -RRB- , Facial Action Coding System , Investigator 's Guide Part 2 , Consulting Psychologists Press Inc. . 6 . Gross D -LRB- 1991 -RRB- , Merging Man and Machine , Computer Graphics World , Vol . 14 , No. 5 , pp. 47-50 . 7 . Hestenes M -LRB- 1980 -RRB- , Conjugate Direction Methods in Optimization , Springer Verlag , New York . 8 . Hill DR , Pearce A , Wyvill B -LRB- 1988 -RRB- , Animating Speech : An Automated Approach Using Speech Synthesized by Rules , The Visual Computer , Vol . 3 , No. 5 , pp. 277 - 289 . 9 . Kalra P , Mangili A , Magnenat-Thalmann N , Thalmann D -LRB- 1991 -RRB- SMILE : A Multilayered Facial Animation System , Proc IFIP WG 5.10 , Tokyo , Japan -LRB- Ed Kunii Tosiyasu L -RRB- pp. 189-198 . 10 . Kalra P , Mangili A , Magnenat-Thalmann N , Thalmann D -LRB- 1992 -RRB- Simulation of Muscle Actions using Rational FreeForm Deformations , Proc . Eurographics ? 92 , Computer Graphics Forum , Vol . 2 , No. 3 , pp . 59-69 . 11 . Kaneko M , Koike A , Hatori Y -LRB- 1992 -RRB- Automatic Synthesis of Moving Facial Images with Expression and Mouth Shape Controlled by Text , Proc CGI ? 92 , Tokyo -LRB- Ed T L Kunii -RRB- , pp. 57-75 . 12 . Lewis JP , Parke FI -LRB- 1987 -RRB- , Automated Lipsynch and Speech Synthesis for Character Animation , Proc . CHI '87 and Graphics Interface ' 87 , Toronto , pp. 143-147 . 13 . Lewis JP -LRB- 1992 -RRB- , Automated Lipsynch : Background and Techniques , The Journal of Visualization and Computer Animation , Vol . 2 , No. 4 , pp. 118-122 , 1992 . 14 . Magnenat-Thalmann N , Thalmann D -LRB- 1987 -RRB- , The Direction of Synthetic Actors in the film Rendez-vous ? Montr?al , IEEE Computer Graphics and Applications , Vol . 7 , No. 12 , pp. 9-19 . 15 . Magnenat-Thalmann N , Primeau E , Thalmann D -LRB- 1988 -RRB- , Abstract Muscle Action Procedures for Human Face Animation , The Visual Computer , Vol . 3 , No. 5 , pp. 290-297 . 16 . Magnenat-Thalmann N , Thalmann D -LRB- 1991 -RRB- , Complex Models for Visualizing Synthetic Actors , IEEE Computer Graphics and Applications . Vol . 11 , No. 5 , pp. 32 - 44 . 17 . Magnenat-Thalmann N , Cazedevals A , Thalmann D -LRB- 1993 -RRB- , Modelling Facial Communication between an Animator and a Synthetic Actor in Real Time , Proc Modeling in Computer Graphics , Genova , Italy -LRB- Ed Falcidieno B and Kunii TL -RRB- pp. 387-396 . 18 . Parke FI -LRB- 1982 -RRB- , Parametrized Models for Facial Animation , IEEE Computer Graphics and Applications , Vol . 2 , No. 9 , pp. 61-68 . 19 . Parke FI -LRB- 1991 -RRB- , Control Parameterization for Facial Animation , Proc . Computer Animation ' 91 , Geneva , Switzerland , -LRB- Eds Magnenat-Thalmann N and Thalmann D -RRB- , pp. 3-13 . 20 . Pearce A , Wyvill B , Hill DR -LRB- 1986 -RRB- , Speech and Expression : A Computer Solution to Face Animation , Proc . Graphics Interface ' 86 , Vision Interface ? 86 , pp. 136-140 . 21 . Pelachaud C , Badler NI , Steadman M -LRB- 1991 -RRB- , Linguistic Issues in Facial Animation , Proc . Computer Animation ' 91 , Geneva , Switzerland , -LRB- Eds Magnenat-Thalmann N and Thalmann D -RRB- , pp. 15-30 . 22 . Platt S , Badler NI -LRB- 1981 -RRB- , Animating Facial Expressions , Proc SIGGRAPH ' 81 , Computer Graphics , Vol . 15 , No. 3 , pp. 245-252 . 23 . Rumelhart D. E. , Hinton G. E. , Williams R. J. -LRB- 1986 -RRB- , Learning Internal Representations by Error Propagation . In Rumelhart D. E. , McClellend J. L. -LRB- eds . -RRB- , Parallel Distributed Processing , Vol . 1 : 318-362 . 24 . Terzopoulos D , Waters K -LRB- 1991 -RRB- Techniques for Realistic Facial Modeling and Animation , Proc . Computer Animation ' 91 , Geneva , Switzerland , -LRB- Eds MagnenatThalmann N and Thalmann D -RRB- , pp. 59-74 . 25 . Turner R , Gobbetti E , Balaguer F , Mangili A , Thalmann D , Magnenant-Thalmann N -LRB- 1990 -RRB- , An Object-Oriented Methodology Using Dynamic Variables for Animation and Scientific Visualization , Proc CGI 90 , Singapore , -LRB- Eds Chua TS , Kunii TL -RRB- , pp. 317-328 . 26 . Waters K -LRB- 1987 -RRB- , A Muscle Model for Animating Three Dimensional Facial Expression , Proc SIGGRAPH ' 87 , Computer Graphics , Vol . 21 , No. 4 , pp . 17-24 . 27 . Williams L -LRB- 1990 -RRB- , Performance Driven Facial Animation , Proc SIGGRAPH ' 90 , Computer Graphics , Vol . 24 , No. 3 , pp. 235-242 . 28 . Zeltzer D -LRB- 1982 -RRB- , Motor Control Techniques for Figure Animaiton , IEEE Computer Graphics and Applications , Vol . 2 , No. 9 , pp. 53-59 .

O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O 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 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 O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O 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 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 O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O 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 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 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 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 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 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 O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O 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 O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O


An Efficient Permutation-Based Parallel Algorithm for Range-Join in Hypercubes ? Hong Shen School of Computing and Information Technology Griffith University Nathan , QLD 4111 , Australia September 10 , 1993 Abstract The range-join of sets R and S is defined to be the set containing all tuples -LRB- r ; s -RRB- that satisfy e1 < = jr ? sj < = e2 , where r 2 R , s 2 S , e1 and e2 are fixed constants . This paper proposes an efficient parallel range-join algorithm in hypercubes . To compute the range-join of two sets R and S on a hypercube of p processors -LRB- p < = jRj = m < = jSj = n -RRB- , the proposed algorithm simply permutes the elements of R to obtain their possible combinations with the elements S and thus all possible local range-joins . Requiring only O -LRB- m + n p -RRB- local memory at each processor , our algorithm has a time complexity O -LRB- -LRB- np + m -RRB- log np -RRB- in the best case when no element in S matches any element in R ; O -LRB- T ksort + mnp -RRB- in the worst case when all elements in S match each element in R , where T ksort = O -LRB- k log k -RRB- when all elements in S are distinct , and T ksort = O -LRB- k -RRB- when all elements in S are equal , k = np . The general-case time complexity of the algorithm is also shown . 1 Introduction Given two sets R and S containing m and n elements respectively , we are required to compute another set whose elements are those tuples -LRB- r ; s -RRB- in the Cartesian product of R and S such that the -LRB- absolute value -RRB- difference between r and s is within the range -LSB- e1 , e2 -RSB- , where < = e1 < = e2 are two fixed constants . This problem is called range-join of R and S , denoted by R 1e2e1 S . The range-join becomes equijoin in databases -LSB- 10 -RSB- -LRB- join in most cases -RRB- when e2 = 0 . For simplicity and without loss of generality , we assume that elements in R and S are all numbers . ? This work was partially supported by Australia Research Council under its Small Grants Scheme . Join is one of the most fundamental operations in database systems and has important applications in other fields as well -LSB- 10,12 -RSB- . The join problem has been extensively studied and various algorithms have been proposed in the literature -LSB- 12 -RSB- . Hash-based join has been known the most efficient way so far for solving the equijoin problem , but it is ineffective for the range-join problem when e2 > 0 , as it is for band-joins -LSB- 5 -RSB- , due to the unlikelihood of having a simple hash function to partition data properly . There has been a variety of parallel join algorithms proposed for solving the equijoin problem during recent years -LSB- 1-5 ,7 -9,11 -RSB- and most of them use hash-based join techniques . But very few results are known on non-equijoins . The recent experimental work on so-called band-join is perhaps the only published result on parallel non-equijoin -LSB- 5 -RSB- . Like equijoin , the band-join -LRB- covering only a single continuous area -RRB- is a special case of our range-join when the join condition -LRB- covering both one and two continuous areas -RRB- becomes c1 < = s ? r < = c2 . We believe that this paper presents the first parallel algorithm for solving the general range-join problem in hypercube computers . In this paper , we propose a simple and efficient parallel algorithm for solving the range-join problem which runs on a hypercube SIMD machine without shared memory or disk . 2 Preliminaries A hypercube consists of 2d -LRB- d > = 0 -RRB- processors addressed from to 2d ? 1 by d-bit numbers -LRB- id ? 1id ? 2 ? ? ? i0 -RRB- , where d is called the dimension of the hypercube . All the processors are connected via bidirectional links by a set of interconnection functions : I0 , I1 , Id ? 1 , where Iw connects each pair of processors whose addresses differ only at the exact 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 8 processors . The following are the usual assumptions on a hypercube computer which we follow 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 also has 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 . P P P P P P P 1 3 P 5 2 4 6 7 dimension 1 dimension 2dimension 0 Figure 1 : A hypercube of 8 processors The range-join of two sets is defined as follows : Definition 1 Let R and S be two sets containing m and n numbers respectively -LRB- m < = n -RRB- , e1 and e2 two constants -LRB- 0 < = e1 < = e2 -RRB- . The range-join of R and S , denoted by R 1e2e1 S , is a set T containing all tuples -LRB- r ; s -RRB- satisfying e1 < = jr ? sj < = e2 , where r 2 R and s 2 S . We say that r 2 R matches s 2 S -LRB- in range -LSB- e1 , e2 -RSB- -RRB- if e1 < = jr ? sj < = e2 . Thus all the elements in T are matching tuples . Obviously the size of set T depends entirely on the data distribution in R and S . 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 R 1e2e1 S in the worst case is ? -LRB- mn -RRB- and it is tight . The correctness of the lemma is trivial since the range-join of R and S will have mn tuples in the worst case when all elements in S match every element in R. 3 The algorithm Let data sets R and S be evenly distributed in a hypercube of p processors , p = 2d < = jRj = m < = jSj = n , and processor Pi hold Ri and Si , < = i < = 2p ? 1 . We are required to compute the the range-join of R and S : T = R 1e2e1 S . The basic idea of our algorithm is to permute all subsets R0 , R1 , ? ? ? , Rp ? 1 of R in the hypercube such that they can meet Si at processor Pi to form all possible combinations of Rj and Si for < = i ; j < = p ? 1 . Defining a proper method for local range-join of Rj and Si , we can easily compute Ti = -LSB- p ? 1 j = 0Rj 1e2e1 Si at processor Pi for all < = i < = p ? 1 . Hence we have obtained T which is distributed over the local disks of p processors of the hypercube : T = -LSB- p ? 1 i = 0 Ti , where the local disk of Pi holds Ti for < = i < = p ? 1 . Theorem 1 Assume that p equal-sized data blocks , A0 , A1 , Ap ? 1 , are evenly distributed 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 . Proof The correctness of the theorem can be seen by observing the fact that traversal of a p-node hypercube from any node , and thus transfer of data from any node to all other nodes in the hypercube , can be completed in p ? 1 sequential steps along a Hamiltonian path -LSB- 6 -RSB- defined by a sequence of links in dimensions given by the theorem . Here we give a proof by induction on the dimension -LRB- d -RRB- of the hypercube . 1 1 2 2 3 3 1 32 first phase permuting in dimension 0 second phase in dimension 1 third phase in dimension 0 d' - dimensional subcube d' - dimensional subcube -LRB- 1 -RRB- Permute data in two d' - dimensional subcubes ; -LRB- 2 -RRB- Exchange data in dimension d' +1 ; -LRB- 3 -RRB- Permute new data in two d' - dimensional subcubes . dimension d' +1 -LRB- b -RRB- Data permuting in -LRB- d' +1 -RRB- - dimensional hypercube P p0 2 p3 1p -LRB- a -RRB- Data permuting in 2-dimensional hypercube Figure 2 : Data permuting in hypercubes When d = 1 the theorem is trivial . When d = 2 , the number of of phases of data permuting needed is 3 . By the theorem , the permutation is carried out in dimension-sequence f0 ; 1 ; g , which obviously transfers data from each processor to all other processors as shown in Figure 2 -LRB- a -RRB- . Assume that the theorem is true for d < = d0 , and denote the dimension-sequence for permuting data defined by the theorem by permutd0 . When d = d0 + 1 , by the theorem , since w0 is same for q and 2d0 + q -LRB- 1 < = q < = 2d0 ? 1 -RRB- , the dimensionsequence is fpermutd0 , d0 , permutd0g . This is clearly true , since data permuting in a -LRB- d0 + 1 -RRB- - dimensional hypercube can be realized by first permuting data within its two d0-dimensional subcubes , then exchanging data in the two subcubes , and finally permuting the new data within the two subcubes , which is depicted in Figure 2 -LRB- b -RRB- . 2 From the above proof , a recursive data permutation algorithm as described in -LSB- 2 -RSB- is trivial . Here we present a non-recursive permutation algorithm that is more efficient as it eliminates the recursive calls -LRB- O -LRB- p log p -RRB- in total -RRB- needed in the recursive algorithm . 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 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- Proof Let qt ? 1qt ? 2 ? ? ? q0 = qt ? 1qt ? 2 ? ? ? qw0 +110 ? ? ? be the binary representation of q , where the w0th bit is q 's least significant \ 1 '' bit , < = w0 < = t ? 1 . Obviously ? q = qt ? 1qt ? 2 ? ? ? qw0 +101 ? ? ? 1 , and ? q + 1 = qt ? 1qt ? 2 ? ? ? qw0 +110 ? ? ? 0 . Thus q ? -LRB- ? q + 1 -RRB- = -LRB- qt ? 1ANDqt ? 1 -RRB- -LRB- qt ? 2ANDqt ? 2 -RRB- ? ? ? -LRB- qw0 +1 ANDqw0 +1 -RRB- -LRB- 1AND1 -RRB- -LRB- 0AND0 -RRB- ? ? ? -LRB- 0AND0 -RRB- = 00 ? ? ? 10 ? ? ? : Hence w0 = log -LRB- q ? -LRB- ? q + 1 -RRB- -RRB- . 2 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 . Note that we need to compute w0 by Equation -LRB- 1 -RRB- 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 . By Theorem 1 , we know that for < = j < = p ? 1 all combinations of Rj and Si will be obtained at Pi -LRB- 0 < = i < = p ? 1 -RRB- in p ? 1 steps of data permuting , each exchanging two data blocks of size mp , and in O -LRB- m + n p -RRB- . The remaining problem is how to realise the local range-join for computing Rj 1e2e1 Si at processor Pi . Our approach is the following : First have Si sorted in nondecreasing order -LRB- from left to right -RRB- by using a sequential sorting algorithm ; then search -LRB- binary search -RRB- Si to find the correct position for each element of Rj ; finally join each element -LRB- r -RRB- of Rj with the next neighbour -LRB- s -RRB- on the left to its position in Si if r ? s > = e1 until r ? s > e2 , and with the next neighbour -LRB- s -RRB- on the right to its position in Si if s ? r > = e1 until s ? r > e2 . Assuming that fs0 ; s1 ; ? ? ? ; snp ? 1g is the sorted nondecreasing sequence of Si , it is obvious that if r ? sk > e2 then r ? sk ? > e2 for all < = k ? < k , and if sk ? r > e2 then sk + ? r > e2 for all k < k + < np ? 1 . This means that when r is \ inserted '' into Si , it needs to be joined only with its left-side matching neighbours and right-side matching neighbours in Si one by one respectively until the difference of their values exceeds e2 . Assume that we are given a sequential procedure SEQSORT -LRB- Y -RRB- that sorts Y into nondecreasing order , and a sequential binary-search procedure SEARCH -LRB- Y , x , bk , bk +1 -RRB- that searches for the correct position of x in sorted sequence Y and outputs -LRB- yk ; yk +1 -RRB- such that yk < = x < = yk +1 . Clearly the time complexity is O -LRB- jY j log jY j -RRB- for SEQSORT and O -LRB- log jY j -RRB- for SEARCH . The following procedure realises sequential range-join of two data sets A and B which will be used for local range-join at each processor , where a ffi b denotes the join -LRB- simple concatenation in most cases -RRB- of elements a and b. Procedure RANGE-JOIN -LRB- A , B , e1 , e2 , C -RRB- f * Compute the range-join of A and B on a uniprocessor , jAj < = jBj . Input A = fa0 ; a1 ; ? ? ? ; ajAj ? 1g , B = fb0 ; b1 ; ? ? ? ; bjBj ? 1g , e1 and e2 , where B is sorted in nondecreasing order , output C = fc0 ; c1 ; ? ? ? ; cjBj ? 1 -RRB- . * g t : = 0 ; for i : = to jAj ? 1 do if -LRB- jai ? b0j < = e2 -RRB- ^ -LRB- jai ? bjBj ? 1j < = e2 -RRB- then for j : = to jBj ? 1 do if jai ? bj j > = e1 then ct : = ai ffi bj ; if t = jBj ? 1 then write C to -LRB- local -RRB- disk ; t : = -LRB- t + 1 -RRB- mod jBj ; 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 ? ai < = e2 -RRB- ^ -LRB- ai ? bjBj ? 1 < = e2 -RRB- then f * ai may match some elements in B. * g SEARCH -LRB- B , ai , bk , bk +1 -RRB- ; f * Search for the correct position of ai in B and obtain -LRB- bk ; bk +1 -RRB- , where bk < = ai < = bk +1 , ? 1 < = k < = jBj ? 1 , b ? 1 = ? 1 and bjBj = 1 . * g j : = k ; while -LRB- ai ? bj < = e2 -RRB- ^ -LRB- j > = 0 -RRB- do if jai ? bj j > = e1 then ct : = ai ffi bj ; if t = jBj ? 1 then write C to disk ; t : = -LRB- t + 1 -RRB- mod jBj ; j : = j ? 1 ; f * Join ai with its left-side neighbours in B within range -LSB- e1 , e2 -RSB- . * g j : = k + 1 ; while -LRB- bj ? ai < = e2 -RRB- ^ -LRB- j < = jBj ? 1 -RRB- do if jai ? bj j > = e1 then ct : = ai ffi bj ; if t = jBj ? 1 then write C to -LRB- local -RRB- disk ; t : = -LRB- t + 1 -RRB- mod jBj ; j : = j + 1 ; f * Join ai with its right-side neighbours in B within range -LSB- e1 , e2 -RSB- . * g if t < jBj ? 1 then write C to disk ; f * Write the last unfilled block of result to disk . * g end . As computing ai ffi bj and writing a block -LRB- C -RRB- of data to disk can be completed in time O -LRB- 1 -RRB- , the complexity of the above procedure is O -LRB- PjAj ? 1 i = 0 -LRB- log jBj + jB -LRB- ai -RRB- j -RRB- -RRB- , where B -LRB- ai -RRB- is the subset of B whose elements match ai . Clearly this time complexity becomes O -LRB- jAj log jBj -RRB- in the best case when no more than O -LRB- log jBj -RRB- elements in B match ai -LRB- jB -LRB- ai -RRB- j < = log jBj -RRB- , and O -LRB- jAjjBj -RRB- in the worst case when all elements in B match ai -LRB- jB -LRB- ai -RRB- j = jBj -RRB- , for < = i < = jAj ? 1 . We are now ready to describe our hypercube parallel algorithm for computing the range-join of R and S as follows . Algorithm CUBE-PERMUTE-JOIN -LRB- R , S , e1 , e2 , p , T -RRB- f * Compute the range-join of R and S in a hypercube of p = 2d processors . Input R = -LSB- p ? 1 i = 0 Ri , S = -LSB- p ? 1 i = 0 Si , e1 , e2 , p , where Ri , Si , e1 , e2 and p are stored in Pi ; output T = -LSB- p ? 1 i = 0 Ti , where Ti = -LSB- p ? 1 j = 0Rj 1e2e1 Si is stored in Pi . * g 1 . for i : = to p ? 1 do in parallel 1.1 SEQSORT -LRB- Si -RRB- ; 1.2 RANGE-JOIN -LRB- Ri , Si , e1 , e2 , Ti -RRB- ; f * Ti : = Ri 1e2e1 Si . * g 2 . for q : = 1 to p ? 1 do f * Permute Ri p ? 1 times to transfer it to all processors in the hypercube for all < = i < = p ? 1 . * g 2.1 for i : = to p ? 1 do in parallel 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.3 Ri ! Ri -LRB- w -RRB- ; 2.4 RANGE-JOIN -LRB- Ri , Si , Ti -RRB- ; f * Exchange Ri and Ri -LRB- w -RRB- , compute Ti = Ri 1e2e1 Si and write it to local disk . * 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.1 needs time O -LRB- np log np -RRB- ; ffl Steps 1.2 and 2.4 need time O -LRB- mp ? 1 X i = 0 -LRB- log n p + p ? 1 max j = 0 fjS -LRB- rkmp + i -RRB- j jg -RRB- -RRB- ; where S -LRB- rkmp + i -RRB- j is the subset in Sj whose elements match rk mp + i ; ffl All other steps can be completed in time O -LRB- 1 -RRB- . The total running time of CUBE-PERMUTE-JOIN is therefore T1e2e1 = O -LRB- n p log n p + m log n p + p ? 1 X k = 0 mp ? 1 X i = 0 p ? 1 max j = 1 fjS -LRB- rkmp + i -RRB- j jg -RRB- ; -LRB- 2 -RRB- where S -LRB- rk mp + i -RRB- j is the subset in Sj whose elements match rk mp + i . In the best case when no element in S matches any element in R , maxp ? 1 j = 0 jS -LRB- ri -RRB- j j = 0 , so Equation -LRB- 2 -RRB- becomes T1e2e1 = O -LRB- -LRB- n p + m -RRB- log n p -RRB- : -LRB- 3 -RRB- In one worst case when all elements in S are distinct and match each element in R , S -LRB- ri -RRB- j = Sj for all i and j , so Equation -LRB- 2 -RRB- is T1e2e1 = O -LRB- n p log n p + m -LRB- log n p + n p -RRB- -RRB- = O -LRB- n p log n p + mn p -RRB- : -LRB- 4 -RRB- In another worst case when all elements in S are same , the first item in the above equation will disappear as sorting of Si can be simply completed in time O -LRB- jSij -RRB- = O -LRB- np -RRB- using quicksort -LRB- SLi = SGi = ; and SEi = Si after the partitioning phase -RRB- , so the worst-case time complexity of the algorithm becomes T1e2e1 = O -LRB- mn p -RRB- ; -LRB- 5 -RRB- which shows that the algorithm is cost-optimal by Lemma 1 . In all cases , the local memory requirement of each processor is clearly O -LRB- m + n p -RRB- . Hence we have the following main theorem : Theorem 2 Let sets R and S be evenly distributed in a hypercube of p processors , where p < = jRj = m < = jSj = n and processor Pi holds subsets Ri and Si , < = i < = p ? 1 . The range-join of R and S can be computed on the hypercube with O -LRB- m + n p -RRB- local memory at each processor in time at most -LRB- a -RRB- T1e2e1 = O -LRB- n p log n p + m log n p + p ? 1 X k = 1 mp ? 1 X i = 0 p ? 1 max j = 0 fjS -LRB- rkmp + i -RRB- j j -RRB- ; -LRB- 6 -RRB- in the general case , where S -LRB- rkmp + i -RRB- j is the subset in Sj whose elements match rkmp + i ; -LRB- b -RRB- T1e2e1 = O -LRB- -LRB- n p + m -RRB- log n p -RRB- ; -LRB- 7 -RRB- in the best case when no element in S matches any element in R ; -LRB- c -RRB- T1e2e1 = O -LRB- T ksort + mn p -RRB- ; -LRB- 8 -RRB- in the worst case when all elements in S match each element in R , where T ksort = O -LRB- k log k -RRB- when all elements in S are distinct , and T ksort = O -LRB- k -RRB- when all elements in S are equal , k = np . Remark If each processor in the hypercube does not provide logic AND and COMPLEMENT operations , O -LRB- log log q -RRB- time is sufficient to compute the least significant \ 1 '' bit of integer q by searching q 's binary code using integer multiplication and division for various bit shifts . 2 4 Concluding remarks An interesting problem arising in many fields is to compute the join of two data sets . There have been various parallel algorithms for the equijoin problem based mainly on the hash-based join method which has been shown very effective for equijoin . We have raised in this paper the problem of range-join , that is , joining each pair of elements -LRB- of two sets -RRB- whose difference is within the range of two fixed constants . Covering both equijoin and non-equijoin , the range-join is a class of general join problems to which the hash-based join technique is difficult to apply and for which no effective parallel solution was previously known . We have proposed a simple and efficient parallel algorithm for solving the range-join problem on hypercubes that uses the technique of join by permuting data , and obtained the precise time complexity of the algorithm . For computing the range-join of two sets R and S on an SIMD hypercube computer with p processors , where p < = jRj = m < = jSj = n , our algorithm requires only O -LRB- m + n p -RRB- local memory at each processor and has a time complexity O -LRB- -LRB- np + m -RRB- log np -RRB- in the best case when no element in S matches any element in R , O -LRB- np log np + mnp -RRB- in the worst case when all elements in S are distinct and match each element in R , and O -LRB- mnp -RRB- in the worst case when all elements in S are same and match each element in R . When m < p < = n , our algorithm will also work correctly . Clearly , if m < p , during each of the p ? 1 phases of permuting data of R , some processors may receive nothing and therefore do nothing in the following local join in that phase . Note that when m o p , sending the data of R by m phases broadcasting , each taking time O -LRB- log p -RRB- , can be more efficient than by permuting , so the algorithm should be modified by simply replacing permuting data with broadcasting data , i.e. join is realised by broadcasting data of R rather than by permuting data of R . We call this type of join broadcasting-based join . By Theorem 2 and CUBE-PERMUTE-JOIN , for m < p < = n the best-case and worst-case time complexity of permutation-based join and broadcasting-based join can be easily derived and is given as follows : Corollary 1 When m = jRj < p < = jSj = n , the range-join of R and S can be computed in a hypercube of p processors with O -LRB- m + n p -RRB- local memory in time at most -LRB- a -RRB- T1e2e1 = -LRB- O -LRB- -LRB- np + p -RRB- log np -RRB- by permutation-based join O -LRB- np log np + m log n -RRB- by broadcasting-based join -LRB- 9 -RRB- in the best case when no element in S matches any element in R ; -LRB- b -RRB- T1e2e1 = -LRB- O -LRB- T ksort + n -RRB- by permutation-based join O -LRB- T ksort + m log p + mnp -RRB- by broadcasting-based join -LRB- 10 -RRB- in the worst case when all elements in S match each element in R . The following corollary showing comparisons between permutation-based join and broadcasting-based join is straightforward from Corollary 1 : Corollary 2 To compute the range-join of R and S on a hypercube of p processors for m = jRj < p < = jSj = n , broadcasting-based join has a better best-case time complexity than permutation-based join when m < p -LRB- 1 ? log p log n -RRB- , and a better worst - case time complexity when m < p -LRB- 1 ? p log p p log p + n -RRB- . Moreover , when m o p < = n , permutation-based join in the opposite direction , i.e. permuting the larger set S while keeping the smaller set R , is simpler than -LRB- due to no sorting and searching overheads -RRB- and almost as efficient as permuting R while keeping S and therefore is also an adaptable method . Finally , looking at the general form of the range-join problem : compute all tuples -LRB- r ; s -RRB- in the Catersian product of R and S such that r ? s 2 -LSB- e -LRB- i -RRB- 1 ; e -LRB- i -RRB- 2 -RSB- , where e -LRB- i -RRB- 1 < = e -LRB- i -RRB- 2 < = e -LRB- i +1 -RRB- 1 < = e -LRB- i +1 -RRB- 2 are fixed constants , 1 < = i < = c , and c is a fixed integer , we found that the proposed algorithm can be directly modified to solve it by simply adjusting the partitioning criteria in RANGE-JOIN . Acknowledgments The author wishes to thank Shao Dong Chen and Rodney Topor for various discussions and comments in shaping this paper . Thanks also to Paul Pritchard for his help in formulating Equation -LRB- 1 -RRB- and for his comments on the manuscript . 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 , 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- A. Hijenhuis and H.S. Wilf , Combinatorial Algorithms , Academic Press , New York -LRB- 1978 -RRB- . -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- J.D. Ullman , Principles of Database Systems , Computer Science Press , Rockville -LRB- 1980 -RRB- . -LSB- 11 -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- 12 -RSB- M.T. ? Ozsu and P. Valduriez , Principles of Distributed Database Systems , Prentice-Hall , Englewood Cliffs -LRB- 1991 -RRB- .

O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O 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 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 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 B O O O O O O O B O O O O O O O O O B 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 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 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 B 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 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 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 O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O 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 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 O O O O O O O O O O O O O O O O O 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 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 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 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 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 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 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 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 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 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 B 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 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 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 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 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 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 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 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 B O O B 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 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 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 O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O 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 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

hypercube
parallel algorithms
permuting
processors
time complexity