Implementing Distributed Search Structures Padmashree Krishna Theodore Johnson pk@cis.ufl.edu ted@cis.ufl.edu Computer and Information Sciences Department University of Florida Gainesville , FL 32611 November 4 , 1992 Abstract Distributed search structures are useful for parallel databases and in maintaining distributed storage systems . Although a considerable amount of research has been done on developing parallel search structures on shared-memory multiprocessors , little has been done on the development of search structures for distributed-memory systems . In this paper we discuss some issues in the design and implementation of distributed B-trees , such as methods for low-overhead synchronization of tree restructuring and node mobility . One goal of this work is to implement a data-balanced dictionary which allows for balanced processor and space utilization . We present an algorithm for dynamic data-load balancing which uses node mobility mechanisms . We also study the effects that balancing and not balancing data have on the structure of a distributed B-tree . Finally , we demonstrate that our load-balancing algorithm distributes the nodes of a B-tree very well . 1 Introduction Current commercial and scientific database systems deal with vast amounts of data . Since the volume of data to be handled is so large , it may not be possible to store all the data at one place . Hence , distributed techniques are necessary to create large scale efficient distributed storage -LSB- 7 -RSB- . Larger amounts of data can be stored by partitioning the system , which also allows for parallel access to the data . The distributed data management 's complexity depends strongly on the data structures used . One can improve locality , increase the availability , and make the system more fault tolerant by intelligently distributing a data structure . Much research has been done on developing parallel search structures on shared-memory multiprocessors , but little has been done on developing search structures for distributed-memory systems . One such search structure is the B-tree . In this paper , we consider the design and implementation issues involved in distributing a B-tree on a message-passing architecture . A message-passing architecture is one in which no memory is shared . We chose the B-tree because of its flexibility and its practical use in indexing large volumes of data . Distributing the B-tree can increase the efficiency and improve parallelism of the operations , thereby reducing transaction processing time . To provide efficient use of the resources of a distributed system , it 's often necessary for all the processors to be utilized to the same extent . If not , problems can occur . For example , one processor might run out of storage space and cause an insert to fail , even though other processors are lightly loaded . The utilization can be evaluated in terms of the space/memory requirements and the load on each processor . In this paper we present some mechanisms for data balancing . Other issues that arise from load balancing are mechanisms for node mobility and out-of-order information handling . 1.1 Previous Work Several approaches to the concurrent B-tree problem have been proposed -LSB- 1 -RSB- , -LSB- 10 -RSB- , -LSB- 12 -RSB- , -LSB- 16 -RSB- . Each of these approaches uses some form of locking technique to ensure exclusive access to a node . All concurrent search tree algorithms require a concurrency control technique to keep two or more processes accessing the B-tree from interfering with one another . The contention is more pronounced at the higher levels of the tree . In shared-memory , this scenario occurs when more than one process contends for the same memory location . In a distributed architecture , contention occurs when one processor receives messages requesting access to a node from every other processor . Sagiv -LSB- 15 -RSB- and Lehman and Yao -LSB- 10 -RSB- use a link technique to reduce contention . Several data structures suitable for shared memory parallel architectures have been described . A hash algorithm for massively parallel systems is proposed in -LSB- 20 -RSB- . This algorithm , called Two Phase Hashing , combines chaining and linear probing . Parker -LSB- 13 -RSB- describes a highly concurrent search structure for parallel shared memory that uses sibling tries . Parker uses links to increase concurrency . Search structures based on LOLS family , Linear Ordinary-Leaves Structures -LRB- such as B + - trees , K - D-B-trees , etc. -RRB- have been proposed in -LSB- 11 -RSB- . The paper addresses the problem of designing search structures to fit shared memory multiprocessor multidisk systems . Parallel B-trees using multi-version memory have been proposed by Wang and Weihl -LSB- 19 -RSB- . Here , every processor has a copy of the leaf node , and updates to the copies are made in a \ lazy '' manner . A distributed linear hashing method that 's particularly useful for main memory databases is discussed in -LSB- 17 -RSB- . The paper addresses the problem of maintaining local copies of the centralized variables , and discusses various recovery mechanisms . Distributed memory data structures have been proposed by Ellis -LSB- 3 -RSB- , Severance -LSB- 17 -RSB- , Peleg -LSB- 14 -RSB- , Colbrook et al. -LSB- 2 -RSB- and Johnson and Colbrook -LSB- 6 -RSB- : Ellis -LSB- 3 -RSB- has proposed a distributed extendible hashing technique , that uses techniques similar to the ones we use here . Colbrook et al. -LSB- 2 -RSB- have proposed a pipelined distributed B-tree , where each level of the tree is maintained by a different processor . The parallelism achieved is limited by the height of the B-tree and the processors are not data balanced . Johnson and Colbrook -LSB- 6 -RSB- present a distributed B-tree suitable for message-passing architectures . The interior nodes are replicated to improve parallelism and alleviate the bottleneck . Data balancing among processors has been studied by Johnson and Colbrook -LSB- 6 -RSB- . Lee -LSB- 9 -RSB- et al. have discussed a fault-tolerant scheme for distributing queues . Here , the space required by each processor is balanced . Each processor can keep the same size segment of the queue . Peleg -LSB- 14 -RSB- has proposed several structures for implementing a distributed dictionary . The paper addresses message-passing complexity and data balancing . In the context of node mobility , object mobility has been proposed in Emerald -LSB- 8 -RSB- . Objects keep forwarding information even after they have moved to another node and use a broadcast protocol if no forwarding information is available . Our algorithms require considerably less overhead . 2 Concurrent B-tree Link Algorithm A B-tree of order m is a tree that satisfies the following conditions : 1 . Every node has no more than m children . 2 . The root has at least two children and every other internal node has at least m/2 children . 3 . The distance from the root to any leaf is the same . A search for a key progresses recursively down from the root . If the root holds the key the search stops ; otherwise it continues downward . An insert operation results in an insertion if the key is not already in the B-tree . If the node is full -LRB- i.e. , an insertion would cause it to contain m +1 keys -RRB- , the node splits and transfers half its keys -LRB- m/2 -RRB- to the new sibling , and a pointer to the sibling is placed in the parent . If the insertion causes the parent to split , the split moves upward recursively . A delete searches for the key and removes it from the leaf node when found . If the node has less than m/2 keys , it is merged with either sibling . This technique is known as merge-at-half technique . A better option is to free-at-empty | delete nodes only when they are empty . A variant of the B-tree known as the B + - tree stores the data only at the leaf nodes . This structure is much easier to implement than a B-tree . A B-link-tree is a B + - tree in which every node has a pointer to its right sibling at the same level . The link provides a means of reaching a node when a split has occurred , thereby helping the node to recover from misnavigated operations . The B-link-tree algorithms have been found to have the highest performance of all concurrent B-tree algorithms -LSB- 5 -RSB- . In the concurrent B-link-tree proposed by Sagiv -LSB- 15 -RSB- , every node has a field that is the highest-valued key stored in the subtree . A search operation starts at the root node and proceeds downwards . In this algorithm at most only one node is locked at any time . A search first places a R -LRB- read -RRB- lock on the root , then finds the correct child to follow . Next , the root node is unlocked and the child is R locked . Having reached a leaf node , the search finds the correct leaf node -LRB- i.e. , the one whose highest value is greater than the key being searched for -RRB- by traversing the right links in a node . Search returns a success or failure depending on the presence of the key in the leaf node or not -LRB- Alg . 1 -RRB- . search -LRB- v -RRB- f node = root ; Rlock -LRB- node -RRB- ; while -LRB- not leaf -RRB- f child = findnextnode -LRB- node , v -RRB- ; unlock -LRB- node -RRB- ; node = child ; Rlock -LRB- node -RRB- ; g 10 = traverse right links till correct leaf node is found = sib = findsibling -LRB- node , v -RRB- ; unlock -LRB- node -RRB- ; success = findkey -LRB- sib , v -RRB- ; if -LRB- success -RRB- f n = sib ; return -LRB- success -RRB- ; gelse f n = NULL ; 20 return -LRB- failure -RRB- ; g g Alg 1 . Search Algorithm for a B-link Tree . An insert operation works in two phases : a search phase and a restructuring phase -LSB- 6 -RSB- . The difference between the search phase of an insert operation and the search operation described above is that , here the R lock on the leaf nodes is replaced by a W -LRB- exclusive write -RRB- lock . The key is inserted if not already present in the appropriate leaf . If the insert causes a leaf node to become too full , a split occurs and the restructuring begins as in the usual B-tree algorithm . Since the operations hold at most only one lock at a time , restructuring must be separated into disjoint operations . The first phase is to perform a half-split operation -LRB- Figure 1 -RRB- . During this phase , a new node , the sibling , is created and half the keys from the original node are transferred into it . The sibling is put into the leaf list and the sibling pointers adjusted appropriately . The next phase is to inform the parent of the split . Now the lock on the leaf node is released , the parent node is locked , and a pointer to the sibling is inserted into the parent . During the time that the split occurs and the pointer is inserted into the parent , operations navigate to the sibling via the link and the highest fields in the node . On-the-fly node deletion is not supported in shared-memory multiprocessors . Several alternatives to on-the-fly deletion exist , including never deleting nodes , performing garbage collection or leaving the deleted nodes as stubs without deallocating them physically . In our design we support deletes and Half-split Operation Complete b b b 's siblinga c c b 's siblingba a c parent parent parent Initial State Figure 1 : Half-split Operation perform garbage collection . Currently only the pipelined B-tree supports deletes . 3 Translation to a Distributed B-tree In the distributed B-tree proposed here , each node has a pointer to its parent and to both its siblings , not to its right sibling alone . Keeping both sibling pointers makes deletion and merging of nodes simpler and also helps with node mobility and address updates . The parent pointers provide an address for split -LRB- and merge -RRB- messages . The sibling pointers let `` lost '' messages navigate to the correct node . As a first cut we implemented a pipelined B-tree by distributing each level of the B-tree to a different processor . We next extended the design to distribute a subset or a superset of a level of the tree to different processors . 3.1 Architecture of the underlying system We implemented our algorithms on a LAN comprised of SPARC workstations . Later we will extend this to specific distributed architectures like the NCUBE . The processors in the system are assumed to be capable of communicating with any other processor and have sufficient amounts of local storage . Each processor acts as a server capable of responding to messages from others . 3.2 Design The network of processors communicate by BSD sockets , which provide a reliable link . An overall B - tree manager called the anchor overlooks the entire B-tree operations . On each processor we have a ANCHOR Root Level Leaf Level Node Manager Node ManagerQueue Manager Queue Manager Queue Manager Node Manager Figure 2 : The Communication Channels queue manager and a node manager . The queue manager manages the queue of messages from remote processors . The node manager actually handles the operations on the various nodes at that processor . This functional distinction of the process at a processor into the queue manager and the node manager enables the node manager to be independent of the message queue processing . The queue manager and the node manager at a processor communicate via the inter-process communication schemes supported by UNIX , namely message queues -LRB- Figure 2 -RRB- . The node operations are completely local , and we assume that they can not be interrupted by another message . As a result , locking is implicit and the search , split , and insert operations are atomic . 3.3 Anchor Process The anchor is responsible for initializing the B-tree . In addition the anchor receives update messages from external applications and sends them to the appropriate processor . Each processor is responsible for the decision it makes concerning the tree structure it holds . In the current implementation the anchor makes the decision if two or more processors are involved . In order to do so , the anchor must have a picture of the global state of the system . The B-tree processing will continue while the anchor makes its decision , so the global picture will usually be somewhat out of date . Our algorithms -LRB- for load balancing , for example -RRB- take this fact into account . 4 Pipelined B-tree The overall B-tree structure is monitored by the anchor process at processor zero , which is responsible for creating a level server process at every processor -LRB- Figure 3 -RRB- . The queue manager of each level server P0 Anchor RootP4 P3 P2 P1 Figure 3 : The Pipelined B-tree and the anchor communicate by means of sockets . The anchor begins building the tree by selecting a processor -LRB- the root processor -RRB- to hold the root of the tree . The node manager at the root processor has a socket connection to the anchor . Update operations are passed to the root processor and percolate down to the leaf level , where the decisive action of the operation is performed . Since each level is maintained by a different processor , percolating an update operation involves passing a message to the processor holding the next lower level of the tree . The node manager at level i has a communication channel with the queue manager at levels i +1 and i-1 . Our implementation is primarily concerned with update operations , insert and delete : ffl Insert : An insert operation at a leaf processor inserts the key in the appropriate node . If the insertion of a key causes the node to become too full , the node splits by creating a new sibling and moving half the keys from the original node to the new sibling . The parent of this node is informed of this split by sending a message to the processor it resides on . To improve parallelism and reduce the number of messages in the system , the child processor does not wait for an acknowledgement from the parent processor ; instead we use the B-link tree protocol . If the split message from the child causes the parent to split , the child will have an old parent pointer . The obsolete parent pointers are updated when the new parent sends a message to the child -LRB- who uses the source node information in the message -RRB- . Our design can tolerate the \ lazy '' update of these pointers since a message to the old parent will find the correct -LRB- new -RRB- parent by the sibling pointers at the parent processor . If an insert causes the parent to split , the message percolates up towards the root node . In the event that the root node splits , a message is sent to the anchor . The tree grows by a level , so the anchor allocates a processor to hold the new root . ffl Delete : A delete operation removes the key from a leaf level node , say node n . The restructuring actions that the algorithm takes depends on whether we have implemented a free-at-empty or merge-at-half B-tree : 1 . Free-at-empty : If the removal of a key makes the node n empty , an EMPTY message is sent to the parent node and n is marked as deleted . However , the node remains in the doubly-linked list with its siblings until an acknowledgement arrives from the parent . This ensures that no further updates to the node n will be received , so n is removed from the list and its space is reclaimed . In the interval before the acknowledgement is received any operations to the deleted node n are sent to its siblings -LRB- as appropriate -RRB- . 2 . Merge-at-half : In addition to deleting nodes that are empty we have incorporated a merge protocol to implement merge-at-half . If the removal of a key reduces n to less than half its maximum capacity , the node shares its keys either to the right or to the left . The idea here is to keep the nodes equally full . If the right or left neighbor has more than half the keys , the excess are shared with the node n . When the highest value of a node at an index level is changed , a message is sent to inform the parent of the change . The parent is made aware of the key range in its child subtree , so that future updates would be directed properly . When the parent node receives an EMPTY message , it removes the pointer to the child . On receiving a change in the high value message from a child , the parent changes the highest value of the child . A change in the parent may cause one of the above situations , so the algorithm is applied recursively . If an EMPTY message reaches the root processor , it checks to see if it has only two children . If so , one of them is deleted and it is left with one child . A message is sent to the anchor to shrink the tree . The anchor makes the only child of the root the new root of the shorter tree , removes the old root node and deallocates the processor holding the old root node . Note that as the distribution is by levels , a delete of one child and a split in its sibling can not occur at the same time . The delete and the split will be processed in the sequence that they occur by the root processor . 5 Fully Distributed B-tree The pipelined B-tree discussed in the previous section is work-balanced but is not data-balanced , since the leaf processor holds more nodes than other processors . In our next approach , a processor can hold more than one level , and a level may be distributed across many processors . Here too , the anchor is responsible for initializing the B-tree and for decision making involving two or more processors . The processors are no longer dependent on the tree structure ; hence the connection among them could be arbitrary . In our implementation , however , we have a simple structure where all processors are connected to the anchor . The anchor begins building the tree by allocating the root node to a processor . 5.1 Node Structure Unlike in the previous case , where all logically adjacent nodes on a level are also physically adjacent , here physically adjacent nodes may not be logically adjacent . Also , nodes can not be uniquely identified by the local address . A node address consists of a combination of its node identifier and the processor number on which it resides . A typical node would have a parent pointer , the children pointers , and the sibling pointers . In addition to having the highest value in itself , the node must also keep the high value of it logical neighbors . This will enable a node to determine if the operation is meant for itself or destined for either of its siblings . 5.2 Updates This implementation performs inserts only . The insert first searches for a leaf node in the appropriate range . If the key is inserted at a processor and the node becomes too full , it half-splits . After a node half-splits , it must inform its siblings and its parent . Nodes stored on the same processor are updated locally , and a message is sent to update remote nodes . As before , the B-link protocol routes messages that misnavigate . If the root node splits , a parent has to be created . The processor holding the root node creates a new node and makes that the new root . It however informs all other processors that the tree height has increased -LRB- i.e. , the tree has grown -RRB- . 6 Load Balancing Distributing the tree arbitrarily implies that some processors may have many nodes -LRB- due to splits -RRB- and hence run out of storage when there is plenty in the system . It is therefore necessary to balance the load among processors . 6.1 Criteria for Load Balancing ffl Equal capacity : Here the objective is to keep all the processors equally balanced in terms of the number of nodes that they hold . That is , all the processors should utilize the same amount of memory space , so that no processor is short of space during execution . ffl Equal work : The number of update operations performed on each processor can be a measure for data balancing . If each processor has the same amount of work , to be done , better processor utilization is obtained . ffl Equal communication : The number of messages processed by each processor could be another criterion for load balancing . This is helpful in regulating the traffic in the system . Having decided on the criteria for balancing , the next step is to decide when to perform the balancing . The nodes could be moved following a failure or recovery , or at certain intervals of time , or when the system reaches a particular state . The most fundamental issue in load balancing is the actual process of moving a node between processors . This is termed the node migration mechanism and is common to all of our algorithms for load balancing . For the following discussion on the node migration mechanism , let us assume that the node manager at a processor wishing to download its nodes has been notified of a recipient processor that is willing to accept nodes . The actual method by which this is done will be explained in Section 6.4 . 6.1.1 Node Migration After the node manager is informed of a recipient for its excess nodes , it must decide which nodes to send . This may be based on various criteria of distribution . After selecting a node , the node manager begins the transfer . The actual process can be explained by addressing the following problems : 1 . Who is involved : Should the sender and all other processors be locked up until all pointers to the node in transit get updated ? If this is so , parallelism would be lost . How should we achieve maximum parallelism ? 2 . When is everyone informed : Once a node has been selected for migration , how and when is every other processor informed of its new address . In the interim that node movement takes place and the other related processors are informed , what happens to the updates that come for the node in transit ? How do they get forwarded ? 3 . Obsolete information : When a node moves it sends an update link message to related processors . Suppose that the update message for link change gets delayed and the node moves for a second time . How is the problem caused by the second update message reaching a processor before the first one , handled ? Our design addresses these problems and provides solutions to them . Who is involved : Our solution to the first problem is aimed at maintaining parallelism to the maximum extent possible by involving only the sender and the receiver during node movement . We have designed an atomic handshake and negotiation protocol for the node migration , so that the sender is aware of the forwarding address of a node before sending another node . After the node selection is done , the sending processor -LRB- henceforth called the sender -RRB- establishes a communication channel with the receiver and a negotiation protocol follows . In the negotiation protocol , the sender and the receiver come to an agreement as to how many nodes are to be transferred . After a decision has been reached the sender sends a node , awaits its acknowledgement and transfers the next node . The acknowledgement contains the new address of the node at the receiver processor . This forwarding address stub is left in the sender . A node that has been sent is tagged as in transit and no operations are performed on that node at the sender -LRB- Alg . 2 -RRB- . proc alloc -LRB- -RRB- f get receiving processor id ; establish communication channel with receiver ; compute nodes to send ; while -LRB- nodes to send > 0 -RRB- f n = select a node -LRB- -RRB- ; current capacity ?? ; send node -LRB- n -RRB- ; wait for acknowledgement ; 10 update pointers locally ; gsend close connection to receiver ; g accept nodes -LRB- -RRB- f wait for connection ; send acceptable capacity ; while -LRB- msg ! = close connection -RRB- f accept a node ; 20 send acknowledgement ; gclose connection ; update pointers related to new nodes locally ; send messages to related nodes if not on sending or receiving processor ; g Alg 2 . Node Migration Algorithm . When is everyone informed : The sender and receiver update all locally stored pointers to the transferred nodes . If the related nodes are on different processors -LRB- other than the sender and receiver -RRB- the receiver sends link update messages to them . If in the meantime some messages arrive for this node at the sender -LRB- since all processors are not yet aware of the migration -RRB- the messages are forwarded to the new address . At specific intervals of time the nodes marked in transit are deleted and their storage reclaimed . Since we do not require acknowledgements for the link changes , it is possible that a message will arrive for the deleted node . In this case , the node manager forwards the message to a local node that is \ close '' to the intended address . The message then follows the B-link-tree search protocol to reach its destination . In our current implementation , we are guaranteed that the processor stores either a parent of the deleted node , or another node on the same level as the deleted node . The significance of this deleted node recovery protocol is that we can lazily inform neighboring nodes of a moved node 's new address . The protocol is invoked rarely , since most messages for the transferred node are handled by the forwarding address . Obsolete information : The final problem is how to deal with out-of-order messages arriving at a processor . This can be explained with an example -LRB- Figure 4 -RRB- . Suppose a node a moves from processor A to Processor B. Consider node p , which resides on processor P and contains a link to node a . When node a moves to processor B , an update message is sent to node p at processor P. Before this message reaches P , processor B decides to move node a ' to processor C and C sends an update message to P. Suppose that the message from C reaches P before the message from B . If node p at P updates the node address to that of C and then to B , then node p at P has the wrong address for node a . In our design we have a version number for every node of the tree . A node has a version number 1 when it gets created for the first time -LRB- unless it is the result of a split -RRB- . Every time a node moves its version number is incremented , and when a node splits the sibling gets the same version number as the original node . Every pointer has a version number attached and each link update message contains the version of the sending node . When node r receives a link update message from s , r will update the link only if s 's version number is equal to or greater than the link version number . In the above example , the version number of node a on processor A is initially 1 . On moving to processor B the version number changes to 2 . The update message to P from B contains the version number 2 . The next update message sent to P from C has the version number 3 . Now since this last message reaches P first , node p at processor P notes that its version number for node a is 1 . Since 3 > = 1 , node p updates node a 's address , version number and processor number . Now , the message from B arrives that contains Processor P Processor A Processor B Processor C node_b node_c node_a `` node_a ` node_anode_p node_cnode_b node_a ` node_p node_a node_cnode_b node_anode_p Initial state of Processors node_a Moves from A to B Message is sent from B to P. node_a moves again from B to C , Message is sent from C to P Messages 1 and 2 to processor P in transit 1 1 2 2 Figure 4 : Node Migration version number 2 . But now node p has version number 3 for node a , hence the version numbers do not match and the message is ignored . So delayed messages that arrive out of order at a processor are ignored . Our numbering handles out-of-order link changes due to split actions also . Reliable communications guarantee that messages generated at a processor for the same destination arrive in the order generated , and when nodes move to different processors the version number of the nodes is incremented , so messages regarding link changes are processed in the order generated . 6.2 Protocol for Node Migration How one selects the nodes that have to be moved depends on factors that affect locality , availability , and fault tolerance . One may select a node at random , leaf nodes , or subtrees to be placed on one processor . Placing subtrees on a processor will reduce the number of sibling , children and parent updates . In our initial experiment we move nodes only at the leaf level , since all operations are eventually carried out at the leaf nodes . After choosing a criterion for load balancing , further steps are to decide where to download the excess nodes , and to determine who is responsible for decision making , node movement , and the address updates . 6.2.1 Decision Making Having selected the criterion for load balancing , the next step is to select a processor to receive the nodes . As of now , the anchor has been responsible for choosing the receiver . Another approach would be to leave the decision making to the individual processors . In our design , a limit is placed on the maximum number of nodes of the tree that a processor can hold . In addition each node has a soft limit on the number of nodes . This represents a danger level indicating a need for distribution of the nodes . Whenever a node splits , the current number of nodes is checked against the soft limit . If the current number of nodes exceeds the soft limit , the processor must distribute some of the nodes it has to some other processor . The processor sends a message to the anchor requesting a receiver . This message indicates how many nodes the processor wants to download . When the anchor receives a node transfer request from processors , it picks a receiver from the currently active ones , or selects a new processor . In order to make a decision the anchor must be aware of the current node capacity at each active processor . As no special messages are sent to the anchor when a node splits , the anchor has out-of-date information about the processor 's capacity . The only time the anchor receives the node capacity is when the height increases or a node transfer request arrives from a processor . The anchor uses this inaccurate information to select a receiver , r , and sends a message to the selected processor . After the selected processor is ready to accept nodes from the sender , the anchor informs the sender of the processor r . The node manager at the processor s follows the node negotiation and migration technique already discussed . The anchor 's responsibility is over and it is free to continue with any other task . 6.3 Experiment Description To study the performance of our load-balancing algorithm , we compared the performance of a loadbalancing system to one without load balancing . As mentioned earlier , two factors are necessary for load balancing , namely , the criterion and the node selection process . ffl Criteria for load balancing : In this experiment we chose the equal capacity rule for performing the dynamic load/data balancing . ffl Node selection : We chose to distribute the leaf nodes only , placing no restriction on the number of times that a node moves . Initially the system uses load balancing to reach a stable state with 8 processors . A random distribution of keys is chosen to create the initial B-tree . Experiment A : In our first experiment we maintain the same random distribution of the keys as in the beginning and then either leave ON or turn OFF the load balancing , and observe the distribution of the leaf nodes . To study the load variation behavior under execution , we collect distributed snapshots of the processors at intervals , determined by the number of keys inserted in the B-tree . Experiment B : In the next experiment , we vary experiment A by changing the key distribution pattern dynamically . Since the B-tree property guarantees that the keys are nicely distributed among the nodes -LSB- 5 -RSB- , a noticeable performance enhancement may not be observed in a uniformly distributed data pattern . So , to study the effect of our load balancing algorithm when the distribution changes , we have introduced hot spots in our key generation pattern . After the system reaches a stable state , the distribution is changed so that keys are generated with a probability of .6 in the range to 231 ? 1 and with a probability of .4 in the range 70000 to 80000 . This concentrates the keys in a narrow range , thereby forcing about 40 % of the messages to be processed at one or two ` hot ' processors . 6.4 Statistics , Results and Discussion In each experiment we insert a total of 10,500 keys . The system is presumed to have reached a stable state after 500 keys have been inserted . From then on , we take a distributed snapshot of the system every 2000 inserts . At each snapshot , we note the processors ' capacity , the number of times a processor invokes the load balancing algorithm and the number of nodes that it transfers . We also calculate the average number of times a leaf node moves between processors -LRB- taken with respect to the nodes in the entire B-tree -RRB- . Finally , we also calculate the number of messages it would take to travel from the root to any leaf . As expected , the worst-case number of messages required is one -LRB- since only the leaves are distributed -RRB- . The Performance bar charts in Figures 5 and 6 show the processors ' capacity after the insertion of 10,500 keys , using both distributions . When the \ hot-spots '' distribution is used , processor 5 is the hot processor , and it receives a disproportionate number of inserts . Without load balancing , the processors vary greatly in load , with processor 5 having more than a 1000 nodes and processor 8 having only around 100 nodes . Our load balancing algorithm distributes the excess load at processor 5 among other processors , so that all processors contain about 250 nodes when all keys have been inserted . In the \ no hot-spots '' distribution , there is still a large imbalance in the data load on the processor , which load balancing corrects . The Maximum Load graphs in Figures 7 and 8 show how the maximum load varies between snapshots . For this graph we pick up the maximum load value at each snapshot -LRB- perhaps at different processors at different snapshots -RRB- . The plot without the hot spots indicates that the maximum load variation increases significantly -LRB- slope of the line is greater -RRB- indicating the need for load balancing even with uniform distribution . With hot spots the variation is much greater , indicating the nice effect load balancing has for smoothing the variation and reducing the gradient . Finally Table 1 shows the calculated average number of moves made by a node in the entire system , with and without hot spots and with and without load balancing , and the normalized variation of the capacity at each processor from the mean . The table shows that the load balancing reduces the coefficient of variation at the cost of a very small increase in the average moves in the system , indicating that load balancing is effective with low overhead . 7 Conclusion We have designed and implemented a distributed search structure on a network of SPARC stations . We have studied the effect of dynamic data-load balancing on the B-tree and found that our algorithm performs nicely in achieving a data balance among processors , even with the creation of hot spots . We plan to introduce other variations of load balancing such as distributing subtrees and replicating nodes at various processors . This paper has dealt only with inserts ; we intend to incorporate deletes and also provide correctness proofs for the algorithms designed and implemented . We will also extend this to distributed storage management and incorporate fault tolerance in the system . 8 Acknowledgements We would like to thank Dennis Shasha and Johna Johnson for their valuable comments and suggestions . References -LSB- 1 -RSB- Bayer R. and McCreight E. Concurrency of operations on B-trees , Acta Informatica 1 , 1972 , pp. 173-189 . -LSB- 2 -RSB- Colbrook A. , Brewer A. E. , Dellarocas C.N. and Weihl E. W . An Algorithm for Concurrent Search Trees , Proccedings of the 20th International Conference on Parallel Processing , 1991 , pp. 38-41 . -LSB- 3 -RSB- Ellis S. C. Distributed Data Structures : A Case Study , IEEE Transactions on Computers , Vol . C-34 , No. 12 , December 1985 . -LSB- 4 -RSB- Fan Z. and Cheng K . A Generalized Simultaneous Access Dictionary Machine , IEEE Transactions on Parallel and Distributed Systems , Vol . 2 , No. 2 , April 1991 . -LSB- 5 -RSB- Johnson T. and Shasha D . A Framework for the performance Analysis of Concurrent B-tree Algorithms , Proceedings of the 9th ACM Symposium on Principles of Database Systems , April 1990 . -LSB- 6 -RSB- Johnson T. and Colbrook A . A Distributed Data-Balanced Dictionary Based on the B-link Tree , International Parallel Processing Symposium , March 1992 , pp. 319-325 . -LSB- 7 -RSB- Johnson T. Distributed Indices for Accessing Distributed Data , 12th IEEE Mass Storage Symposium 1992 . -LSB- To appear -RSB- . -LSB- 8 -RSB- Jul E. , Levy H. , Hutchinson N. and Black A. Fine Grained Mobility in the Emerald System , ACM Transactions on Computer Systems , Vol . 6 , No. 1 , February 1988 , pp. 109-133 . -LSB- 9 -RSB- Lee P. , Chen Y. and Holdman M. J. DRISP : A Versatile Scheme For Distributed Fault-tolerant Queues , IEEE 11th International Conference on Distributed Computing Systems , 1991 . -LSB- 10 -RSB- Lehman P.L. , and Yao S.B. Efficient Locking for Concurrent Operations on B-trees , ACM Transactions on Database Systems 6 , December 1981 , pp. 650-670 . -LSB- 11 -RSB- Matsliach G. and Shmueli O . An Efficient Method for Distributing Search Structures , Proceedings of the 10th IEEE Symposium on Reliable Distributed Systems , 1991 . -LSB- 12 -RSB- Miller R. and Snyder L. Multiple Access to B-trees , Proccedings of the 1978 Conference on Information Sciences and Systems , Johns Hopkins University , Baltimore , March 1978 , pp. 400-408 . -LSB- 13 -RSB- Parker D. J . A Concurrent Search Structure , Journal of Parallel and Distributed Computing 7 , 1989 , pp. 256-278 . -LSB- 14 -RSB- Peleg D. Distributed Data Structures : A Complexity-Oriented View , Fourth International Workshop on Distributed Algorithms , 1990 . -LSB- 15 -RSB- Sagiv Y. Concurrent Operations on B-Trees with Overtaking , Journal of Computer and System Sciences , 33 -LRB- 2 -RRB- , October 1986 , pp . 275-296 . -LSB- 16 -RSB- Samadi B. B-trees in a system with multiple users , Information Processing Letters , 5 , 1976 , pp. 107-112 . -LSB- 17 -RSB- Severance C. and Pramanik S. Distributed Linear Hashing for Main Memory Databases , International Conference on Parallel Processing , 1990 . Uniform distribution Hot spots distribution No load balancing Load balancing No load balancing Load balancing Keys Avg . Coeff . of Avg . Coeff . of Keys Avg . Coeff . of Avg . Coeff . of moves variation moves variation moves variation moves variation 500 0.79 0.14 0.81 0.13 500 0.77 0.14 0.67 0.65 2500 0.17 0.25 0.20 0.04 2435 0.16 1.03 0.30 0.08 4500 0.10 0.25 0.13 0.02 4275 0.09 1.15 0.18 0.03 6500 0.07 0.24 0.09 0.03 6000 0.06 1.15 0.13 0.03 8500 0.05 0.25 0.08 0.02 7622 0.05 1.13 0.11 0.02 10500 0.04 0.26 0.06 0.03 9150 0.04 1.13 0.09 0.02 Table 1 : Load Balancing Statistics -LSB- 18 -RSB- Shasha D. and Goodman N. Concurrent Search Tree Algorithms , ACM Transactions on Database Systems , 13 -LRB- 1 -RRB- , 1988 , pp. 53-90 . -LSB- 19 -RSB- Weihl E. W. and Wang P. Multi-version Memory : Software cache Management for Concurrent B - Trees , Proceedings of the 2nd IEEE Symposium on Parallel and Distributed Processing , 1990 , pp. 650-655 . -LSB- 20 -RSB- Yen I. and Bastani F. Hash Table in Massively Parallel Systems , Proceedings of the 1992 International Conferences on Computer Languages , April 20-23 , 1992 , pp. 660-664 . Figure 5 : Distribution of nodes to processors , uniform distribution . Figure 6 : Distribution of nodes to processors , hot spot distribution . 0.2 0.4 0.6 0.8 1 1.2 load balancing no load balancing 2 4 6 8 10 12 Thousands ThousandsThousands Figure 7 : maximum number of nodes in a processor , uniform distribution . 200 400 600 800 1000 1200 load balancing no load balancing 2 4 6 8 10 12 ThousandsThousands Figure 8 : maximum number of nodes in a processor , hot spot distribution .

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

