I Introduction
A group of agents and binary relation among them can be mathematically formalized as a network (also known as graph). Analysis of such network for different topological properties forms the basis of several domains namely Social Network Analysis, Computational Biology [HCM15], Epidemiology [MH17]. One such topological property could be maximally connected subgraphs; popularly known as cliques. Finding the clique of maximum cardinality in a network is a well known NPComplete Problem [GJ02]. However, more general problem in network analysis could be not only just finding the maximum size clique, but also enumerate all maximal cliques present in the network. Bron et al. [BK73] first proposed an enumeration algorithm for maximal cliques in the network which forms the basis of study on this problem. Later, there were advancements for this problem for different types of networks [CZKC12], [ES11], [ELS13] etc.
Most of the real life networks from social to biological are time varying, which means that the existence of relationship between any two agents changes with time. Temporal networks [HS12] (also known as time varying networks or link streams) are the mathematical tools used for precisely representing these time varying relationships. For such kind of networks, a natural extension of clique is the temporal clique which comprises of a set of vertices along with a time duration.
Ia Related Work
This work is closely related to the Clique Enumaration Problem of a temporal network introduced by Virad et al. [VLM15] [VLM16]. For a given value of (, )Clique is defined as a set of vertices of the network with a time interval, such that every pair of veritices of the set has at least one edge in every time interval. Based on their proposed algorithm, they analyzed contact relationship among a group of students and showed that it brings a different interpretation in their communication pattern [VLM15]. Later, Himmel et al. [HMNS16] adopted BronKerbosch Algorithm for maximal clique enumeration and proposed its temporal version. Results reported in [HMNS16] show that, their algorithm performs much better than that of in [VLM16] in terms of worst case computational time analysis as well as in experimentaion with real life data sets. Recently, Mukherjee et al. [MXT17] [MXT15] studied maximal clique enumeration problem of an uncertain graph. They introduced the notion of maximal clique in an uncertain graph and also proposed an enumeration algorithm for all such maximal cliques.
IB Our Contribution
For a group of human with their time varying relationship represented as a temporal network, its a natural question which set of people contact frequently among themselves? At minimum how many times they contact within a time interval? Motivated by such questions, in this paper, we introduce the notion of Cliques which is defined as the set of vertices with a time interval where every pair of users of the set has atleast intersections in each time interval. Particularly, we make the following contributions in this paper:

We define the problem of “enumeration of ()Cliques” of a temporal networks.

We propose an algorithm for enumerating all maximal ()Cliques with detailed analysis and theoretical properties.

We implement the proposed algorithm on three human contact network data sets and investigate the deeper insights of contact pattern.
IC Organization of the Paper
Rest of the paper is organized as follows: Section II describes some preliminary concepts that is required to understand the rest of the paper. In Section III, we introduce the notion of Clique of a temporal network and its various properties. Section IV contains our proposed enumeration algorithm of all maximal ()Cliques and its detailed analysis. Section V contains experimental details which covers description of datasets, obtained results from the experiment and their discussions. Finally, Section VI concludes our works and gives future directions.
Ii Preliminaries
In this section we describe some preliminary concepts, which will form the basis to understand the work presented in the subsequent sections of this paper. A temporal network is a graph whose edges are associated with a time stamp to denote the time at which the edge appeared. Formally, it is defined as follows:
Definition 1 (Temporal Network).
[HS13] Temporal network (also known as time varying graphs, link streams) is defined as a triplet , where and () are the vertex and edge set of the network. is a function which assigns each edge to its occurrence time stamp.
Figure 1 shows the time varying links of a temporal network. Suppose, the network is observed in discrete time steps (spaced by ) starting from the time and continued till time , i.e., (suppose, ) Hence, . Each edge of is of the form signifying that there is an edge between the nodes and at time . The difference, is known as the lifetime of the network and it is denoted as T. In our case . We say is a static edge of , if for some . We define the frequency of an edge as the number of times the edge has occurred in the entire lifetime of the network. We define the frequency of the static edge as . Viard et al. introduced the notion of Cliques of a temporal networks which is a natural extension of cliques in a static network.
Definition 2 (Clique).
For a given time period , a Clique of the temporal network is a vertex set, time interval pair, i.e., with , and , such that and there is an edge with .
Iii Clique of a Temporal Network
In this section, we introduce the notion of Clique of a temporal network
Definition 3 (Clique).
For a given time period and , a Clique of the temporal network is a vertex set, time interval pair, i.e., where , , and . Here and , there must exist or more number of edges, i.e., and with .
Figure 1 is an example of a time varying network. Figure 2 shows some Cliques for the temporal network of Figure 1 with and . Now, from the Definition 3, it is easy to observe, that a Clique will be a Clique when .
For a static network , a clique is maximal if , is not a clique. But in case of Clique as it is defined in the context of a temporal network, so its maximality has to be decided based on both its cardinality and time interval. By considering both the factors, we define the maximality condition for an arbitrary Clique in Definition 4.
Definition 4 (Maximal Clique).
A Clique of the temporal network will be maximal if neither of the following is true.

