Main Content

condensation

Graph condensation

Description

C = condensation(G) returns a directed graph C whose nodes represent the strongly connected components in G. This reduction provides a simplified view of the connectivity between components.

example

Examples

collapse all

Create and plot a graph that contains several strongly connected components. Highlight the strongly connected components.

s = [1 1 2 3 3 4 4 4 4 5 5 6 6 6 7 8 8 9 9 10 10 10 11 11 12 13 13 14 15];
t = [1 3 1 2 5 1 2 12 13 6 8 7 8 10 10 9 10 5 11 9 11 14 12 14 13 11 15 13 14];
G = digraph(s,t);
p = plot(G);

Figure contains an axes object. The axes object contains an object of type graphplot.

bins = conncomp(G);
p.MarkerSize = 7;
p.NodeCData = bins;
colormap(hsv(4))

Figure contains an axes object. The axes object contains an object of type graphplot.

Use condensation to represent each component as a single node. Color the nodes based on the components they represent.

C = condensation(G);
p2 = plot(C);
p2.MarkerSize = 7;
p2.NodeCData = 1:4;
colormap(hsv(4))

Figure contains an axes object. The axes object contains an object of type graphplot.

Input Arguments

collapse all

Input graph, specified as a digraph object. Use digraph to create a directed graph object.

Example: G = digraph([1 2],[2 3])

Output Arguments

collapse all

Condensation graph, returned as a digraph object. C is a directed acyclic graph (DAG), and is topologically sorted. The node numbers in C correspond to the bin numbers returned by conncomp.

condensation determines the nodes and edges in C by the components and connectivity in G:

  • C contains a node for each strongly connected component in G.

  • C contains an edge between node I and node J if there is an edge from any node in component I to any node in component J of G.

Version History

Introduced in R2016b