Next Article in Journal
Towards Generalizable Deepfake Detection via Facial Landmark-Guided Convolution and Local Structure Awareness
Next Article in Special Issue
Hierarchical Continuous Monitoring and Resource Reallocation Under Resistance to Change: A Decision-Making Framework Balancing Skill Constraints and Managerial Capacity
Previous Article in Journal
ERZA-DETR: A Deep Learning-Based Detection Transformer with Enhanced Relational-Zone Aggregation for WCE Lesion Detection
Previous Article in Special Issue
Performance Analysis of Half-Hyperbolic Convolution (HHC)-Type Operators via Regression-Based Metrics
 
 
Font Type:
Arial Georgia Verdana
Font Size:
Aa Aa Aa
Line Spacing:
Column Width:
Background:
Article

An Explanatory CDF Manifold Algorithm for Large Telecom Datasets

Faculty of Telecommunications, TU Sofia, 8 Kliment Ohridski Blvd, 1000 Sofia, Bulgaria
*
Author to whom correspondence should be addressed.
Algorithms 2026, 19(4), 269; https://doi.org/10.3390/a19040269
Submission received: 9 March 2026 / Revised: 25 March 2026 / Accepted: 28 March 2026 / Published: 1 April 2026
(This article belongs to the Special Issue Recent Advances in Numerical Algorithms and Their Applications)

Abstract

In this paper we introduce the CDF manifold algorithm, which operates on datasets where a single target dimension is strictly increasing given a minimum of two or more input dimensions, which is very common in telco data. The manifold can then be used to compute the closest upper and lower limits to a given new point, as well as its CDF. Training takes O ( n . ln [ n ] ) steps in the best case and O ( n 3 / 2 ) in the worst case. Lookup takes O ( l n [ n ] ) steps in the best case and O ( n 1 / 2 ln ( n ) ) in the worst case. The asymptotic computational cost is proven with a theorem. We compare our manifold method versus a standard dense neural network and show the asymptotic advantages both in terms of speed and accuracy. We also address potential speed gains through the use of reference points. In summary, the manifold is a non-parametric explanatory method to find the tightest data-driven upper and lower limits of the output dimension given a new unseen input. This makes it ideal for planning new site deployments where we need to find actual measurements as a baseline performance.

1. Introduction

Manifold methods [1] comprise an active area of research and have found applications as dimensionality reduction techniques [2], in representation learning [3] or just for data exploration. Broadly speaking, the algorithms fall into a number of categories, namely probability manifolds [4], neural network (NN) manifolds [5], geometric manifolds [6,7] and graph manifolds [8]. However, the sheer number of possible manifolds that exist in nature and the possible ways to detect them are so innumerable that the general consensus on what algorithms are expected to work best comes from a prior understanding of the physical system that created the manifold. Because of that, the algorithms in this paper are mostly based on the following observation: the physical laws that underlie most telecom data mandate a strictly increasing manifold.
For example, increasing only the Signal-to-Noise Ratio (SNR) for single users and keeping all the other variables the same is guaranteed to worsen the cell throughput. Similarly, if the type of service even for a single user needs more bit rate, this is also guaranteed to worsen the cell throughput. Furthermore, if we increase any combination of these variables, then the cell throughput will decrease. This means the variables and the cell throughput lie on a strictly increasing manifold.
Let us call that manifold a CDF manifold because the CDF is always a strictly increasing manifold and there is a relation between computing the high-dimensional CDF and computing the corresponding value of the telecom data that lie on such a manifold.
If we try to apply any of the standard manifold methods, for example, NN, then we would struggle to regularize it, while the training costs for large datasets will be high. On the other hand it is practically impossible to force the NN to adhere to the strictly increasing property of the data. Therefore, an attentive customer would ask why the NN is inferring that, if the activity on a cell increases while the rest of the KPIs remain the same, the cell throughput will improve. The simple reality of the situation is that there might be a better non-parametric method to model the data, and to this end we propose the CDF manifold algorithm.
We say that any telco data that has the strictly increasing property has the CDF manifold property. Such data admits the specialized set of constructions we define in Section 2, where, by Theorem 1, the manifold is constructed in O ( n 3 / 2 ) steps in the worst case and in O ( n . l n [ n ] ) steps in the best case. The manifold allows two additional specialized constructions that build on previous work in [9], enabling binary searches that cost O ( l n [ n ] ) in the best case and O ( n 1 / 2 l n [ n ] ) in the worst case. Furthermore, the manifold we propose in this paper has the important property that it also allows us to compute the CDF once the manifold is constructed, as described in Section 4, which gives the manifold its name. In Section 3 we outline the necessary pseudocode to implement the CDF manifold. Last but not least we perform a comparative simulation between an NN and the CDF manifold in Section 5.

2. Defining the Manifold, Properties and Sampling

