algorithms deployed in such networks should be completely distributed, relying only on local observations and information, and robust against unexpected changes in topology such as link or node failures.

A canonical problem in distributed control is the [*consensus problem*]{}. The objective in the consensus problem is to develop distributed algorithms that can be used by a group of agents in order to reach agreement (consensus) on a common decision (represented by a scalar or a vector value). The agents start with some different initial decisions and communicate them locally under some constraints on connectivity and inter-agent information exchange. The consensus problem arises in a number of applications including coordination of UAVs (e.g., aligning the agents’ directions of motion), information processing in sensor networks, and distributed optimization (e.g., agreeing on the estimates of some unknown parameters). The [*averaging problem*]{} is a special case in which the goal is to compute the exact average of the initial values of the agents. A natural and widely studied consensus algorithm, proposed and analyzed by Tsitsiklis [@T84] and Tsitsiklis [*et al.*]{} [@TBA86], involves, at each time step, every agent taking a weighted average of its own value with values received from some of the other 