data structures
distributed search structures


Fast Parallel Algorithms for Finding Extremal Sets ? Hong Shen School of Computing and Information Technology Griffith University Nathan , QLD 4111 , Australia hong@cit.gu.edu.au March 20 , 1995 Abstract We consider the problem of finding the minimal -LRB- maximal -RRB- sets of a family of sets that have no subset -LRB- superset -RRB- in the family . Given a family F of k sets with N elements and a domain of size n , we propose two fast parallel algorithms for solving this problem | an O -LRB- log N -RRB- time algorithm using O -LRB- minf kN log N ; k2n log2 N -RRB- processors on a CREW PRAM and a constant-time algorithm using O -LRB- nN + minfkN ; k2n log N g -RRB- processors on a combining CRCW , both analyzed in the worst case . If F is normal , the number of processors required becomes O -LRB- N2 log3 N -RRB- for the first algorithm and O -LRB- N2 log2 N -RRB- for the second one when n = O -LRB- N log2 N -RRB- respectively , thus making both of their costs match the time complexity of the optimal sequential algorithm -LSB- 1 -RSB- . Our algorithms are the first NC algorithm on CREW PRAM and constant-time algorithm on CRCW PRAM respectively . References -LSB- 1 -RSB- H. Shen . Finding extremal sets of a normal family of sets in o -LRB- N2 log2 n -RRB- time and o -LRB- N2 log3 n -RRB- space . Res . rep. cit-95-05 , School of Computing and Information Technology , Griffith University , 1995 . ? This work was partially supported by Australia Research Council under its Small Grants Scheme .

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


