## 3 DCS Scheme Families
### Distributed Index for Features  
**Distributed Index for Features (DIFS)**[30] in sensor networks is designed to provide communication load balance across the index keeping the search efficiency of a quad tree [31]. DIFS also uses a geographic hash similar to GHT [1]. DIFS constructs a multiply rooted hierarchical index that differs from traditional binary and quaternary trees. In DIFS, a non-root node can have multiple parents. Nodes are responsible for storing information for a specific range within a particular geographic region. A node covering a small area stores a wider range of values while a node covering a large area stores a smaller range of values. DIFS efficiently supports range queries related to values distributed in a range. Unlike QUAD tree, each child in DIFS has _bfact_ parents where _bfact_\(=\)_2\({}^{i}\), _i_\(\geq\)_1. The range of values in the histogram of a child is _bfact_ times the range of values maintained by its parents. The range of index values decreases by the factor _bfact_ as it progresses up the index hierarchy. Suppose an event is detected and the value of an attribute (say flux density) is 57 and this attribute value is to be recorded in the index. This attribute value would be recorded in a local leaf node covering a range of 0-255 (considering the range of flux density 0-255) and would also be stored in the parent of the local leaf node that covers a range of 0-63, in a grandparent covering 48-63 and in a great grandparent with a value range of 56-59. Here, a value of _bfact_\(=\)_4 and hence the range of values covered by the grandparent is one fourth of that covered by the parent while the geographic area covered by grandparent is four times that of the parent and so on.  
In Figure 3, the width and height of the total covering region of a network is eight units (\(w=\) 8 and \(l=\) 8). Considering _bfact_\(=\)_2, the dimension of the system-specified minimum covering region for this case is 1 (= \({}^{w}\)/2\({}^{h-1}\) = \({}^{8}\)/2\({}^{4-1}\)), where \(h\) is the number of levels) and 1 (= \({}^{l}\)/2\({}^{h-1}\) = \({}^{8}\)/2\({}^{4-1}\)). Suppose that an event has been found in the vicinity of geographical co-ordinates (7.5, 4.5) with an _attribute_ value of 8. For the time being, it is assumed that nothing is known a priori about the expected distribution of the attribute except that it always falls in the range [0-8]. The hash for the key \"_attribute:0:8_\" will return a location somewhere in the bounding box defined by the corner (7, 4) and (8, 5). So, a message  
Figure 3: An Illustration of the Distributed Index for Features (DIFS) Hierarchy.  
containing the string \"_attribute_\", the co-ordinates (7.5, 4.5) and the value 8 will be sent to leaf-level (level 0) index node, say \(H_{l_{o}}\). Since, _bfact = 2_, the level 0 leaf index node will forward a histogram containing a count for values 7-8 to a level 1 index \(E_{{}_{i}}\) covering the region (6, 4) to (8, 6). The level 1 node will then forward a histogram containing counts for values 4-8 to a level 2 node, \(C_{l_{2}}\) covering the region (4, 4) to (8, 8). This process continues until the value is forwarded to node \(A_{l_{3}}\) covering the entire network bounded by (0, 0) and (8, 8).  
DIFS provides communication efficiency and fast searching of data by name, value range and location. Furthermore, a communication bottleneck at the root of the search tree is avoided using multiple parents of a child thereby maintaining the search efficiency that can be achieved by drilling down through a search tree using a hierarchical approach.