Algorithms For Discovering Communities In Complex Networks