Quantization Noise Reduction Using Wavelet Thresholding for Various Coding Schemes D. Wei , M. Lang , H. Guo , J. E. Odegard , and C. S. Burrus ? Department of Electrical and Computer Engineering Rice University , Houston , TX 77251-1892 June 14 , 1995 Paper accepted for the Proceedings of SPIE , Mathematical Imaging : Wavelet Application in Signal and Image Processing -LRB- 2569-22 -RRB- , 12 -LCB- 14 July , 1995 , San Diego , CA . This is also Technical Report Rice University , CML TR95-11 . ABSTRACT We propose a nonlinear , wavelet-based method to efficiently improve the performance of various coding schemes for lossy image data compression . Coarse quantization of the transform coefficients often results in some undesirable artifacts , such as ringing effect , contouring effect and blocking effect , especially at very low bit rate . The decoding can be viewed as a typical statistical estimation problem of reconstructing the original image signal from the decompressed image , a noisy observation , using the classical signal processing model of \ signal plus additive noise '' . We perform the wavelet-domain thresholding on the decompressed image to attenuate the quantization noise effect while maintaining the relatively sharp features -LRB- e.g. edges -RRB- of the original image . Experimental results show that de-noising using the undecimated discrete wavelet transform achieves better performance than using the orthonormal discrete wavelet transform , with an acceptable computational complexity -LRB- O -LRB- MN log2 -LRB- MN -RRB- -RRB- for an image of size M ? N -RRB- . Both the objective quality and the subjective quality of the reconstructed image are significantly improved with the reduction of coding artifacts . In addition , dithering technique can be embedded in the encoding scheme to achieve further improvement of the visual quality . 1 INTRODUCTION In the last decade , transform/subband coding and fractal coding have been demonstrated to be the efficient techniques for lossy image data compression . In the transform/subband coding systems , if the unitary transform -LRB- or the perfect reconstruction -LRB- PR -RRB- filter bank -RRB- and the lossless entropy coder are used , then the quantization error is the only source of error -LRB- or noise -RRB- in the reconstructed image . In order to achieve high compression ratios , ? This work is supported in part by TATP , ARPA , BNR , TI and Alexander von Humboldt foundation . the transform coefficients are required to be coarsely quantized , which often result in some undesirable artifacts associated with the basis functions of the transform , such as the ringing effect and the contouring effect in the wavelet-transform/subband-coding compressed images , and the blocking effect in the JPEG/DCT compressed images ,22 especially at very low bit rates . Similarly , there are also some annoying artifacts -LRB- e.g. , blocking effect -RRB- in the fractal compressed images . In general , a decompressed image can be viewed as a noisy observation of the original image . Therefore , the task of post-processing or enhancing the decompressed image , which can be characterized as a typical statistical estimation problem , is then to extract the original image from the noisy observation of the form \ signal plus additive noise '' . The reconstruction noise in the decompressed images is generally signal-dependent and spatially correlated , which makes the estimation problem very difficult . Both the dependence on the original image and the spatial correlation are affected by the various compression schemes . Many methods have been developed to deal with this image enhancement problem .1,10,14 -LCB- 19,21,23 -LCB- 25,27 -LCB- 35 However , most of these methods have some of the following limitations : -LRB- i -RRB- lack of the ability to handle more than one type of coding artifacts , i.e. , dependence on the coding scheme ; -LRB- ii -RRB- lack of the ability to improve both the objective quality and the subjective quality ; -LRB- iii -RRB- high computational complexity . To reduce the blocking effect in the JPEG/DCT algorithms , Gopinath et al8 applied soft-thresholding -LRB- \ shrink or kill '' -RRB- to the orthonormal discrete wavelet transform -LRB- DWT -RRB- coefficients of the decompressed image , and obtained significant improvement in the visual quality . In this paper , we show that this method can also reduce other coding artifacts and improve the objective quality of the decompressed image . However , it has been argued that2 de-noising with the orthonormal DWT sometimes exhibits visual artifacts such as the \ pseudoGibbs phenomena '' in the neighborhood of discontinuities due to the lack of translation invariance of the wavelet basis . In this paper , we propose a more efficient method based on the \ second-generation de-noising '' technique2 ,13 to significantly improve both the objective quality and the subjective quality in the processed images and to avoid the \ new '' artifacts resulted from de-noising . We perform hard-thresholding -LRB- \ keep or kill '' -RRB- on the undecimated DWT coefficients of the decompressed image to suppress the reconstruction noise due to quantization . Our method outperforms most of the above methods in terms of the objective measures if the numerical comparison is possible . The performance of our method is even better than that of the method proposed by Gopinath et al in terms of both the peak signal-to-noise ratio -LRB- PSNR -RRB- and the reduction of coding artifacts . Another advantage of our method is that it is independent of coding schemes in the sense that it can attenuate several types of coding artifacts . For an image of size M ? N , the computational complexity of our method is O -LRB- MN log2 -LRB- MN -RRB- -RRB- . The paper is organized as follows . In the next section we give a short review of the wavelet-domain thresholding method for noise reduction . In section 3 , noise removal with the undecimated DWT is described . Section 4 gives a simple example of applying our method . We discuss the experimental results in section 5 and give the conclusions in section 6 . 2 DE-NOISING BY WAVELET THRESHOLDING Donoho and Johnstone5 ,6 proposed a nonlinear method for reconstructing an unknown signal from noisy data . The method attempts to reject noise by damping or thresholding in the orthogonal wavelet domain and has been proved to work well in many applications .4,8,9,20,26 Suppose we wish to recover an unknown signal x from noisy data y , yi = xi + oeei ; i = ; 1 ; : : : ; n ? 1 where ei iid ? N -LRB- 0 ; 1 -RRB- is a white Gaussian noise , and oe is the noise level . Let ^ x be the estimate of x . Our goal is to optimize the mean-squared error 1 nE -LSB- k ^ x ? x k22 -RSB- = 1 n n ? 1 X i = 0 E -LSB- -LRB- ^ xi ? xi -RRB- 2 -RSB- : The simple wavelet-domain thresholding method has three steps : 1 . Compute the orthonormal DWT of the noisy data y , obtaining the wavelet coefficients ; 2 . Apply the soft-thresholding nonlinearity -LRB- shrinkage -RRB- ? t -LRB- v -RRB- = 8 < : v ? t for v > t for ? t < = v < = t v + t for v < ? t or the hard-thresholding nonlinearity ? t -LRB- v -RRB- = ae v for jvj > t for jvj < = t to the wavelet coefficients -LRB- except the coarsest level -RRB- with a specially-chosen threshold t = tn = p2 log -LRB- n -RRB- oe ; 3 . Perform the inverse orthonormal DWT on the thresholded wavelet coefficients , recovering the estimate ^ x ? . The universal p2 log -LRB- n -RRB- oe threshold was designed for the purpose of suppressing noise-induced spikes which spoil the smoothness of reconstructions . However , if one wants to only to measure performance by mean-squared error -LRB- MSE -RRB- , then lower thresholds are better .6 One important qualitative feature of this method is that the relatively sharp features in x -LRB- e.g. edges -RRB- are maintained while the noise is suppressed .5 It has been shown by Donoho that the soft-thresholding is the MSE optimal nonlinear function to apply in the orthonormal wavelet domain if one requires the reconstructed signal to be at least as smooth as the original , noise-free one . The hard-thresholding , on the other hand , yields better estimate in the MSE sense but does not guarantee the smoothness property cited above . In fact , the de-noised signal using the hard-thresholding sometimes exhibits somewhat greater spurious oscillations in the vicinity of discontinuities than that using the soft-thresholding . Though the above assumption on the additive noise is not valid in our applications , i.e. , the reconstruction error in the decompressed image is generally neither white nor independently , identically distributed -LRB- i.i.d. -RRB- , the wavelet-thresholding method can still be applied successfully to reduce the colored reconstruction noise .8 3 UNDECIMATED DISCRETE WAVELET TRANSFORM De-Noising with the orthonormal DWT sometimes exhibits visual artifacts , such as the pseudo-Gibbs phenomena -LRB- alternating undershoot and overshoot of a specific target level -RRB- in the neighborhood of discontinuities , due to the lack of translation invariance of the wavelet basis .2 These artifacts are related in some way to the precise alignments between features in the signal and features of basis elements ; signal exhibiting similar features but with slightly different alignment in time or scale might generate fewer of the artifacts . One approach to correct unfortunate mis-alignments between features in the signal and features in a basis is to forcibly shift signals so that their features change positions which will overcome the mis-alignments , and to unshift the signal after analysis . However , when a signal contains several discontinuities , these may interfere with each other : the best shift for one discontinuity in the signal may also be the worst shift for another discontinuity . One method to overcome this difficulty is to average out the translation dependence .2 For the range of all circulant shifts , one shifts the data , de-noises the shifted data , and then unshifts the de-noised data . Doing this for each of a range of shifts , and averaging the several results so obtained , produces a reconstruction subject to far weaker pseudo-Gibbs phenomena than the thresholding-based de-noising using the orthonormal DWT . For the data of size N , computation of the DWT of all circulant shifts can be accomplished by the undecimated -LRB- or translation-invariant -RRB- DWT in order of N log2 -LRB- N -RRB- time .2,13 Experiments indicated that in general the hard-thresholding outperforms the soft-thresholding for de-noising in terms of both the quantitative measures and the visual quality if the undecimated DWT is used .2 We attribute this to the fact that the translation-invariant approach will damp the spurious oscillations introduced by the hard-thresholding while maintaining a smaller MSE . 4 A SIMPLE EXAMPLE We use a simple example to show the remarkable de-noising performance of the undecimated DWT thresholding as well as the possibility of combining our method with other techniques such as dithering . Due to the coarse quantization , the quantization noise and the input image are correlated . This correlation is reflected by some perceptually undesirable image-dependent patterns in the reconstructed image , such as the contouring effects , the ringing effects , the block effects , etc. . By adding some appropriate high-frequency perturbation signals , such as pseudo-random noise , to an image prior to quantization , it is possible to break up these undesirable patterns . This classical technique is called dithering .11 The basic idea of dithering is , by adding a pseudo-random signal to the image before it is quantized and subtracting the same signal from the quantized value , to effectively replace the image-dependent quantization noise with the image-independent noise which is less annoying to human eyes . Figure 1 is the block diagram of a dithered quantization system . - xn L - ? wn Q - ? wn L ^ xn - + + + ? Figure 1 : A dithered uniform scalar quantizer Let q denote the step-size of the uniform scalar quantizer Q . It has been shown that if wn is a white noise uniformly distributed in -LSB- ? q = 2 ; q = 2 -RSB- , then the quantizer output ^ xn can be modeled approximately as ^ xn = xn + en where en is a white noise that is independent of xn and has a uniform distribution in -LSB- ? q = 2 ; q = 2 -RSB- . Such a white noise is less visible and easier to remove using noise-reduction techniques . Figure 2 -LRB- a -RRB- and -LRB- b -RRB- are the original \ Lenna '' image , which is 512 ? 512 and 256-gray-scale , and the spatially quantized image using a 4-level uniform scalar quantizer , respectively . The resulting PSNR is 22:88 dB and the visual quality is very poor due to the severe contouring effect . We obtain Figure 2 -LRB- c -RRB- by performing the wavelet thresholding on Figure 2 -LRB- b -RRB- , resulting a higher PSNR -LRB- 25:16 dB -RRB- and better visual quality . However , the contouring effect is still visible . If the original image is dithered before quantization using a pseudo-random signal , then the noise in the quantized image is approximately signal-independent and hence less visually annoying . Furthermore , the wavelet thresholding -LRB- using the undecimated DWT and the hard-thresholding -RRB- can be applied to the quantized image to efficiently remove the signal-independent noise and significantly improve both the PSNR -LRB- 31:82 dB -RRB- and the perceptual quality . Figure 2 -LRB- d -RRB- is the processed image without clearly visible artifact . 5 EXPERIMENTAL RESULTS In our experiments , we choose four 256-gray-scale images : Lenna -LRB- 512 ? 512 -RRB- , Mandrill -LRB- 480 ? 480 -RRB- , CameraMan -LRB- 256 ? 256 -RRB- and Building -LRB- 256 ? 256 -RRB- . We denote the method using the orthonormal DWT and the softthresholding , and the method using the undecimated DWT and the hard-thresholding as \ method 1 '' and \ method 2 '' , respectively . We apply both methods to post-process the images compressed by the JPEG algorithm , a subband coding -LRB- SBC -RRB- algorithm , and a fractal coding algorithm at different bit-rates . In the wavelet-thresholding schemes , there are several parameters that needs to be determined : -LRB- i -RRB- the type of wavelets , -LRB- ii -RRB- the length of wavelet filters , and -LRB- iii -RRB- the number of wavelet-decomposition levels . Since there is no special advantage to use any particular wavelet for de-noising , we simply choose Daubechies ' orthonormal wavelets .3 While our experiments indicated that the length of the wavelet filter had little effect on the de-noising performance in terms of both the PSNR and the subjective measure , we also found that , for larger images , denoising with longer filters would lead to slightly better results . Therefore , we use Daubechies ' 12-tap wavelet filter for the \ Lenna `` image and the \ Mandrill '' image , and use Daubechies ' 8-tap wavelet filter for the other two smaller images . Similarly , we found that the number of wavelet-decomposition levels had little effect on the de-noising performance if the number is larger than 3 . Thus , we simply perform 5-level wavelet-decomposition on the \ Lenna '' image and the \ Mandrill '' image , and 4-level wavelet-decomposition on the other two images , to keep the subband images of the lowest resolution roughly the same size for all four test images . Table 1 ? 3 illustrate the de-noising performance of the two methods in terms of the PSNR for three types of decompressed images . We find that both methods can significantly improve the objective quality of the processed images , and the \ method 2 '' outperforms the \ method 1 '' in most cases . For the fractal-compressed image , we also compare our two methods with the post-processing method by Y. Fisher7 and we find that the \ method 2 '' is somewhat better than Fisher 's method . Figure 3 ? 5 illustrate some examples of the improvement in the visual quality of three types of decompressed images . Figure 3 -LRB- a -RRB- is a part of the original \ Lenna '' image . Figure 3 -LRB- b -RRB- is the same part in the JPEG-coded image at 0.25 bit per pixel -LRB- bpp -RRB- , where the blocking effect is clearly visible . Figure 3 -LRB- c -RRB- and -LRB- d -RRB- are the corresponding parts in the post-processed images using \ method 1 '' and \ method 2 '' , respectively . Though both -LRB- c -RRB- and -LRB- d -RRB- have better visual quality than -LRB- b -RRB- , the blocking effect is removed more completely in -LRB- d -RRB- than in -LRB- c -RRB- . Figure 4 -LRB- a -RRB- and -LRB- b -RRB- are the original \ Camera-Man '' image and the subband-coded image , respectively . In -LRB- b -RRB- , we can the strong ringing effect . Figure 4 -LRB- c -RRB- and -LRB- d -RRB- are the post-processed images using \ method 1 '' and \ method 2 '' , respectively , where the ringing effects are weaker than in -LRB- b -RRB- . Figure 5 -LRB- a -RRB- is the fractal-coded \ Lenna '' image using the codes written by Y. Fisher ,7 where we can see the strong blocking effect . Figure 5 -LRB- b -RRB- , -LRB- c -RRB- and -LRB- d -RRB- are the post-processed images using the Fisher 's method , our \ method 1 '' and \ method 2 '' , respectively . The \ method 2 '' leads to the best perceptual quality . 6 CONCLUSIONS A powerful , universal and relatively low-complexity method for improving the quality of the decompressed images resulting from various coding schemes has been presented . It is based on thresholding in the wavelet domain . In particular , using the undecimated DWT and the hard-thresholding to avoid the new perceptual artifacts , results in significant improvement in terms of both the PSNR and the visual quality in the sense that the various coding artifacts are greatly removed . In the future work we will investigate the further improvement using the scale-adaptive thresholding .12 The MATLAB programs for de-nosing are available from the World Wide Web at http://jazz.rice.edu or by anonymous ftp from cml.rice.edu in the directory / pub/software . 7 REFERENCES -LSB- 1 -RSB- T. Chen . Elimination of subband-coding artifacts using the dithering technique . In Proc . IEEE Int . Conf . Image Processing , volume II , pages 874 -LCB- 877 , Austin , TX , 1994 . -LSB- 2 -RSB- R. R. Coifman and D. L. Donoho . Tranlation-invariant de-nosing . In Anestis Antoniadis , editor , Wavelets and Statistics . Springer-Verlag Lecture Notes , New York , NY , 1995 . To appear . -LSB- 3 -RSB- I. Daubechies . Ten Lectures on Wavelets . SIAM , Philadelphia , PA , 1992 . Notes from the 1990 CBMS-NSF Conference on Wavelets and Applications at Lowell , MA . -LSB- 4 -RSB- D. L. Donoho . Nonlinear wavelet methods for recovery of signals , densities , and spectra from indirect and noisy data . In Proceedings of Symposia in Applied Mathematics , volume 00 , pages 173 -LCB- 205 . American Mathematical Society , 1993 . -LSB- 5 -RSB- D. L. Donoho . De-noising by soft-thresholding . IEEE Trans . Inform . Theory , 41 -LRB- 3 -RRB- :613 -LCB- 627 , May 1995 . -LSB- 6 -RSB- D. L. Donoho and I. M. Johnstone . Ideal spatial adaptation via wavelet shrinkage . Biometrika , 81:425 -LCB- 455 , 1994 . -LSB- 7 -RSB- Y. Fisher . Fractal Image Compression : Theory and Application . Springer-Verlag , New York , NY , 1995 . -LSB- 8 -RSB- R. A. Gopinath , M. Lang , H. Guo , and J. E. Odegard . Enhancement of decompressed images at low bit rates . In SPIE Math . Imagaging : Wavelet Applications in Signal and Image Processing , volume 2303 , San Diego , CA , July 1994 . -LSB- 9 -RSB- H. Guo , J. E. Odegard , M. Lang , R. A. Gopinath , I. Selesnick , and C. S. Burrus . Speckle reduction via wavelet shrinkage with application to SAR based ATD/R . In SPIE Math . Imagaging : Wavelet Applications in Signal and Image Processing , volume 2303 , San Diego , CA , July 1994 . -LSB- 10 -RSB- Y.-S . Ho and A. Gersho . Contour-based postprocessing of coded images . Proc . SPIE Visual Commun . Image Process. , pages 1440 -LCB- 1449 , 1989 . -LSB- 11 -RSB- N. S. Jayant and P. Noll . Digital Coding of Waveforms . Prentice-Hall , Inc. , Englewood Cliffs , NJ , 1st edition , 1984 . -LSB- 12 -RSB- I. M. Johnstone and B. W. Silverman . Wavelet threshold estimators for data with correlated noise . Technical report , University of Bristol , UK , Statistics Department , September 1994 . -LSB- 13 -RSB- M. Lang , H. Guo , J. E. Odegard , C. S. Burrus , and R. O. Wells , Jr. . Nonlinear processing of a shift-invariant DWT for noise reduction . In SPIE conference on wavelet applications , volume 2491 , Orlando , FL , April 1995 . -LSB- 14 -RSB- W. Li , O. Egger , and Murat Kunt . Efficient quantization noise reduction device for subband image coding schemes . In Proc . IEEE Int . Conf . Acoust. , Speech , Signal Processing , pages 2209 -LCB- 2212 , Detroit , MI , 1995 . -LSB- 15 -RSB- I. Linares . Optimal PSNR estimated spectrum adaptive postfilter for DCT coded images . In Proc . IEEE Int . Conf . Acoust. , Speech , Signal Processing , pages 2387 -LCB- 2390 , Detroit , MI , 1995 . -LSB- 16 -RSB- J. Luo , C. W. Chen , K. J. Parker , and T. S. Huang . A new method for block effect removal in low bit-rate image compression . In Proc . IEEE Int . Conf . Acoust. , Speech , Signal Processing , volume V , pages 341 -LCB- 344 , Adelaide , Australia , 1994 . -LSB- 17 -RSB- W. E. Lynch , A. R. Reibman , and Bede Liu . Post processing transform coded images using edges . In Proc . IEEE Int . Conf . Acoust. , Speech , Signal Processing , pages 2323 -LCB- 2326 , Detroit , MI , 1995 . -LSB- 18 -RSB- B. Macq , M. Mattavelli , O. V. Calster , E. Plancke , S. Comes , and W. Li . Image visual quality restoration by cancellation of the unmasked noise . In Proc . IEEE Int . Conf . Acoust. , Speech , Signal Processing , volume V , pages 53 -LCB- 56 , Adelaide , Australia , 1994 . -LSB- 19 -RSB- S. Minami and A. Zakhor . An optimization approach for removing blocking effects in transform coding . IEEE Trans . on CAS for Video Tech. , 5 -LRB- 2 -RRB- :74 -LCB- 82 , April 1995 . -LSB- 20 -RSB- P. Moulin . A wavelet regularization method for diffuse radar-target imaging and speckle-noise reduction . Journal of Mathematical Imaging and Vision , 3 -LRB- 1 -RRB- :123 -LCB- 134 , January 1993 . -LSB- 21 -RSB- B. Niss . Prediction of AC Coefficients from the DC Values . ISO/IEC JTC1/SC2/WG8 N745 , May 1988 . -LSB- 22 -RSB- W. B. Pennebaker and J. L. Mitchell . JPEG - Still Image Data Compression Standard . Van Nostrand Reinhold , New York , 1993 . -LSB- 23 -RSB- V. Ramamoorthy . Removal of \ staircase '' effects in coarsely quantized video sequences . In Proc . IEEE Int . Conf . Acoust. , Speech , Signal Processing , volume 3 , pages 309 -LCB- 312 , San Francisco , CA , 1992 . -LSB- 24 -RSB- B. Ramamurthi and A. Gersho . Nonlinear space-variant postprocessing of block coded images . IEEE Trans . ASSP , 34 -LRB- 5 -RRB- :1258 -LCB- 1267 , 1986 . -LSB- 25 -RSB- H. C. Reeve and J. S. Lim . Reduction of blocking effects in image coding . Optical Engineering , 23 -LRB- 1 -RRB- :34 -LCB- 37 , 1984 . -LSB- 26 -RSB- Naoki Saito . Simultaneous noise suppression and signal compression using a library of orthonormal bases and the minimum description length criterion . In E. Foufoula-Georgiou and P. Kumar , editors , Wavelets in Geophysics . Academic Press , 1994 . -LSB- 27 -RSB- R. Stevenson . Reduction of coding artifacts in transform image coding . In Proc . IEEE Int . Conf . Acoust. , Speech , Signal Processing , volume 3 , pages 401 -LCB- 404 , Minneapolis , MN , 1993 . -LSB- 28 -RSB- J. K. Su and R. M. Mersereau . Post-processing for artifact reduction in JPEG-compressed images . In Proc . IEEE Int . Conf . Acoust. , Speech , Signal Processing , pages 2363 -LCB- 2366 , Detroit , MI , 1995 . -LSB- 29 -RSB- C.-N . Tien and H.-M . Hang . Transform-domain postprocessing of DCT-coded images . Proc . SPIE Visual Commun . Image Process. , 2094:1627 -LCB- 1638 , 1993 . -LSB- 30 -RSB- S.-W . Wu and A. Gersho . Enhancement of transform coding by nonlinear interpolation . Proc . SPIE Visual Commun . Image Process. , 1605:487 -LCB- 498 , 1991 . -LSB- 31 -RSB- S.-W . Wu and A. Gersho . Improved decoder for transform coding with applications to JPEG baseline system . IEEE Trans . Commun. , 40 -LRB- 2 -RRB- :251 -LCB- 254 , February 1992 . -LSB- 32 -RSB- Y. Yang , N. P. Galatsanos , and A. K. Katsaggelos . Regularized reconstruction to reduce blocking artifacts of blcok discrete cosine transform compressed images . IEEE Trans . on CAS for Video Tech. , 3 -LRB- 6 -RRB- :421 -LCB- 432 , December 1993 . -LSB- 33 -RSB- Y. Yang , N. P. Galatsanos , and A. K. Katsaggelos . Regularized reconstruction to reduce blocking artifacts from blcok discrete cosine transform compressed images . Proc . SPIE Visual Commun . Image Process. , 2094:511 -LCB- 521 , 1993 . -LSB- 34 -RSB- Y. Yang , N. P. Galatsanos , and A. K. Katsaggelos . Projection-based spatially adaptive reconstruction of block transform compressed images . Proc . SPIE Visual Commun . Image Process. , 2308:1477 -LCB- 1488 , 1994 . -LSB- 35 -RSB- A. Zakhor . Iterative procedures for reduction of blocking effects in image coding . IEEE Trans . on CAS for Video Tech. , 2 -LRB- 1 -RRB- :91 -LCB- 94 , March 1992 . Table 1 : De-Noising performance for JPEG-compressed images test images bpp PSNR -LRB- dB -RRB- JPEG method 1 method 2 0.65 35.80 36.08 36.19 Lenna 0.25 30.41 31.08 31.42 0.18 27.33 28.30 28.57 1.84 25.64 25.85 25.74 Mandrill 0.61 20.67 20.82 20.84 0.35 19.01 19.24 19.29 0.88 31.75 32.01 32.04 Camera-Man 0.34 26.44 26.69 26.84 0.24 24.30 24.57 24.75 0.92 31.33 31.48 31.46 Building 0.36 27.00 27.28 27.45 0.27 24.75 25.16 25.34 Table 2 : De-Noising performance for subband-coded images test images bpp PSNR -LRB- dB -RRB- SBC method 1 method 2 0.500 34.33 34.76 35.02 Lenna 0.250 31.30 31.72 32.01 0.125 28.22 28.62 28.95 2.000 27.34 27.71 27.60 Mandrill 1.000 22.64 23.03 23.03 0.500 20.00 20.33 20.37 1.000 32.73 33.20 33.26 Camera-Man 0.500 27.95 28.43 28.49 0.250 24.65 24.98 25.09 1.000 31.47 31.83 31.76 Building 0.500 28.78 29.14 29.12 0.250 25.23 25.59 25.61 Table 3 : De-Noising performance for a fractal-compressed image test image bpp PSNR -LRB- dB -RRB- fractal Fisher 's method method 1 method 2 0.80 34.10 34.43 34.32 34.45 Lenna 0.43 30.83 31.35 31.27 31.55 0.28 28.02 28.59 28.48 28.69 -LRB- a -RRB- -LRB- b -RRB- -LRB- c -RRB- -LRB- d -RRB- Figure 2 : De-Noising via dithering and wavelet thresholding -LRB- a -RRB- -LRB- b -RRB- -LRB- c -RRB- -LRB- d -RRB- Figure 3 : Artifacts reduction for a JPEG-coded image -LRB- a -RRB- -LRB- b -RRB- -LRB- c -RRB- -LRB- d -RRB- Figure 4 : Artifacts reduction for a subband-coded image -LRB- a -RRB- -LRB- b -RRB- -LRB- c -RRB- -LRB- d -RRB- Figure 5 : Artifacts reduction for a fractal-compressed image

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

dithering
fractal coding
image data compression
noise reduction
quantization
wavelet thresholding
wavelet transform