  Social groups give the opportunity for a new form of caching. In this paper,
we investigate how a social group of users can jointly optimize bandwidth
usage, by each caching parts of the data demand, and then opportunistically
share these parts among themselves upon meeting. We formulate this problem as a
Linear Program (LP) with exponential complexity. Based on the optimal solution,
we propose a simple heuristic inspired by the bipartite set-cover problem that
operates in polynomial time. Furthermore, we prove a worst case gap between the
heuristic and the LP solutions. Finally, we assess the performance of our
algorithm using real-world mobility traces from the MIT Reality Mining project
dataset and two mobility traces that were synthesized using the SWIM model. Our
heuristic performs closely to the optimal in most cases, showing a better
performance with respect to alternative solutions.
