2-Edge-Connectivity and 2-Vertex-Connectivity of an Asynchronous Distributed Network
Abusayeed Saifullah

TL;DR
This paper introduces a self-stabilizing algorithm for determining 2-edge and 2-vertex connectivity in asynchronous distributed networks, leveraging a depth-first search approach to ensure fault tolerance and network robustness.
Contribution
It presents a novel, non-composite self-stabilizing algorithm for 2-edge and 2-vertex connectivity, with optimal time and space complexities based on depth-first search.
Findings
Algorithm stabilizes in O(dnΔ) rounds
Uses O(n log Δ) bits per processor
Effective for asynchronous distributed networks
Abstract
Self-stabilization for non-masking fault-tolerant distributed system has received considerable research interest over the last decade. In this paper, we propose a self-stabilizing algorithm for 2-edge-connectivity and 2-vertex-connectivity of an asynchronous distributed computer network. It is based on a self-stabilizing depth-first search, and is not a composite algorithm in the sense that it is not composed of a number of self-stabilizing algorithms that run concurrently. The time and space complexities of the algorithm are the same as those of the underlying self-stabilizing depth-first search algorithm which are O(dn\Delta) rounds and O(n\log \Delta) bits per processor, respectively, where \Delta (<= n) is an upper bound on the degree of a node, d (<= n) is the diameter of the graph, and n is the number of nodes in the network.
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsDistributed systems and fault tolerance · Interconnection Networks and Systems · Molecular Communication and Nanonetworks
2-Edge-Connectivity and 2-Vertex-Connectivity of an Asynchronous
Distributed Network
Abusayeed Saifullah
Department of Computer Science, Wayne State University
Abstract
Self-stabilization for non-masking fault-tolerant distributed system has received considerable research interest over the last decade. In this paper, we propose a self-stabilizing algorithm for 2-edge-connectivity and 2-vertex-connectivity of an asynchronous distributed computer network. It is based on a self-stabilizing depth-first search, and is not a composite algorithm in the sense that it is not composed of a number of self-stabilizing algorithms that run concurrently. The time and space complexities of the algorithm are the same as those of the underlying self-stabilizing depth-first search algorithm which are rounds and bits per processor, respectively, where is an upper bound on the degree of a node, is the diameter of the graph, and is the number of nodes in the network.
**KEY WORDS
**Distributed system, fault-tolerance, self-stabilization, depth-first search tree, bridge, articulation point, bridge-connected component.
I Introduction
A distributed system is a set of processing elements or state machines interconnected by a network of some fixed topology. Distributed systems are exposed to constant changes of their environment and the design of such systems is quite complex, in part due to unpredictable faults. Implicit in the notion of fault is the specification of what constitutes the correct state of the system. A transient fault is an event that may change the state of a system by corrupting the local states of the machines. The property of self-stabilization can recover the system from transient faults and represents a departure from previous approaches to fault tolerance.
The notion of self-stabilization was first proposed by Dijkstra [5, 6]. A system is self-stabilizing if, starting at any state, possibly illegitimate, it eventually converges to a legitimate state in finite time [12, 11]. A self-stabilizing system is capable of tolerating any unexpected transient fault without being assisted by any external agent. Regardless of the initial state, it can reach a legitimate global state in finite time and can remain so thereafter unless it experiences any subsequent fault. In this paper, we propose a simple self-stabilizing algorithm for detecting the bridges, articulation points, and bridge-connected components of an asynchronous distributed network. When a distributed system is modelled as an undirected connected graph, an edge is called a bridge if its removal disconnects the graph whereas an articulation point is a node whose removal disconnects the graph. A maximal component without any bridge of the graph is called a bridge-connected component. Bridge-connectivity (2-edge-connectivity) and biconnectivity (2-vertex-connectivity) call for considerable attention in graph theory since these properties represent the extent to which a graph is connected [13]. In distributed systems, these properties represent the reliability of the network in presence of link or node failures. Moreover, when communication links are expensive, these properties play a vital role to minimize the communication cost.
Several self-stabilizing algorithms for 2-edge-connectivity and 2-vertex-connectivity are available. The algorithm in [1] can find the bridge-connected components by assuming the existence of a depth-first search spanning tree of the system. This algorithm stabilizes in two phases and, for a system with processors, each phase requires O moves to reach a legitimate configuration by assuming that the preceding phase has stabilized. If a breadth-first search tree of the network is known, then the algorithm in [10] can detect the bridges in O moves and that in [8] can detect the articulation points in O moves. The algorithm in [9] finds the biconnected components in O moves if a breadth-first search tree and all the bridges of the network are known. Each of the algorithms [1, 8, 9, 10] mentioned above requires O bits per processor, where is an upper bound on the degree of a processor. The algorithm proposed by Devismes [4] uses a weaker model (one that does not require every node to have a distinct identifier) and can detect the cut-nodes and bridges in O moves if a depth-first search tree of the network is known. This algorithm is memory efficient (O bits per processor) but does not find the bridge-connected or biconnected components.
It is pointed out in [15] that each of the aforementioned algorithms is just one component of a composite algorithm and hence the time complexity presented is different from that of the composite algorithm. Since the algorithm must run concurrently with a self-stabilizing spanning tree algorithm (which is another component of the composite algorithm), when the last transient fault had elapsed and the spanning tree algorithm has stabilized, the processor may make redundant moves on the spanning tree algorithm which could significantly lengthen the time that the composite algorithm needs to stabilize. In the worst case, the time complexity of the composite algorithm is the of the time complexities of the algorithms that make up the composite algorithm and is thus bounded below by that of the spanning tree algorithm. Addressing all these issues, Tsin [15] has shown how to incorporate Tarjan’s depth-first-search based algorithm for biconnectivity into the self-stabilizing depth-first search algorithm of Collin and Dolev [3] to produce a self-stabilizing algorithm for bridge-connectivity and biconnectivity. The time and space complexities of the resulting algorithm are bounded above by those of the depth-first search algorithm. Following this elegant approach [15], our algorithm simplifies all existing algorithms for bridge-connectivity and biconnectivity [1, 4, 8, 9, 10] by embedding the detection method of bridges and articulation points in the self-stabilizing depth-first search algorithm of Collin and Dolev [3] and by avoiding any distributed protocol composition. The proposed algorithm also determines all the bridge-connected components since, upon stabilization of the algorithm, all the nodes of the same component contain the same identifier. The space complexity is also significantly improved in our algorithm. The space requirement for each of the algorithms of [1, 8, 9, 10] is O bits per processor for a system with processors. This is due to the propagation of a set of non-tree edges that bypass a tree edge in the depth-first search spanning tree of the system. However, we show that passing only the size of that set is sufficient for detecting all the bridges and articulation points which substantially reduces the size of the message. Specifically, the time complexity of our algorithm is rounds and the space complexity for every processor is O() bits. Note that the space complexity for the self-stabilizing depth-first algorithm of Collin and Dolev [3] is O() bits per processor and the time complexity is rounds. The model we use is the same as that of Collin and Dolev [3], which is weaker than that used in [1, 2, 8, 9, 10].
II Computational Model
The distributed system is represented by an undirected connected graph . The set of nodes in represents the set of processors , where is the total number of processors in the system, and represents the set of bidirectional communication links between two processors. We shall use the terms node and processor (edge and link, respectively) interchangeably throughout this paper. We assume that the graph is bridgeless.
All the processors, except , are anonymous. The processor is a special processor and is designated as the root. For the processors , , the subscripts are used for ease of notation only and must not be interpreted as identifiers. Two processors are neighboring if they are connected by a link. The processors run asynchronously and the communication facilities are limited only between the neighboring processors. Communication between the neighbors is carried out using shared communication registers (called registers throughout this paper). Each register is serializable with respect to read and write operations.
Every processor , , contains a register. A processor can both read and write to its own register. It can also read the registers of the neighboring processors but cannot write to those registers. The contents of the registers are divided into fields. Each processor orders its edges by some arbitrary ordering . For any edge , (, respectively) denotes the edge index of according to (, respectively). Furthermore, for every processor and any edge , knows the value of .
We consider a processor and its register to be a single entity, thus the state of a processor fully describes the value stored in its register, program counter, and the local variables. Let be the set of possible states of processor . A configuration of the system is a vector of states, one for each processor. Execution of the algorithm proceeds in steps (or atomic steps) using read/write atomicity. An atomic step of a processor consists of an internal computation followed by either read or write, but not both. Processor activity is managed by a scheduler (also called daemon). At any given configuration, the scheduler activates a single processor which executes a single atomic step.
An execution of the system is an infinite sequence of configurations such that for , (called a single computation step ) denotes that configuration can be reached from configuration by executing on step. A fair execution is an infinite execution in which every processor executes atomic steps infinitely often. A suffix of a sequence of configurations is a sequence , where . The finite sequence is a prefix of the sequence of configurations. A task is defined by a set of executions, called legal executions. A distributed algorithm is self-stabilizing for a task if every fair execution of the algorithm has a suffix belonging to the set of legal executions of that task. The time complexity of the algorithm is expressed in terms of the number of rounds [7]. The first round of an execution is the shortest prefix of in which every processor executes at least one step. Let such that is the prefix consisting of the first rounds of . Then the ()-th round of is the first round of .
III The Algorithm
The algorithm uses the self-stabilizing depth-first search algorithm of Collin and Dolev [3] to construct a depth-first search spanning tree. In the self-stabilizing depth-first search algorithm of Collin and Dolev [3], every processor has a field, denoted by , in its register. At any point of time during the execution of the algorithm, contains the sequence of indices of the links on a path connecting the root with node . The algorithm uses a lexicographical order relation on the path representation and the concatenation of any link with a path is denoted by the operator . The root processor always writes in its field and, in the lexicographical order relation, is the minimal character. When a depth-first search tree is constructed in the network, contains the smallest (with respect to the lexicographical order ) path connecting with . The last links on the smallest paths of , , form a depth-first search tree, called the first depth-first search tree. Given that in the first depth-first search tree, a node is an ancestor of a node if the smallest path of contains the smallest path of , then, the node is an ancestor of a node if is a prefix of , i.e. . If there exists a unique neighbor of such that , then is the parent of . The degree of a processor , denoted by , is the number of incident edges (links) on . Once a depth-first search tree is constructed, at each processor , the type of each incident link () (or ()) can be determined by , and in the following ways:
- •
The link () is a parent link if and only if ;
- •
The link () is a child link if and only if ;
- •
The link () is an outgoing non-tree edge (i.e. it is a non-tree link and is an ancestor of ) if and only if ()(()(())); The total number of outgoing non-tree edges incident on processor is denoted by .
- •
The link () is an incoming non-tree edge (i.e. it is a non-tree link and is a descendant of ) if and only if ()(()(())); The total number of incoming non-tree edges incident on processor is denoted by .
We omit the description of that part of the algorithm for constructing a depth-first search tree , as it is available in [3]. The idea underlying our algorithm is to count the total number of non-tree edges that bypass a tree edge in . A non-tree edge () ( is a descendant of ) bypasses a tree edge () ( is the parent of ) if and only if is a descendant of while is an ancestor of . The total number of non-tree edges bypassing the parent link of processor is denoted by . During the execution of the algorithm this number is propagated towards the root whereas in [1, 10, 8, 9], for every node , the whole set of non-tree edges bypassing the parent link of is calculated and routed towards the root. Since, in our algorithm, only the cardinality of the set is propagated, the message cost is drastically reduced. IN , let and be the number of incoming non-tree edges and the number of outgoing non-tree edges, respectively, incident on , and be the set of children of , and be the number of incoming non-tree edges () such that is a descendant of . Then is calculated recursively as follows:
The algorithm is based on the Theorem 1 and Theorem 2 due to Tarjan [14].
Theorem 1
- (i)
If a non-root node has a child in , then is an articulation point of if and only if .
- (ii)
The root is an articulation point of if and only if has two or more children.
Theorem 2
Let () be a tree edge in such that is the parent of . Then () is a bridge in if and only if .
Corollary 1 follows from Theorem 1 and Theorem 2.
Corollary 1
Each of the end nodes of a bridge is an articulation point unless it is a node of degree one.
Remark 1
For each leaf node , and .
In order to extend this depth-first search algorithm to find the bridges and articulation points, and bridge-connected components every processor , in addition to the field , maintains two fields: and . The field is a unique identifier of the bridge-connected component containing . For every bridge-connected component, a representative node is defined. A representative node of a bridge-connected component is the ancestor of all other nodes of the component containing . When the algorithm stabilizes, every bridge-connected component is uniquely identified by the -value of its representative node, and -fields of all nodes of this component contain this -value.
Lemma 3
A node is a representative node if and only if .
Proof:
Let be a representative node and . Let be a non-tree edge such that is an ancestor and is a descendant of . Node can be reached from using the tree path followed by the non-tree edge () while can also be reached from using another path and these two paths are disjoint. That is, the ancestor is bridge-connected to which contradicts that is a representative node. Again, by Theorem 2, if then no ancestor of can be reached from when the parent link of is removed. Hence is a representative node of the bridge-connected component containing , ∎
During the execution of the algorithm, every non-root node , repeatedly reads in of every , and based on and , it counts the value . Furthermore, every representative node repeatedly writes its own path value into field and every non-representative node repreatedly reads in of its parent and writes this value into . The root always writes 0 into field and (i.e. value) into field.
The algorithm is presented as the 2-EDGE & 2-VERTEX CONNECTIVITY algorithm. The functions read and write are the functions for reading from and writing to a register, respectively. The fields in the register of , , are: , , ; the local variables are , , , and ().
Theorem 4
For every fair execution of the 2-EDGE & 2-VERTEX CONNECTIVITY algorithm, there is a suffix in which for every node , , in every configuration, where , , is the representative node of the bridge-connected component containing .
Proof:
In the 2-EDGE & 2-VERTEX CONNECTIVITY algorithm, new instructions for determining the bridges, and articulation points are embedded in the self-stabilizing depth-first search algorithm of Collin and Dolev [3]. These new instructions do not affect the original function of the depth-first search algorithm. Therefore, by Theorem 3.2 in [3], for every fair execution of the 3-EDGE-CONNECTIVITY algorithm, there is a suffix of the execution in which , , contains the correct value in every configuration. Suppose the execution has reached a configuration in . By Observation 3.1 in [3], the correct values in , , specify a depth-first search tree .
Let be any leaf node in . Since , , is correctly determined, after reads in the field from each outgoing non-tree link, value is correctly determined. Let be a suffix of the execution in which all the nodes on level or higher (i.e. farther from the root) have correctly computed their values. Consider any non-leaf node , on level . By the induction hypothesis, for each , the values of are correctly calculated. Therefore, correctly calculates . Hence, there is a suffix of the suffix in which for every configuration, are correctly computed for every node , .
Suppose the execution has reached a configuration in the aforementioned suffix of suffix . The root node is a representative node and always correctly writes the value of (i.e. ) into the field . Let be a suffix in the suffix of the execution in which, for every node on level or lower (i.e. closer to the root), , where is the representative node of the bridge-connected component containing . Let be any non-root node on level . The value can be read from which is correctly calculated. If is a representative node, then correctly writes into . If is not a representative node, then reads in the -field of its parent which is correct by the induction hypothesis and writes it into . Hence, there is a suffix of the fair execution in which for every node , , in every configuration, where , , is the representative node of the bridge-connected component containing . ∎
Lemma 5
When the 2-EDGE & 2-VERTEX CONNECTIVITY algorithm stabilizes, all the bridges, articulation points, and bridge-connected components are determined.
Proof:
When the algorithm stabilizes, by Theorem 4, every node knows its children, parent, all incident tree-edges and non-tree edges, values, and values. By Theorem 2, any tree edge () with is a bridge, and, by Corollary 1, each of these two nodes is an articulation point unless its degree is one. By Theorem 1, any other non-root node having a child such that is an articulation point. If the root has more than one child then is an articulation point. Every bridge-connected component has a unique representative node and, by Theorem 4, the path value of this node is written into field of every node of this component. Hence value of every node , , uniquely identifies the bridge-connected component containing . ∎
Lemma 6
The 2-EDGE & 2-VERTEX CONNECTIVITY algorithm stabilizes in O() rounds, where is an upper bound on the degree of a node, is the diameter of the graph.
Proof:
It is easily verified that the new instructions added to the depth-first search algorithm of Collin and Dolev [3] only increase the time complexity for constructing a depth-first search tree by a constant factor. The for loop for computing the -values takes rounds, where is the height of and the for loop for computing the values takes O(1) rounds. Therefore, the time required by the 2-EDGE & 2-VERTEX CONNECTIVITY algorithm remains same as that of the underlying depth-first search algorithm (i.e. O() rounds). ∎
Lemma 7
The space complexity of the 2-EDGE & 2-VERTEX CONNECTIVITY algorithm is O() bits per processor.
Proof:
In the depth-first search algorithm of Collin and Dolev [3], the space required by every processor is O() bits. This is the space required to store the path value of the processor. In the 2-EDGE & 2-VERTEX CONNECTIVITY algorithm, field requires O() bits, and filed requires O() O() bits. The space complexity per processor is thus O() bits. ∎
Figure 1 is a depth-first spanning tree of the corresponding undirected graph. An execution of our algorithm over this tree is shown below.
The values at non-root nodes , , , and are 0, and hence, by Lemma 5, the bridges are , , , . The articulation points are , , , , , , , and bridge-connected components are: , , , , and .
IV Conclusion
We have presented an algorithm for the 2-edge-connectivity and 2-vertex-connectivity problem based on a self-stabilizing depth-first search algorithm. The algorithm constructs a depth-first search tree in rounds and then determines the bridges, articulation points, and bridges-connected components based on the depth-first search tree. In the worst case, when , our algorithm requires rounds. Clearly, the time complexity of our algorithm is dominated by the time spent in constructing the depth-first search tree. Should there be an improvement made on the time bound required to construct the depth-first search tree, the time complexity of our algorithm will improve as well.
The reference list from the paper itself. Each links out to its DOI / PubMed record.
- 1[1] P. Chaudhuri. An O ( n 2 ) superscript 𝑛 2 (n^{2}) self-stabilizing algorithm for computing bridge-connected components. Computing , 62(1):55–67, February 1999.
- 2[2] P. Chaudhuri. A self-stabilizing algorithm for detecting fundamental cycles in a graph. Journal of Computer and System Science , 59(1):84–93, August 1999.
- 3[3] Zeev Collin and Shlomi Dolev. Self-stabilizing depth-first search. Information Processing Letters , 49(6):297–301, March 1994.
- 4[4] St e ´ ´ 𝑒 \acute{e} phane Devismes. A silent self-stabilizing algorithm for finding cut-nodes and bridges. Parallel Processing Letters , 15(1&2):183–198, March & June 2005.
- 5[5] Edsger W. Dijkstra. Self-stabilizing systems in spite of distributed control. Communications of the ACM , 17(1):643–644, November 1974.
- 6[6] Edsger W. Dijkstra. A belated proof of self-stabilization. Distributed Computing , 1(1):5–6, January 1986.
- 7[7] S Dolev. Self-stabilization . MIT Press, Cambridge, Massachusetts, 2000.
- 8[8] M. H. Karaata. A self-stabilizing algorithm for finding articulation points. International Journal of Foundations of Computer Sciences , 10(1):33–46, 1999.
