This paper studies the problem of controlling complex networks, that is, the
joint problem of selecting a set of control nodes and of designing a control
input to steer a network to a target state. For this problem (i) we propose a
metric to quantify the difficulty of the control problem as a function of the
required control energy, (ii) we derive bounds based on the system dynamics
(network topology and weights) to characterize the tradeoff between the control
energy and the number of control nodes, and (iii) we propose an open-loop
control strategy with performance guarantees. In our strategy we select control
nodes by relying on network partitioning, and we design the control input by
leveraging optimal and distributed control techniques. Our findings show
several control limitations and properties. For instance, for Schur stable and
symmetric networks: (i) if the number of control nodes is constant, then the
control energy increases exponentially with the number of network nodes, (ii)
if the number of control nodes is a fixed fraction of the network nodes, then
certain networks can be controlled with constant energy independently of the
network dimension, and (iii) clustered networks may be easier to control
because, for sufficiently many control nodes, the control energy depends only
on the controllability properties of the clusters and on their coupling
strength. We validate our results with examples from power networks, social
networks, and epidemics spreading