A mathematical programming approach to overlapping community detection