<p>What do you want to do, exactly? Detect communities, or bridges between them? Those are two different problems. Once you have the communities, it's straightforward enough identifying the edges connecting nodes from two distinct communities. So, I guess you want to detect communities.</p>

<p>There are actually thousands methods for this purpose, some of them implemented in Matlab, such as the one you cite, or the <a href="http://netwiki.amath.unc.edu/GenLouvain/GenLouvain" rel="nofollow">generalized Louvain algorithm</a> (also based on modularity optimization). However, most of them are rather available as C or C++ programs, such as <a href="http://www.tp.umu.se/~rosvall/code.html" rel="nofollow">InfoMap</a> (based on a data compression paradigm), <a href="http://www-rp.lip6.fr/~latapy/PP/walktrap.html" rel="nofollow">WalkTrap</a> (clustering using a random walk-based distance), <a href="http://micans.org/mcl/" rel="nofollow">Markov Cluster</a> (simulates some propagation mechanism), and the list goes on...</p>

<p>Those tools formalize the notion of community structure more or less differently, potentially leading to different (estimated) community structures, when applied on the same network. And of course, different communities means different bridges, too. So the question is rather to know how to pick the appropriate method for your data. You seem to have <em>a priori</em> knowledge regarding the networks you are studying, so you should use that to make your choice (rather than the programming language). For instance, even if you don't state it explicitly, you seem to be looking for a hierarchical community structure: not all tools are able to detect this kind of structure. Similarly, if you think one node can belong to several communities at the same time, then you should consider looking for overlapping communities, for instance using <a href="http://www.cfinder.org/" rel="nofollow">CFinder</a> (based on clique percolation).</p>

<p>I'd advise you to have a look at this excellent review of community detection, you might find some interesting information allowing you to pick a method: <a href="http://arxiv.org/abs/0906.0612" rel="nofollow">Community Detection in Graphs</a>. Also, from a programming point of view, I'd advise you to play with the <a href="http://igraph.sourceforge.net/" rel="nofollow">igraph library</a> (available for C, R and Python): it contains several standard community detection tools. You can try them on your data and see what you get.</p>
How to find bridges (community connecting nodes) in large networks represented using the adjacency matrix
<p>I have networks of roughly 10K to 100K nodes which are all connected. These nodes are typically grouped into clusters of communities which are strongly connected with many edges between them and there are hubs etc. Between the communities there are nodes with a few edges <em>bridging</em> / <em>connecting</em> the communities together. These datasets are in adjacency matrices</p>

<p>I have tried spectral clustering (<a href="http://www.cc.gatech.edu/~mihail/D.8802readings/kdd3a.pdf" rel="nofollow">Ding et al 2001</a>) but it is really slow on large data sets and seems to stop working when there is a lot of ambiguity (bridges which are not the only bridge route to another cluster- other communities can act as alternative proxy routes). </p>

<p>I have tried some of the methods from <a href="http://www.elemartelot.org/index.php/programming/cd-code" rel="nofollow">martelot</a> such as the Newman algorithm for modularity optimisation but have not incorporated the stability optimisation functions in that effort (could that be crucial?). On synthetic data sets where the clusters are created by random graphs (ER graphs) the methods work but on real ones where there is nested hierarchy the results are scattered. Using a standalone visualization application/tool the bridges are evident though.</p>

<p>What methods would you recommend/advise to try? I am using MATLAB. </p>