To formalize the aforementioned pattern, assume we have data [ x 1 , x 2 , , x k x d ] in d dimensions and a target single dimension y of the data such that, if any x k increases independently of any other x, then y stays the same or increases. Therefore, if y = C D F m a n i f o l d [ x 1 , x 2 x k , x d ] and [ v 1 , v 2 , , v k v d ] , v k 0 k , then y = C D F m a n i f o l d [ x 1 , x 2 x k , x d ] C D F m a n i f o l d [ x 1 + v 1 , x 2 + v 1 x k + v k , x d + v d ] . The pseudocode for this comparison is given in Algorithm 1.
To simplify the notations and proofs, we consider the manifold in 2D, which is also the smallest whole number of dimensions where the manifold method is valid. Therefore, for the remainder of the paper, consider two-dimensional data [ x 1 , x 2 ] and y = C D F m a n i f [ x 1 , x 2 ] .
Next assume we have 2 data points [ a 1 , a 2 ] mapping to y a = C D F m a n i f [ a 1 , a 2 ] and [ b 1 , b 2 ] mapping to y b = C D F m a n i f [ b 1 , b 2 ] such that [ a 1 < b 1 , a 2 < b 2 ] , which also means that y a < y b . Also assume we have a new input data point [ g 1 , g 2 ] for which we want to compute y g . Because we know the data lies on a CDF manifold, we know that, if a 1 < g 1 < b 1 and a 2 < g 2 < b 2 , then y a < y g < y b . Therefore, if [ a , b ] is the tightest for g in the data, then we can compute y g = ( y a + y b ) / 2 . Observe that this estimate is a data-driven explanatory computation since we can explain y a , y b , which is not true for NN, for example. This means that, if the customer asks why we made a given inference, we can point out the actual data measurements we used, while, with the NN, we will not be able to give a definitive answer.
The drawback of this CDF estimate is that we must have as much data as possible to make sure that the interval is as tight as possible. As a result the lookup algorithm must be extremely efficient computationally and use as little memory as possible. For instance, for large data, even O ( n 2 ) complexity becomes infeasible, so we set out to look for an algorithm that is more efficient.
Next, a point b is considered above right (AR) of point a if a 1 < b 1 and a 2 < b 2 . Similarly, a point b is considered below left (BL) of point a if a 1 > b 1 and a 2 > b 2 . Examples of this are given in Figure 1. To further simplify the algorithms observe that computing the below left is equivalent to computing above right but with the necessity of multiplying each data dimension x k other than the target dimension y by ( 1 ) . That is why, for the remainder of the paper, we only consider the algorithms in the context of computing the upper limit (UL) in the AR.
Next, in Figure 2, we show that the AR preserves the upper limit. If a target point T is AR of sample point P then the upper limit of T is also AR of P.
Using the definitions of Figure 1 and the result of Figure 2 we can see that, if we have found a point R that is AR of target point T, then no point that is AR of R like S can ever be a better upper limit to T, as shown in Figure 3. In other words the BL and AR of a reference point R partition the data space such that no point BL of R can have an upper limit in the AR of R.
Next consider Figure 4. We define the points F 1 , F 2 , F 3 to form on a long front, meaning no F i is AR of F j for all pairs [ i , j ] . Assume we start the binary search at F 1 and T is not AR of F 1 . Which would be the next check point? In the worst case we might need to check F 2 and then F 3 , and in this case we would do a linear search to F 3 , at which point we would have found the target point. This proves by example that the AR and BL functions do not eliminate with a single check a portion of the search data in general, which hinders their use for binary searches.
Fortunately there are cases where the AR and BL do reduce the search space with a single check, as depicted in Figure 5. The first structure that supports binary searches is given in Figure 5, where all points L are such that, for any pair [ i , j ] , either L i A R ( L j ) or L i B L ( L j ) . We call such points a long line, and we can model their relationship using the Index Invariant Graph (IIG) defined in [9,10]. The incidence matrix I L defined by the AR operations is clearly a triangular matrix, and, as proven in [9], the dual hypergraph defined by that matrix is isomorphic to the original graph. In this context the dual isomorphism means that the AR operations uniquely describe the location of each data point. As an example consider in Figure 5 the lookup procedure for the target T among the L points. First we could check if T is AR of L 2 . As a result we would know that T is not AR of any point AR of L 2 , and therefore we instantly rule out L 3 as an upper limit in this case. This means we have eliminated half of the data and can consider the subset that is BL of L 2 , which would be L 1 .
Next, in Figure 6, we apply a similar logic to a different structure. Let us call a long front a structure of points such that all pairs [ i , j ] are such that F i A R ( F j ) , F i B L ( F j ) . Set x 1 as the initial binary search dimension and x 2 as a secondary data dimension. Then define the construction of points C such that C i is a translation of F i among the secondary data dimension x 2 to the minimum value among all data, while the initial binary search dimension x 1 is kept constant, or, more explicitly, C i = [ F i ( x 1 ) , { m i n i F i ( x 2 ) } ] . Observe that the incidence matrix I F of the long front is all zeros, while the incidence matrix I C of the translated data is again modeled with the IIG. As a result we can treat the C points as L. That being said the F points still cannot be treated as L points. Instead a binary search on the C points will return just the closest upper value b e s t ( x 1 ) along the binary search dimension x 1 . Once we have the best upper limit b e s t ( x 1 ) across x 1 we must run another binary search among a different data dimension, for example, x 3 , starting at b e s t ( x 1 ) . We repeat the searches until there are no more dimensions or no more points left to search.
The next question we consider is how we detect the long fronts and lines. Let d a t a be a matrix with n rows and d dimensions. Using Matlab/Octave notation d a t a ( : , k ) is a single data dimension, and d a t a ( i , : ) would be a single data instance as a row vector. In this context a regular sort would then be applied to d a t a ( : , k ) , while a dictionary sort would be applied to d a t a . A dictionary sort of this type is implemented in [11] and is given in Algorithm 2. Therefore a dictionary sort would order the data in such a way that, if d a t a ( i , : ) appears before d a t a ( j , : ) , then d a t a ( i , k ) d a t a ( j , k ) (see Algorithm 1). As a result we can scan the data from i to j and find the next point after i that is part of a long line L after i but before j. Or, more generally, if we do a linear scan we are guaranteed to find the longest line that starts with the first row of the data. Importantly the same linear scan will also give us the longest front that starts with the first row of the dictionary.
In short, to detect a single line or front, we just start at the first row in the sorted dictionary d a t a ( 1 , : ) and scan the data linearly until the end i = 1 : n . We maintain two separate queues for the front q F or line q L , where initially q F = d a t a ( 1 , : ) and q L = d a t a ( 1 , : ) . Once we encounter a point i that is in a line with the last point in the line queue we add it to the queue q L = [ q L ; d a t a ( i , : ) ] and mark it as the new end of the line. Similarly, if point i is in a front with the last point in the front queue, we add it to the queue q F = [ q F ; d a t a ( i , : ) ] and mark it as the new end of the front. By the end of the scan either queue will have a long front or a line, meaning a single IIG detection takes O ( n ) iterations. The pseudocode for this procedure is given in Algorithm 3.
There is a way to speed up the expensive linear scan O ( n ) of a single IIG detection by observing another property of the dictionary sort. This property is best explained with a numeric example, so let us have the following dictionary-sorted data points d 1 = [ 1 , 1 ] , d 2 = [ 1 , 2 ] , d 3 = [ 2 , 1 ] , d 4 = [ 2 , 2 ] , d 5 = [ 3 , 1 ] , d 6 = [ 3 , 2 ] . In this order d 1 d 2 form a line, and, in d 2 d 3 , we have an inversion to a front. Similarly d 3 d 4 are a line and d 4 d 5 are an inversion to a front. Therefore, if we start the detection at d 1 , we would expect the longest line to end at the first inversion, while the front points would likely all be within the inversion. Of course, this approach is just a heuristic, and, in the worst case, we would still need to perform a linear scan.
The next question involves finding the shortest line or front that exists in any dataset. For starters any dataset containing at least 2 points will have the 2 points in a long line of length 2 or a long front of length 2. Let us denote this with A N Y [ 2 p ] = O R [ 2 L , 2 F ] . If the data has 3 points we would express this as A N Y [ 3 p ] = A N Y [ 2 p ] + A N Y [ 1 p ] = O R [ 2 L , 2 F ] + A N Y [ 1 p ] . For these functions we can prove that
Theorem 1.
A N Y [ n 2 p ] = O R n L , n F + A N Y ( n 2 n ) p
meaning that, in a dataset of size n, the shortest long front or long line contains n 1 / 2 points.
Proof of Theorem 1. 
We prove Theorem 1 by induction. To start the induction we already showed that Equation (1) is true for any 2 data points. Next, we assume it is true up to some number n. For the induction step we need to prove it is true for n + 1 , or, more explicitly, that
A N Y ( n + 1 ) 2 p = O R ( n + 1 ) L , ( n + 1 ) F + A N Y ( ( n + 1 ) 2 ( n + 1 ) ) p
The left side of Equation (2) can be rewritten as A N Y ( n + 1 ) 2 p = A N Y n 2 p + A N Y ( ( n + 1 ) 2 n 2 ) p and by Equation (1) we know that A N Y n 2 p contains O R n L , n F giving:
A N Y ( n + 1 ) 2 p = O R n L , n F + A N Y ( ( n + 1 ) 2 n ) p
Equation (3) tells us that the bigger dataset ( n + 1 ) will contain at least a front or a line of size n and ( ( n + 1 ) 2 n ) number of points that are in some configuration around them. This is depicted in Figure 7 and Figure 8.
In Figure 7 and Figure 8 the red areas a indicate areas where we cannot fit any more points or we end up with O R ( n + 1 ) L , ( n + 1 ) F , meaning all the ( ( n + 1 ) 2 n ) points must be somewhere in the blue areas marked with b. Clearly, if we fit all ( ( n + 1 ) 2 n ) within the same area, we produce at least one O R ( n + 1 ) L , ( n + 1 ) F . Therefore, at best, we can try splitting the points evenly across the n line or front points. As a result we end up with at least as many points as shown in Equation (4).
( ( n + 1 ) 2 n ) n = n 2 + 2 n + 1 n n = n + 1 + 1 n
Therefore we have produce at least one O R ( n + 1 ) L , ( n + 1 ) F by the pigeonhole principle. This proves Equation (1).    □

