Dissertation: Mason's remarks

This commit is contained in:
Dimitri Lozeve 2018-07-31 15:23:15 +01:00
parent 89536b749e
commit 79b8e09e00
5 changed files with 389 additions and 183 deletions

View file

@ -820,3 +820,57 @@ novel application of the discriminatory power of {PIs}.},
doi = {10.1214/10-IMSCOLL609}, doi = {10.1214/10-IMSCOLL609},
file = {Full Text PDF:/home/dimitri/Zotero/storage/N8UHEK9G/Adler et al. - 2010 - Persistent homology for random fields and complexe.pdf:application/pdf;Snapshot:/home/dimitri/Zotero/storage/29PXN97Q/1288099016.html:text/html} file = {Full Text PDF:/home/dimitri/Zotero/storage/N8UHEK9G/Adler et al. - 2010 - Persistent homology for random fields and complexe.pdf:application/pdf;Snapshot:/home/dimitri/Zotero/storage/29PXN97Q/1288099016.html:text/html}
} }
@article{cohen-steiner_stability_2007,
title = {Stability of Persistence Diagrams},
volume = {37},
issn = {0179-5376, 1432-0444},
url = {https://link.springer.com/article/10.1007/s00454-006-1276-5},
doi = {10.1007/s00454-006-1276-5},
abstract = {The persistence diagram of a real-valued function on a topological space is a multiset of points in the extended plane. We prove that under mild assumptions on the function, the persistence diagram is stable: small changes in the function imply only small changes in the diagram. We apply this result to estimating the homology of sets in a metric space and to comparing and classifying geometric shapes.},
pages = {103--120},
number = {1},
journaltitle = {Discrete \& Computational Geometry},
shortjournal = {Discrete Comput Geom},
author = {Cohen-Steiner, David and Edelsbrunner, Herbert and Harer, John},
urldate = {2018-07-31},
date = {2007-01-01},
langid = {english},
file = {Full Text PDF:/home/dimitri/Zotero/storage/4WEUZ4B5/Cohen-Steiner et al. - 2007 - Stability of Persistence Diagrams.pdf:application/pdf;Snapshot:/home/dimitri/Zotero/storage/5P323WWZ/s00454-006-1276-5.html:text/html}
}
@article{chazal_persistence_2014,
title = {Persistence stability for geometric complexes},
volume = {173},
issn = {0046-5755, 1572-9168},
url = {https://link.springer.com/article/10.1007/s10711-013-9937-z},
doi = {10.1007/s10711-013-9937-z},
abstract = {In this paper we study the properties of the homology of different geometric filtered complexes (such as VietorisRips, Čech and witness complexes) built on top of totally bounded metric spaces. Using recent developments in the theory of topological persistence, we provide simple and natural proofs of the stability of the persistent homology of such complexes with respect to the GromovHausdorff distance. We also exhibit a few noteworthy properties of the homology of the Rips and Čech complexes built on top of compact spaces.},
pages = {193--214},
number = {1},
journaltitle = {Geometriae Dedicata},
shortjournal = {Geom Dedicata},
author = {Chazal, Frédéric and Silva, Vin de and Oudot, Steve},
urldate = {2018-07-31},
date = {2014-12-01},
langid = {english},
file = {Snapshot:/home/dimitri/Zotero/storage/7EESRFL3/s10711-013-9937-z.html:text/html}
}
@inproceedings{zomorodian_tidy_2010,
location = {New York, {NY}, {USA}},
title = {The Tidy Set: A Minimal Simplicial Set for Computing Homology of Clique Complexes},
isbn = {978-1-4503-0016-2},
url = {http://doi.acm.org/10.1145/1810959.1811004},
doi = {10.1145/1810959.1811004},
series = {{SoCG} '10},
shorttitle = {The Tidy Set},
abstract = {We introduce the tidy set, a minimal simplicial set that captures the topology of a simplicial complex. The tidy set is particularly effective for computing the homology of clique complexes. This family of complexes include the Vietoris-Rips complex and the weak witness complex, methods that are popular in topological data analysis. The key feature of our approach is that it skips constructing the clique complex. We give algorithms for constructing tidy sets, implement them, and present experiments. Our preliminary results show that tidy sets are orders of magnitude smaller than clique complexes, giving us a homology engine with small memory requirements.},
pages = {257--266},
booktitle = {Proceedings of the Twenty-sixth Annual Symposium on Computational Geometry},
publisher = {{ACM}},
author = {Zomorodian, Afra},
urldate = {2018-07-31},
date = {2010},
keywords = {computational topology, simplicial set, vietoris-rips complex, witness complex}
}

Binary file not shown.

View file

@ -63,9 +63,9 @@ Thank you!
\cleardoublepage% \cleardoublepage%
\tableofcontents* \tableofcontents
\listoffigures* \listoffigures
\listoftables* % \listoftables
\clearpage \clearpage
@ -81,52 +81,70 @@ Thank you!
\section{Definition and basic properties}% \section{Definition and basic properties}%
\label{sec:defin-basic-prop} \label{sec:defin-basic-prop}
In this section, we will introduce the notion of temporal networks or In this section, we introduce the notion of temporal networks (or
graphs. This is a complex notion, with many concurrent definitions and temporal graphs). This is a complex notion, with many concurrent
interpretations. First, we restate the standard definition of a definitions and interpretations.
non-temporal, static graph.
After clarifying the notations, we restate the standard definition of
a non-temporal graph.
\begin{notation}
\begin{itemize}
\item $\mathbb{N}$ is the set of non-negative natural numbers
$0,1,2,\ldots$
\item $\mathbb{N}^*$ is the set of positive integers $1,2,\ldots$
\item $\mathbb{R}$ is the set of real numbers.
$\mathbb{R}_+ = \{x\in\mathbb{R} \;|\; x\geq 0\}$, and
$\mathbb{R}_+^* = \{x\in\mathbb{R} \;|\; x>0\}$.
\end{itemize}
\end{notation}
\begin{defn}[Graph] \begin{defn}[Graph]
A \emph{graph} is a couple $G = (V, E)$, where $V$ is a finite set A \emph{graph} is a couple $G = (V, E)$, where $V$ is a set of
of \emph{nodes} (or \emph{vertices}), and $E \subseteq V\times V$ is \emph{nodes} (or \emph{vertices}), and $E \subseteq V\times V$ is a
a set of \emph{edges}. A \emph{weighted graph} is defined by set of \emph{edges}. A \emph{weighted graph} is defined by
$G = (V, E, w)$, where $w : E\mapsto \mathbb{R}_+$ is called the $G = (V, E, w)$, where $w : E\mapsto \mathbb{R}_+^*$ is called the
\emph{weight function}. \emph{weight function}.
\end{defn} \end{defn}
We also define some basic concepts that will be needed later on to We also define some basic concepts that we will need later to build
build simplicial complexes on graphs. simplicial complexes on graphs.
\begin{defn}[Clique] \begin{defn}[Clique]
A \emph{clique} is a set of nodes where each pair is connected. That A \emph{clique} is a set of nodes where each pair is adjacent. That
is, a clique $C$ of a graph $G = (V,E)$ is a subset of $V$ such that is, a clique $C$ of a graph $G = (V,E)$ is a subset of $V$ such that
$\forall i,j\in C, i \neq j \implies (i,j)\in E$. A clique is said for all $i,j\in C, i \neq j \implies (i,j)\in E$. A clique is said
to be \emph{maximal} if it cannot be augmented by any node. to be \emph{maximal} if it cannot be augmented by any node, such
that the resulting set of nodes is itself a clique.
\end{defn} \end{defn}
Temporal networks are defined in the more general framework of Temporal networks can be defined in the more general framework of
\emph{multilayer networks}~\cite{kivela_multilayer_2014}. However, \emph{multilayer networks}~\cite{kivela_multilayer_2014}. However,
this definition is much too general for our simple applications, and this definition is much too general for our simple applications, and
we restrict ourselves to edge-centric time-varying we restrict ourselves to edge-centric time-varying
graphs~\cite{casteigts_time-varying_2012}. In this model, the set of graphs~\cite{casteigts_time-varying_2012}. In this model, the set of
nodes is fixed and doesn't change over time, whereas edges can appear nodes is fixed, but edges can appear or disappear at different times.
or disappear at different timestamps.
In this study, we restrict ourselves to discrete time stamps. Each
interaction is taken to be instantaneous.
%% TODO note about data collection, oversampling,
%% duration of interactions
\begin{defn}[Temporal network] \begin{defn}[Temporal network]
A \emph{temporal network} (or graph) is a tuple A \emph{temporal network} is a tuple
$G = (V, E, \mathcal{T}, \rho)$, where: $G = (V, E, \mathcal{T}, \rho)$, where:
\begin{itemize} \begin{itemize}
\item $V$ is a finite set of nodes, \item $V$ is a set of nodes,
\item $E\subseteq V\times V$ is a set of edges, \item $E\subseteq V\times V$ is a set of edges,
\item $\mathbb{T}$ is the \emph{temporal domain} (often taken as \item $\mathbb{T}$ is the \emph{temporal domain} (often taken as
$\mathbb{N}$ or $\mathbb{R}_+$), and $\mathbb{N}$ or any other countable set), and
$\mathcal{T}\subseteq\mathbb{T}$ is the \emph{lifetime} of the $\mathcal{T}\subseteq\mathbb{T}$ is the \emph{lifetime} of the
network, network,
\item $\rho: E\times\mathcal{T}\mapsto\{0,1\}$ is the \emph{presence \item $\rho: E\times\mathcal{T}\mapsto\{0,1\}$ is the \emph{presence
function}, which determines whether an edge is present in the function}, which determines whether an edge is present in the
network at each timestamp. network at each time stamp.
\end{itemize} \end{itemize}
The \emph{available dates} of an edge are the set The \emph{available times} of an edge are the set
$\mathcal{I}(e) = \{t\in\mathcal{T}: \rho(e,t)=1\}$. $\mathcal{I}(e) = \{t\in\mathcal{T}: \rho(e,t)=1\}$.
\end{defn} \end{defn}
@ -135,13 +153,19 @@ possible to have constant weights (edges can only appear or disappear
over time, and always have the same weight), or time-varying over time, and always have the same weight), or time-varying
weights. In the latter case, we can set the domain of the presence weights. In the latter case, we can set the domain of the presence
function to be $\mathbb{R}_+$ instead of $\{0,1\}$, where by function to be $\mathbb{R}_+$ instead of $\{0,1\}$, where by
convention a zero weight corresponds to an absent edge. convention a 0 weight corresponds to an absent edge.
\begin{defn}[Additive temporal network] \begin{defn}[Additive and dismantling temporal
networks]\label{defn:additive}
A temporal network is said to be \emph{additive} if for all $e\in E$ A temporal network is said to be \emph{additive} if for all $e\in E$
and $t\in\mathcal{T}$, if $\rho(e,t)=1$, then and $t\in\mathcal{T}$, if $\rho(e,t)=1$, then for all
$\forall t'>t, \rho(e, t') = 1$. Edges can only be added to the $t'>t, \rho(e, t') = 1$. An additive network can only gain edges
network, never removed. over time.
A temporal network is said to be \emph{dismantling} if for all
$e\in E$ and $t\in\mathcal{T}$, if $\rho(e,t)=0$, then for all
$t'>t, \rho(e, t') = 0$. An dismantling network can only lose edges
over time.
\end{defn} \end{defn}
\section{Examples of applications}% \section{Examples of applications}%
@ -152,6 +176,8 @@ convention a zero weight corresponds to an absent edge.
\section{Network partitioning}% \section{Network partitioning}%
\label{sec:network-partitioning} \label{sec:network-partitioning}
%% TODO clarify, organise, references
Temporal networks are a very active research subject, leading to Temporal networks are a very active research subject, leading to
multiple interesting problems. The additional time dimension adds a multiple interesting problems. The additional time dimension adds a
significant layer of complexity that cannot be adequately treated by significant layer of complexity that cannot be adequately treated by
@ -195,6 +221,8 @@ outliers, or even maximise temporal communities.
\chapter{Topological Data Analysis and Persistent Homology}% \chapter{Topological Data Analysis and Persistent Homology}%
\label{cha:tda-ph} \label{cha:tda-ph}
%% TODO references
\section{Basic constructions}% \section{Basic constructions}%
\label{sec:basic-constructions} \label{sec:basic-constructions}
@ -202,9 +230,9 @@ outliers, or even maximise temporal communities.
\label{sec:homology} \label{sec:homology}
Our goal is to understand the topological structure of a metric Our goal is to understand the topological structure of a metric
space. For this, we can use \emph{homology}, which consists in space. For this, we can use \emph{homology}, which consists of
associating for a metric space $X$ and a dimension $i$ a vector space associating a vector space $H_i(X)$ to a metric space $X$ and a
$H_i(X)$. The dimension of $H_i(X)$ will give us the number of dimension $i$. The dimension of $H_i(X)$ gives us the number of
$i$-dimensional components in $X$: the dimension of $H_0(X)$ is the $i$-dimensional components in $X$: the dimension of $H_0(X)$ is the
number of path-connected components in $X$, the dimension of $H_1(X)$ number of path-connected components in $X$, the dimension of $H_1(X)$
is the number of holes in $X$, and the dimension of $H_2(X)$ is the is the number of holes in $X$, and the dimension of $H_2(X)$ is the
@ -217,28 +245,27 @@ space can be extremely difficult. It is necessary to approximate it in
a structure that would be both combinatorial and topological in a structure that would be both combinatorial and topological in
nature. nature.
\subsection{Simplicial Complexes}% \subsection{Simplicial complexes}%
\label{sec:simplicial-complexes} \label{sec:simplicial-complexes}
In order to understand the topological structure of a metric space, we To understand the topological structure of a metric space, we need a
need a way to decompose it in smaller pieces which, when assembled, way to decompose it in smaller pieces that, when assembled, conserve
conserve the overall organisation of the space. For this, we use a the overall organisation of the space. For this, we use a structure
structure called a \emph{simplicial complex}, which is a kind of called a \emph{simplicial complex}, which is a kind of
higher-dimensional generalization of graphs. higher-dimensional generalization of a graph.
The building blocks of this representation will be \emph{simplexes}, The building blocks of this representation is the \emph{simplex},
which are simply the convex hull of an arbitrary set of which is the convex hull of an arbitrary set of points. Examples of
points. Examples of simplexes include single points, segments, simplices include single points, segments, triangles, and tetrahedrons
triangles, and tetrahedrons (in dimensions 0, 1,, 2, and 3 (in dimensions 0, 1,, 2, and 3 respectively).
respectively).
\begin{defn}[Simplex] \begin{defn}[Simplex]
The \emph{$k$-dimensional simplex} $\sigma = [x_0,\ldots,x_k]$ is A \emph{$k$-dimensional simplex} $\sigma = [x_0,\ldots,x_k]$ is the
the convex hull of the set $\{x_0,\ldots,x_k\} \in \mathbb{R}^d$, convex hull of the set $\{x_0,\ldots,x_k\} \in \mathbb{R}^d$, where
where $x_0,\ldots,x_k$ are affinely independent. $x_0,\ldots,x_k$ $x_0,\ldots,x_k$ are affinely independent. $x_0,\ldots,x_k$ are
are called the \emph{vertices} of $\sigma$, and the simplexes called the \emph{vertices} of $\sigma$, and the simplices defined by
defined by the subsets of $\{x_0,\ldots,x_k\}$ are called the the subsets of $\{x_0,\ldots,x_k\}$ are called the \emph{faces} of
\emph{faces} of $\sigma$. $\sigma$.
\end{defn} \end{defn}
\begin{figure}[ht] \begin{figure}[ht]
@ -284,22 +311,22 @@ respectively).
\caption{Triangle} \caption{Triangle}
\end{subfigure}% \end{subfigure}%
% %
\caption{Examples of simplexes}% \caption{Examples of simplices}%
\label{fig:simplex} \label{fig:simplex}
\end{figure} \end{figure}
We then need a way to combine these basic building blocks meaningfully We then need a way to meaningfully combine these basic building blocks
so that the resulting object can adequately reflect the topological so that the resulting object can adequately reflect the topological
structure of the metric space. structure of the metric space.
\begin{defn}[Simplicial complex] \begin{defn}[Simplicial complex]
A \emph{simplicial complex} is a collection $K$ of simplexes such A \emph{simplicial complex} is a collection $K$ of simplices such
that: that:
\begin{itemize} \begin{itemize}
\item any face of a simplex of $K$ is a simplex of $K$ \item any face of a simplex of $K$ is a simplex of $K$
\item the intersection of two simplexes of $K$ is either the empty \item the intersection of two simplices of $K$ is either the empty
set or a common face or both. set, or a common face, or both.
\end{itemize} \end{itemize}
\end{defn} \end{defn}
@ -340,13 +367,13 @@ structure of the metric space.
\draw (5) -- (6) -- (4) -- (7); \draw (5) -- (6) -- (4) -- (7);
\end{scope} \end{scope}
\end{tikzpicture} \end{tikzpicture}
\caption{Example of a simplicial complex, with two connected \caption{Example of a simplicial complex that has two connected
components, two 3-simplexes, and one 5-simplex.}% components, two 3-simplices, and one 5-simplex.}%
\label{fig:simplical-complex} \label{fig:simplical-complex}
\end{figure} \end{figure}
The notion of simplicial complex is closely related to that of a The notion of simplicial complex is closely related to that of a
hypergraph. The important distinction lies in the fact that a subset hypergraph. One important distinction lies in the fact that a subset
of a hyperedge is not necessarily a hyperedge itself. of a hyperedge is not necessarily a hyperedge itself.
Using these definitions, we can define homology on simplicial Using these definitions, we can define homology on simplicial
@ -355,20 +382,21 @@ complexes. %% TODO add reference for more details/do it myself?
\subsection{Filtrations}% \subsection{Filtrations}%
\label{sec:filtrations} \label{sec:filtrations}
%% TODO rewrite it using the Cech complex as an introductory example,
%% to understand the problem with scale
If we consider that a simplicial complex is a kind of If we consider that a simplicial complex is a kind of
``discretization'' of a metric space, we realise that there must be an ``discretization'' of a subset of a metric space, we realise that
issue of \emph{scale}. For our analysis to be invariant under small there must be an issue of \emph{scale}. For our analysis to be
perturbations in the data, we need a way to find the optimal scale invariant under small perturbations in the data, we need a way to find
parameter to capture the adequate topological structure, without the optimal scale parameter to capture the adequate topological
taking into account some small perturbations, nor ignoring some structure, without taking into account some small perturbations, nor
important smaller features. ignoring some important smaller features.
%% TODO rewrite using the Cech filtration as an example? One possible solution to these problems is to consider all scales at
once. This is the objective of \emph{filtered simplicial complexes}.
The ideal solution to these problems is to consider all scales at \begin{defn}[Filtration]\label{defn:filt}
once: this is the objective of \emph{filtered simplicial complexes}.
\begin{defn}[Filtration]
A \emph{filtered simplicial complex}, or simply a \emph{filtration}, A \emph{filtered simplicial complex}, or simply a \emph{filtration},
$K$ is a sequence ${(K_i)}_{i\in I}$ of simplicial complexes such $K$ is a sequence ${(K_i)}_{i\in I}$ of simplicial complexes such
that: that:
@ -384,8 +412,8 @@ once: this is the objective of \emph{filtered simplicial complexes}.
We can now compute the homology for each step in a filtration. This We can now compute the homology for each step in a filtration. This
leads to the notion of \emph{persistent leads to the notion of \emph{persistent
homology}~\cite{carlsson_topology_2009,zomorodian_computing_2005}, homology}~\cite{carlsson_topology_2009,zomorodian_computing_2005},
which gives us all the information necessary to establish the which gives all the information necessary to establish the topological
topological structure of the metric space at multiple scales. structure of a metric space at multiple scales.
\begin{defn}[Persistent homology] \begin{defn}[Persistent homology]
The \emph{$p$-th persistent homology} of a simplicial complex The \emph{$p$-th persistent homology} of a simplicial complex
@ -395,44 +423,85 @@ topological structure of the metric space at multiple scales.
by the inclusion map $K_i \mapsto K_j$. by the inclusion map $K_i \mapsto K_j$.
\end{defn} \end{defn}
The functions $f_{i,j}$ allow us to link generators in each successive The functions $f_{i,j}$ allow one to link generators in each
homology space in the filtration. Since each generator correspond to a successive homology space in a filtration. Because each generator
topological feature (connected component, hole, void, etc, depending corresponds to a topological feature (connected component, hole, void,
on the dimension $p$), we can determine whether it survives in the and so on, depending on the dimension $p$), we can determine whether
next step of the filtration. We can now determine when each feature is it survives in the next step of the filtration. We can also determine
born and when it dies (if it dies at all). This representation will be when each feature is born and when it dies (if it dies at all). The
dependent on the choice of basis for each homology space couples of intervals (birth time, death time) depends on the choice of
$H_p(K_i)$. However, by the Fundamental Theorem of Persistent basis for each homology space $H_p(K_i)$. However, by the Fundamental
Homology, we can choose base vectors in each homology space such that Theorem of Persistent Homology~\cite{zomorodian_computing_2005}, we
the collection of half-open intervals is well-defined and unique. This can choose basis vectors in each homology space such that the
construction is called a \emph{barcode}. collection of half-open intervals is well-defined and unique. This
%% TODO references for the Fundamental Theorem construction is called a \emph{barcode}~\cite{carlsson_topology_2009}.
\section{Topological summaries: barcodes and persistence diagrams}% \section{Topological summaries: barcodes and persistence diagrams}%
\label{sec:topol-summ} \label{sec:topol-summ}
In order to interpret the results of the persistent homology %% TODO need more context
computation, we need to compare the output for a particular data set
to a suitable null model. For this, we need some kind of similarity
measure between barcodes and a way to evaluate the statistical
significance of the results.
One possible approach for this is to define a space in which we can To interpret the results of the persistent-homology computation, we
project barcodes and study their geometric need to compare the output for a particular data set to a suitable
properties. \emph{Persistence diagrams} are an example of such a null model. For this, we need some kind of similarity measure between
space. barcodes and a way to evaluate the statistical significance of the
results.
One possible approach is to define a space in which we can project
barcodes and study their geometric properties. One such space is the
space of \emph{persistence
diagrams}~\cite{edelsbrunner_computational_2010}.
\begin{defn}[Multiset]
A \emph{multiset} $M$ is the couple $(A, m)$, where $A$ is the
\emph{underlying set} of $M$, formed by its distinct elements, and
$m : A\mapsto\mathbb{N}^*$ is the \emph{multiplicity function}
giving the number of occurrences of each element of $A$ in $M$.
\end{defn}
\begin{defn}[Persistence diagrams] \begin{defn}[Persistence diagrams]
A \emph{persistence diagram} is the union of a finite multiset of A \emph{persistence diagram} is the union of a finite multiset of
points in $\overline{\mathbb{R}}^2$ zith the diagonal points in $\overline{\mathbb{R}}^2$ with the diagonal
$\Delta = \{(x,x) \;|\; x\in\mathbb{R}^2\}$, where every point of $\Delta = \{(x,x) \;|\; x\in\mathbb{R}^2\}$, where every point of
$\Delta$ has infinite multiplicity. $\Delta$ has infinite multiplicity.
\end{defn} \end{defn}
The diagonal $\Delta$ is added to facilitate comparisons between One adds the diagonal $\Delta$ for technical reasons. It is convenient
diagrams, as points near the diagonal correspond to short-lived to compare persistence diagrams by using bijections between them, so
topological feature, thus likely to be caused by small perturbations persistence diagrams must have the same cardinality.
in the data.
In some cases, the diagonal in the persistence diagrams can also
facilitate comparisons between diagrams, as points near the diagonal
correspond to short-lived topological features, so they are likely to
be caused by small perturbations in the data.
One can build a persistence diagram from a barcode by taking the union
of the multiset of (birth, death) couples with the diagonal
$\Delta$. \autoref{fig:pipeline} summarises the entire pipeline.
\begin{figure}[ht]
\centering
\begin{tikzpicture}
\tikzstyle{pipelinestep}=[rectangle,thick,draw=black,inner sep=5pt,minimum size=15pt]
\node (data)[pipelinestep] {Data};
\node (filt)[pipelinestep,right=1cm of data] {Filtered complex};
%% \node (barcode)[pipelinestep,right=1cm of filt] {Barcodes};
\node (dgm)[pipelinestep,right=1cm of filt] {Persistence diagram};
\node (interp)[pipelinestep,right=1cm of dgm] {Interpretation};
\draw[->] (data.east) -- (filt.west);
%% \draw[->] (filt.east) -- (barcode.west);
\draw[->] (filt.east) -- (dgm.west);
\draw[->] (dgm.east) -- (interp.west);
\end{tikzpicture}
\caption{Persistent homology pipeline}%
\label{fig:pipeline}
\end{figure}
One can define an operator $\dgm$ as the first two steps in the
pipeline. It constructs a persistence diagram from a subset of a
metric space, via persistent homology on a filtered complex.
We can now define several distances on the space of persistence We can now define several distances on the space of persistence
diagrams. diagrams.
@ -441,7 +510,7 @@ diagrams.
The \emph{$p$-th Wasserstein distance} between two diagrams $X$ and The \emph{$p$-th Wasserstein distance} between two diagrams $X$ and
$Y$ is $Y$ is
\[ W_p[d](X, Y) = \inf_{\phi:X\mapsto Y} \left[\sum_{x\in X} {d\left(x, \phi(x)\right)}^p\right] \] \[ W_p[d](X, Y) = \inf_{\phi:X\mapsto Y} \left[\sum_{x\in X} {d\left(x, \phi(x)\right)}^p\right] \]
for $p\in [1,\infty)$, and for $p\in [1,\infty)$, and:
\[ W_\infty[d](X, Y) = \inf_{\phi:X\mapsto Y} \sup_{x\in X} d\left(x, \[ W_\infty[d](X, Y) = \inf_{\phi:X\mapsto Y} \sup_{x\in X} d\left(x,
\phi(x)\right) \] for $p = \infty$, where $d$ is a distance on \phi(x)\right) \] for $p = \infty$, where $d$ is a distance on
$\mathbb{R}^2$ and $\phi$ ranges over all bijections from $X$ to $\mathbb{R}^2$ and $\phi$ ranges over all bijections from $X$ to
@ -450,25 +519,27 @@ diagrams.
\begin{defn}[Bottleneck distance] \begin{defn}[Bottleneck distance]
The \emph{bottleneck distance} is defined as the infinite The \emph{bottleneck distance} is defined as the infinite
Wasserstein distance with $d$ the uniform norm: Wasserstein distance where $d$ is the uniform norm:
$d_B = W_\infty[L_\infty]$. $d_B = W_\infty[L_\infty]$.
\end{defn} \end{defn}
Since the bottleneck distance is by far the most commonly used, we The bottleneck distance is symmetric, non-negative, and satisfies the
will focus on it in the following. It is symmetric, non-negative, and triangle inequality. However, it is not a true distance, as one can
satisfies the triangle inequality. However, it is not a true distance, come up with two distinct diagrams with bottleneck distance 0, even
as it is fairly straightforward to come up with two distinct diagrams on multisets that do not touch the diagonal $\Delta$.
at bottleneck distance zero, even on multisets not touching the
diagonal $\Delta$.
\section{Stability}% \section{Stability}%
\label{sec:stability} \label{sec:stability}
One of the most important aspects of Topological Data Analysis is that One of the most important aspects of topological data analysis is that
it is \emph{stable} with respect to small perturbations in the it is \emph{stable} with respect to small perturbations in the
data. In fact, the persistence diagram operator is Lipschitz with data. More precisely, the second step of the pipeline
respect to the bottleneck distance. First, we define a distance in~\autoref{fig:pipeline} is Lipschitz with respect to a suitable
between subsets of a metric space. metric on filtered complexes and the bottleneck distance on
persistence
diagrams~\cite{cohen-steiner_stability_2007,chazal_persistence_2014}. First,
we define a distance between subsets of a metric
space~\cite{oudot_persistence_2015}.
\begin{defn}[Hausdorff distance] \begin{defn}[Hausdorff distance]
Let $X$ and $Y$ be subsets of a metric space $(E, d)$. The Let $X$ and $Y$ be subsets of a metric space $(E, d)$. The
@ -477,7 +548,8 @@ between subsets of a metric space.
\sup_{y\in Y} \inf_{x\in X} d(x,y) \right]. \] \sup_{y\in Y} \inf_{x\in X} d(x,y) \right]. \]
\end{defn} \end{defn}
We can now give the proper stability property. We can now give an appropriate stability
property~\cite{cohen-steiner_stability_2007,chazal_persistence_2014}.
\begin{prop} \begin{prop}
Let $X$ and $Y$ be subsets in a metric space. We have Let $X$ and $Y$ be subsets in a metric space. We have
@ -490,6 +562,14 @@ We can now give the proper stability property.
%% TODO %% TODO
\cite{morozov_dionysus:_2018,bauer_ripser:_2018,reininghaus_dipha_2018,maria_gudhi_2014} \cite{morozov_dionysus:_2018,bauer_ripser:_2018,reininghaus_dipha_2018,maria_gudhi_2014}
\section{Discussion}%
\label{sec:discussion}
%% TODO
%% information thrown away in filtrations and in PH
\chapter{Topological Data Analysis on Networks}% \chapter{Topological Data Analysis on Networks}%
\label{cha:topol-data-analys} \label{cha:topol-data-analys}
@ -498,49 +578,54 @@ We can now give the proper stability property.
We now consider the problem of applying persistent homology to network We now consider the problem of applying persistent homology to network
data. An undirected network is already a simplicial complex of data. An undirected network is already a simplicial complex of
dimension 1. However, this will not be sufficient to capture enough dimension 1. However, this is not sufficient to capture enough
topological information: we need to introduce higher-dimensional topological information; we need to introduce higher-dimensional
simplexes. The first possible method is to project the network on a simplices. One method is to project the nodes of a network onto a
metric space~\cite{otter_roadmap_2017}, thus transforming the network metric space~\cite{otter_roadmap_2017}, thereby transforming the
data into a point cloud data. For this, we need to compute the network data into a point-cloud data. For this, we need to compute the
distance between each pair of nodes in the network (with the shortest distance between each pair of nodes in the network (e.g.\ with the
path distance for instance). This also requires the network to be shortest-path distance). This also requires the network to be
connected. connected. %% TODO defn of connected?
Another usual method for weighted networks is called the \emph{weight Another common method, for weighted networks, is called the
rank clique filtration} (WRCF)~\cite{petri_topological_2013}, which \emph{weight rank-clique filtration}
filters the network based on weights. The procedure works as follows: (WRCF)~\cite{petri_topological_2013}, which filters a network based
on weights. The procedure works as follows:
\begin{enumerate} \begin{enumerate}
\item Set the set of all nodes, without any edge, as filtration \item Consider the set of all nodes, without any edge, to be
step~0. filtration step~0.
\item Rank all edge weights in decreasing order $\{w_1,\ldots,w_n\}$. \item Rank all edge weights in decreasing order $\{w_1,\ldots,w_n\}$.
\item At filtration step $t$, keep only the edges whose weights are \item At filtration step $t$, keep only the edges whose weights are
less than $w_t$, thus creating an unweighted graph. larger than or equal to $w_t$, thereby creating an unweighted graph.
\item Define the maximal cliques of the resulting graph to be \item Define the maximal cliques of the resulting graph to be
simplexes. simplices.
\end{enumerate} \end{enumerate}
At each step of the filtration, we construct a simplicial complex At each step of the filtration, we construct a simplicial complex
based on cliques: this is called a \emph{clique complex}. It is based on cliques; this is called a \emph{clique
necessarily valid since a subset of a clique is necessarily a clique complex}~\cite{zomorodian_tidy_2010}. The result of the algorithm is
itself, and the same is true for the intersection of two cliques. itself a filtered simplicial complex (\autoref{defn:filt}), because a
subset of a clique is necessarily a clique itself, and the same is
true for the intersection of two cliques.
This leads to a first possibility for applying persistent homology to This leads to a first possibility for applying persistent homology to
temporal networks. It is possible to segment the lifetime of the temporal networks. It is possible to segment the lifetime of a network
network into sliding windows, creating a static graph on each window into sliding windows, creating a time-independent graph on each window
by retaining only the edges available during the time interval. We can by retaining only the edges available during the time interval. We can
then apply WRCF on each static graph in the sequence, obtaining a then apply WRCF on each graph in the sequence, obtaining a filtered
filtered complex for each window, to which we can then apply complex for each window, to which we can then apply persistent
persistent homology. homology.
This method can quickly become very computationally expensive, as This method can quickly become very computationally expensive, as
finding all maximal cliques (using the Bron-Kerbosch algorithm for finding all maximal cliques (e.g.\ using the Bron--Kerbosch algorithm)
example) is a complicated problem in itself. In practice, we often is a complicated problem, with an optimal computational complexity of
restrict the search to cliques of dimension lower than a certain bound $\mathcal{O}\big(3^{n/3}\big)$~\cite{tomita_worst-case_2006}. In
$d_M$. With this restriction, the new simplicial complex is practice, one often restrict the search to cliques of dimension less
homologically equivalent to the original: they have the same homology than or equl to a certain bound $d_M$. With this restriction, the new
groups up to $H_{d_M-1}$. simplicial complex is homologically equivalent to the original: they
have the same homology groups up to $H_{d_M-1}$.
%% TODO rewrite this paragraph
This method is sensitive to the choice of sliding windows on the time This method is sensitive to the choice of sliding windows on the time
scale. The width and the overlap of the windows can completely change scale. The width and the overlap of the windows can completely change
the networks created and their topological features. Too small a the networks created and their topological features. Too small a
@ -552,24 +637,24 @@ in the evolution of the network over time.
\label{sec:zigzag-persistence} \label{sec:zigzag-persistence}
The standard algorithm to compute persistent homology The standard algorithm to compute persistent homology
(\autoref{sec:persistent-homology}) only works for filtrations which (see~\autoref{sec:persistent-homology}) relies on the fact that
are nested sequences of simplicial complexes: filtrations (see~\autoref{defn:filt}) are nested sequences of
simplicial complexes:
\[ \cdots \subseteq K_{i-1} \subseteq K_i \subseteq K_{i+1} \subseteq \[ \cdots \subseteq K_{i-1} \subseteq K_i \subseteq K_{i+1} \subseteq
\cdots \] \cdots \]
When studying temporal networks, we have two possibilities: One can now create an independent filtration (e.g.\ with WRCF) for
\begin{itemize} each time step. The issue is that the topological features will be
\item Create an independent filtration (e.g.\ WRCF) from each time orthogonal to the time dimension.
step. The issue is that the topological features will be completely
disconnected from the time dimension. Another possibility is to create a filtration along the time
\item Create a filtration along the time dimension. The issue in this dimension. The issue in this case is that the sequence is no longer
case is that the sequence is no longer nested (except for additive nested (except for additive or dismantling temporal networks,
temporal networks, ie when edges are never deleted). see~\autoref{defn:additive}).
\end{itemize}
The solution to consider the time dimension is provided by The solution to consider the time dimension is provided by
\emph{zigzag persistence}~\cite{carlsson_zigzag_2009}, which allows to \emph{zigzag persistence}~\cite{carlsson_zigzag_2009}, which allows
compute persistence on alternating nested sequences: one to compute persistence on alternating nested sequences:
\[ \cdots \supseteq K_{i-1} \subseteq K_i \supseteq K_{i+1} \subseteq \[ \cdots \supseteq K_{i-1} \subseteq K_i \supseteq K_{i+1} \subseteq
\cdots \] \cdots \]
@ -580,22 +665,23 @@ constructing an alternating sequence.
Zigzag persistence is a special case of the more general concept of Zigzag persistence is a special case of the more general concept of
\emph{multi-parameter \emph{multi-parameter
persistence}~\cite{carlsson_theory_2009,dey_computing_2014}, where persistence}~\cite{carlsson_theory_2009,dey_computing_2014}, where
filtrations can span across multiple parameters. filtrations can encompass multiple parameters.
%% Note about libraries implementing zigzag persistence: Dionysus %% Note about libraries implementing zigzag persistence: Dionysus
\chapter{Persistent Homology for Machine Learning applications}% \chapter{Persistent Homology for Machine-Learning Applications}%
\label{cha:pers-homol-mach} \label{cha:pers-homol-mach}
The output of persistent homology is not directly usable by most The output of persistent homology is not directly usable by most
statistical methods. Barcodes and persistence diagrams, being a statistical methods. For example, barcodes and persistence diagrams,
multiset of points in $\overline{\mathbb{R}}^2$, are not elements of a which are multisets of points in $\overline{\mathbb{R}}^2$, are not
metric space in which we could perform statistical computations. elements of a metric space in which one can perform statistical
computations.
The distances between persistence diagrams defined The distances between persistence diagrams defined
in~\autoref{sec:topol-summ} allow us to compare different in~\autoref{sec:topol-summ} allow one to compare different
outputs. From a statistical perspective, it is possible to use a outputs. From a statistical perspective, it is possible to use a
generative model of simplicial complexes, and use a distance between generative model of simplicial complexes and to use a distance between
persistence diagrams to measure the similarity of our observations persistence diagrams to measure the similarity of our observations
with this null model~\cite{adler_persistent_2010}. This would with this null model~\cite{adler_persistent_2010}. This would
effectively define a metric space of persistence diagrams. It is even effectively define a metric space of persistence diagrams. It is even
@ -603,8 +689,10 @@ possible to define some statistical summaries (means, medians,
confidence intervals) on these confidence intervals) on these
spaces~\cite{turner_frechet_2014,munch_probabilistic_2015}. spaces~\cite{turner_frechet_2014,munch_probabilistic_2015}.
%% TODO REFERENCES
The issue with this approach is that metric spaces do not offer enough The issue with this approach is that metric spaces do not offer enough
algebraic structure to be amenable to most machine learning algebraic structure to be amenable to most machine-learning
techniques. One of the most recent development in the study of techniques. One of the most recent development in the study of
topological summaries has been to find mappings between the space of topological summaries has been to find mappings between the space of
persistence diagrams and Banach spaces. persistence diagrams and Banach spaces.
@ -616,38 +704,37 @@ persistence diagrams and Banach spaces.
\subsection{Persistence landscapes} \subsection{Persistence landscapes}
Persistence landscapes~\cite{bubenik_statistical_2015} are a mean to Persistence landscapes~\cite{bubenik_statistical_2015} give a way to
project the barcodes in a space where it will be possible to add them project barcodes to a space where it is possible to add them
meaningfully. It would thus be possible to define means of persistence meaningfully. It is then possible to define means of persistence
diagrams, along other summary statistics. diagrams, as well as other summary statistics.
As all the other vectorization techniques mentioned here, this The function mapping a persistence diagram to a persistence landscape
approach is \emph{injective}, but not surjective, and no explicit is \emph{injective}, but no explicit inverse exists to go back from a
inverse exists to go back from a persistence landscape to the persistence landscape to the corresponding persistence
corresponding persistence diagram. Moreover, a mean of persistence diagram. Moreover, a mean of persistence landscapes does not
landscapes do not necessarily have a corresponding persistence necessarily have a corresponding persistence diagram.
diagram.
\begin{defn}[Persistence landscape] \begin{defn}[Persistence landscape]
The persistence landscape of a diagram $D = \{(b_i,d_i)\}_{i=1}^n$ The persistence landscape of a diagram $D = \{(b_i,d_i)\}_{i=1}^n$
is the set of functions $\lambda_k: \mathbb{R} \mapsto \mathbb{R}$, is the set of functions $\lambda_k: \mathbb{R} \mapsto \mathbb{R}$,
for $k\in\mathbb{N}$ such that for $k\in\mathbb{N}$, such that
\[ \lambda_k(x) = k\text{-th largest value of } \{f_{(b_i, \[ \lambda_k(x) = k\text{-th largest value of } \{f_{(b_i,
d_i)}(x)\}_{i=1}^n, \] (or zero if the $k$-th largest value does d_i)}(x)\}_{i=1}^n, \] (and $\lambda_k(x) = 0$ if the $k$-th
not exist), where $f_{(b,d)}$ is a piecewise linear function defined by: largest value does not exist), where $f_{(b,d)}$ is a
piecewise-linear function defined by:
\[ f_{(b,d)} = \[ f_{(b,d)} =
\begin{cases} \begin{cases}
0& \text{if }x \notin (b,d)\\ 0,& \text{if }x \notin (b,d),\\
x-b& \text{if }x\in (b,\frac{b+d}{2})\\ x-b,& \text{if }x\in (b,\frac{b+d}{2}),\\
-x+d& \text{if }x\in (\frac{b+d}{2},d). -x+d,& \text{if }x\in (\frac{b+d}{2},d)\,.
\end{cases} \end{cases}
\] \]
\end{defn} \end{defn}
The persistence landscape is thus a kind of superposition of piecewise Moreover, one can show that persistence landscapes are stable with
linear functions. Moreover, one can show that persistence landscapes respect to the $L^p$ distance, and that the Wasserstein and bottleneck
are stable with respect to the $L^p$ distance, and that the distances are bounded by the $L^p$
Wasserstein and bottleneck distances are bounded by the $L^p$
distance~\cite{bubenik_statistical_2015}. We can thus view the distance~\cite{bubenik_statistical_2015}. We can thus view the
landscapes as elements of a Banach space in which we can perform the landscapes as elements of a Banach space in which we can perform the
statistical computations. statistical computations.
@ -667,7 +754,7 @@ statistical computations.
\cite{reininghaus_stable_2015,kwitt_statistical_2015} \cite{reininghaus_stable_2015,kwitt_statistical_2015}
\subsection{Persistence weighted Gaussian kernel} \subsection{Persistence weighted-Gaussian kernel}
\cite{kusano_kernel_2017} \cite{kusano_kernel_2017}
@ -678,6 +765,9 @@ statistical computations.
\section{Comparison}% \section{Comparison}%
\label{sec:comparison} \label{sec:comparison}
\chapter{Conclusions}%
\label{cha:conclusions}

