  Nature is rife with networks that are functionally optimized to propagate
inputs in order to perform specific tasks. Whether via genetic evolution or
dynamic adaptation, many networks create functionality by locally tuning
interactions between nodes. Here we explore this behavior in two contexts:
strain propagation in mechanical networks and pressure redistribution in flow
networks. By adding and removing links, we are able to optimize both types of
networks to perform specific functions. We define a single function as a tuned
response of a single "target" link when another, predetermined part of the
network is activated. Using network structures generated via such optimization,
we investigate how many simultaneous functions such networks can be programmed
to fulfill. We find that both flow and mechanical networks display
qualitatively similar phase transitions in the number of targets that can be
tuned, along with the same robust finite-size scaling behavior. We discuss how
these properties can be understood in the context of a new class of
constraint-satisfaction problems.