3. CDF Manifold Algorithms

To describe the implementation of the CDF manifold algorithm we start by giving the pseudocode for vector comparison in Algorithm 1.
Algorithm 1: Vector comparison for dictionary sort
  • Require: Input vector A = [ a 1 , a 2 a d ] and input vector B = [ b 1 , b 2 b d ]
      1:
    i = 1
      2:
    while  i d   do
      3:
        if   a i = b i  then
      4:
             i = i + 1
      5:
        else
      6:
            if   a i < b i  then
      7:
                return return statement A < B
      8:
            else
      9:
                return return statement A > B
    10:
            end if
    11:
        end if
    12:
         i = i + 1
    13:
    end while
    14:
    return return statement A = B
By using Algorithm 1 to compare vectors we can then apply it to compare instances in a merge-sort procedure [12], which defines a dictionary sort. If the data is sorted in a dictionary, then, if we compare d a t a ( i , : ) to d a t a ( i + 1 , : ) using Algorithm 1, the result would be that d a t a ( i , : ) d a t a ( i + 1 , : ) . The dictionary sort is given in Algorithm 2.
Algorithm 2: Adapting merge sort using Algorithm 1 to obtain a dictionary
  • Require: Input data matrix d a t a
      1:
    if  d a t a has 2 rows then
      2:
       Compare and sort using Algorithm 1
      3:
       return
      4:
    end if
      5:
    m i d = r o w s ( d a t a ) / 2 select the middle element of d a t a
      6:
    recursive call with d a t a ( 1 : m i d , : ) to sort first half yielding h a l f 1
      7:
    recursive call with d a t a ( m i d : e n d , : ) to sort second half yielding h a l f 2
      8:
    a = 1 , b = 1
      9:
    for  i = 1  to  n  do
    10:
       if   h a l f 1 ( a , : ) < h a l f 2 ( b , : )  then
    11:
            d a t a ( i , : ) = h a l f 1 ( a , : ) , a = a + 1
    12:
       else
    13:
            d a t a ( i , : ) = h a l f 2 ( b , : ) , b = b + 1
    14:
       end if
    15:
       if  a , b last element then
    16:
         copy the rest and break from loop
    17:
       end if
    18:
    end for
    19:
    return return d a t a
