Algorithms and cooperation models in caching and recommendation systems