View file

@ -1,7 +1,7 @@
\usepackage{fontspec} \usepackage{fontspec}
\setmainfont[Numbers=OldStyle]{Linux Libertine O} \setmainfont{Linux Libertine O}
\setsansfont[Numbers=OldStyle]{Linux Biolinum O} \setsansfont{Linux Biolinum O}
\setmonofont[Scale=0.83]{Inconsolata} \setmonofont[Scale=0.83]{Inconsolata}
\usepackage{polyglossia} \usepackage{polyglossia}
@ -18,12 +18,18 @@
\theoremstyle{plain} \theoremstyle{plain}
\newtheorem{thm}{Theorem}[chapter] \newtheorem{thm}{Theorem}[chapter]
\newcommand{\thmautorefname}{theorem}
\newtheorem{lem}[thm]{Lemma} \newtheorem{lem}[thm]{Lemma}
\newcommand{\lemautorefname}{lemma}
\newtheorem{cor}[thm]{Corollary} \newtheorem{cor}[thm]{Corollary}
\newcommand{\corautorefname}{corollary}
\newtheorem{prop}[thm]{Proposition} \newtheorem{prop}[thm]{Proposition}
\newcommand{\propautorefname}{proposition}
\theoremstyle{definition} \theoremstyle{definition}
\newtheorem{defn}{Definition}[chapter] \newtheorem{defn}{Definition}[chapter]
\newcommand{\defnautorefname}{definition}
\newtheorem{expl}{Example}[chapter] \newtheorem{expl}{Example}[chapter]
\newcommand{\explautorefname}{example}
\theoremstyle{remark} \theoremstyle{remark}
\newtheorem*{rem}{Remark} \newtheorem*{rem}{Remark}
\newtheorem*{note}{Note} \newtheorem*{note}{Note}
@ -33,7 +39,7 @@
\usepackage{tikz-network} \usepackage{tikz-network}
\usepackage{tikz} \usepackage{tikz}
\usetikzlibrary{patterns,backgrounds,positioning} \usetikzlibrary{patterns,backgrounds,positioning,chains}
\usepackage[style=numeric-comp,backref,url=false]{biblatex} \usepackage[style=numeric-comp,backref,url=false]{biblatex}
\bibliography{TDA,temporalgraphs} \bibliography{TDA,temporalgraphs}