In addition to a dictionary to run searches in the long fronts we need a matrix of indexes, which must be such that d a t a ( i n d ( i , k ) , k ) d a t a ( i n d ( i + 1 , k ) , k ) . Observe that the matrix i n d differs from a dictionary because a row i n d ( i , : ) is no longer a data point as opposed to d a t a ( i , : ) , which is a data point. This index matrix is computed at line 15 in Algorithm 3, where the algorithm itself detects a single long line or a front in a dictionary-sorted dataset.
Algorithm 3: Detecting a single long line or a long front in a dictionary
  • Require: Input dictionary-sorted data d a t a ( i , : ) d a t a ( i + 1 , : ) i
      1:
    Initialize a queue for long lines q L
      2:
    Initialize a queue for long fronts q F
      3:
    Initialize A as the last element of q L
      4:
    Initialize B as the last element of q F
      5:
    for  i = 1  to  n  do
      6:
        if  d a t a ( i , : ) is AR of A  then
      7:
           add d a t a ( i , : ) to the long line q L
      8:
            A = d a t a ( i , : ) update last element in the long line.
      9:
        end if
    10:
        if  d a t a ( i , : ) is not AR and not BL of B  then
    11:
           add d a t a ( i , : ) to the long front q F
    12:
            B = d a t a ( i , : ) update last element in the long front.
    13:
        end if
    14:
    end for
    15:
    i n d f = i n d ( q F ) obtain indexes that sort the front at dimension k.
    16:
    return long line q L , long front q F and i n d f .
Algorithm 3 is guaranteed by Theorem 1 to detect either a long line or a long front of length n 1 / 2 in the worst case. It is also worth noting that computing i n d f = i n d ( q F ) takes O ( n ) > O ( n 1 / 2 ln ( n 1 / 2 ) ) steps at most. Because we run an exhaustive search over all data points n, the worst possible cost is n 1 / 2 . O ( n ) = O ( n 3 / 2 ) . Detecting all long fronts and long lines concludes the manifold construction.
Now we describe how we search through the manifold. We start by giving the binary search procedure in a single long line in Algorithm 4.
Algorithm 4: Searching in a single long line
  • Require: Input search vector X and long line d a t a ( i , : ) is BL of d a t a ( i + 1 , : ) i
      1:
    Set s = 1 as the start of the search interval.
      2:
    Set t = n as the end of the search interval.
      3:
    while  s t   do
      4:
         m i d = ( s + t ) / 2 compute the middle of the search interval
      5:
        if   X ( 1 , 1 ) > d a t a ( m i d , 1 )  then
      6:
            Set s = m i d , start of search interval is too small
      7:
        else
      8:
            Set t = m i d , end of search interval is too large
      9:
        end if
    10:
    end while
    11:
    return  s
