Conductance Distance¶
Introduction¶
Conductance Distance is a graph similarity metric that compares networks based on their community separation quality. Conductance measures how well-connected a community is internally versus how connected it is to the rest of the network. This distance metric is particularly valuable for analyzing network partitions and evaluating community boundaries in complex networks.
Formal Definition¶
For two graphs G1 and G2, the conductance distance uses the conductance measure φ(S):
Let φ(S) be the conductance of a community S: φ(S) = c(S) / min(vol(S), vol(V-S))
where: * c(S) is the number of edges leaving the set S * vol(S) is the sum of degrees of nodes in S * V-S represents the complement of set S
For graphs with multiple communities, the overall conductance Φ(G) is: Φ(G) = average(φ(Si)) for all communities Si
The distance is then defined as: D(G1, G2) = |Φ(G1) - Φ(G2)|
Intuition and Significance¶
This metric captures: * Community isolation quality * Boundary definition strength * Internal vs external connectivity * Community separation effectiveness
Applications¶
Conductance Distance finds applications in various domains:
Social Networks * Evaluating community boundaries * Analyzing group isolation * Studying social segregation
Communication Networks * Analyzing network partitions * Evaluating network bottlenecks * Studying information flow barriers
Biological Networks * Analyzing protein modules * Studying metabolic pathways * Evaluating neural communities
Usage Example¶
```python from distancia import ConductanceDistance
# Create example graphs with communities G1 = nx.Graph() G1.add_edges_from([
(0,1), (1,2), (0,2), # Community 1 (3,4), (4,5), (3,5), # Community 2 (2,3) # Single bridge
]) communities1 = {0:0, 1:0, 2:0, 3:1, 4:1, 5:1}
G2 = nx.Graph() G2.add_edges_from([
(0,1), (1,2), (0,2), # Community 1 (3,4), (4,5), (3,5), # Community 2 (0,3), (1,4) # Multiple bridges
]) communities2 = {0:0, 1:0, 2:0, 3:1, 4:1, 5:1}
# Calculate conductance distance conductance_calculator = ConductanceDistance() distance = conductance_calculator.compute(G1, G2, communities1, communities2) print(f”Conductance Distance: {distance}”) ```
Computational Complexity¶
The computational complexity for comparing two graphs: * Time complexity: O(|E|) for conductance calculation * Space complexity: O(|V|) for community storage * Overall comparison complexity: O(|E|)
where |V| is the number of vertices and |E| is the number of edges.
Academic References¶
Kannan, R., Vempala, S., & Vetta, A. (2004). “On clusterings: Good, bad and spectral.” Journal of the ACM, 51(3), 497-515.
Leskovec, J., Lang, K. J., & Mahoney, M. (2010). “Empirical comparison of algorithms for network community detection.” WWW ‘10.
Andersen, R., Chung, F., & Lang, K. (2006). “Local graph partitioning using PageRank vectors.” FOCS ‘06.
Schaeffer, S. E. (2007). “Graph clustering.” Computer Science Review, 1(1), 27-64.
Conclusion¶
Conductance Distance provides an effective way to compare networks based on their community boundary quality. This metric is particularly useful for: * Evaluating community detection results * Comparing network partitioning quality * Analyzing boundary definitions * Studying community isolation
Key considerations: * Sensitive to community size variations * Affected by network density * Requires predefined communities * Balance between internal and external connections
Best practices include: * Using consistent community definitions * Considering multiple scales of analysis * Normalizing for network size * Combining with other structural metrics
The metric is most effective when used as part of a comprehensive suite of distance measures, as it specifically captures boundary quality while potentially missing other important network properties.