Extract largest biconnected component

Hi Tiago,

Yes, your approach works in my case, and below I give the code.

But imagine a graph consisting of a 4-clique and a 5-ring overlapping in one node:

edgelist = np.array([[0, 1], [0, 2], [0, 3], [1, 2], [1, 3], [2, 3], [0, 4], [4, 5], [5, 6], [6, 7], [0, 7]])
G = Graph(directed=False)
G.add_edge_list(edgelist)

In this case your proposed method to extract the vertices with edges labeled the most frequent number doesn't work. Is there a universal recipe?

This is the way to extract the largest bicomponent in a working example:

# create graph
edgelist = np.array([[ 0, 1], [ 0, 3], [ 0, 5], [ 0, 9], [ 1, 2], [ 1, 4], [ 1, 5], [ 1, 8], [ 1, 16], [ 1, 17], [ 1, 23], [ 3, 5], [ 3, 19], [ 5, 6], [ 5, 9], [ 5, 11], [ 5, 13], [ 6, 7], [ 6, 10], [ 8, 12], [ 8, 21], [ 9, 15], [ 9, 22], [11, 13], [13, 14], [13, 21], [15, 20], [15, 24], [17, 18]])
G = Graph(directed=False)
G.add_edge_list(edgelist)
# extract largest bicomponent
bicomp, articulation, nc = label_biconnected_components(G)
l = []
for i in list(bicomp.a == 16):
    l.append(bool(i))
edge_filter = G.new_edge_property('bool')
edge_filter.a = l
G.set_edge_filter(edge_filter)
m = label_largest_component(G)
G = GraphView(G, vfilt=m)
G.num_vertices()

Best

Haiko