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.
| Parameter | Description |
|---|---|
| deterministic | When set to True, ensures that each invocation (with the same machine configuration and parameter settings) produces the same final result. Default: TRUE. |
| direction | Specifies whether to consider the input graph as directed or undirected. Default: "UNDIRECTED". |
| display | Specifies a list of results tables to send to the client for display. |
| distributed | When set to True, uses a distributed graph. Default: FALSE. |
| graph | Specifies the in-memory graph to use. Default: -1. |
| indexOffset | Specifies the index offset for identifiers in the log and results output data tables. Default: 0. |
| links | Specifies the input data table that contains the graph link information. |
| linksVar | Specifies the data variable names for the links table. |
| logFreqTime | Controls the frequency in seconds for displaying iteration logs. Default: 5. |
| logLevel | Controls the amount of information that is displayed in the SAS log. Default: "BASIC". |
| multiLinks | When set to True, includes multilinks when an input graph is read. Default: TRUE. |
| nodes | Specifies the input data table that contains the graph node information. |
| nodesVar | Specifies the data variable names for the nodes table. |
| nThreads | Specifies the maximum number of threads to use for multithreaded processing. |
| out | Specifies the output data table to contain the summary information about the biconnected components. |
| outBCTreeLinks | Specifies the output data table to contain the links in the block-cut tree. |
| outBCTreeNodes | Specifies the output data table to contain the nodes in the block-cut tree. |
| outGraphList | Specifies the output data table to contain summary information about in-memory graphs. |
| outLinks | Specifies the output data table to contain the graph link information along with any results from the algorithms that calculate metrics on links. |
| outNodes | Specifies the output data table to contain the graph node information along with any results from the algorithms that calculate metrics on nodes. |
| outputTables | Lists the names of results tables to save as CAS tables on the server. |
| selfLinks | When set to True, includes self-links when an input graph is read. Default: TRUE. |
| standardizedLabels | When set to True, specifies that the input graph data are in a standardized format. Default: FALSE. |
| standardizedLabelsOut | When set to True, requests that the output graph data include standardized format. Default: FALSE. |
This example uses a simple undirected graph to illustrate the biconnected components algorithm. The graph contains several articulation points and biconnected components.
| 1 | DATA 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 | ; |
| 6 | RUN; |
This basic example finds the biconnected components and articulation points of the input graph.
| 1 | PROC CAS; |
| 2 | ACTION optNetwork.biconnectedComponents / |
| 3 | links={name='LinkSetIn'} |
| 4 | outNodes={name='mycas.NodeSetOut', replace=true} |
| 5 | outLinks={name='mycas.LinkSetOut', replace=true}; |
| 6 | RUN; |
| 7 | QUIT; |
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.
| 1 | PROC 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}; |
| 8 | RUN; |
| 9 | QUIT; |
A global logistics company wants to identify critical distribution hubs (articulation points) and resilient sub-networks (biconnected components) in its European supply chain. T...
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 ...
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...