nwkcomponents

Maximal k-component enumeration

Syntax

nwkcomponents
[netlist]
[,
k(int)
generate(newvarname)
replace
silent]
   
k(int) Minimum vertex connectivity required; default = 2
generate(newvarname) Required. Name of the Stata variable that stores each node’s largest qualifying k-component size
replace Replace existing variable
silent Suppress display of results

Description

nwkcomponents enumerates every maximal k-component (Kanevsky 1993) in the network(s) in netlist - a subgraph with vertex connectivity of at least k(int), meaning at least k(int) nodes would have to be removed from it to disconnect it (or reduce it to a single node). A k-component is a genuine strengthening of an ordinary connected component (which is just the k(int)=1 case - nwcomponents already implements that, more cheaply, via a simple reachability search rather than a connectivity computation): k(int)=2 excludes single cut-vertices/bridges that would fracture the group, k(int)=3 additionally excludes any 2-node cutset, and so on. This directly formalizes the intuition that a group connected only by a single “weak link” is less cohesive than one where several independent paths connect every pair of members.

k(int) defaults to 2 - the smallest level that is a genuine refinement of nwcomponents’ own plain connectivity - and must be at least 1 (nwcomponents already covers that trivial case directly). Vertex connectivity is computed via the standard node-splitting reduction to max-flow (Even 1979) combined with Menger’s theorem (the minimum vertex set separating any two non-adjacent nodes equals the maximum flow between them in the split graph); the network’s own overall k-components are then found by the standard recursive decomposition also underlying Moody and White’s (2003) cohesive blocking - see Algorithm below for the one respect in which this command deliberately does less than the full Moody-White procedure.

Like cliques/k-plexes/n-cliques/n-clans, k-components can genuinely overlap - the nodes whose removal disconnects a graph (a cutset) remain shared members of every resulting sub-block their removal reveals, not assigned to just one side - so nwkcomponents follows the same output shape as nwclique/nwkplex/nwnclique: a single per-node “largest qualifying k-component size” summary variable (generate(newvarname), required), plus the complete overlapping structure in r(kcomp_matrix) (a k-components-by-nodes 0/1 membership matrix) and r(kcomponents) (count). Unlike those commands there is no minsize() - a k-component’s own minimum possible size is already k(int)+1 (a smaller set cannot reach connectivity k(int) at all, since the maximum possible connectivity of an s-node graph is s-1), so there is no equivalent “trivial small case” to filter out separately.

Examples

. nwwebuse florentine, nwclear
. nwkcomponents flomarriage, generate(_kcompnum)
. nwkcomponents flomarriage, k(3) generate(_kcompnum) replace

Supported network types

Binary: yes. Directed: yes, automatically symmetrized (vertex connectivity in the classical Moody-White sense has no directed generalization here, the same reasoning nwclique/ nwkplex/nwnclique already apply). Weighted: not used - only tie presence/absence affects connectivity. Signed: not checked. Two-mode: not checked. Vertex-connectivity computation via max-flow is polynomial per pair, but nwkcomponents computes it between every non-adjacent pair (a deliberately simple, definitely-correct brute-force rather than the smaller reference-vertex subset a more optimized algorithm would use - see nwclique’s own “Supported network types” section for the same trade-off philosophy applied there), and the overall recursive decomposition can call this repeatedly - fine for the moderate network sizes typical of SNA datasets, not recommended for very large or very dense networks.

Stored results

Scalars

  • r(kcomponents) number of maximal k-components found

Matrices

  • r(kcomp_matrix) k-components-by-nodes 0/1 membership matrix, one row per maximal k-component

References

Kanevsky, A. (1993). Finding all minimum-size separating vertex sets in a graph. Networks 23(6), 533-541.

Moody, J., White, D.R. (2003). Structural cohesion and embeddedness: a hierarchical concept of social groups. American Sociological Review 68(1), 103-127.

Even, S. (1979). Graph Algorithms. Computer Science Press. (the vertex-splitting max-flow reduction for vertex connectivity)

Wasserman, S., Faust, K. (1994). Social Network Analysis: Methods and Applications. Cambridge University Press. (k-components and structural cohesion)

See also


Back to top

nwcommands is free to install and use, including for commercial research. See the GitHub repository for source, license, and issue tracking.

This site uses Just the Docs, a documentation theme for Jekyll.