Observe that, by computing the m i d variable in Algorithm 4, we identify the upper and lower limits of the data within a single long line. Therefore, to find the best, we repeat the procedure across all detected long lines and simply return the tightest bound. Next, consider the binary search procedure in a single long front in Algorithm 5.
Algorithm 5: Searching in a single long front
  • Require: Input search vector X ,
  • Require: Long front d a t a ( i , : ) is not AR and not BL of d a t a ( i + 1 , : ) i
  • Require:  i n d f that sort the dimensions, d a t a ( i n d f ( i , k ) , k ) d a t a ( i n d f ( i + 1 , k ) , k )
      1:
    Set   k = 1 as the start of the search dimension
      2:
    Set   g = 1 as the start of the search interval.
      3:
    for k = 1  to  d  do
      4:
        Set s = g as the local start of the search interval.
      5:
        Set t = n as the local end of the search interval.
      6:
        while  s t  do
      7:
             m i d = ( s + t ) / 2 compute the middle of the search interval
      8:
            if  X ( 1 , k ) > d a t a ( i n d f ( m i d , k ) , k )  then
      9:
               Set s = m i d , start of search interval is too small
    10:
            else
    11:
               Set t = m i d , end of search interval is too large
    12:
            end if
    13:
        end while
    14:
        Set g = s as the start of the search in the next dimension
    15:
    end for
    16:
    return g
Naturally we need to repeat the search in Algorithm 5 for all long fronts and return the tightest bound. Last but not least the final result is the tightest bound between the long fronts and the long lines. Observe that, in Algorithm 5, we have the requirement to also input the indexes that are computed at step 15 in Algorithm 3.
During a single search, in the worst case there might be as many as O ( n 1 / 2 ) long fronts or long lines by Theorem 1 and since a search through each long front or long line takes O ( ln ( n ) ) then the total cost is O ( n 1 / 2 ln ( n ) ) .

4. Computing the CDF

Whenever we compute the upper or lower limit of a search point T we always look it up in all long lines and long fronts. If the search point T is positioned at index s = L i ( T ) in a given long line i, then there are exactly s points that contribute to its CDF. In this context the value s = L i ( T ) is exactly the value s that is being returned by the pseudocode in Algorithm 4. Therefore the total CDF contribution by all the long lines is given by Equation (5).
C D F l i n e ( T ) = i L i ( T )
Similarly, we need to add up the contributions F i of all fronts to finally obtain the CDF in Equation (6).
C D F ( T ) = C D F l i n e ( T ) + i F i ( T )
Computing F i in Equation (6) is an exhaustive search in the long front i. However, we can gain some speed by observing that the first binary lookup in the first search dimension in a long front will point out how many points can contribute to the CDF. In other words, in a long front, if the initial binary lookup places the point T at index b, then there are no more than b points that can contribute to F i . However some of the first b points might not be BL of T and will not contribute to the CDF, and in these cases we need to check them one by one. In this context the value b equals g in Algorithm 5 at step 14 only when k = 1 . Better speedup of F i estimation is left as future work.

5. Numerical Comparison

