On the complexity of optimal routing and content caching in heterogeneous networks | Synapse