I think that it is a little misleading to say that one method name is as good as another. Certainly your point about the differences in results is an important one that I hadn't considered; but, absent such peculiarities, I think it's good practice to use a name that's
very suggestive to the maintenance programmer of what's going on—no one would name a constructor
destroy, even though it could be done; and I think that
weakly_connected_components would make a maintainer scratch his or her head over the meaning of 'weakly'. (This is not to say that my suggestion of
Algorithms::Graphs::TransitiveClosure, which has one call
floyd_warshall to achieve the desired goal, is any better.)