Incremental Strongly Connected Components with Predictions
Abstract
Algorithms with predictions is a growing area that aims to leverage machine-learned predictions to design faster beyond-worst-case algorithms. In this paper, we use this framework to design a learned data structure for the incremental strongly connected components (SCC) problem. In this problem, the vertices of a graph are known a priori and the directed edges arrive over time. The goal is to efficiently maintain the strongly connected components of the graph after each insert. Our algorithm receives a possibly erroneous prediction of the edge sequence and uses it to precompute partial solutions to support fast inserts. We show that our algorithm achieves nearly optimal bounds with good predictions and its performance smoothly degrades with the prediction error. We also implement our data structure and perform experiments on real datasets. Our empirical results show that the theory is predictive of practical runtime improvements.
Keywords and phrases:
algorithms with predictions, learning augmented algorithms, incremental graph algorithms, strongly connected components, data structuresFunding:
Aidin Niaparast: This material is based upon work supported in part by the Air Force Office of Scientific Research under award number FA9550-23-1-0031.Copyright and License:
2012 ACM Subject Classification:
Theory of computation Dynamic graph algorithmsEditor:
Pierre FraigniaudSeries and Publisher:
Leibniz International Proceedings in Informatics, Schloss Dagstuhl – Leibniz-Zentrum für Informatik
1 Introduction
Incremental computation on graphs is a fundamental primitive in many database and optimization problems. In an incremental graph problem, the vertices of the graph are known ahead of time and the edges are revealed over time. The goal is to design an efficient data structure for answering queries at time about some property (such as connectivity or shortest path) of the current graph . Designing fast worst-case algorithms for incremental graph problems is an area of extensive research [7, 3, 5, 12, 13].
Algorithms designed to be fast in the worst case provide strong guarantees against adversarial inputs. However, these algorithms fail to exploit the correlations in the structure of typical instances. As most computations are performed repeatedly on similar datasets, heuristics optimized for domain specific inputs tend to be faster in practice.
A growing body of work, known as algorithms with predictions [25], seeks to bridge the gap between simple heuristics that lack strong theoretical guarantees and more complex worst-case algorithms that are provably efficient but often impractical. The main idea is to use machine-learned predictions to capture correlations in the input instances and leverage them to guide algorithmic decisions.
Predictions are particularly effective for online or dynamic problems, where the input is not known ahead of time. Predictions trained on historical data can then serve as a proxy for future inputs – turning a hard online problem into an easier-to-solve offline one. Using such predictions, an algorithm can then precompute partial solutions ahead of time and consequently perform faster updates and queries at runtime. The algorithms designed in this framework are referred to as learning-augmented or learned algorithms.
The running time of a learned algorithm is measured in terms of the quality of the prediction – the bound is stated in terms of both the size of the input and the prediction error. Ideally, a learned algorithm for an online problem (1) is nearly as fast as the best-offline solution when the prediction is perfect, (2) has bounded worst-case performance cost when the prediction is arbitrarily wrong, and (3) has performance that degrades gracefully with error. These properties in order are referred to as consistency, robustness, and smoothness respectively in the literature. Thus, learned algorithms leverage good predictions to be fast and have provable safeguards against bad predictions.
Incremental SCC.
In this paper, we study the incremental strongly connected components (SCC) problem in the algorithms with predictions model. In this problem, the vertices of a directed graph are known a priori and the directed edges are inserted one by one. Let denote the sequence of edges and let denote the graph at time . The goal is to maintain the strongly connected components of at all times . A strongly connected component is a maximal set of vertices of such that every pair of vertices are mutually reachable, that is, there is a directed path from to and vice versa.
Maintaining SCCs is a fundamental building block in many applications, e.g. social networks [9], graph processing [34], program analysis [14] and fault-tolerant networks [2].
DFS-based approaches such as Tarjan’s algorithm [31] can compute the SCCs of a static offline graph in time. As a step towards solving the incremental SCC problem, consider the offline incremental problem. In this variant, the edge insert sequence is known ahead of time and the goal is to design a data structure to answer queries about the SCCs of each intermediate graph . Naively running Tarjan’s repeatedly takes time.111We assume to simplify the runtimes. A folklore divide-and-conquer approach [28] improves upon this naive approach and solves the offline incremental SCC problem in total time.
Offline to Learned Incremental SCC.
To design a learned algorithm for the online incremental problem, we assume that a prediction of the edge sequence is given to the algorithm. We define the prediction error as the maximum error between when an edge was predicted to arrive in and its actual arrival time in . To ensure this metric is well-defined, we assume that is a permutation of (we discuss this assumption further in Section 2.1). If the prediction is perfect (), the problem reduces to the offline incremental variant. If the prediction is arbitrarily erroneous (), the algorithm effectively gets no information about the input and the problem reduces to the worst-case model. The main challenge is to design an algorithm that smoothly interpolates between the two regimes as a function of the prediction error .
1.1 Our Contributions
One of our main contributions is designing the first learned data structure for the incremental SCC problem which is consistent, robust and smooth with respect to the prediction error.
Theorem 1.
We design a learned data structure that, given prediction with error , maintains the strongly connected components of the graph in total time for inserts. Queries about the SCC of a given vertex take time.
To put this result in context, notice that if the edge arrivals are reasonably predictable (e.g. , our algorithm for the online incremental problem is nearly as fast as the offline variant.
The algorithmic idea is to use a divide-and-conquer approach on the predicted edge sequence to recursively precompute solutions to partial subproblems using Tarjan’s algorithm. As edges arrive that are different from , our algorithm updates the prediction and lazily recomputes the affected subproblems. At a high level, we show that we can bound the number of times each subproblem is recomputed by the prediction error and thus lose an factor over the offline incremental algorithm.
Robustness to Error.
The running time of our algorithm grows with – in fact, for sufficiently high , our algorithm may be slower than known worst-case techniques. However, the algorithm can be made robust to arbitrarily erroneous predictions with respect to any worst-case algorithm by switching to the worst-case algorithm if the learned algorithm’s runtime grows larger than the worst-case guarantee.
Similarly, our algorithm’s running time is given in terms of the maximum error – as stated, even a single outlier can significantly impact performance guarantees. One potential strategy to handle a small number of outliers is to reset the algorithm (restarting from time zero with the outlier predicted correctly) each time an outlier arrives. Each reset is as expensive as an entire algorithm run, but between resets, performance is proportional to the maximum error among non-outliers. While this strategy is expensive on a per-outlier basis, it can be used to handle a small number of outliers without degrading the performance too much. In our experiments, our algorithm (without this intervention) seems to be somewhat resistant to outliers – its performance on our datasets is better than the maximum error would indicate.
Comparison with Worst-Case Approaches.
Most prior algorithms for maintaining SCCs in incremental graphs do so by maintaining topological ordering of the condensed graph (a directed acyclic graph in which all vertices within an SCC are contracted into a new single node). A topological ordering is a labeling of the vertices such that if there is a directed path from to . A topological ordering exists if and only if the directed graph is acyclic. An algorithm that maintains the topological ordering can detect new cycles whenever a new edge points from a node with a higher label to a lower label. Such a cycle leads to the merging of previous (condensed) SCCs.
The best-known worst case total running times of algorithms using the topological-ordering-based combinatorial approach are [3] for dense graphs and [5] for sparse graphs. Note that the -notation hides logarithmic factors. Thus, even with reasonably large error as long as , our algorithm improves upon these approaches.
In a recent theoretical advancement, Chen et al. [7] use the interior-point method to maintain SCCs in incremental graphs (without a topological ordering) in total time ). While the improvement is theoretically appealing, the algorithm and techniques employed are not practical and the running time itself is galactic.
Faster algorithms are known for maintaining SCCs in the decremental setting (where all edges are available at the beginning and deleted one by one). This can be done in total expected time [6]. Predictions of the edge sequence essentially help turn an incremental SCC problem (which seems to be harder) into a decremental one.
In contrast to all prior work, our algorithm maintains SCCs without maintaining a topological ordering or using complex techniques. Our algorithm exploits predictions to precompute partial solutions to recursive subproblems. Our recursive technique that uses predictions to lift the offline problem to an online one follows the approach used by McCauley et al. [21] for maintaining approximate shortest paths in incremental graphs using predictions.
One way our paper differs from the previous works on dynamic graph problems with predictions [32, 20, 21, 15] is that we co-designed the algorithm with its implementation. Concretely, our analysis explicitly tracks logarithmic factors in running time, and avoids constant-factor overheads when possible (e.g. rebuilding unnecessary subproblems as in [21]).
Experimental Results.
We compare the runtime of our algorithm to the state-of-the-art heuristic [12] on real datasets222We ended up optimizing beyond what was intended in [12]. We include runtime comparison against both variants.. maintains a topological ordering of the condensed graph and optimizes over running Tarjan’s from scratch repeatedly. Despite the optimizations, their worst-case total cost is for inserts.
Our experiments show that (1) our algorithm is scalable and can handle large datasets, (2) it outperforms the known recursive algorithm for the offline problem under perfect predictions, (3) it significantly outperforms on reasonably accurate predictions, and finally (4) its runtime degrades gradually with error. These results complement our theoretical analysis: they give evidence that the algorithm is reasonably simple, and its running time does not involve large constants.
Summary.
In summary, our theoretical and experimental results demonstrate that predictions can help bridge the gap between theoretically-good algorithms and practical heuristics. Our results provide a proof-of-concept for designing algorithms with strong provable guarantees that can match or even outperform state-of-the-art heuristics on predictable inputs.
1.2 Additional Related Work
Algorithms with Predictions For Runtime.
Kraska et al. [16] jump-started the area by empirically demonstrating how machine-learned predictions can speed up data structures. Dinitz et al. [11] present a theoretical framework for analyzing predictions for speeding up offline algorithms. This has since been used for problems such as maximum flow [8, 27], shortest path [17], minimum cut [26], stable matching [24], and convex optimization [30].
Predictions have been used to design provably faster data structures for problems such as online list labeling [22], incremental topological ordering [23], binary search [10], sorting [1], dictionaries [33, 19], and priority queries [4]. Similar to this paper, predictions have been used to “lift” offline solutions to dynamic graph problems to improve the runtime of incremental graph problems, such as incremental shortest paths [32, 15, 21] and divide-and-conquer algorithms [20]. We note in particular that our divide-and-conquer framework is similar to that of McCauley et al. [21], however, we keep only a single path rather than maintaining the entire tree. This improves runtime performance by several log factors and also makes the data structure more practical. Liu et al. [20] also use a divide-and-conquer framework, but their analysis requires balanced subproblem sizes. In contrast, we can handle unbalanced subproblems with the trade-off that our error bounds are on max error (rather than average). Overall, these results demonstrate significant potential of leveraging machine-learned predictions to speed up algorithms and data structures.
2 Preliminaries
This section presents the formal setup and a warm-up algorithm for the offline incremental SCC problem.
2.1 Model and Notation
Let be the set of vertices of the directed graph . Let denote the sequence of online edge inserts. We assume that one edge arrives per time step, so we often say that arrives at “time .” We use “graph at time ”, denoted by , to refer to the graph with vertex set and the first edges . We define as the graph on vertex set with no edges. We assume that has no isolated vertices; if it is not then all isolated vertices in can be removed before running the algorithm, increasing the cost of the algorithm by . Before any edges arrive, the learned algorithm receives a prediction of . We define . Let be the index of in and be the index of in . Let for each edge in . The error is the maximum error of any edge; for simplicity of exposition, we assume (the analysis is asymptotically the same if or ). As we go through the edges, we update the predictions, and we denote the predicted arrival sequence at time by . This is the same prediction model as past work on incremental graph algorithms [15, 32, 21].
We assume that the set of edges in and are the same – that is, is a permutation of . It is possible to generalize this assumption, albeit with some extra cost. If an edge arrives that is not in , the algorithm can simply start over from the beginning, at a cost of – this does not increase the overall cost if the number of such edges is at most . Edges in that never arrive are more expensive, since effectively . One strategy to handle such edges is to use a large threshold : at each time step , the algorithm can remove any edge that was predicted to arrive before ; if the edge later arrives it can be treated as an edge that is not in .
Our goal is to maintain a data structure that, after edge arrives, can answer queries to determine if and are in the same SCC of , for any .
2.2 Warm Up: Offline Incremental SCC
Our algorithm is based closely on the offline recursive algorithm for the problem. For the offline incremental problem, the entire sequence of edge insertions is known ahead of time. The goal is to quickly process to allow us to answer SCC queries for for any . We describe a folklore recursive method to perform this preprocessing efficiently. This algorithm has been described in programming contest literature, see e.g., [28], and a similar structure has been used for designing a worst-case algorithm for decremental SCC [29].
The algorithm recursively divides the interval into halves. Each interval generated in this process corresponds to a subproblem. In particular, the resulting intervals form a hierarchical set of dyadic subintervals (for ease of exposition, we assume that is a power of two, although this assumption is not necessary for the algorithm or its correctness). Each subproblem has two endpoints and . We refer to a subproblem either by its endpoints, , or by its midpoint, . The subproblem has a left child and a right child , and is referred to as their parent subproblem. See Figure 1 for a schematic view of the recursion tree.
For each interval , the algorithm maintains a graph . is defined recursively below, but to help motivate the definition let us briefly summarize its contents. Consider contracting all SCCs of into single vertices, retaining only edges between two distinct SCCs. These vertices and edges are enough to determine what SCCs are created during . Now, consider trimming the graph further: we remove all edges that do not contribute to forming a new SCC during , and remove all isolated vertices from the graph; trimming the graph in this way still allows us to determine the correct SCCs during . This is the idea behind .
At the root of the recursion tree, , and . The algorithm runs Tarjan’s algorithm [31] on to compute its SCCs. It uses the SCCs to compute the graphs for the left and right subproblems and respectively. We define using its vertex set and edge set ; is defined likewise.
Right Subproblem.
Consider a pair of vertices and in the same strongly connected component of . Since edges are only ever inserted, and will remain in the same SCC at all time steps after . Thus, to construct the right subproblem, the algorithm contracts all nodes within the same SCC in into a single node and deletes all edges such that and are within the same SCC. In particular, for the right subproblem corresponding to the interval , it sets to contain a contracted node for each strongly connected component in . The edge set includes all edges such that is an inter SCC edge with endpoints and in different SCCs in .
Left Subproblem.
Now consider an edge in with end points in different SCCs of . Then, the vertices and will be in different SCCs at all time steps before . The algorithm can safely delete such edges when recursing on the left subproblems. That is, contains all vertices in with at least one incident edge, and only contains the intra-SCC edges in with both end points in the same SCC.
Recursion Tree.
The algorithm recurses on the left and right subproblems until the interval has length two. This way, each time is the midpoint of exactly one subproblem in the recursion tree. Notice that the nodes of this recursion tree in an in-order traversal correspond to the sequence of graphs ; see Figure 1.
Queries.
The folklore solution [28] builds a graph to implicitly track SCC merges. Here we describe one simple way to handle the queries recursively instead.
To see if and are in the same SCC at time , we begin at the root and find the descendant of the root containing . If it is a right child, and may each be merged into a new vertex. If so, we replace (resp. ) with the merged vertex, and recurse. When we reach a subproblem with midpoint , we check if and are in the same SCC in , and return the result. This takes time.
In Section 3.2, we present a data structure for the online problem that explicitly maintains node labels over time and answers queries in time.
Analysis.
Each time the algorithm processes a subproblem, it recurses on two subproblems obtained by splitting the time interval into two halves, implying a recursion depth of . Running Tarjan’s algorithm on a subproblem with edges takes time. At each recursive call, an edge is either an inter- or intra-SCC edge, and thus is only passed down to one of the left or right subproblems. Thus, each edge contributes to one subproblem per level and the total runtime is per level of the recursion tree. The total insertion cost is thus .
3 Incremental SCC with Predictions
In this section, we describe how we adapt the offline recursive algorithm for the incremental SCC problem with predictions. That is, given a prediction of at the beginning, we describe how to create a data structure that at each time step , efficiently: (1) inserts (the -th edge in ), and (2) allows answers to SCC queries on .
First, notice that if the prediction sequence is perfect (), then the online problem reduces to the offline incremental problem. However, in general, the prediction could differ from significantly, and naively redoing the offline recursive approach each time is too expensive. Instead, our algorithm only maintains a single path of the recursion tree from Section 2.2; when each edge arrives, the algorithm updates the path, and updates the SCC of each vertex. In particular, initially, the algorithm only computes the root-to-left path from subproblem to subproblem in the offline recursion tree built using the prediction . As edges arrive, it updates the predicted sequence and recomputes the current root-to-leaf path for time step . In our analysis, we show that we only incur recomputations that we can directly charge to the error in the prediction, that is, the algorithm is only -factor worse than the offline incremental algorithm.
3.1 Learned Incremental SCC Algorithm
First, we describe how our algorithm, Learned IncSCC, maintains and uses the prediction.
Our algorithm continuously updates as edges arrive. Let denote the updated prediction after edges have arrived and . Thus agrees with on the first edges. Let and denote the arrival time step of an edge in and respectively. If was correct, then . Otherwise, we update to obtain : we delete from time , and insert it to time . All edges in between and are shifted one time step later (note that ); this gives .
Now, we discuss how subproblems are maintained. At a high level, instead of building the entire recursive tree of the offline algorithm from Section 2.2 with respect to , Learned IncSCC is more conservative. It lazily maintains the only thing needed to answer queries about the SCCs at the current timestep : the path from the root to in the recursive tree that corresponds to the updated prediction .
Before any edges arrive, the algorithm uses the prediction and the offline recursive approach to build all subproblems along the path from the root to the leaf subproblem . We describe the implementation of this build in more detail momentarily.
Now consider step when edge is about to arrive. Let be the time was predicted to arrive in . Before arrives, the algorithm maintains the path from the root to time step of the recursion tree corresponding to . After arrives, the algorithm updates and the root-to-leaf path it maintains as follows. The algorithm begins with the last subproblem in the current path, and walks backwards through the path to find a subproblem with interval such that . Thus, is the lowest common ancestor (LCA) of the nodes and in the recursion tree with respect to . The algorithm calls the build procedure on this subproblem (and thus recursively on its children) to compute the path from the root to with respect to .
What We Store.
Our algorithm maintains a path from the root to the current time , implemented as an array of at most pointers to subproblems.
Our algorithm maintains the following for each subproblem with midpoint : (1) a graph whose nodes are contracted nodes of , (2) the SCCs of , (3) a mapping from each vertex in to its representative vertex in , and (4) a set of left edges and right edges that correspond to the edges of the left and right subproblems and as defined in Section 2.2. Each subproblem stores the edges of its children so that the edges do not need to be recomputed when the children are rebuilt.
Finally, our algorithm maintains the Node Label Data Structure which stores at all times , a label for each vertex , such that at time if and only if and are in the same SCC in . We use this data structure as a blackbox below and defer its implementation to Section 3.2.
Building a Subproblem.
Below we describe how the algorithm performs a build operation at time on an interval with midpoint with respect to the predicted sequence .
The algorithm begins by calculating the graph and the mapping . We split into two cases depending on if is the root; in the case it is not, we split into further cases depending on if it is a left or right child.
If is the root subproblem, then where and contains all edges in . The mapping has for all vertices .
If is not the root, let denote its current parent node. Let and denote the graph and mapping stored by the parent subproblem. There are two cases depending on whether the interval is the left or right child of .
If is the left child of , then is the set of vertices in with at least one incident edge, i.e., incoming or outgoing, and the edge set is the left edges stored in the parent subproblem . The mapping is inherited from the parent, that is, .
If is the right child of , the algorithm contracts the vertices in the same SCC of to a single node, and these contracted nodes form . The edge set is the right edges stored in the parent subproblem . For each node , which corresponds to an SCC in , we compute as follows. Let be an arbitrary node in the SCC corresponding to . We set .
Now that and are computed, the algorithm uses them to finish processing the subproblem. Similar to the offline case, the algorithm computes the strongly connected components of using Tarjan’s algorithm, considering only the edges in that appear at timesteps at most according to .
First, consider the case when the midpoint . The algorithm computes the left edges of as those whose endpoints lie in the same SCC in , and the right edges as those whose endpoints lie in different SCCs. These left and right edges are stored in the parent subproblem and inherited by child subproblems (rather than being recomputed when a child is rebuilt). After computing the left and right edges, the algorithm recursively builds the child containing .
The base case occurs when the midpoint . In the base case, the algorithm performs a final merge of the labels of nodes in the same SCC of in the Node Label Data Structure; we define this merge below.
3.2 Node Label Data Structure
The Node Label Data Structure stores, at all times , the SCC of each vertex in . It consists of: (1) an array of size , storing a label for each vertex such that if and only if vertices and are in the same SCC in ; and (2) for each label , a doubly linked list of all vertices with label (in other words, a list of all vertices such that ).
At initialization, for all .
On a query to see if vertices and are in the same SCC, we simply check if . This leads to query time.
Given a collection of vertices , the merge operation merges the SCCs of all vertices in into a single SCC. Let consist of vertices . For , we find labels and , and determine which has a smaller list. Let be the label of the smaller list (breaking ties arbitrarily) and be the other. We iterate through the list of all vertices with label ; for each vertex , we set . Then, we add all vertices with label to the list of vertices with label . Since the lists are implemented as linked lists, each merge operation takes time proportional to the number of vertices with label .
4 Running Time Analysis
In this section, we analyze the running time of our learned algorithm. We defer proofs related to correctness to the full version of the paper. To start, we bound what edges in the predicted edge sequence can cause a given subproblem to be rebuilt.
Lemma 2.
If a subproblem with midpoint using prediction is rebuilt at time , then the edge that arrives at time was predicted to arrive in at a time either in or in .
Proof.
The subproblem is rebuilt only when it lies on the path from to for some edge. There are two ways this can happen:
-
1.
is the for some pair . This occurs only if and . Since , this requires that .
-
2.
lies strictly below the LCA. This only happens if lies inside , but lies outside the subtree rooted at ; therefore, . Since is on the path to , we must have ; since , we have that .
Before the next lemma, we motivate the structure of our analysis. Lemma 2 states that each subproblem is rebuilt only times; this means that if we can bound the size of all subproblems (in other words, the total number of edges in all subproblems) we are done. Indeed, the classic analysis of the offline problem with states that each edge is in at most one subproblem at each level. This would mean that the total size of all subproblems is ; combining with Lemma 2 would give the desired bound.
Unfortunately, this analysis is incorrect. The reason is that as changes, what edge belongs to each subproblem changes as well. For example, according to , the endpoints of an edge might not be in the same SCC in , which puts in the right child of the root. But at some later time , an edge originally predicted to arrive at might arrive that puts and in the same SCC in . This would place in the left child of the root. Lemmas 3 through 5 bound how often this can happen – i.e., an edge may be a part of builds in total.
For any edge and prediction , let the combining time be the first time in when and are in the same SCC. If and are never in the same SCC in , then is undefined. Lemma 3 shows that at any time , an edge is only in a subproblem that contains its combining time. This lemma is useful both in analyzing the running time and proving correctness.
Lemma 3.
Let be a subproblem in the offline recursive tree built on that contains edge . If is defined, then ; if is undefined, then .
Proof.
We argue by contradiction.
First, consider the case where is undefined; assume by contradiction that is in a subproblem with . Let be the subproblem closest to the root containing where . Then was a left child – but by definition, this means that and were in the same component in the graph of the parent of ; a contradiction.
If is defined, let be the subproblem in the current path closest to the root such that is an edge in , but .
If , let be the ancestor of with midpoint . must exist since if exists, . Furthermore, must be a descendant of the right child of . But since , and are in the same SCC in the midpoint of , so cannot be in the right edges of , contradicting that it is an edge in .
If , let be the ancestor of with midpoint . must exist since if exists, . Furthermore, is a descendant of the left child of . But since , and are in different SCCs in the midpoint of , so cannot be in the left edges of , contradicting that it is an edge in .
Now, we show that the error bound implies that the combining time of any pair of vertices cannot differ significantly as is updated. First, we need a lemma showing that the way we update predictions does not increase the error of any edge beyond .
Lemma 4.
For any edge and any , let be the position of in , and be the position of in . Then if has maximum error , we have – thus, also has maximum error . This implies that for each and we have .
Proof.
We prove this by induction on ; it is trivially true for .
Note that when we move from to , we move an edge from to its final location ; all edges in positions from to move forward one, and all others remain unchanged. By definition, . The edge being moved to has .
Any edge being moved forward one (i.e. an edge between and in ) that has is being moved closer to ; by the inductive hypothesis the lemma holds. Now suppose an edge is being moved forward one, and . For all the edges that move forward we have . Furthermore, since has not arrived, . Combining with implies .
Finally, Lemma 5 states that the combining time does not change significantly as we update the predictions.
Lemma 5.
For any pair of vertices , and any , .
Proof.
Consider the graph constructed using all vertices in , and the first edges in ; and are in the same strongly connected component in . Let be the graph constructed using vertices in , and the first edges in . By Lemma 4, all edges in must have already arrived by time in , so the edges of are a superset of the edges of ; that is, and must be in the same SCC in . Therefore, .
Let be the graph at time for ; and are not in the same strongly connected component in . Let be the graph at time for . By Lemma 4, all edges in must have already arrived by in , so has every edge has. This means that and are not in the same strongly connected component in , which implies that .
We are ready to prove Theorem 1.
Proof of Theorem 1.
Each time a node is relabeled in the Node Label Data Structure, the size of its SCC doubles; thus the total cost of all merges is .
The cost to build a subproblem is linear in the number of vertices of and the number of edges . Let be the set of subproblems built at time . The total cost to build all subproblems is
We bound this final sum. First, any where is undefined can only be in subproblems with by Lemma 3; there are at most such subproblems, and each is rebuilt times by Lemma 2, so the total cost of these edges is .
Now suppose is defined and is in built at time . We show that in each level, over time, there are such subproblems. Summing over all levels gives a cost of .
Consider a depth , such that for subproblems at depth . There are at most five subproblems at depth that have . Each is rebuilt times by Lemma 2; therefore, there are subproblem builds at depth that contain .
Now we consider a depth such that all subproblems have . If a subproblem in this level contains , then and , which imply and , respectively. Then if causes the subproblem to be rebuilt, by Lemma 2, was predicted to arrive at time steps in . The length of this interval is , which means that has been involved in rebuilds at depth over time.
5 Experimental Evaluation
In this section, we describe our experimental results.333The Python implementations of our experiments are available at https://github.com/helia-niaparast/incremental-strongly-connected-components-with-predictions.
Incremental SCC+.
We compare against the state-of-the-art heuristic for the problem: [12]. In , the algorithm maintains a topological ordering of the nodes at all times, that is, each node in the current (possibly contracted) graph is assigned a topological rank such that for every arc between distinct SCCs, we have . When a new arc is added in the “wrong” direction, i.e., , the algorithm identifies potentially affected nodes by running forward and backward depth-first searches from and , respectively. It then applies Tarjan’s algorithm on the affected nodes to determine whether a new cycle has been formed. We were not able to obtain the authors’ original code, so we implemented our own version of their algorithm. In this implementation, when a cycle is formed, we merge the SCCs in the cycle into a new SCC, and run DFS on the whole graph to find the new topological ordering.
We also made an optimized version (IncSCC+ optimized) with two modifications. First, we skip the final run of Tarjan’s algorithm, as cycle formation can be detected immediately from the affected nodes. Second, after a node is contracted, in order to find a new valid topological ordering, we only rearrange the affected nodes. These factors do not change the main ideas of the algorithm, but lead to a noticeable performance improvement in practice. In our tests, we compare to both implementations.
We also include the performance of the offline incremental algorithm from Section 2.2, which has access to the entire edge arrival sequence ahead of time.
Datasets.
Our datasets are from SNAP444https://snap.stanford.edu/data/ [18]. The sx-superuser-c2a and sx-askubuntu datasets are graphs based on two stackexchange forums; a link represents one user posting an answer or comment on another user’s question or answer. These two are temporal, i.e., links are ordered based on the time the comments occurred. The other dataset used, Slashdot0811, is not temporal; edges arrive in random order. Each edge represents a user who tagged another as “friend” or “foe.” The number of vertices and number of unique edges for each of these datasets is given in Table 1.
Experimental Setup.
Our implementations are in Python. Our experiments were run on an Ubuntu Linux machine with a 2.8GHz i7-1165G7 Intel CPU with 32GB RAM.
Predictions.
We parameterize how to generate predictions with a variable , which is roughly the standard deviation of the error. For each value of , we construct a perturbed edge sequence from the original ordering as follows. We traverse the edges in their original order, and for each edge, we sample an offset from a normal distribution with mean and standard deviation . The target index is set to the current index plus this offset. If both the current and target indices have not yet been modified, we swap the edges at these positions; otherwise, the edge remains fixed.
After processing all edges, we measure the prediction quality using two metrics relative to the original sequence: the average prediction error () and the maximum prediction error (). For each , we generate 10 independent perturbed sequences using the procedure described above. Each sequence yields its own average and maximum error values. We then run the algorithm on each sequence and report the average runtime and error across the 10 runs. In the plots, is the mean of the 10 average-error values and is the mean of the 10 maximum-error values.
| Dataset | Offline | Learned IncSCC | (optimized) | Crossover | Crossover | |||
| sx-superuser-c2a | 289487 | 101052 | 60.70 | 34.21 | 932.10 | 331.33 | ||
| sx-askubuntu | 596933 | 159316 | 85.37 | 62.24 | 4786.33 | 1384.01 | ||
| Slashdot0811 | 905468 | 77360 | 71.33 | 47.92 | 2221.04 | 362.68 |
Discussion.
We include the plot for sx-askubuntu in Figure 2, and include the results for the remaining datasets in the full version of the paper. With sufficiently accurate predictions, our algorithm gives significantly improved performance over both versions of . The experiments show our performance grows roughly linearly with the error; in fact it grows linearly with both the and (our theoretical analysis bounds performance only in terms of ).
Table 1 summarizes further results, including the largest average and maximum for which our algorithm improves on optimized .
In Table 1, we also compare our algorithm with perfect predictions to the offline incremental algorithm from Section 2.2. While both algorithms are given the entire edge sequence, our algorithm can adapt to errors on-the-fly, while the offline algorithm is static. Despite this overhead, our running time is not only comparable but in fact slightly better than the offline algorithm. This demonstrates that our method is lightweight, while still allowing for potential error.
6 Conclusion
In this work, we design a new learned algorithm to maintain the strongly connected components in an incremental graph. Our theoretical bounds show that our algorithm is nearly optimal under reasonably good predictions and its performance degrades smoothly with respect to the prediction error.
We test our algorithm against the best heuristic on real-world datasets. Our experiments show that (1) theory is predictive of practice, and (2) it is possible to achieve strong provable guarantees against bad predictions, while also being able to match (and even beat) the practical performance of state-of-the-art heuristics when predictions are good.
References
- [1] Xingjian Bai and Christian Coester. Sorting with predictions. In Thirty-seventh Conference on Neural Information Processing Systems, 2023. URL: https://openreview.net/forum?id=Qv7rWR9JWa.
- [2] Surender Baswana, Keerti Choudhary, and Liam Roditty. An efficient strongly connected components algorithm in the fault tolerant model. Algorithmica, 81(3):967–985, 2019. doi:10.1007/S00453-018-0452-3.
- [3] Michael A Bender, Jeremy T Fineman, Seth Gilbert, and Robert E Tarjan. A new approach to incremental cycle detection and related problems. ACM Transactions on Algorithms (TALG), 12(2):1–22, 2015. doi:10.1145/2756553.
- [4] Ziyad Benomar and Christian Coester. Learning-augmented priority queues. In The Thirty-eighth Annual Conference on Neural Information Processing Systems, 2024. URL: https://openreview.net/forum?id=1ATLLgvURu.
- [5] Aaron Bernstein, Aditi Dudeja, and Seth Pettie. Incremental scc maintenance in sparse graphs. In 29th Annual European Symposium on Algorithms (ESA 2021), 2021.
- [6] Aaron Bernstein, Maximilian Probst, and Christian Wulff-Nilsen. Decremental strongly-connected components and single-source reachability in near-linear time. In Proceedings of the 51st Annual ACM SIGACT Symposium on theory of computing, pages 365–376, 2019. doi:10.1145/3313276.3316335.
- [7] Li Chen, Rasmus Kyng, Yang P Liu, Simon Meierhans, and Maximilian Probst Gutenberg. Almost-linear time algorithms for incremental graphs: Cycle detection, sccs, st shortest path, and minimum-cost flow. In Proceedings of the 56th Annual ACM Symposium on Theory of Computing, pages 1165–1173, 2024. doi:10.1145/3618260.3649745.
- [8] Sami Davies, Benjamin Moseley, Sergei Vassilvitskii, and Yuyan Wang. Predictive flows for faster ford-fulkerson. In Andreas Krause, Emma Brunskill, Kyunghyun Cho, Barbara Engelhardt, Sivan Sabato, and Jonathan Scarlett, editors, Proc. of the 40th International Conference on Machine Learning (ICML), volume 202 of Proceedings of Machine Learning Research, pages 7231–7248. PMLR, 23–29 July 2023. URL: https://proceedings.mlr.press/v202/davies23b.html.
- [9] Swati Dhingra, Poorvi S Dodwad, and Meghna Madan. Finding strongly connected components in a social network graph. International Journal of Computer Applications, 136(7):1–5, 2016.
- [10] Michael Dinitz, Sungjin Im, Thomas Lavastida, Ben Moseley, Aidin Niaparast, and Sergei Vassilvitskii. Binary search with distributional predictions. Advances in Neural Information Processing Systems, 37:90456–90472, 2024.
- [11] Michael Dinitz, Sungjin Im, Thomas Lavastida, Benjamin Moseley, and Sergei Vassilvitskii. Faster matchings via learned duals. In Marc’Aurelio Ranzato, Alina Beygelzimer, Yann N. Dauphin, Percy Liang, and Jennifer Wortman Vaughan, editors, Proc. 34th Conference on Advances in Neural Information Processing Systems (NeurIPS), pages 10393–10406, 2021. URL: https://proceedings.neurips.cc/paper/2021/hash/5616060fb8ae85d93f334e7267307664-Abstract.html.
- [12] Wenfei Fan, Chunming Hu, and Chao Tian. Incremental graph computations: Doable and undoable. In Proceedings of the 2017 ACM International Conference on Management of Data, pages 155–169, 2017. doi:10.1145/3035918.3035944.
- [13] Bernhard Haeupler, Telikepalli Kavitha, Rogers Mathew, Siddhartha Sen, and Robert E Tarjan. Incremental cycle detection, topological ordering, and strong component maintenance. ACM Transactions on Algorithms (TALG), 8(1):1–33, 2012. doi:10.1145/2071379.2071382.
- [14] Benjamin Charles Hardekopf. Pointer analysis: building a foundation for effective program analysis. The University of Texas at Austin, 2009.
- [15] Monika Henzinger, Barna Saha, Martin P. Seybold, and Christopher Ye. On the complexity of algorithms with predictions for dynamic graph problems. In Venkatesan Guruswami, editor, 15th Innovations in Theoretical Computer Science Conference, ITCS 2024, January 30 to February 2, 2024, Berkeley, CA, USA, volume 287 of LIPIcs, pages 62:1–62:25. Schloss Dagstuhl – Leibniz-Zentrum für Informatik, 2024. doi:10.4230/LIPIcs.ITCS.2024.62.
- [16] Tim Kraska, Alex Beutel, Ed H. Chi, Jeffrey Dean, and Neoklis Polyzotis. The case for learned index structures. In Gautam Das, Christopher M. Jermaine, and Philip A. Bernstein, editors, Proc. 44th Annual International Conference on Management of Data, (SIGMOD), pages 489–504. ACM, 2018. doi:10.1145/3183713.3196909.
- [17] Silvio Lattanzi, Ola Svensson, and Sergei Vassilvitskii. Speeding up bellman ford via minimum violation permutations. In Andreas Krause, Emma Brunskill, Kyunghyun Cho, Barbara Engelhardt, Sivan Sabato, and Jonathan Scarlett, editors, International Conference on Machine Learning, ICML 2023, 23-29 July 2023, Honolulu, Hawaii, USA, volume 202 of Proceedings of Machine Learning Research, pages 18584–18598. PMLR, 2023. URL: https://proceedings.mlr.press/v202/lattanzi23a.html.
- [18] Jure Leskovec and Andrej Krevl. SNAP Datasets: Stanford large network dataset collection. http://snap.stanford.edu/data, June 2014.
- [19] Honghao Lin, Tian Luo, and David Woodruff. Learning augmented binary search trees. In International Conference on Machine Learning, pages 13431–13440. PMLR, 2022. URL: https://proceedings.mlr.press/v162/lin22f.html.
- [20] Quanquan C. Liu and Vaidehi Srinivas. The predicted-updates dynamic model: Offline, incremental, and decremental to fully dynamic transformations. In Shipra Agrawal and Aaron Roth, editors, Proceedings of Thirty Seventh Conference on Learning Theory, volume 247 of Proceedings of Machine Learning Research, pages 3582–3641. PMLR, 30 June–03 July 2024. URL: https://proceedings.mlr.press/v247/liu24c.html.
- [21] Samuel McCauley, Benjamin Moseley, Aidin Niaparast, Helia Niaparast, and Shikha Singh. Incremental approximate single-source shortest paths with predictions. In Keren Censor-Hillel, Fabrizio Grandoni, Joël Ouaknine, and Gabriele Puppis, editors, 52nd International Colloquium on Automata, Languages, and Programming (ICALP), volume 334 of Leibniz International Proceedings in Informatics (LIPIcs), pages 117:1–117:20, Dagstuhl, Germany, 2025. Schloss Dagstuhl – Leibniz-Zentrum für Informatik. doi:10.4230/LIPIcs.ICALP.2025.117.
- [22] Samuel McCauley, Benjamin Moseley, Aidin Niaparast, and Shikha Singh. Online list labeling with predictions. In A. Oh, T. Naumann, A. Globerson, K. Saenko, M. Hardt, and S. Levine, editors, Proc. 36th Conference on Neural Information Processing Systems (NeurIPS), volume 36, pages 60278–60290. Curran Associates, Inc., 2023.
- [23] Samuel McCauley, Benjamin Moseley, Aidin Niaparast, and Shikha Singh. Incremental topological ordering and cycle detection with predictions. In Forty-first International Conference on Machine Learning, 2024. URL: https://openreview.net/forum?id=wea7nsJdMc.
- [24] Samuel McCauley, Benjamin Moseley, Helia Niaparast, and Shikha Singh. Stable matching with predictions: Robustness and efficiency under pruned preferences. arXiv preprint, 2026. arXiv:2602.02254.
- [25] Michael Mitzenmacher and Sergei Vassilvitskii. Algorithms with predictions. Communications of the ACM (CACM), 65(7):33–35, 2022. doi:10.1145/3528087.
- [26] Helia Niaparast, Benjamin Moseley, and Karan Singh. Faster global minimum cut with predictions. In Forty-second International Conference on Machine Learning, 2025. URL: https://openreview.net/forum?id=FeZoO7mfG7.
- [27] Adam Polak and Maksym Zub. Learning-augmented maximum flow. Information Processing Letters, 186:106487, 2024. doi:10.1016/j.ipl.2024.106487.
- [28] Mateusz Radecki. My own algorithm — offline incremental strongly connected components in o(m log(m)). https://codeforces.com/blog/entry/91608, 2021. Accessed: 2025-09-30.
- [29] Liam Roditty. Decremental maintenance of strongly connected components. In Proceedings of the Twenty-Fourth Annual ACM-SIAM Symposium on Discrete Algorithms, pages 1143–1150. SIAM, 2013. doi:10.1137/1.9781611973105.82.
- [30] Shinsaku Sakaue and Taihei Oki. Discrete-convex-analysis-based framework for warm-starting algorithms with predictions. In 35th Conference on Neural Information Processing Systems (NeurIPS), 2022.
- [31] Robert Tarjan. Depth-first search and linear graph algorithms. SIAM Journal on Computing, 1(2):146–160, 1972. doi:10.1137/0201010.
- [32] Jan van den Brand, Sebastian Forster, Yasamin Nazari, and Adam Polak. On dynamic graph algorithms with predictions. In David P. Woodruff, editor, Proceedings of the 2024 ACM-SIAM Symposium on Discrete Algorithms, SODA 2024, Alexandria, VA, USA, January 7-10, 2024, pages 3534–3557. SIAM, 2024. doi:10.1137/1.9781611977912.126.
- [33] Ali Zeynali, Shahin Kamali, and Mohammad Hajiesmaili. Robust learning-augmented dictionaries. In Forty-first International Conference on Machine Learning, 2024. URL: https://openreview.net/forum?id=XyhgssAo5b.
- [34] Yu Zhang, Xiaofei Liao, Xiang Shi, Hai Jin, and Bingsheng He. Efficient disk-based directed graph processing: A strongly connected component approach. IEEE Transactions on Parallel and Distributed Systems, 29(4):830–842, 2017. doi:10.1109/TPDS.2017.2776115.