such that is a Clique.

is a Clique. This condition is applied only if .

is a Clique. This condition is applied only if .
From the definition of maximal Clique it is easy to observe that first condition is regarding the cardinality whereas second and third one for time duration. For static graphs, among all the maximal cliques, one whose cardinality is maximum is maximal clique. However, in our case maximum can be in terms of either time duration or cardinality. Hence, maximum Clique of temporal network is defined as follows.
Definition 5 (Maximum Clique).
Let be the set of all maximal Cliques of the temporal network . Now, will be

temporally maximum if , .

cardinally maximum if , .
Iv Enumeration of Maximal Clique
In this section, we present our proposed enumeration algorithm. The idea is based on the enumeration of maximal cliques in a static graph [JYP88]. It is divided into two parts. First, we initialize all the trivial Cliques (Algorithm 1) and then we try to expand them both in cardinality and temporally till maximality is not reached by Definition 4 (Algorithm 2).
In Algorithm 1 to initialize the trivial Cliques, we create the dictionary where the static edges (vertex pairs) are the keys and the time stamps at which they occur are the values. Then, we define an empty set, , to store all the initial Cliques. Next, for each static edge present in , if its frequency is atleast , we put the corresponding dictionary values in a list denoted by . Now, in , let us consider any particular consecutive occurrences and denote it as . If appears exactly in duration, then we add a clique in with the vertex pair and the time duration , where and are the first and last appearing time stamps of . Otherwise, if the duration of is less than , we add two cliques and with the same vertex pair. For , is the first appearing time stamp in and is , and for , is the last occurring time stamp in and is (forloop from line number 6 to 15). The same procedure is repeated for each consecutive occurrences for all static edges present in the dictionary . Now, we make the following observation for the initial Cliques formed by Algorithm 1.
Lemma 1.
For each clique in Algorithm 1, the following relations will always hold:
Proof.
To initialize a Clique, it is trivial that the time span of the clique should be of minimum duration and each pair of vertices of the clique should appear at least times within each duration (as per Definition 3). As in Algorithm 1, we are starting with a static edge and picking each consecutive occurrences, cardinality of the clique will be 2 and frequency of the edges will be exactly . This proves the conditions and . Now, the cliques that are added satisfying the equality condition at line number 7 of Algorithm 1, naturally they are of duration. However, if a particular occurrences happen within time span, we are adding two cliques of exactly duration. One is forwarding the time span as first appearing time stamp plus and another is backwarding the time span as last appearing time stamp minus (at line number 11 and 12). This proves the condition . ∎
Now, we analyze the time requirement for our initialization process. Preparing the dictionary in Line number 1 requires time. Assuming frequency of all the edges is atleast , inner loop at Line 6 will take time. Hence, for processing all the edges to build the set of initial Cliques, , running time is . So, the total time complexity of Algorithm 1 is . If we sum up the frequencies of all the static edges, we get the number of temporal edges, i.e., the number of triplets . Let, . Hence running time of Algorithm 1 is mentioned below.
Lemma 2.
Running time of the initialization process described in Algorithm 1 is .
Algorithm 2 describes the enumeration procedure of maximal Cliques. For this process, three clique sets (for holding the cliques yet to be processed), (for keeping the cliques already or yet to be processed) and (for storing the maximal cliques) are maintained. Now, it works as follows. First, it takes out one clique from and tries to expand (if possible) in any of the following three ways.

First one is the addition of nodes (from ) which is not currently in (from Line number 6 to 13). If the addition of a node forms a Clique within to , we add the new clique to and for further processing and set the Is_Maximal flag to False, so that can not be added to .

