Implemented isStronglyConnected function to determine if Graph is strongly connected, That is, if in a directed graph every node can be reached from every other node. Implementation is based on [Kosaraju's algorithm] (https://en.wikipedia.org/wiki/Kosaraju%27s_algorithm). Interesting that it uses two passes, the second pass just using the same graph but with reversed edges.
Commit also Includes basic Depth First Search which is currently private and only used in isStronglyConnected. But could be extended in various ways. At some point we will need functions to find all cycles/circuits for a vertex and a random walk algorithm.
Also updated getClusteringCoeffcient to use new undirected edge functions and changed param order to better support pipelining by making Graph the last parameter to the measure functions.
Implemented isStronglyConnected function to determine if Graph is strongly connected, That is, if in a directed graph every node can be reached from every other node. Implementation is based on [Kosaraju's algorithm] (https://en.wikipedia.org/wiki/Kosaraju%27s_algorithm). Interesting that it uses two passes, the second pass just using the same graph but with reversed edges.
Commit also Includes basic Depth First Search which is currently private and only used in isStronglyConnected. But could be extended in various ways. At some point we will need functions to find all cycles/circuits for a vertex and a random walk algorithm.
Also updated getClusteringCoeffcient to use new undirected edge functions and changed param order to better support pipelining by making Graph the last parameter to the measure functions.