components: Get connected components of a graph

View source: R/queries.R

componentsR Documentation

Get connected components of a graph

Description

Partition a graph into maximal weakly or strongly connected components. This query supports every graph class, including cyclic graphs of class "UNKNOWN".

Usage

components(cg, mode = c("weak", "strong"))

Arguments

cg

A caugi object.

mode

Character; "weak" (default) or "strong". Weak connectivity ignores edge directions and includes all edge types. Strong connectivity uses only fully directed edges: every node in a component can reach every other node by following directed edges. Undirected, bidirected, and partial edges are ignored in strong mode.

Details

Every strong component of a DAG is a singleton. Strong components describe mutual directed reachability, whereas districts() describe connectivity through bidirected edges.

Value

A list of character vectors, one per component. Nodes within each component follow the graph's node order, and components are ordered by their first node in that order. Isolated nodes form singleton components. An empty graph returns list().

See Also

Other queries: ancestors(), anteriors(), children(), descendants(), districts(), edge_types(), edges(), exogenous(), is_acyclic(), is_admg(), is_ag(), is_caugi(), is_cpdag(), is_dag(), is_empty_caugi(), is_mag(), is_mpdag(), is_pdag(), is_simple(), is_ug(), m_separated(), markov_blanket(), neighbors(), nodes(), parents(), posteriors(), same_nodes(), spouses(), subgraph(), topological_sort()

Examples

cg <- caugi(A %-->% B, C %-->% B, D, class = "DAG")
components(cg) # list(c("A", "B", "C"), "D")
components(cg, mode = "strong") # Four singleton components

cyclic <- caugi(
  A %-->% B, B %-->% C, C %-->% A, C %-->% D,
  class = "UNKNOWN"
)
components(cyclic, mode = "strong") # list(c("A", "B", "C"), "D")


caugi documentation built on Oct. 28, 2026, 1:07 a.m.