Figure 9 shows an example where the AR and BL were computed for a single point in 3D since the manifold only has meaning where we have at least two input and one output dimensions.
In Figure 9 observe that the AR and BL set might be a huge part of the whole set, meaning computing the optimal limits is difficult. Figure 10 shows a side view of the same example as Figure 9. In Figure 10 observe that the limits might not be very tight, but the result would still be reasonable due to the manifold property.
For the remaining evaluations in this section consider a common telco problem where the base station has gathered three KPIs, namely the UE activity, mean CQI and mean UE throughput, on an hourly basis. For a given UE activity and CQI we would like to compute the mean UE throughput. Observe that increasing the activity separately from the CQI will decrease the throughput. Similarly, increasing the CQI separately from the activity will increase the throughput. Increasing the CQI and decreasing the activity will increase the throughput. Therefore let the first dimension be x 1 = C Q I , while the second dimension is the negative of the activity x 2 = ( 1 ) a c t i v i t y . The target variable y = t h r o u g h p u t is the mean throughput. Therefore x 1 , x 2 , y have the CDF manifold property.
Next, the input data x 1 and x 2 is sampled from a standard normal distribution using r a n d ( ) in Octave. The true mapping between the data dimensions x 1 and x 2 is assumed a sum of sigmoid functions σ [ ] or more specifically y = σ [ 10 ( x 1 + 1 ) ] + σ [ 15 ( x 1 + 2 ) ] + σ [ 5 ( x 1 1 ) ] + σ [ 2 ( x 1 + 1 ) ] + σ [ 1 ( x 1 + 3 ) ] + σ [ 3 ( x 1 3 ) ] + σ [ 4 ( x 1 2 ) ] + σ [ ( x 2 1 ) ] + σ [ 30 ( x 2 1 ) ] + σ [ 30 ( x 2 2 ) ] . Note that, because a sum of strictly increasing functions is strictly increasing, this mapping has the CDF manifold property. This elaborate mapping from x to y was chosen to make sure we observe a lot of errors made by the manifold and comparison model.
Consider benchmarking against other non-parametric methods. Practically all known non-parametric methods do not have built-in mechanisms to respect the strictly increasing property. K-nearest neighbor will return the closest neighbor even if it is not in line with the increasing property. Gaussian processes are not sensible for benchmarking as the KPIs in question rarely have a normal distribution. Additionally kernel methods will fail to generalize well because they do not have mechanisms to respect the strictly increasing property.
A decision tree (DT) is a good benchmarking candidate, but it lacks the functionality to look for upper and lower bounds and compute the CDF or outperform NN in general. Furthermore, in practice, when engineers deploy new sites, they are very much interested in guaranteed performance, and they would often use an NN over DT just to reduce the prediction error even if the model is no longer explanatory.
With the proposed manifold we try to establish guaranteed performance limits while also adhering to the most common telco practices. Since NNs are also considered cutting-edge manifold methods that are often the first choice for any benchmarking, we select an NN for evaluation. Nevertheless comparing the manifold against a DT is a good direction for future work.
It is worth noting at this point that a new algorithm does not need to outperform all known methods on all datasets in order for the algorithm to be novel or find a niche use. The goal of the comparison is not to find the best-in-slot components but showcase a reasonable alternative.
Next, the NN below has only one layer because the test function we use is a sum of sigmoids, which is also expressed as an NN with one layer. The only difference is that in practice we could never know exactly how many neurons to use, especially in higher dimensions. Hence let the NN have a single layer with 16 neurons. In practice we would never know the true number of NN layers that model the data, and therefore setting it to the exact right value of one gives the NN a slight advantage over the manifold.
The NN is trained for 400 iterations using Octave’s f m i n u n c ( ) function applied to the forward–backward propagation algorithm. To compare the NN to the manifold we compute the Root Mean Square Error (RMSE) and a separate swap metric.
The swap metric counts the number of times the prediction does not adhere to the strictly increasing property. Meaning, for a data prediction point t, we find the indexes of all training points I a r [ x A R ( t ) ] that are A R of t and then count how many of them had y values that were not AR of the prediction y p or more explicitly y ( I a r ) A R ( y p ) .
We start the simulation with a sample of 40 data points, then compute the error measures and then add 40 new sampled data points to the original set. We repeat sample and addition until we get to a sum total of 800 points. The reason behind this is to simulate how KPIs get added over time as the base station obtains more and more real-life measurements.
Additionally, the data is split into training and validation sets using a 50/50 ratio. We train the models on their respective training sets and evaluate the RMSE and swap metrics on the validation sets. The exact numerical results are given in Table 1.
The data in Table 1 is used to produce Figure 11, where the Y-axis is on a logarithmic scale because the measures have different scales and the X-axis is the number of input data for each estimation. The columns of Table 1 have the same names as the corresponding objects in Figure 11.
In Figure 11 we see that the RMSE gradually decreases for both models as we get more and more data. The RMSE of the NN flattens after we reach around 200 samples, while the manifold experiences improved performance with each new data point.
Both the NN and the manifold can experience swaps in the strictly increasing data property, but the manifold swaps are more reliable and in many cases at least 1 order of magnitude better than the NN.
Interestingly, for data size 600, the NN had zero swaps, which does not guarantee it will not swap an unseen input at all because it is difficult to ensure continuous NN mapping if strictly increasing everywhere. On the other side, with a large enough dataset, the manifold will make fewer and fewer swaps while the RMSE will keep decreasing.
Therefore, as future work, it would be interesting to see if there is an ensemble model that can take advantage of both the NN and the manifold.

Computational Complexity Comparison

To start the complexity comparison observe that the computational cost of a single NN training, even with Strassen’s multiplication, is O ( n 2.7 ) , while the CDF manifold costs in the worst case O ( n 3 / 2 ) , meaning the manifold runs more than O ( n ) times faster. In fact, depending on the data, the manifold might cost only O ( n . l n [ n ] ) , which is an improvement of at least O ( n 2 ) . Furthermore the manifold is an explanatory model where we know exactly which two data points produced the prediction, while the NN acts as a black box that does not have a clear reason for any given prediction.
Predicting for a single data vector using the NN costs O ( w 2.7 ) , where w denotes the number of parameters or neurons the network has, which would then be used for matrix multiplication, which reverts to Strassen’s algorithm again. On the other hand predicting for a single input vector with the manifold takes O ( l o g [ n ] ) in the best case, when the data is ordered in either a few long lines or a few long fronts. In the worst case we need to search as many as O ( n 1 / 2 ) lines and fronts by Theorem 1 and the cost becomes O ( n 1 / 2 l n ( n ) ) .
Referring to Equation (6), computing the CDF for a single data input takes in the best case O ( l o g [ n ] ) when the data has few long fronts. Alternatively, if the data has mostly long fronts or one giant long front, then we need to conduct a linear scan at a cost of O ( n ) . For clarity, in Table 2, we summarize the computational complexity.

6. Conclusions

