A flooding algorithm is a method for distributing material to every part of a connected system. The name derives from the concept of inundation by a flood.
Flooding algorithms are used in systems such as Usenet and peer-to-peer file sharing systems and as part of some routing algorithms, including OSPF, DVMRP, and those used in ad-hoc wireless networks.
There are several variants of flooding algorithm: most works as follows. Each node acts as both a transmitter and a receiver. Each node tries to forward every message to every one of its neighbors. This results in every message eventually being delivered to all reachable parts of the network.
Real-world flooding algorithms have to be substantially more complex than this, since precautions have to be taken to avoid wasted duplicate deliveries and infinite loops, and to allow messages to eventually expire from the system.
Flooding algorithms are also useful for solving many mathematical problems, including maze problems and many problems in graph theory.
See also: