<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE article  PUBLIC "-//NLM//DTD Journal Publishing DTD v3.0 20080202//EN" "http://dtd.nlm.nih.gov/publishing/3.0/journalpublishing3.dtd"><article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" dtd-version="3.0" xml:lang="en" article-type="research article"><front><journal-meta><journal-id journal-id-type="publisher-id">WSN</journal-id><journal-title-group><journal-title>Wireless Sensor Network</journal-title></journal-title-group><issn pub-type="epub">1945-3078</issn><publisher><publisher-name>Scientific Research Publishing</publisher-name></publisher></journal-meta><article-meta><article-id pub-id-type="doi">10.4236/wsn.2014.61002</article-id><article-id pub-id-type="publisher-id">WSN-41838</article-id><article-categories><subj-group subj-group-type="heading"><subject>Articles</subject></subj-group><subj-group subj-group-type="Discipline-v2"><subject>Computer Science&amp;Communications</subject></subj-group></article-categories><title-group><article-title>
 
 
  Wireless Sensor Network Routing Based on Sensors Grouping
 
</article-title></title-group><contrib-group><contrib contrib-type="author" xlink:type="simple"><name name-style="western"><surname>mmar</surname><given-names>Hawbani</given-names></name><xref ref-type="aff" rid="aff1"><sup>1</sup></xref><xref ref-type="corresp" rid="cor1"><sup>*</sup></xref></contrib><contrib contrib-type="author" xlink:type="simple"><name name-style="western"><surname>Xingfu</surname><given-names>Wang</given-names></name><xref ref-type="aff" rid="aff1"><sup>1</sup></xref></contrib><contrib contrib-type="author" xlink:type="simple"><name name-style="western"><surname>Yan</surname><given-names>Xiong</given-names></name><xref ref-type="aff" rid="aff1"><sup>1</sup></xref></contrib><contrib contrib-type="author" xlink:type="simple"><name name-style="western"><surname>Saleem</surname><given-names>Karmoshi</given-names></name><xref ref-type="aff" rid="aff1"><sup>1</sup></xref></contrib></contrib-group><aff id="aff1"><addr-line>University of Science and Technology of China, School of Computer Science and Technology, Hefei, China</addr-line></aff><author-notes><corresp id="cor1">* E-mail:<email>ammar12@mail.ustc.edu.cn(MH)</email>;</corresp></author-notes><pub-date pub-type="epub"><day>10</day><month>01</month><year>2014</year></pub-date><volume>06</volume><issue>01</issue><fpage>8</fpage><lpage>17</lpage><history><date date-type="received"><day>December</day>	<month>9,</month>	<year>2013</year></date><date date-type="rev-recd"><day>December</day>	<month>30,</month>	<year>2013</year>	</date><date date-type="accepted"><day>January</day>	<month>7,</month>	<year>2014</year></date></history><permissions><copyright-statement>&#169; Copyright  2014 by authors and Scientific Research Publishing Inc. </copyright-statement><copyright-year>2014</copyright-year><license><license-p>This work is licensed under the Creative Commons Attribution International License (CC BY). http://creativecommons.org/licenses/by/4.0/</license-p></license></permissions><abstract><p>
 
 
   Due to the limited communication range of WSN, the sensor is unable to establish direct connection to the data collection station, therefore the collaborative work of nodes is highly necessary. The data routing is one of the most fundamental processes exploring how to transmit data from the sensing field to the data collection station via the least possible number of intermediate nodes. This paper addresses the problem of data routing based on the sensors grouping; it provides a deep insight on how to divide the sensors of a network into separate independent groups, and how to organize these independent groups in order to make them work collaboratively and accomplish the process of data routing within the network. 
 
</p></abstract><kwd-group><kwd>WSN; WSN Routing; Sensors Groups; Groups Routing</kwd></kwd-group></article-meta></front><body><sec id="s1"><title>1. Introduction</title><p>Wireless sensor network consists of a large number of sensors depending on the applications’ demands [1-3]. The primary function of these devices is to monitor a natural phenomenon, an environmental phenomenon, or more complicated applications in either medical field or military sphere [1,3]. Sensors are battery-powered devices having a limited lifetime, restricted sensing range, and narrow communication range [<xref ref-type="bibr" rid="scirp.41838-ref4">4</xref>]. The entire shortcomings in sensor networks drive the researchers to develop viable solutions [5,6]. One of the main design aims of WSNs is to transfer data communication while trying to extend the lifetime of the network and avoid connectivity degradation by employing aggressive energy management techniques [7-9].</p><p>Due to the limited range of communication, ensuring the direct connection between a sensor and the base station may make the nodes transmit their messages with such a high power that their resources could be quickly depleted. Thus, the collaboration of nodes ensures the communication between distant nodes and base station. In this method, intermediate nodes transmit messages so that a path with multiple links or hops to the base station is established [10-12].</p><p>Collaborative work between sensors requires an intelligent organization to transmit information from the sensing field to the base station in order to save energy resources of the network. Because of the insignificant computational capability and the lack of energy sources, the Flooding algorithms are not a proper solution for routing of WSN application [13-15]. The flooding algorithms broadcast the data to all overlapped nodes to the extent that cause an implosion and some nodes redundantly receive multiple copies of the same message. Gossiping algorithm comes with a better performance, avoiding implosion as the sensor and sending the message to a selected neighbor instead of informing all of its neighbors. However, it is still not the proper solution [1,13].</p><p>In this paper, we will show an intelligent adaptive solution for data routing so that no node will receive multiple copies of the same message, and there would be no need for Flooding or Gossiping. Our solution here dynamically builds multiple alternative paths. With an adaptive routing, when the sensor has to forward a packet towards the base station, it can choose the path to use from a set of alternative paths. This selection can be done upon the state of each group’s leader (busy or free).</p><p>The rest of the paper is structured as follows. Section 2 describes the grouping theory, and a combinatorial computing for intersection areas and intersection points of overlapped sensors. Section 3 describes an algorithm of grouping sensors. In Section 4, we will show an algorithm to manage the wireless sensor network routing. In Section 5, we have shown the evaluation of performance.</p></sec><sec id="s2"><title>2. Sensors Grouping Scheme</title><p>Before we starting the routing algorithm we proposed, we would explain what a group of sensors is.</p><p>Two sensors creates three regions if they overlapped see  <xref ref-type="fig" rid="fig1">Figure 1</xref>. The function <img src="2-9501331\33245d60-ef0f-4ea0-a31a-6b9f376763b9.jpg" /> is expressing the created regions. For convenient, we will express the created regions by<img src="2-9501331\c37262ea-3bbf-4162-82b9-e5cbcbee60af.jpg" />. The symbol <img src="2-9501331\62820d55-3bfc-4daa-b9be-07b91155a8d8.jpg" /> denotes to the number of created regions. For example<img src="2-9501331\ca7855f2-f0ad-47bc-9c8e-66406fabedba.jpg" />. Each region of <img src="2-9501331\10ef718f-9888-49f8-9b16-70899708065c.jpg" /> has a coverage degree. The symbol <img src="2-9501331\4f835de2-b28c-457d-83b5-7417df91ec22.jpg" /> denotes the coverage degree.</p><p><img src="2-9501331\6e788598-dec2-40e2-87d1-45fbd9e75787.jpg" /></p><p>The symbol <img src="2-9501331\2a013cde-2c99-4d88-8b9a-e4c70cdf7a28.jpg" /> denotes the set of sensors covered the <img src="2-9501331\9331b269-9d51-4ad9-8b58-415f9e5c227a.jpg" /> region.</p><p><img src="2-9501331\52b5d8ac-db8b-420a-a6b7-a37ed61a5436.jpg" />.</p><p>A group of k sensors</p><p><img src="2-9501331\51d13bea-2f22-4fd0-a844-bcc252022d42.jpg" />.</p><p>For example,</p><p><img src="2-9501331\61808716-49f3-4004-8c19-777ba77d38ad.jpg" />.</p><p>In [<xref ref-type="bibr" rid="scirp.41838-ref16">16</xref>], the authors provided an analysis about grouping strategy of WSN. We will used this idea to divide the WSN into groups and then organize these groups in order to facilitate the routing process. This grouping scheme is not useful if the sensors moving quickly.</p></sec><sec id="s3"><title>3. Sensors Grouping Algorithm</title><p>In this section, we will provide recursive algorithm to divide the overloaded sensors in to separated groups. A deep explanation is provided in Appendix. We will start by define the terms to be used in our algorithm.</p><sec id="s3_1"><title>3.1. Definitions</title><p>Group of Sensors<img src="2-9501331\96eb6bae-9408-4a48-9f63-10609d35fdc3.jpg" />: is a set of sensors that are overlapped while covering the same region in the sensing field.</p><p><img src="2-9501331\56fc76f7-dc70-4fd0-a9e7-048a6500c92a.jpg" /></p><p>In the this paper, we will use the notation <img src="2-9501331\70cd7248-a16d-4440-8b90-5b3f1e8ace3e.jpg" /> to</p><p>indicate the sensor <img src="2-9501331\d6a471b3-a9c5-4da6-97a1-829f123df425.jpg" /> overlapped with sensor<img src="2-9501331\218b6c84-9406-434f-805c-a02103f6b507.jpg" />. More precisely, <img src="2-9501331\672c8be9-ae31-4290-a734-5509929cd415.jpg" />covered the same region. The group of sensors is an object containing the members shown below.</p><p>ClassSensorGroup</p><p>&#160;&#160;&#160; {</p><p>intGroupID { get; set; }</p><p>intGroupLength { get; set; }</p><p>stringGroupMembersString { get; set; }</p><p>stringGroupingMethod { get; set; }</p><p>List GroupMember{ get; set;}</p><p>&#160;&#160;&#160; }</p><p>Vector of a Sensor<img src="2-9501331\ead123f7-d85a-4ec7-b19c-2f7b6c772f2c.jpg" />: is a set of sensors, which are overlapped with the sensor s<sub>i</sub>.</p><p><img src="2-9501331\68159673-5762-48cd-ab37-47d14fa79a08.jpg" /></p><p>Each sensor in the network has a vector. Some of the sensors inside the network have the same vector. The vector is an object:</p><p>class Vector</p><p>&#160;&#160;&#160; {</p><p>intSensorID { get; set; }</p><p>int Length { get; set; }</p><p>stringSensorsOverlappingString { get; set; }</p><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; List Sensors { get; set; }</p><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; Ellipse SensorBody{ get; set; }</p><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; Sensor Sensor{ get; set; }</p><p>&#160;&#160;&#160; }</p><p>Direct Group<img src="2-9501331\0f6c9616-2df9-427a-bb33-0ed861fc20ac.jpg" />: is a group of sensors that fully matches a vector in the network.</p><p>Indirect Group<img src="2-9501331\f89ce459-8389-43eb-98bf-a38dc3679556.jpg" />: is a Hybrid and collected group of sensors by processing multiple vectors.</p><p>Matched Direct Groups of a Vector: The sensors in ungrouped vectors <img src="2-9501331\28e6b2c3-aed8-4212-baf3-135cf57c6646.jpg" /> are not fully matched with any direct group<img src="2-9501331\4c208047-912c-4953-9953-3421ed1f1ffb.jpg" />, but they can matched some sensors in multiple direct groups, some sensors of ungrouped vectors might not be matched with any sensors in the directed groups.</p><p>Suppose an ungrouped vector:</p><p><img src="2-9501331\5ac27483-4136-466b-8909-7c5973e51ef6.jpg" />A list of direct groups:</p><p><img src="2-9501331\b9f35a9d-a807-46b9-bf75-7f04789f447d.jpg" /></p><p>Each group contain a number of sensors</p><p><img src="2-9501331\7f2e2572-36cf-4041-bc53-8df5d60a54d5.jpg" />.</p><p>The matched group:</p><p><img src="2-9501331\28278719-c241-491a-8a07-a33f94550b16.jpg" /></p><p>Remnant Sensors: remnant sensors <img src="2-9501331\4583d19b-571b-4b67-bbcb-6ab4ad4595ca.jpg" /> are those sensors in ungrouped vectors <img src="2-9501331\d5a399a9-6bcd-4914-88a7-0cd2c519d67c.jpg" /> that do not matches any sensor in direct group.</p><p><img src="2-9501331\f7b885a6-b618-45da-90d8-896a49417d25.jpg" /></p><p>Solid Vector: The solid vector <img src="2-9501331\3009d0db-1ba2-47dd-bfea-ac00c8ce3a38.jpg" /> is the union of remnant sensors <img src="2-9501331\008ae153-4b31-4c92-bdb1-7751dfeb8d79.jpg" /> of each ungrouped vectors.</p><p><img src="2-9501331\352ed1b5-861a-4d7d-8532-6acd99b49f42.jpg" /></p><p>Filtered Vectors: By finding the solid vector<img src="2-9501331\006f8315-2a95-41f8-9b0f-0f4eaa16a90a.jpg" />, we can exclude all the sensors directly grouped already and also find the sensors that are not grouped yet.&#160; For each ungrouped vector<img src="2-9501331\865ac8ff-1175-4442-aedc-0bb9050157b1.jpg" />,</p><p><img src="2-9501331\aef33745-ff49-4e6e-8bd5-b8ae5ba21794.jpg" /></p></sec><sec id="s3_2"><title>3.2. System Model</title><p>The wireless sensor network is a list of vectors collected by all sensors in the field. The network of n sensors is represented by a square matrix<img src="2-9501331\6866fe6d-bfb7-4914-a109-dcf4d64aa18e.jpg" />.</p><p><img src="2-9501331\470efb1c-0e55-4556-af77-62f6317479bb.jpg" /></p><p>To facilitate the calculations, assume that the numerical value of sensors in the matrix is either 1 or 0 as below.</p><p><img src="2-9501331\bc1ab69c-75ae-487d-96f9-c3d2402ee9da.jpg" /></p><p>We can find the maximum coverage degree areas by partitioning <img src="2-9501331\fc4079c5-5a22-4c65-97e3-845cda3c723b.jpg" /> into square sub-matrices <img src="2-9501331\809fa81a-3985-4f88-b452-683c542c5e87.jpg" />, such as the value of each sensor of sub-matrix <img src="2-9501331\8a1cf53d-bb9d-4a53-a5aa-cd6ff3bb4d2f.jpg" /> as well as the sub-matrix contain the maximum possible number of rows and columns. Each sub-matrix should match a group of sensors. For example, the network in  <xref ref-type="fig" rid="fig2">Figure 2</xref> is partitioned into five square sub-matrices shown as below.</p><p>We can see that each group of overlapped sensors is a square matrix, and the value of each element of the matrices is 1. Simply, we just find out the square matrices with the following conditions: The maximum possible number of rows and columns should be alighted together and the value of each element is 1. Suppose that each sensor <img src="2-9501331\fcc5e39e-7aea-469d-996c-251880e220cf.jpg" /> in the field sends a vector <img src="2-9501331\c42d26ae-f15c-4783-86d4-cb3aeaffed46.jpg" /> to the base station, all vectors create the<img src="2-9501331\86b0ba2a-d459-4b00-9a8f-32dca36cb8a6.jpg" />. Let <img src="2-9501331\2b58e569-0838-48c8-b5eb-11c8be6f23d2.jpg" /> be the number of sensors of<img src="2-9501331\15849cad-dc15-4faf-b795-86810e422af8.jpg" />. In addition to that, let R be the number of repetition of <img src="2-9501331\d5bb6d9a-7be4-4007-b0de-a13dbef27de3.jpg" /> in<img src="2-9501331\f89dd224-14e3-456f-a5d4-8bfdc923907a.jpg" />. The first step of this algorithm is to find the sensors overlapping relations based on their distance; each sensor has a vector of sensors. The second step is to sort these vectors according to the number of sensors within.</p></sec><sec id="s3_3"><title>3.3. Groups Algorithm</title><p>Finding a group of sensors indirectly can be manipulated by dividing ungrouped vectors into smaller vectors so that the sensors that are directly grouped already are not needed. To do so, we can follow the steps below:</p><p>1) Find ungrouped vectors by comparing the direct groups and the network vectors list (GetUnGroupedVectors<img src="2-9501331\20f83013-2ae4-424f-b5d8-973cd447e3c6.jpg" />).</p><p>2) Find the matching direct groups associated to ungrouped vectors (GetMatchingGroupsForVector</p><p><img src="2-9501331\e5c04b3a-9790-42f5-99f0-8f126325f43c.jpg" />).</p><p>3) Find the solid vector, which contains the remnant sensors of ungrouped vectors list (GetSolidVector</p><p><img src="2-9501331\b10113e2-229e-4c3e-a1c2-980634587112.jpg" />).</p><p>4) Filter ungrouped vectors according to the solid vector (FilterUnGroupedVectorsAccordingtoSolidVector</p><p><img src="2-9501331\824a19ee-211c-4a4d-9d0e-c01148bbfb9d.jpg" />).</p><p>5) Extract new groups from filtered ungrouped vectors <img src="2-9501331\c35a4fad-699a-44c4-a1db-c1fb6daf9f76.jpg" /> by calling the method of finding the direct groups (GetDirectGroups<img src="2-9501331\0f04ff65-10a2-4932-870e-8053d87d5d8f.jpg" />).</p><p>6) Repeat the steps from step 1 to step 5 recursively until no new groups are found (Algorithm 1).</p><p>Recursive algorithms solve the problem by solving smaller versions of the same. The smaller versions of ungrouped vectors are about half the size of the original vectors. The algorithm can be referred to as a “divide and conquer” algorithm. Say that we have (n) of original vectors, the time needed to extract (g) direct groups is<img src="2-9501331\dadf7109-1656-4bb8-bdb0-2d7dce43c27b.jpg" />. However, not all vectors are able to be directly grouped. For ungrouped vectors, there will be (n-g) vectors. The recursive time needed is:</p><p><img src="2-9501331\c88266e9-552a-4c1f-9614-93e762fd4f8b.jpg" /></p><p><img src="2-9501331\9ce108d1-de51-4119-b25c-d59da2e0ed59.jpg" /></p><p>The analysis depends on the preparation work to divide the input, the size of the ungrouped vectors, the number of recursive calls and the concluding work to combine the results of the recursive calls.</p><p><img src="2-9501331\d89fa4c1-2fad-4603-b5a8-38cd29116497.jpg" /></p><p>g is the number of extracted groups of each recursive call.</p></sec></sec><sec id="s4"><title>4. Routing Basing on Group of Sensors</title><sec id="s4_1"><title>4.1. Sensors Graph</title><p>The routing algorithm is started by dividing the wireless sensors network to independent groups (explained in Subsection 3.3). Each group is comprised of a certain number of sensors. A Sensor may belong to more than one group. If a sensor belongs to group A and belongs to group B, we say there is a link between group A and B, and we call this sensor by coordinator or the group leader. Each group contains one or more leaders.</p><p>The graph of sensor network <img src="2-9501331\18fd4127-ec78-4d78-bac3-936937d3dfa4.jpg" /> consists of a finite nonempty set V of groups called vertices and a set E of 2-elements of V called edges. In the graph theory, the notation V(G) is the set of vertex and E(G) is a set of edges. Using the idea of graph theory, we can say that each vertex is represented by a group of sensors. The leader of the group is represented with an edge. As long as the graph is connected, there will be a path from the source node connecting the base station, hence the packet must be reaching the sink node. Here we assume that connectivity and coverage of network are managed well.</p><p>The graph in <xref ref-type="fig" rid="fig2">Figure 2</xref> can be represented mathematically by</p><p><img src="2-9501331\ced73143-b240-4a56-9af6-9205cc3cbd79.jpg" />,</p><p><img src="2-9501331\819ca283-25da-46a2-ac7e-0a1ec660ba60.jpg" /></p><p>The degree d(v) of a vertex V is its number of incident edges. Any two groups have an incident edges called to be neighbor groups. Each group has at least one neighbor otherwise the network is disconnected. Let <img src="2-9501331\e2e6138a-7ff7-4648-b066-1a2134d14d99.jpg" /> is the neighbor groups of g for instance in <xref ref-type="fig" rid="fig2">Figure 2</xref>,<img src="2-9501331\289da606-f795-457b-a5c3-4fcfa8683677.jpg" />.</p><p>The distance between the source node and the sink node is an important parameter to control and improve the performance of packet forwarding in the overall network. Considering the power consumption, the nearest nodes to the sink could save more power by building a shorter path with a minimum number of hops. Since our algorithm is based on grouping, we need to define the term of grouping distance, the distance of group is the least distance among sensors inside the group to the base station. Should we denote to the distance between sensor s1 and the base station by<img src="2-9501331\8239f64d-957d-4774-ab30-b58520b7b0e8.jpg" />. In  <xref ref-type="fig" rid="fig2">Figure 2</xref>,</p><p><img src="2-9501331\28494600-1104-48aa-9f45-e6c000f1c622.jpg" />.</p><p>We assumed each that group is taking into account the information of its neighbor groups’ distance. With adaptive routing, when a source group has to forward a packet towards a particular group, it can choose the leader sensor to use from a set of alternative leaders associated to the group. This selection can be done upon two conditions: the first condition is the current state of the leader (busy or free) and therefore, the busy leaders are skipped. The second condition is the least distance to the base station and therefore, the nearest group to base station can be selected.</p></sec><sec id="s4_2"><title>4.2. Finding Leaders</title><p>The Leader sensor acts as direct link among its associated groups. It can keep forwarding the data packet to all groups it belongs to. Straightforwardly, we can list the leaders by the simple algorithm below (Algorithm 2).</p></sec><sec id="s4_3"><title>4.3. Selecting the Leader</title><p>Each group has a set of neighbors and a set of leaders. When a packet has been forwarded to a group, the group should know well its leaders and neighbors and therefore make the decision of packet routing to the next hop. In Output: Leaders Find&#160;</p><p>the source group, there are one or more leaders connecting to one or more neighbors.</p><p>Multiple leaders in the source node might link a single neighbor. In addition, the leader might connect to multiple neighbors. Thus, after selecting the nearest neighbor group, we must ensure that the connecting leader is free, otherwise, the packet cannot be forwarded via this leader. If the leader is busy, then the packet must be forwarded to the second nearest neighbor. If there is only one leader in the source node, the packet should be delayed until the leader becomes free.</p><p>The selection process of the leader is running simply by choosing the nearest neighbor and checking the availability of the leader connected to this neighbor. If the leader is free, then this is the adaptive channel to forward the data. There will be more than one adaptive channel when there are more than one leaders (parallel leaders) connected to nearest neighbor. If the current state of all parallel leaders is busy, then there will be two ways to deal with: the first way, the packet should wait until one of the parallel leaders becomes free. However, this is not respectable in case the application’s demand is a real time stream of monitoring. The second way: if the source node contains other leaders connecting to other neighbors, the packet can be forwarded to any other neighbor. However, this might lead to an increment of the number of routing hops, hence might maximize the usage of energy in the overall network, this might lead to the death of a sensor. If there is only one neighbor associated to the group and all leaders are busy, then the first way is obligatory. In case of all parallel leaders are free, any leader election algorithm can be applied to manage the selection of the leader.</p><p>Leaders in the same group are called partners. Moreover, if more than one leader is connected to the same neighbor group, they are called twin leaders. A set of leaders in a group can be partners or twins, neighbors can determine this. For example, in <xref ref-type="fig" rid="fig2">Figure 2</xref>, group 5 contains three elements, three of them are leaders, and thus leaders <img src="2-9501331\5e738d28-4e41-493c-a5c7-d8c1f46091df.jpg" />are twins. If a leader connected to more than one neighborgroup is called identical leader, for example, <img src="2-9501331\63ceadac-c738-4fb5-ba3a-93e0b63a53a6.jpg" />and <img src="2-9501331\169bbb56-71c1-4510-a0ba-82fe60650799.jpg" /> are identical Leaders.</p><p>In Method 1, the input is the source node (SensorGroupSourceGroup), and a list of neighbors associated to the source node (List Neighbors), on the other hand, the output is the selected leader. This way, first, the nearest neighbor is selected, and then we should find the leaders of the source node, which are connected to the selected neighbor. The forwarding decision of packets is deterministic and adaptive in each source group ( Algorithm 3).</p></sec><sec id="s4_4"><title>4.4. Numerical Example</title><p>As shown in <xref ref-type="fig" rid="fig2">Figure 2</xref>, (a) sensors are deployed in the field. Say, sensor (3) detects a target. Here we assume that all leaders are free. The packet routing from sensor (3) to the station is going according to the steps below (see <xref ref-type="fig" rid="fig3">Figure 3</xref>). The source groups (G<sup>1</sup>) have one neighbor and one leader, forwarding data towards group (G<sup>4</sup>) via sensor (7) obligatory. When the packets arrived to (G<sup>4</sup>), it has four leaders and three neighbors, the min group distance is to (G<sup>3</sup>), hence the next hop is (G<sup>3</sup>) via sensor (4). After the packet has arrived to (G<sup>3</sup>), this Input: a group of sensors, and a list of Neighbor groups.</p><p>Output: a sensor called leader.</p><p>Sensor SelectLeaderSensor(SensorGroup SourceGroup ,List Neighbors)</p><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; {</p><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Sensor Leader = null;</p><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Neighborgroups SelectedNeighbor = SelectMinDistanceNeighbor(Neighbors);</p><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; List LeadersAssociatedwithSelectedNeighbor =</p><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; LeaderAssociatedwithNeighbor(SourceGroup, SelectedNeighbor);</p><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Sensor selectFreeSensor =</p><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; SelectFreeSensor(LeadersAssociatedwithSelectedNeighbor);</p><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Leader = selectFreeSensor;</p><p>&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;return Leader;</p><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; }</p><p>Method 1. Select leader.</p><p>Output: Forward packet Find&#160;</p><p>group (5) leaders and three neighbors, the min group distance is to (G<sup>2</sup>), Thus, the next hop is (G<sup>2</sup>) via sensor (2).</p></sec></sec><sec id="s5"><title>5. Performance Evaluation</title><p>In this section, we will evaluate the impact on network performance of the proposed routing algorithm. For this purpose, we have developed a detailed simulator that allows us to estimate the network performance, power consumption, and the number of hops. The results are shown in the Figures 4-6.</p>Counting the Average Number of Hops<p>The number of hops depends on the number of groups. Say we have n nodes deployed randomly in the sensing field, and want to compute the number of possible groups that can be generated. A pattern of groups is a deployment way for sensors groups such that all sensors in the group are connected. Let’s start by a simple example with n = 4. As shown in <xref ref-type="table" rid="table1">Table 1</xref> and <xref ref-type="fig" rid="fig7">Figure 7</xref>, there are four grouping patterns.</p><p>Let us denote to the pattern by <img src="2-9501331\64d9fbf5-e027-4251-8ced-de60452b017c.jpg" /> and to the number of hops of each pattern by<img src="2-9501331\22721d77-d8d2-4223-a3f2-71e2f2743604.jpg" />.</p><p>The expression of patterns can be written as:</p><p><img src="2-9501331\6c77e577-285c-4475-ae1a-55b9e5ebb30b.jpg" /></p><p>Easily we can see the patterns of four sensors are:</p><p><img src="2-9501331\23f237dc-fc36-43f0-a6b2-a26c766b7330.jpg" /></p><p>For five sensors, there will be eight patterns.</p><p><img src="2-9501331\e15d91d7-f975-4b81-a633-350a9fbb6f08.jpg" /></p><p>Let us donate to the number of pattern by<img src="2-9501331\4d8071fa-4e25-43bc-a84e-905edc89bce2.jpg" />. For n sensors, there will be <img src="2-9501331\101b73f9-13de-4e2b-96aa-b61f6e818eaf.jpg" /> patterns.</p><p>The number of hops is changed according to patterns. Let <img src="2-9501331\797b7d43-f1d7-4049-999c-3997076afcac.jpg" /> be the sum of hops of all patterns. For example, <img src="2-9501331\9eb9848b-33a2-4731-b9e1-7f4058f53cae.jpg" />as shown in  <xref ref-type="table" rid="table1">Table 1</xref> and <xref ref-type="fig" rid="fig7">Figure 7</xref>, it is easy to find that the average number of hops is</p><p><img src="2-9501331\4308b3a4-8790-4aaa-8b08-dde7a304cf7f.jpg" /></p><p>In the second experiment, there are 10,000 nodes deployed in different coverage degree. Say we have N sensors deployed randomly. Let us say that the degree of network coverage is C, the complexity of algorithm<img src="2-9501331\918b8408-99d5-439c-a6eb-a59d0a8d1fea.jpg" /> (See <xref ref-type="fig" rid="fig6">Figure 6</xref>).</p></sec><sec id="s6"><title>6. Conclusion</title><p>We have proposed an algorithm where the source group forwards a packet to one neighbor only and there is no need of flooding or forwarding packets to all neighbors. The grouping adaptive routing saves more power therefore, ends up maximizing the lifetime of the wireless sensor network.</p></sec><sec id="s7"><title>Acknowledgements</title><p>The authors would like to acknowledge The National Natural Science Foundation of China, the National Science Technology Major Project and the China Scholarship Council for their supports.</p></sec><sec id="s8"><title>REFERENCES</title></sec><sec id="s9"><title>Appendix</title>Listing of Vectors<p>According to Method 1, GetVectorsList, the input <img src="2-9501331\4bd3a999-b23c-4bcb-afa3-7428868c0d52.jpg" /> is a list of sensors deployed in the sensing field. The output <img src="2-9501331\414e41ad-4c76-4b3c-abe3-9a1acd8ccf9b.jpg" /> is a list of vectors. The main procedure here is to find the overlapped sensors with the required sensor<img src="2-9501331\fa21672f-e450-48cf-858a-6b605d562d4c.jpg" />. Each sensor s<sub>i</sub> finds the overlapping list of sensors and sends it to the base station where the square matrix of network A<sup>*</sup> is built. The algorithm for finding the groups will run in the base station. In case the grouping process run internally in the local node, each node send its vector to the adjacent node only. Here we suppose the grouping process will run externally.</p>Direct Grouping<p>In the Method 2, GetDirectGroups, the input of algorithm <img src="2-9501331\bf37d85b-7af9-4b79-85f9-020fb1cd69c5.jpg" /> is a list of vectors of all sensors deployed in the field. The output <img src="2-9501331\4608f446-d507-4971-a1e6-9cbf04baf5cc.jpg" /> is a list of direct groups extracted from the list of vectors.</p>Ungrouped Vectors<p>For each vector <img src="2-9501331\6324d590-3019-46dd-93e1-9afbc0ef9060.jpg" />in the network list<img src="2-9501331\ffc6c728-7835-4168-ab72-361cece461f9.jpg" />, if not matched any entry <img src="2-9501331\1277ed50-5e4d-4d6d-84e4-323ca0c7c300.jpg" /> in the direct groups list<img src="2-9501331\2d3eb93a-4084-4b99-95cc-111ba5afe6f2.jpg" />, then it considered as ungrouped vector<img src="2-9501331\bd7e836b-123a-4f8b-945f-c1bb009ab7bd.jpg" />.</p><p><img src="2-9501331\ff1d8c89-78af-42a8-b246-b05c6333b061.jpg" />.</p><p>In the Method 3, GetUnGroupedVectors, the inputs are <img src="2-9501331\248d237e-d986-4868-ad14-a5a79b712ef0.jpg" /> a list of the network vectors and the direct groups<img src="2-9501331\a843e06d-cc57-4cca-a9e3-1c8af3f6a1f5.jpg" />. Therefore, we just find those vectors, which are not grouped yet.</p>Finding the Matching Direct Groups of a Vector<p>In the Method 4, GetMatchingGroupsForVector, the input <img src="2-9501331\3f040703-a5aa-4bbd-b1f6-b6c8add6153a.jpg" /> is a list of direct groups and <img src="2-9501331\95dc188e-caf8-451e-bb18-06c85a826d3b.jpg" /> is a list of ungrouped vectors. The output <img src="2-9501331\6c89f7e5-5031-4462-85d5-f7d511cc1e96.jpg" /> is a list of the direct groups which matched the ungrouped vectors. For each ungrouped vector, we will find the matching direct groups by dividing the ungrouped vectors into smaller vectors. Each ungrouped vector might match multiple direct groups.</p>Remnant Sensors<p>In the Method 5, RemnantSensors, the inputs are<img src="2-9501331\5475da7b-8048-4ec0-8cae-680bc64bc7dd.jpg" />, a list of matched groups, and<img src="2-9501331\5c426ccb-2d45-41a8-9e72-17054befcb42.jpg" />, ungrouped vector. The output is a list of remnant sensors<img src="2-9501331\2afaecd9-2834-4b35-8aa3-bf6853c737c2.jpg" />. The first step is to find the union of matching direct groups associated with the ungrouped vector, and to list them in (unionMembersOfGroup), then find the interaction of (unionMembersOfGroup) with the vector’s sensors.</p>Solid Vector<p>Most of the sensors in the solid vector do not exist in the direct groups. This vector runs as a filter for ungrouped vector, and only those sensors which appear in the solid vector can appear in the ungrouped vector as well. See Method 6.</p>Filtered Vectors<p>After filtering all ungrouped vectors, we can continue counting the repetition of all filtered ungrouped vectors until we find new direct groups. In Method 7, the inputs are<img src="2-9501331\e4ce20eb-fcf8-467f-ab43-efaf0fc15d00.jpg" />, a solid vectors, and<img src="2-9501331\2418a64f-baf9-41eb-8d8e-086828c1ed18.jpg" />, a list of ungrouped vectors. The output is a list of vectors contains only those sensors that appeared in the solid vector.</p></sec></body><back><ref-list><title>References</title><ref id="scirp.41838-ref1"><label>1</label><mixed-citation publication-type="other" xlink:type="simple">L. J. G. Villalba, A. L. S. Orozco, A. T. Cabrera and C. J. B. Abbas, “Routing Protocols in Wireless Sensor Networks,” Sensors, Vol. 9, No. 11, 2009, pp. 8399-8421.</mixed-citation></ref><ref id="scirp.41838-ref2"><label>2</label><mixed-citation publication-type="other" xlink:type="simple">E. Zanaj, M. Baldi and F. Chiaraluce, “Efficiency of the Gossip Algorithm for Wireless Sensor Networks,” In Proceedings of the 15th International Conference on Software, Telecommunications and Computer Networks (SoftCOM), Split-Dubrovnik, September 2007.</mixed-citation></ref><ref id="scirp.41838-ref3"><label>3</label><mixed-citation publication-type="other" xlink:type="simple">J. C. Martinez, J. Flich, A. Robels, P. Lopez and J. Duato, “Supporting Adaptive Routing in infiniband Networks,” Proceedings of the 11th Eromicro Conference on Parallel, Distributed and Network-Based Processing (Euro-pdp03) 2003.</mixed-citation></ref><ref id="scirp.41838-ref4"><label>4</label><mixed-citation publication-type="other" xlink:type="simple">S. C.-H. Huang, S. Y. Chang, H.-C. Wu and P.-J. Wan, “Analysis and Design of Novel Randomized Broadcast Algorithm for Scalable Wireless Networks in the Interference Channels,” IEEE Transactions on Wireless Communications, Vol. 9, No. 7, 2010, pp. 2206-2215.</mixed-citation></ref><ref id="scirp.41838-ref5"><label>5</label><mixed-citation publication-type="other" xlink:type="simple">H. H. Zhang and J. C. Hou, “Maximising α-Lifetime for Wireless Sensor Networks,” 2007.</mixed-citation></ref><ref id="scirp.41838-ref6"><label>6</label><mixed-citation publication-type="other" xlink:type="simple">M. Cardei and D. Z. Du, “Improving Wireless Sensor Network Lifetime through Power Aware Organization,” Wireless Networks, Vol. 11, No. 3, 2005, pp. 333-340.</mixed-citation></ref><ref id="scirp.41838-ref7"><label>7</label><mixed-citation publication-type="other" xlink:type="simple">S. Poduri and G. Sukhatme, “Constrained Coverage for Mobile Sensor Networks,” IEEE International Conference on Robotics and Automation, New Orleans, April 26-May 1, 2004, pp. 165-172.</mixed-citation></ref><ref id="scirp.41838-ref8"><label>8</label><mixed-citation publication-type="other" xlink:type="simple">A. Chen, S. Kumar, and T.-H. Lai, “Designing Localized Algorithms for BarrierCoverage,” MOBICOM. ACM, 2007.</mixed-citation></ref><ref id="scirp.41838-ref9"><label>9</label><mixed-citation publication-type="other" xlink:type="simple">X. Bai, Z. Yun, D. Xuan, T. Lai and W. Jia, “Optimal Patterns for Four-Connectivity and Full Coverage in Wireless Sensor Networks,” IEEE Transactions on Mobile Computing, 2008.</mixed-citation></ref><ref id="scirp.41838-ref10"><label>10</label><mixed-citation publication-type="other" xlink:type="simple">J. Wu and S. Yang, “Coverage and Connectivity in Sensor Networks with Adjustable Ranges,” International Workshop on Mobile and Wireless Networking (MWN), 2004.</mixed-citation></ref><ref id="scirp.41838-ref11"><label>11</label><mixed-citation publication-type="other" xlink:type="simple">M. Cardei, J. Wu, N. Lu and M. O. Pervaiz, “Maximum Network Lifetime with Adjustable Range,” IEEE Intl. Conf. on Wireless and Mobile Computing, Networking and Communications (WiMob’05), 2005.</mixed-citation></ref><ref id="scirp.41838-ref12"><label>12</label><mixed-citation publication-type="other" xlink:type="simple">M. Cardei, M. T. Thai, Y. Li and W. Wu, “Energy-Efficient Target Coverage in Wireless Sensor Networks,” Proceedings of IEEE Infocom, 2005.</mixed-citation></ref><ref id="scirp.41838-ref13"><label>13</label><mixed-citation publication-type="other" xlink:type="simple">M. Cardei and D.-Z. Du, “Improving Wireless Sensor Network Lifetime through Power Aware Organization,” Wireless Networks, Vol. 11, No. 3, 2005, pp. 333-340.</mixed-citation></ref><ref id="scirp.41838-ref14"><label>14</label><mixed-citation publication-type="other" xlink:type="simple">J. K. Hart and K. Martinez, “Environmental Sensor Networks: A Revolution in the Earth System Science?” Earth-Science Reviews, Vol. 78, No. 3, 2006, pp. 177-191.</mixed-citation></ref><ref id="scirp.41838-ref15"><label>15</label><mixed-citation publication-type="other" xlink:type="simple">Y. Ma, M. Richards, M. Ghanem and Y. Guo, “Air Pollution Monitoring and Mining Based on Hassard Sensor Grid in London,” Sensors, Vol. 8, No. 6, 2008, p. 3601.</mixed-citation></ref><ref id="scirp.41838-ref16"><label>16</label><mixed-citation publication-type="other" xlink:type="simple">H. Ammar, X. F. Wang and Y. Xiong “Sensors Grouping Model for Wireless Sensor Network,” Journal of Sensor Technology, Vol. 3, No. 4, 2013, pp. 133-140.</mixed-citation></ref></ref-list></back></article>