A heuristic algorithm for the set covering problem