## 3 Routing algorithms based on sensor position
### Flooding-based routing  
Flooding is classical and stateless mechanisms to relay data. In flooding, each sensor broadcasts receiving packets to all its neighbors. This process does not stop until the packet reaches the destination or the maximum hop number of the packet is reached. Although flooding is very easy to implement, it has several drawbacks, such as _implosion_, _overlap_ and _resource blindness_[33]. In order to avoid the broadcast storm problem, different methods are proposed to limit the naive flooding. Random flooding is one of improved flooding. In random flooding, sensors first receive a packet and then transmit the packet to all its neighbors with probability \(p\). Other same packets are ignored. Based on random flooding idea, [PERSON] _et al._[34] proposed rumor routing algorithm, which can be an alternative of naive flooding. The basic idea of rumor routing can be described as follows: (1). When an event is occurred in a region of the network, sensing nodes create some event agents and propagate them along the network. Each node randomly forwards event agents to a neighbor, shown as Figure.3. (2). When event agent propagating the path to Event 2 comes across a path to Event 1, it begins to propagate the aggregate path to both, shown as Figure.4. (3). Each event agent has an event table containing the original event and every event visited in the trajectory. When an event agent meets a node, sensors' event table is updated by the event agent, shown as Figure.5. (5). In order to join the path, the query agent is created and propagated along random path. Later queries can be routed along these agent-generated paths. It has been proved that the paths created by query and event agents have a very high possibility to intersect. The problem in rumor routing is that the forwarding of agent is random. So, it is possible that the paths of agents are too long. If the number of agents is large, the energy consumption is too much. Inspired by rumor routing, [PERSON] _et al._[35] proposed zonal rumor routing (ZRR) algorithm, in which rumor routing can be considered as a special case of ZRR when only one node belongs to one zone. ZRR enables the rumors to spread to a larger part of the network with high energy efficiency by partitioning the network into zones. ZRR can improve the percentage query delivery and requires fewer transmissions to reduce the total energy consumption in a sensor network. These rumor routing versions only use relative position information. Based on the precise position of its neighbors, [PERSON] et al. proposed directed rumor routing (DRR) [36, 37]. DRR propagates the event agents and the query agents in straight lines, instead of using purely random walk paths, centered at the source point and the sink point. In DRR, there is two phases for calibration. In the first phase, each node sends a Hello message containing its position to its neighbors and builds a list of its neighbors along with their positions. At the second phase each node detects if it is in the edge of the network in order to prevent the node from unnecessary traversing in the edges of the network. Firstly, each agent must carry the location of source. Then, at each step, the packet is forwarded to a neighbor with least deviation on the forward direction (Figure 6) using the location information of neighboring nodes. Otherwise, the packet is misrouted to a neighbor farthest from the source (Figure 7). In each step, a previously used node is not selected to route the packet to avoid cycles unless it is the only remaining node. Figure 5: Agents optimize longer paths [34]. Similar to DDR idea, many routing algorithms are proposed to limit flooding in a small area. [PERSON] _et al._ proposed a limited flooding routing scheme for WSN [38]. The sink floods Sector Setup Packet (SSP) contains its location information and angular size. Each sensor receiving a SSP can decide its own sector (S, Figure.8) and track (T, Figure.9) and memorizes its sector and track numbers unless its energy is drained.