Design Patterns in Beeping Algorithms: Examples, Emulation, and Analysis
  We consider networks of processes which interact with beeps. In the basic model defined by Cornejo and Kuhn (2010), processes can choose in each round either to beep or to listen. Those who beep are unable to detect simultaneous beeps. Those who listen can only distinguish between silence and the presence of at least one beep. We refer to this model as $BL$ (beep or listen). Stronger models exist where the nodes can detect collision while they are beeping ($B_{cd}L$), listening ($BL_{cd}$), or both ($B_{cd}L_{cd}$). Beeping models are weak in essence and even simple tasks are difficult or unfeasible within.   We present a set of generic building blocks (design patterns) which seem to occur frequently in the design of beeping algorithms. They include multi-slot phases: the fact of dividing the main loop into a number of specialised slots; exclusive beeps: having a single node beep at a time in a neighbourhood (within one or two hops); adaptive probability: increasing or decreasing the probability of beeping to produce more exclusive beeps; internal (resp. peripheral) collision detection: for detecting collision while beeping (resp. listening). Based on these patterns, we provide algorithms for a number of basic problems, including colouring, 2-hop colouring, degree computation, 2-hop MIS, and collision detection (in $BL$). The patterns make it possible to formulate these algorithms in a rather concise and elegant way. Their analyses are more technical; one of them improves significantly upon that of the best known MIS algorithm by Jeavons et al. (2016). Finally, inspired by a technique from Afek et al. (2013), our last contribution is to show that any Las Vegas algorithm relying on collision detection can be transposed into a Monte Carlo algorithm without collision detection at the cost of a logarithmic slowdown, which we prove is optimal. 
Arnaud Casteigts, Yves M\'etivier, John Michael Robson, Akka Zemmari
cs.DC cs.DS