View file

@ -387,3 +387,59 @@
langid = {english}, langid = {english},
file = {Eagle and Pentland - 2006 - Reality mining sensing complex social systems.pdf:/home/dimitri/Zotero/storage/H9DUQJ6T/Eagle and Pentland - 2006 - Reality mining sensing complex social systems.pdf:application/pdf;Snapshot:/home/dimitri/Zotero/storage/8DH79ULJ/10.html:text/html} file = {Eagle and Pentland - 2006 - Reality mining sensing complex social systems.pdf:/home/dimitri/Zotero/storage/H9DUQJ6T/Eagle and Pentland - 2006 - Reality mining sensing complex social systems.pdf:application/pdf;Snapshot:/home/dimitri/Zotero/storage/8DH79ULJ/10.html:text/html}
} }
@article{holme_temporal_2012,
title = {Temporal networks},
volume = {519},
issn = {0370-1573},
url = {http://www.sciencedirect.com/science/article/pii/S0370157312000841},
doi = {10.1016/j.physrep.2012.03.001},
series = {Temporal Networks},
abstract = {A great variety of systems in nature, society and technologyfrom the web of sexual contacts to the Internet, from the nervous system to power gridscan be modeled as graphs of vertices coupled by edges. The network structure, describing how the graph is wired, helps us understand, predict and optimize the behavior of dynamical systems. In many cases, however, the edges are not continuously active. As an example, in networks of communication via e-mail, text messages, or phone calls, edges represent sequences of instantaneous or practically instantaneous contacts. In some cases, edges are active for non-negligible periods of time: e.g., the proximity patterns of inpatients at hospitals can be represented by a graph where an edge between two individuals is on throughout the time they are at the same ward. Like network topology, the temporal structure of edge activations can affect dynamics of systems interacting through the network, from disease contagion on the network of patients to information diffusion over an e-mail network. In this review, we present the emergent field of temporal networks, and discuss methods for analyzing topological and temporal structure and models for elucidating their relation to the behavior of dynamical systems. In the light of traditional network theory, one can see this framework as moving the information of when things happen from the dynamical system on the network, to the network itself. Since fundamental properties, such as the transitivity of edges, do not necessarily hold in temporal networks, many of these methods need to be quite different from those for static networks. The study of temporal networks is very interdisciplinary in nature. Reflecting this, even the object of study has many names—temporal graphs, evolving graphs, time-varying graphs, time-aggregated graphs, time-stamped graphs, dynamic networks, dynamic graphs, dynamical graphs, and so on. This review covers different fields where temporal graphs are considered, but does not attempt to unify related terminology—rather, we want to make papers readable across disciplines.},
pages = {97--125},
number = {3},
journaltitle = {Physics Reports},
shortjournal = {Physics Reports},
author = {Holme, Petter and Saramäki, Jari},
urldate = {2018-07-31},
date = {2012-10-01},
file = {ScienceDirect Snapshot:/home/dimitri/Zotero/storage/KUU88J97/S0370157312000841.html:text/html}
}
@article{holme_modern_2015,
title = {Modern temporal network theory: a colloquium},
volume = {88},
issn = {1434-6028, 1434-6036},
url = {https://link.springer.com/article/10.1140/epjb/e2015-60657-4},
doi = {10.1140/epjb/e2015-60657-4},
shorttitle = {Modern temporal network theory},
abstract = {The power of any kind of network approach lies in the ability to simplify a complex system so that one can better understand its function as a whole. Sometimes it is beneficial, however, to include more information than in a simple graph of only nodes and links. Adding information about times of interactions can make predictions and mechanistic understanding more accurate. The drawback, however, is that there are not so many methods available, partly because temporal networks is a relatively young field, partly because it is more difficult to develop such methods compared to for static networks. In this colloquium, we review the methods to analyze and model temporal networks and processes taking place on them, focusing mainly on the last three years. This includes the spreading of infectious disease, opinions, rumors, in social networks; information packets in computer networks; various types of signaling in biology, and more. We also discuss future directions.},
pages = {234},
number = {9},
journaltitle = {The European Physical Journal B},
shortjournal = {Eur. Phys. J. B},
author = {Holme, Petter},
urldate = {2018-07-31},
date = {2015-09-01},
langid = {english},
file = {Snapshot:/home/dimitri/Zotero/storage/CYSLT5MA/10.html:text/html}
}
@article{tomita_worst-case_2006,
title = {The worst-case time complexity for generating all maximal cliques and computational experiments},
volume = {363},
issn = {0304-3975},
url = {http://www.sciencedirect.com/science/article/pii/S0304397506003586},
doi = {10.1016/j.tcs.2006.06.015},
series = {Computing and Combinatorics},
abstract = {We present a depth-first search algorithm for generating all maximal cliques of an undirected graph, in which pruning methods are employed as in the BronKerbosch algorithm. All the maximal cliques generated are output in a tree-like form. Subsequently, we prove that its worst-case time complexity is O(3n/3) for an n-vertex graph. This is optimal as a function of n, since there exist up to 3n/3 maximal cliques in an n-vertex graph. The algorithm is also demonstrated to run very fast in practice by computational experiments.},
pages = {28--42},
number = {1},
journaltitle = {Theoretical Computer Science},
shortjournal = {Theoretical Computer Science},
author = {Tomita, Etsuji and Tanaka, Akira and Takahashi, Haruhisa},
urldate = {2018-07-31},
date = {2006-10-25},
keywords = {Computational experiments, Enumeration, Maximal cliques, Worst-case time complexity},
file = {ScienceDirect Full Text PDF:/home/dimitri/Zotero/storage/QDLTAXHX/Tomita et al. - 2006 - The worst-case time complexity for generating all .pdf:application/pdf;ScienceDirect Snapshot:/home/dimitri/Zotero/storage/TCJ8J7MV/S0304397506003586.html:text/html}
}