optNetwork

biconnectedComponents

Description

The biconnectedComponents action calculates the biconnected components and articulation points of a graph. A biconnected component of a graph is a maximal subgraph that cannot be disconnected by removing a single node. An articulation point is a node whose removal would increase the number of connected components in the graph. This is a fundamental algorithm in network analysis for understanding graph connectivity and identifying critical nodes.

optNetwork.biconnectedComponents { deterministic=TRUE | FALSE, direction="DIRECTED" | "UNDIRECTED", display={...}, distributed=TRUE | FALSE, graph=integer, indexOffset=integer, links={...}, linksVar={...}, logFreqTime=integer, logLevel="AGGRESSIVE" | "BASIC" | "MODERATE" | "NONE", multiLinks=TRUE | FALSE, nodes={...}, nodesVar={...}, nThreads=integer, out={...}, outBCTreeLinks={...}, outBCTreeNodes={...}, outGraphList={...}, outLinks={...}, outNodes={...}, outputTables={...}, selfLinks=TRUE | FALSE, standardizedLabels=TRUE | FALSE, standardizedLabelsOut=TRUE | FALSE };
Settings
ParameterDescription
deterministicWhen set to True, ensures that each invocation (with the same machine configuration and parameter settings) produces the same final result. Default: TRUE.
directionSpecifies whether to consider the input graph as directed or undirected. Default: "UNDIRECTED".
displaySpecifies a list of results tables to send to the client for display.
distributedWhen set to True, uses a distributed graph. Default: FALSE.
graphSpecifies the in-memory graph to use. Default: -1.
indexOffsetSpecifies the index offset for identifiers in the log and results output data tables. Default: 0.
linksSpecifies the input data table that contains the graph link information.
linksVarSpecifies the data variable names for the links table.
logFreqTimeControls the frequency in seconds for displaying iteration logs. Default: 5.
logLevelControls the amount of information that is displayed in the SAS log. Default: "BASIC".
multiLinksWhen set to True, includes multilinks when an input graph is read. Default: TRUE.
nodesSpecifies the input data table that contains the graph node information.
nodesVarSpecifies the data variable names for the nodes table.
nThreadsSpecifies the maximum number of threads to use for multithreaded processing.
outSpecifies the output data table to contain the summary information about the biconnected components.
outBCTreeLinksSpecifies the output data table to contain the links in the block-cut tree.
outBCTreeNodesSpecifies the output data table to contain the nodes in the block-cut tree.
outGraphListSpecifies the output data table to contain summary information about in-memory graphs.
outLinksSpecifies the output data table to contain the graph link information along with any results from the algorithms that calculate metrics on links.
outNodesSpecifies the output data table to contain the graph node information along with any results from the algorithms that calculate metrics on nodes.
outputTablesLists the names of results tables to save as CAS tables on the server.
selfLinksWhen set to True, includes self-links when an input graph is read. Default: TRUE.
standardizedLabelsWhen set to True, specifies that the input graph data are in a standardized format. Default: FALSE.
standardizedLabelsOutWhen set to True, requests that the output graph data include standardized format. Default: FALSE.
Data Preparation View data prep sheet
Data Creation

This example uses a simple undirected graph to illustrate the biconnected components algorithm. The graph contains several articulation points and biconnected components.

Copied!
1DATA mycas.LinkSetIn;
2 INPUT from $ to $ @@;
3 DATALINES;
4 A B A C A D B C C D D E E F F G F H G H
5 ;
6RUN;

Examples

This basic example finds the biconnected components and articulation points of the input graph.

SAS® / CAS Code Code awaiting community validation
Copied!
1PROC CAS;
2 ACTION optNetwork.biconnectedComponents /
3 links={name='LinkSetIn'}
4 outNodes={name='mycas.NodeSetOut', replace=true}
5 outLinks={name='mycas.LinkSetOut', replace=true};
6RUN;
7QUIT;
Result :
The action generates two output tables: 'mycas.NodeSetOut' which identifies the articulation points, and 'mycas.LinkSetOut' which assigns each link to a biconnected component. The log will show a summary, including the number of articulation points and biconnected components found.

This example demonstrates a more comprehensive use of the action by also generating the block-cut tree. The block-cut tree is a representation of the graph's connectivity structure, where 'block' nodes represent biconnected components and 'cut' nodes represent articulation points.

SAS® / CAS Code Code awaiting community validation
Copied!
1PROC CAS;
2 ACTION optNetwork.biconnectedComponents /
3 links={name='LinkSetIn'}
4 outNodes={name='mycas.NodeSetOut', replace=true}
5 outLinks={name='mycas.LinkSetOut', replace=true}
6 outBCTreeNodes={name='mycas.BCTreeNodes', replace=true}
7 outBCTreeLinks={name='mycas.BCTreeLinks', replace=true};
8RUN;
9QUIT;
Result :
In addition to the 'NodeSetOut' and 'LinkSetOut' tables, this code creates 'mycas.BCTreeNodes' and 'mycas.BCTreeLinks'. These tables describe the structure of the block-cut tree, providing deeper insight into how the biconnected components are connected through the articulation points.

FAQ

What is the primary purpose of the biconnectedComponents action?
What is a biconnected component in graph theory?
What defines an articulation point?
Which output tables are generated by the biconnectedComponents action?
Can this action process both directed and undirected graphs?

Associated Scenarios

Use Case
Standard Case: Supply Chain Critical Hub Analysis

A global logistics company wants to identify critical distribution hubs (articulation points) and resilient sub-networks (biconnected components) in its European supply chain. T...

Use Case
Performance Case: Large-Scale Telecom Network Analysis

A national telecom provider needs to analyze its entire fiber-optic network, comprising thousands of nodes and links, to find vulnerabilities. The analysis must run efficiently ...

Use Case
Edge Case: Disconnected and Imperfect Infrastructure Graph

A city's water department is analyzing its pipe network from raw, potentially messy data. The network contains separate, unconnected water systems (e.g., for potable water and r...