In this paper we introduced the CDF manifold that on average can be constructed in O ( n . l n ( n ) ) steps, with the worst case costing O ( n 3 / 2 ) . Searching with a single new instance is expected to cost O ( l n ( n ) ) steps and O ( n 1 / 2 l n ( n ) ) in the worst case.
The manifold also relies on the dictionary algorithms of the package in [11]. The same manifold can also be used to compute the CDF of either a data point or a new data point, as described in Section 4. Both the construction and the search algorithms can be parallelized.
The algorithm is expected to perform best with telecom data where the KPIs have physical system meaning that keeps them bound within certain limits, which increases the likelihood of containing singular long fronts and long lines. In addition, telco data is highly likely to be strictly increasing, which satisfies the prerequisites of the algorithm.
We also did a simulation study to compare the performance of an NN and the CDF manifold. The results showed that, for large datasets, the computational complexity, the achievable accuracy and the explanatory characteristics of the search algorithms point in favor of the manifold.
Future work consists of considering various reference-point approaches because we saw how the inversion-point heuristic can help to speed up construction. It would also be interesting to search for even faster ways to compute the CDF of a point given the manifold. Another future work project would be considering hybrid models between the CDF manifold and a neural network, for example, or comparing the manifold to a decision tree.

Author Contributions

Conceptualization, V.V. and G.I.; methodology, V.V.; validation, V.V.; formal analysis, V.V.; investigation, V.V.; writing—original draft preparation, V.V.; writing—review and editing, G.I.; visualization, V.V. and G.I.; supervision, G.I.; project administration, G.I.; funding acquisition, G.I. All authors have read and agreed to the published version of the manuscript.

Funding

This study is financed by the European Union—NextGenerationEU through the National Recovery and Resilience Plan of the Republic of Bulgaria, project No. BG-RRP-2.004-0005.

Data Availability Statement

Data is contained within the article; further inquiries can be directed to the corresponding author.

Acknowledgments

Special thanks to Cyril Murphy, who greatly enabled and encouraged the investigation of the patterns investigated in this paper.

Conflicts of Interest

The authors declare no conflicts of interest.

References

  1. Meilă, M.; Zhang, H. Manifold learning: What, how, and why. Annu. Rev. Stat. Its Appl. 2024, 11, 393–417. [Google Scholar] [CrossRef]
  2. Mordohai, P.; Medioni, G. Dimensionality estimation, manifold learning and function approximation using tensor voting. J. Mach. Learn. Res. 2010, 11, 411–450. [Google Scholar]
  3. Hamilton, W.L.; Ying, R.; Leskovec, J. Representation learning on graphs: Methods and applications. arXiv 2017, arXiv:1709.05584. [Google Scholar]
  4. Thakare, R.; Akugri, K.M. Manifold Decoders: A Framework for Generative Modeling from Nonlinear Embeddings. arXiv 2025, arXiv:2510.13622. [Google Scholar] [CrossRef]
  5. Guo, J.; Wen, C.K.; Jin, S.; Li, G.Y. Overview of deep learning-based CSI feedback in massive MIMO systems. IEEE Trans. Commun. 2022, 70, 8017–8045. [Google Scholar] [CrossRef]
  6. Fei, Y.; Liu, Y.; Jia, C.; Li, Z.; Wei, X.; Chen, M. A survey of geometric optimization for deep learning: From Euclidean space to Riemannian manifold. ACM Comput. Surv. 2025, 57, 1–37. [Google Scholar] [CrossRef]
  7. Lang, R.J. A computational algorithm for origami design. In Proceedings of the Twelfth Annual Symposium on Computational Geometry; ACM: New York, NY, USA, 1996; pp. 98–105. [Google Scholar]
  8. Chen, F.; Cheung, G.; Zhang, X. Manifold graph signal restoration using gradient graph Laplacian regularizer. IEEE Trans. Signal Process. 2024, 72, 744–761. [Google Scholar] [CrossRef]
  9. Vasilev, V. Chromatic Polynomial Heuristics for Connectivity Prediction in Wireless Sensor Networks. In Proceedings of the ICEST 2016, Ohrid, North Macedonia, 28–30 June 2016. [Google Scholar]
  10. Vasilev, V.; Leguay, J.; Paris, S.; Maggi, L.; Debbah, M. Predicting QoE factors with machine learning. In 2018 IEEE International Conference on Communications (ICC); IEEE: Piscataway, NJ, USA, 2018; pp. 1–6. [Google Scholar]
  11. Vasilev, V. Folded Sheet of Paper. Bitbucket, 2024. Self-Published. Available online: https://bitbucket.org/doublevvinged-vladi/fsp_vgv/ (accessed on 27 March 2026).
  12. Cormen, T.H.; Leiserson, C.E.; Rivest, R.L. Introduction to Algorithms; The MIT Press: Cambridge, MA, USA, 2000. [Google Scholar]
