views:

744

answers:

2

Anybody out there using BGL for large production servers?

  • How many node does your network consist of?
  • How do you handle community detection
  • Does BGL have any cool ways to detect communities?
  • Sometimes two communities might be linked together by one or two edges, but these edges are not reliable and can fade away. Sometimes there are no edges at all.

Could someone speak briefly on how to solve this problem. Please open my mind and inspire me.

So far I have managed to work out if two nodes are on an island (in a community) in a lest expensive manner, but now I need to work out which two nodes on separate islands are closest to each other. We can only make minimal use of unreliable geographical data.

If we figuratively compare it to a mainland and an island and take it out of social distance context. I want to work out which two bits of land are the closest together across a body of water.

A: 

As far as I know BGL doesn't have any algorithms specifically for community detection.

By "island" do you mean a disconnected subgraph?

Also, graphs do not have any notion of 'distance'.

This 'social distance' is something that you are going to have to define. Once you've done that a large part of the work is done.

There are numerous methods listed on the page you linked to, most of those only require you to define something like a 'distance' metric, and then plug your definitions into the algorithm.

@ David Nehme

Graphs without edge-weights are only about connectedness, they have no notion of distance. If you want to talk about a network then you can talk about distance. But a graph with no edge-weights does not have any distance, unless you want to assume an implied edge-weight of 1 for all edges. But this is really just turning the graph into a network.

Also, he is talking about the distance between two disconnected graphs. To model this, you have to introduce an external concept for distance between nodes, separate from the edge-distance.

What do you mean "graphs do not have any notion of distance"? Graphs are all about distance.
David Nehme
island == disconnected subgraph
Setori
stbuton, you are right about the weight issue, this is my fault I neglected to mention there are weights. Just it was a little difficult to describe the nature them, I took it for granted people would understand there was weights.
Setori
+4  A: 

I've used the BGL for graphs with millions of nodes, but the size of the graph you can use depends on what algorithm you are trying to run. You can quickly compute distances between nodes. There are 4 shortest path algorithms which are most applicable depending on your data: (single pairs of points, for all pairs of points, sparse and dense graphs,...).

As for community detection, there aren't any algorithms built-into the BGL specifically for that (but maybe you can contribute one when you are finished with your project). There are a few algorithms that might be helpful in building a community detection algorithm. The max-flow/min-cut algorithms are typically used in community detection (if there is a lot of flow possible between two nodes, then they are likely to be in the same community, if there isn't much flow, then the min-cut is likely to represent roads between communities). There are also heuristics to order the nodes of the graph to reduce bandwidth. Nodes making up "communities" are likely to be close to each other in such an ordering.

David Nehme
Depending on how we go, there might just be something that we can offer Boost, but i would feel ashamed of the code! Mind you the community could sharpen it up!
Setori
Oh and thanks so much for that bandwidth reducer suggestion, you just possibly pointed me in the right direction for solving another nagging problem.
Setori
Brilliant insight David
Setori