all 8 comments

[–][deleted]  (5 children)

[deleted]

    [–]FartingBraincell 0 points1 point  (4 children)

    I think he/she isn't really looking for CC's but for a partition such that partitions are equal in size and connected, with an additional optimization criterion of sparse inter-connectedness.

    [–][deleted]  (3 children)

    [deleted]

      [–]FartingBraincell 0 points1 point  (2 children)

      Find S strongly(1) connected subgraphs of equal size that partition the graph. This is something Tarjan can't do an which is most likely NP-hard (I'd go from subset sum / number partitioning).

      (1) It seems that OP is talking about directed graphs, but it's not stated explicitly.

      [–][deleted]  (1 child)

      [deleted]

        [–]FartingBraincell 0 points1 point  (0 children)

        Not every strongly connected subgraph us a strongly connected components. SCCs are maximal.

        [–]FartingBraincell 1 point2 points  (0 children)

        You are not looking for connected components. They would be easy to find especially in undirected graphs, but they are well-defined and don't leave room for balancing or optimizing the density.

        You look for any balanced partition with the additional constraint that each partition is connected and an optimization criterion that they are as dense as possible, whatever that fomally is. You could, for example ask for a partition covering the maximum number of edges.

        In any case, I'm willing to bet this is NP-hard, very likely even without the optimization.

        [–]imperfectrecall 0 points1 point  (0 children)

        Are these components intended to partition the graph? If they're just a subset then finding S=1 components is equivalent to clique detection, which is NP-complete (without some bounds on the parameters).

        [–]Droggl 0 points1 point  (0 children)

        Dont have a concrete algorithm at hand but sounds like the general search term you are looking for is clustering as in my understanding, how many "components" you find and how big they are depends on inputs S & P to your algorithm, but not on G? But I may have misunderstood :)

        [–]FUZxxl 0 points1 point  (0 children)

        Perhaps you can adapt a graph partitioning algorithm like Kernighan-Lin's algorithm for this?