Figure 1. Defining above right and below left of a point.
Figure 1. Defining above right and below left of a point.
Algorithms 19 00269 g001
Figure 2. If target point T is AR of sample point P then upper limit of T is also AR of P.
Figure 2. If target point T is AR of sample point P then upper limit of T is also AR of P.
Algorithms 19 00269 g002
Figure 3. If a reference point R is AR of a target point T then the upper limit of T is not any point AR of R. In this example S is not an upper limit of T because R is a better upper limit.
Figure 3. If a reference point R is AR of a target point T then the upper limit of T is not any point AR of R. In this example S is not an upper limit of T because R is a better upper limit.
Algorithms 19 00269 g003
Figure 4. The AR and BL functions do not eliminate a portion of the search set in general, which hinders its use for binary searches.
Figure 4. The AR and BL functions do not eliminate a portion of the search set in general, which hinders its use for binary searches.
Algorithms 19 00269 g004
Figure 5. The structure where all data points are such that i 1 , j L i A R ( L j ) that we called a long line can be expressed as an Index Invariant Graph. Due to the dual isomorphism of the hypergraph the long lines allow binary search.
Figure 5. The structure where all data points are such that i 1 , j L i A R ( L j ) that we called a long line can be expressed as an Index Invariant Graph. Due to the dual isomorphism of the hypergraph the long lines allow binary search.
Algorithms 19 00269 g005
Figure 6. The structure where all data points are such that [ i , j ] , L i A R ( L j ) , L i B L ( L j ) that we called a long front cannot be expressed as an Index Invariant Graph. However, with the additional construction of the C points, we can model the front with the graph. Due to the dual isomorphism of the hypergraph the modified long front allows binary search.
Figure 6. The structure where all data points are such that [ i , j ] , L i A R ( L j ) , L i B L ( L j ) that we called a long front cannot be expressed as an Index Invariant Graph. However, with the additional construction of the C points, we can model the front with the graph. Due to the dual isomorphism of the hypergraph the modified long front allows binary search.
Algorithms 19 00269 g006
Figure 7. Areas in a indicate locations where we cannot add any points without going over the long line limit. Areas in b are positions that do not increase the long line limit but do increase the long front count for some points.
Figure 7. Areas in a indicate locations where we cannot add any points without going over the long line limit. Areas in b are positions that do not increase the long line limit but do increase the long front count for some points.
Algorithms 19 00269 g007
Figure 8. Areas in a indicate locations where we cannot add any points without going over the long front limit. Areas in b are positions that do not increase the long front limit but do increase the long line count for some points.
Figure 8. Areas in a indicate locations where we cannot add any points without going over the long front limit. Areas in b are positions that do not increase the long front limit but do increase the long line count for some points.
Algorithms 19 00269 g008
Figure 9. Example AR and BL for a point.
Figure 9. Example AR and BL for a point.
Algorithms 19 00269 g009
Figure 10. Side view of Figure 9.
Figure 10. Side view of Figure 9.
Algorithms 19 00269 g010
Figure 11. The change in RMSE and number of errors made by the NN versus the manifold as a function of the size of the data. The data size increases by an incremental addition of 40 new points instead of sampling an entirely new dataset, which simulates a monthly addition of new base station measurements.
Figure 11. The change in RMSE and number of errors made by the NN versus the manifold as a function of the size of the data. The data size increases by an incremental addition of 40 new points instead of sampling an entirely new dataset, which simulates a monthly addition of new base station measurements.
Algorithms 19 00269 g011
Table 1. The exact dataset used to produce Figure 11.
Table 1. The exact dataset used to produce Figure 11.
Data SizeSwap NNRMSE NNSwap MANIFRMSE CDF
4030.348410.4087
8010.278160.2557
120150.455810.2827
160120.255960.2669
20050.2846100.1745
240440.251380.2750
28040.2443240.1654
3201490.3214180.1792
360250.2932200.2135
400550.2789510.2158
440860.2465650.2217
480420.2887670.1635
5201990.2757490.1649
560810.3073490.1760
60000.4709570.1854
6404230.2603320.2263
6801580.2963730.1728
7201190.3038580.1627
7605420.2757980.2042
800630.2900570.1729
Table 2. Comparing the computational complexity.
Table 2. Comparing the computational complexity.
NameWorst CaseBest Case
train NN O ( n 2.7 ) O ( n 2.7 )
train manifold O ( n 3 / 2 ) O ( n . l o g [ n ] )
predict NN O ( w 2.7 ) O ( w 2.7 )
predict manifold O ( n 1 / 2 l n ( n ) ) O ( l o g [ n ] )
compute single CDF O ( n ) O ( l o g [ n ] )
Disclaimer/Publisher’s Note: The statements, opinions and data contained in all publications are solely those of the individual author(s) and contributor(s) and not of MDPI and/or the editor(s). MDPI and/or the editor(s) disclaim responsibility for any injury to people or property resulting from any ideas, methods, instructions or products referred to in the content.

Share and Cite

MDPI and ACS Style

Vasilev, V.; Iliev, G. An Explanatory CDF Manifold Algorithm for Large Telecom Datasets. Algorithms 2026, 19, 269. https://doi.org/10.3390/a19040269

AMA Style

Vasilev V, Iliev G. An Explanatory CDF Manifold Algorithm for Large Telecom Datasets. Algorithms. 2026; 19(4):269. https://doi.org/10.3390/a19040269

Chicago/Turabian Style

Vasilev, Vladislav, and Georgi Iliev. 2026. "An Explanatory CDF Manifold Algorithm for Large Telecom Datasets" Algorithms 19, no. 4: 269. https://doi.org/10.3390/a19040269

APA Style

Vasilev, V., & Iliev, G. (2026). An Explanatory CDF Manifold Algorithm for Large Telecom Datasets. Algorithms, 19(4), 269. https://doi.org/10.3390/a19040269

Note that from the first issue of 2016, this journal uses article numbers instead of page numbers. See further details here.

Article Metrics

Back to TopTop