Second one is the expansion of the duration in the right side of the time horizon (from Line number 22 to 29). For this expansion, we choose to progress by duration only, in one iteration. Now, the question arises, from where the is to be added. If is added to , there is no guarantee that , there will be edges in . So, the way is to find the time where all the edges have occurred at least times from the end () towards . For this purpose, we use , a list, to store the time on which an edge has occurred time from last. If we take the minimum (earliest) of as , that ensures, from to , there are edges . Now, if , the expansion is possible by the definition of Clique. The new clique (where ) is added to and for further processing and the Is_Maximal flag is set to be False, so that can not be added to .

Third one is the expansion of the duration in the left side of the time horizon (from Line number 14 to 21). Similar to the second case, a list, , is taken to keep the time at which a static edge has occurred time from the first (). Now, the maximum (latest) of (i.e., ) tells that from to there is occurrences . If , the new clique (where ) is added as follows from above.
This process is iterated until is empty and finally contains all the maximal Cliques. Figure 3 describes the procedure for building the maximal Cliques using Algorithm 1, 2 for the vertices of the temporal network shown in Figure 1.
Remarks: One important point to mention here is while building the list , we are checking the next time stamp as well. For , let denotes the last occurrence in . Now, if there are occurrences of between to , then is kept in instead of . This scenario can happen when . Consider the temporal network shown in Figure 1. When , an initial clique is generated by Algorithm 1. Now, for making , if we do not check from 8 () to 11, can not be expanded from [7,10] to [7,11]. The same is checked for making to see one time stamp backward.
Lemma 3.
In Algorithm 2, the contents of are Cliques.
Proof.
We prove this statement by induction hypothesis on the iterations of the while loop (from Line 2 to 33). By Lemma 1, initially the contents of are Cliques. Now, we assume that, the contents of at the end of the th iteration are Cliques. An existing clique, of may be modified in Line number 10, 19 and 27 of Algorithm 2. As per the condition imposed in Line number 7, if is modified in Line number 10 with new vertex addition, it results to a clique. Now, let us show that at Line number 19 is a Clique, where is obtained from Line number 14. As, is a Clique, all possible static edges formed by the vertices in occur atleast times in every duration from to , where . Moreover, since is the latest first th occurrence time of an edge in , for all , there is necessarily edges in with . Here, , otherwise would not be a Clique. Therefore, an edge occurs atleast times between and , . Finally, is a Clique.
Similar argument holds for Line number 22. Hence, clique modified in Line number 27 will also be a Clique. So, at the end of th iteration the all the cliques in are Cliques. This completes the proof. ∎
Lemma 4.
All the elements of the set returned by Algorithm 2 are maximal Cliques.
Proof.
We prove this statement by contradiction. Let us assume, be an element of , which is not maximal. Now, as can only be filled by the elements of , so, is already a Clique (By Lemma 3). If, is not maximal, any one of the following three can happen:

, such that is a Clique. So, flag at Line number 8 will be set to false and, can not be added to at Line number 31. Hence, the assumption is a contradiction.

Let us assume, , such that, is a Clique. Without loss of generality, we assume that there is no edge between the nodes of from to . Let us also consider the latest first th occurrence time of an edge in is calculated in Line number 14. So, it is necessary that , as is a Clique. Since, implies . As a consequence, if condition at Line number 16 is satisfied and the flag is set to false in Line number 17. Hence, we reach to a contradiction as above.

