  Nature provides us with abundant examples of how large numbers of individuals
can make decisions without the coordination of a central authority. Social
insects, birds, fishes, and many other living collectives, rely on simple
interaction mechanisms to do so. They individually gather information from the
environment; small bits of a much larger picture that are then shared locally
among the members of the collective and processed together to output a commonly
agreed choice. Throughout evolution, Nature found solutions to collective
decision-making problems that are intriguing to engineers for their robustness
to malfunctioning or lost individuals, their flexibility in face of dynamic
environments, and their ability to scale with large numbers of members. In the
last decades, whereas biologists amassed large amounts of experimental
evidence, engineers took inspiration from these and other examples to design
distributed algorithms that, while maintaining the same properties of their
natural counterparts, come with guarantees on their performance in the form of
predictive mathematical models. In this paper, we review the fundamental
processes that lead to a collective decision. We discuss examples of collective
decisions in biological systems and show how similar processes can be
engineered to design artificial ones. During this journey, we review a
framework to design distributed decision-making algorithms that are modular,
can be instantiated and extended in different ways, and are supported by a suit
of predictive mathematical models.