If such that is a Clique, then in similar way, we reach contradiction as Case 2.
Finally, contains only the maximal Cliques, which proves the statement. ∎
Lemma 5.
For a maximal Clique ,
(a) if is the earliest occurrence time of an edge in , then
(b) if is the last occurrence time of an edge in , then .
Proof.
We prove this statement by contradiction. Since, is a Clique, , there exist atleast number of edges , such that . Let us assume, . Then, , there also exist number of edges , such that . Hence, is a Clique. This implies that is not maximal as . Thus, we reach the contradiction. This proves the Statement (a).
In similar way, the Statement (b) can also be proved by assuming . ∎
Lemma 6.
Proof.
Let us assume, that be an initial Clique. This implies that the static edge occurs exactly times within the time duration to (By Lemma 1). Assume that for these consecutive occurrences, appears first at time and last at time , where . Now, any one of the following four cases can happen. (i) If and , then this clique will be added in Line number 8 of Algorithm 1. (ii) If and , then this clique will be added in Line number 12 of Algorithm 1. (iii) If and , then this clique will be added in Line number 11 of Algorithm 1. (iv) If , no cliques will be added by Algorithm 1. Now, we want to show, the cliques of case (iv) are actually redundant. If such a clique, , where and , is added in , then an intermediate clique will be reached by Algorithm 2 at some stage by Line number 14 to 29. Now, if there is consecutive occurrences of within duration, Algorithm 1 adds two cliques and in (by case (ii) and (iii) respectively). These two cliques also form an intermediate clique in Algorithm 2. This implies that case (iv) cliques are redundant and will not effect the computation of all Maximal cliques. Figure 4 explains the same. Hence, the statement is proved. ∎
Lemma 7.
Let, be a maximal Clique and be the earliest occurrence time of an edge in . If, in at some stage of Algorithm 2, then .
Proof.
Assume, is in . We consider the sequence of steps of Algorithm 2 of the form: such that with , i.e., the Algorithm 2 builds from in Line number 22 to 29. Notice that, from Lemma 5 and 6.
We show that . If the statement is not true, then, in from sequence, . Now, as is maximal, we must have . In addition, where is the earliest last occurrence time of an edge in computed at Line number 22. Since is the last Clique of the sequence, is also the earliest last occurrence time of an edge in ; else there will be a clique satisfying the constraints of the sequence above. Hence, and for which there is no number of occurrences for from to . This ensures, , which implies .
Now, we want to show that is constructed from , which means will be expanded towards in some future steps of Algorithm 2. As, is a Clique, there is at least occurrences . So, the same holds for as well. Now, let is the latest first occurrence time in , then Algorithm 2 will build with from Line number 14 to 22. ∎
Lemma 8.
contains all the maximal Cliques of the temporal network .
Proof.
As, is constructed from the clique set , we need to show that all the maximal Cliques are in at some iteration of the while loop in Algorithm 2. By lemma 6, initially contains all the required Cliques. Let, be a maximal Clique, be the earliest occurrence time of an edge in and let be two nodes, such that there exists edges in , starting from . We show that there is a sequence of steps that builds from Clique (which is in from Algorithm 1). Notice that, Algorithm 2 iteratively adds all the elements of in from Line number 6 to 13. This creates Clique from . We finally apply Lemma 7 to conclude that the Algorithm 2 builds from ∎
Theorem 1.
Given a temporal network with duration and edge occurrences , Algorithm 2 correctly enumerates all the maximal Clique.
Now, we investigate the time and space requirement of our proposed methodology in worst case. Assume, that the number of nodes and edges of the temporal network is and respectively. The worst case will occur, when , for any duration of the time horizon, there are edges. In this case, the number of initial cliques returned by Algorithm 1 will be of . Now, as in every duration there is edges, so all the initial cliques of will be merged into a clique, where the duration will be the entire time horizon. The space consumed by the intermediate cliques of this process is . Now, the number of possible vertex subsets of the temporal graph is of . If there is a situation, when all , the static edge has the frequency within each duration , the number of intermediate cliques will be . Now, each clique can occupy a space of . Hence, the space required by this process is in worst case.
We estimate the time complexity considering the number of basic operations performed by Algorithm
2. It consists of mainly three blocks; (i)from line number 6 to 13, (ii) 14 to 21, and (iii) 22 to 29. Now, the complexity of the block (iii) is same as (ii). So, we focus on first two blocks.For a vertex , line number 7 tests whether is a Clique or not. To accomplish this task, for each node in it has to search all the edges induced by the vertices in in the worst case. Hence, required time is . At line number 9, it has to search number of cliques in and compares two cliques with time. Therefore, total time for checking belongingness in is . This process is repeated for all at line number 6 and required time is of .
Computing at line number 14 requires time. Line number 26 also takes time for checking belongingness in . So, the time complexity of the block (ii) is .
At last, one iteration of the while loop costs . Now, the while loop runs for . Hence, the overall time complexity of the proposed methodology is of .
From this analysis we obtain the following result.
Theorem 2.
Given a temporal network with = n, = m, for enumerating all the maximal Cliques the proposed methodology takes space and time.
V Experimental Details
In this section, we describe the experimental evaluation of our proposed methodology. We start with a brief description of the datasets that we use in our experiment.
Va Dataset Description

Infectious [kon17], [ISB11]: This network describes the facetoface behavior of people during the exhibition INFECTIOUS: STAY AWAY in 2009 at the Science Gallery in Dublin. Nodes represent exhibition visitors; edges represent facetoface contacts that were active for at least 20 seconds. Multiple edges between two nodes are possible and denote multiple contacts. The network contains the data from the day with the most interactions.

Haggle [CHC07]: This undirected network represents contacts between people measured by carried wireless devices. A node represents a person and an edge between two persons shows that there was a contact between them.

College Message [POC09]:This dataset is comprised of private messages sent on an online social network at the University of California, Irvine. Users could search the network for others and then initiate conversation based on profile information. An edge means that user sent a private message to user at time .
We brief a preliminary statistics of these datasets in Table I.
Dataset Name  Nodes  Temporal Links  Static Edges  Lifetime 
Infectious  410  17298  2765  8 Hours 
Haggle  274  28244  2899  4 days 
College Message  1899  59835  20296  193 Days 
VB Goal of the Experiment
In the context of human contacts, a (, )Clique signifies a group of frequently interacted persons (set of vertices of the clique) for a particular time length (duration of the clique). From the experimentation, we want to study the following facts:

Number of frequently contacted groups by varying their contact interval () [Count of maximal cliques].

Maximum duration of contacts of the frequently contacted groups [Maximum duration among all the maximal cliques].

Maximum number of persons from the frequently contacted groups [Maximum cardinality among all the maximal cliques].

From the computational framework, number of iterations to obtain the frequently contacted groups. Instead of CPU time, we report number of iterations, which is platform independent.
VC Experimental Setup
Here, we describe our experimental set up. The main two parameters in this problem are and . It is natural that one will be interested in finding the set of frequently contacted users for a time duration comparable with the network lifetime. Hence, we select the value of for each dataset based on their lifetime. For the ‘Infectious’ data set, we select the initial value of as minute, increment by minute and continued till minutes. For the ‘Haggle’ dataset, we adopt similar set up as Infectious. For the ‘College Message’ data set, we initially set the value as hour and then , , and hours. In case of Infectious and Haggle dataset, for each delta value, we start with and increment by , till the maximal clique set is null. As the chosen values for the College Message dataset are larger, we increment the by till it reaches to and by till the maximum clique set is null. The reason behind larger increment is for obtaining a significant change in the result (e.g., maximum cardinality, maximum duration etc.). We run our experiments on a server having Intel Xeon, 2.2 GHz, 16 core processor and 64 GB memory.
VD Results and Observations
Here, we present the obtained results and observations from the experiment. For Infectious dataset, Figure 5(i) shows the results for the change in number of maximal cliques (ia), maximum clique duration from the maximal cliques (ib), maximum cardinality (ic) and number of iterations (id) with the variation of and values. The same for Haggle and College Message dataset are shown in Figure 5(ii) and (iii) respectively. Now, we discuss the observations with respect to the mentioned metrics below.
Infectious  Haggle  College Message 
(ia)  (iia)  (iiia) 
(ib)  (iib)  (iiib) 
(ic)  (iic)  (iiic) 
(id)  (iid)  (iiid) 
For Infectious and College Message datasets, we observe that the maximal cliques are more in number when and values are lower. The similar pattern also exists in Haggle dataset. However, due to the abrupt change in number of maximal cliques with the increment of in each , look wise Figure (iia) is slightly different from the other two. We also observe that for a particular , there is exponential decrease in number of maximal cliques with the growth of . Also, it is important to note, that for any , theoretically there will be no maximal Clique when . The supportive observation is found in our experimentation. As an example, for Infectious dataset for , there is no maximal Clique beyond (Each link has been captured in every 20 seconds. So, can reach to maximum 300/20+1=16)
For all the datasets, larger leads to increase in the maximum duration which is obvious. The maximum duration decreases with the increase of clique cardinality. For a fixed , the incremental change in results in smaller value of the maximum duration. However, the change is not exponential as the previous metric (count of the maximal cliques). For Infectious and Haggle dataset, we observe similar plots in Figure 5 (ib) and (iib) respectively. In College Message dataset, due to selection of nonuniform values, the change in maximum duration is very high in Figure (iiib).
Next, we want to observe the maximum cardinality of the maximal cliques, which signifies at most how many persons contacted most frequently (preserving at least times) for each time interval. All the datasets exhibit following natural patterns, increase and decrease in the maximum cardinality along with the incremental change in (for fixed ) and (for fixed ) respectively.
Now, the number of iterations to reach the maximal clique set is dependent on two parameters, one is the number of maximal cliques and second is the delta value for all the datasets. The plots in the first and fourth row of Figure 5 are correspondingly almost identical with the change in for a fixed as it is comparable with number of maximal cliques. However, with the increase of for fixed , there is almost linear increase in the number of iterations due to larger size of the initial clique set.
Vi Conclusions and Future Directions
In this paper, we have introduced the concept of Clique of a temporal network and proposed a methodology for enumerating all such maximal cliques. We have also used this methodology for analyzing three human contact network datasets captured in different situations. Now, this work can be extended in several directions. First of all, the analysis that we have done for our proposed methodology is not tight. Hence, a sophisticated analysis can be provided for the developed algorithm. Secondly, the the problem of enumerating maximal
Cliques can be extended for uncertain graphs, where along with the time stamp, each edge also has a probability of occurrence. In reality, there could be different situations, where it might be interesting to study the interaction patterns among a group of objects for a particular duration with different level of frequencies. So, another direction of extension is to study the
Clique where the context of is subjective and case specific.References
 [BK73] Coen Bron and Joep Kerbosch. Algorithm 457: finding all cliques of an undirected graph. Communications of the ACM, 16(9):575–577, 1973.
 [CHC07] Augustin Chaintreau, Pan Hui, Jon Crowcroft, Christophe Diot, Richard Gass, and James Scott. Impact of human mobility on opportunistic forwarding algorithms. IEEE Transactions on Mobile Computing, 6(6):606–620, 2007.
 [CZKC12] James Cheng, Linhong Zhu, Yiping Ke, and Shumo Chu. Fast algorithms for maximal clique enumeration with limited memory. In Proceedings of the 18th ACM SIGKDD international conference on Knowledge discovery and data mining, pages 1240–1248. ACM, 2012.
 [ELS13] David Eppstein, Maarten Löffler, and Darren Strash. Listing all maximal cliques in large sparse realworld graphs. Journal of Experimental Algorithmics (JEA), 18:3–1, 2013.
 [ES11] David Eppstein and Darren Strash. Listing all maximal cliques in large sparse realworld graphs. Experimental Algorithms, pages 364–375, 2011.
 [GJ02] Michael R Garey and David S Johnson. Computers and intractability, volume 29. wh freeman New York, 2002.
 [HCM15] Yuriy Hulovatyy, Huili Chen, and T Milenković. Exploring the structure and function of temporal networks with dynamic graphlets. Bioinformatics, 31(12):i171–i180, 2015.
 [HMNS16] AnneSophie Himmel, Hendrik Molter, Rolf Niedermeier, and Manuel Sorge. Enumerating maximal cliques in temporal graphs. In Advances in Social Networks Analysis and Mining (ASONAM), 2016 IEEE/ACM International Conference on, pages 337–344. IEEE, 2016.
 [HS12] Petter Holme and Jari Saramäki. Temporal networks. Physics reports, 519(3):97–125, 2012.
 [HS13] Petter Holme and Jari Saramäki. Temporal networks. Springer, 2013.
 [ISB11] Lorenzo Isella, Juliette Stehlé, Alain Barrat, Ciro Cattuto, JeanFrançois Pinton, and Wouter Van den Broeck. What’s in a crowd? analysis of facetoface behavioral networks. J. of Theoretical Biology, 271(1):166–180, 2011.
 [JYP88] David S Johnson, Mihalis Yannakakis, and Christos H Papadimitriou. On generating all maximal independent sets. Information Processing Letters, 27(3):119–123, 1988.
 [kon17] Infectious network dataset – KONECT, April 2017.
 [MH17] Naoki Masuda and Petter Holme. Temporal Network Epidemiology. Springer, 2017.
 [MXT15] Arko Provo Mukherjee, Pan Xu, and Srikanta Tirthapura. Mining maximal cliques from an uncertain graph. In Data Engineering (ICDE), 2015 IEEE 31st International Conference on, pages 243–254. IEEE, 2015.
 [MXT17] Arko Provo Mukherjee, Pan Xu, and Srikanta Tirthapura. Enumeration of maximal cliques from an uncertain graph. IEEE Transactions on Knowledge and Data Engineering, 29(3):543–555, 2017.
 [POC09] Pietro Panzarasa, Tore Opsahl, and Kathleen M Carley. Patterns and dynamics of users’ behavior and interaction: Network analysis of an online community. Journal of the Association for Information Science and Technology, 60(5):911–932, 2009.
 [VLM15] Jordan Viard, Matthieu Latapy, and Clémence Magnien. Revealing contact patterns among highschool students using maximal cliques in link streams. In Proceedings of the 2015 IEEE/ACM International Conference on Advances in Social Networks Analysis and Mining 2015, pages 1517–1522. ACM, 2015.
 [VLM16] Tiphaine Viard, Matthieu Latapy, and Clémence Magnien. Computing maximal cliques in link streams. Theoretical Computer Science, 609:245–252, 2016.