Observations :
Cycles, classes d'équivalence, base d'homologie :
Soient \(K \subset K'\). L'application inclusion \(inc : K \longrightarrow K'\) induit une application linéaire \[\iota : H_q(K) \longrightarrow H_q(K')\] entre ses groupes d'homologie (exercice)
Même nombre de trous, mais
L'application \(\iota : H_q(K) \longrightarrow H_q(K')\) montre
la relation entre les trous de \(K \subset K'\)
Filtration : suite de complexes imbriqués \[K^1 \subset K^2 \subset \cdots \subset K^n\]
Soit \(f: K \rightarrow \mathbb{R}\) telle que :
Alors \( f^{-1}(-\infty, a_1] \subset f^{-1}(-\infty, a_2] \subset \cdots \) est une filtration (exercice)
Compléter cette fonction pour qu'elle définisse une filtration
Soit \(f: K_0 \rightarrow \mathbb{R}\) quelconque. On définit \( \bar{f}: K \rightarrow \mathbb{R} \)
Alors \( \bar{f} \) définit une filtration (exercice)
Éteindre cette fonction aux simplexes de dimension supérieure
Soit \(K^1 \subset \cdots \subset K^n\) une filtration. On définit \( f: K^n \rightarrow \mathbb{R} \), \( f(\sigma) = i \Leftrightarrow \sigma \in K^{i} \setminus K^{i-1} \)
Alors \( f \) définit la filtration donnée (exercice)
Donc, on peut travailler avec une filtration (suite de complexes) ou avec une fonction monotone : \( \sigma \subset \tau \Rightarrow f(\sigma) \leq f(\tau) \)
Soit \( f \) monotone, \( f(K) = \{ a_1 < \cdots < a_n\} \). Notation :
Le diagramme de persistance de dimension q de \( f \) est le multi-ensemble \( D_q(f) \subset \overline{\mathbb{R}}^2 \) avec
Les \( (a_i, a_j) \) sont les paires de persistance
Homologie persistante de dimension 0
Soient \( f, g: K \longrightarrow \mathbb{R} \). Leur distance est \[ \|f-g\|_{\infty} = \max_{\sigma \in K} |f(\sigma) - g(\sigma)| \]
Question : si \( f \) et \( g \) sont similaires, que se passe-t-il avec leurs diagrammes de persistance ? Comment les comparer ?
Soient \( X, Y \) deux multi-ensembles de points de \( \mathbb{R}^2 \), \[ \begin{align*} d_H(X,Y) = \max \{ &\max_{x \in X} \min_{y \in Y} \|x-y\|_{\infty},\\ &\max_{y \in Y} \min_{x \in X} \|x-y\|_{\infty} \} \end{align*} \]
Distance de Hausdorff ?
\[ d_H(D_q(f), D_q(g)) \leq \|f-g\|_{\infty} \]
En français : si on change un peu la fonction d'une filtration, son diagramme de persistance aura ses points à proximité
Fonction \( f \) continue définie sur \( K \) un intervalle
Une idée de pourquoi :
\[ d_B(X,Y) = \min_{\gamma} \max_{x \in X} \|x - \gamma(x)\|_{\infty}, \] où \( \gamma:X \rightarrow Y \) bijective
Distance bottleneck ?
\[ d_B(D_q(f), D_q(g)) \leq \|f-g\|_{\infty} \]
En français : si on change un peu la fonction d'une filtration, chaque point va bouger d'un peu
Comme \( d_H(X,Y) \leq d_B(X,Y) \), ce deuxième théorème est plus fort
Les théorèmes de stabilité nous disent que :
Deux fonctions très différentes avec des diagrammes identiques ?
\( \beta_0 = 4-3, \beta_1 = 2-1, \beta_2 = 0-0 \)
Pour calculer les groupes d'homologie avec coefficients dans une anneau ( \( \mathbb{Z} \) ), il faut calculer la forme normale de Smith des matrices de bord
\( H_q = \mathbb{Z}^{4-3} \oplus \mathbb{Z}/2\mathbb{Z} \oplus \mathbb{Z}/6\mathbb{Z} \)
Algorithme pour calculer les nombres de Betti d'un complexe simplicial Delfinado et Edelsbrunner, 1992
Il faut trier les simplexes de façon à avoir une filtration :
β0, β1, β2 ← 0
for j = 1...n
q ← dim(σj)
if σj appartient à un cycle de Kj
βq ← βq + 1
else
βq-1 ← βq-1 - 1
return (β0, β1, β2)
Idée de la preuve :
Calculer les nombres de Betti
Deux types de simplexes :
L'algorithme incrémental peut être adapté pour calculer les paires de persistance. Il nous faudra :
Pour simplifier, on considère des filtrations avec un seul simplexe entrant à la fois.
Quand on arrive à un simplexe positif \( \sigma^i \) :
Quand on arrive à un simplexe négatif \( \sigma^j \) :
Pseudocode :
L0, L1, L2 ← ∅ // listes des paires
B0, B1, B2 ← ∅ // bases d'homologie
for j = 1...n
q ← dim(σj)
if σj est positif
Bq ← Bq ∪ {j}
else
I ← ∂(σj)
i ← max(I) // c'est lui, le plus jeune !
Bq-1 ← Bq-1 - {i}
Lq-1 ← Lq-1 ∪ {(i,j)}
foreach σi non couplé
q ← dim(σi)
Lq ← Lq ∪ {(i,n+1)}
return (L0, L1, L2)
\( D_q = \{ (a_i, a_j) \vert (i,j) \in L_q \} \)
Calculer les paires de persistance \( (i, j) \)
Soit \( Q^{i,j} = ]-\infty, i] \times ]j, \infty[ \), alors
\( \beta_q^{i,j} = \#(D_q(f) \cap Q^{a_i, a_j}) \)
(exercice)
C'est la clé de la preuve de l'algorithme, on va démontrer que \( \beta_q^{i,j} = \#(L_q \cap Q^{i,j}) \)
On fixe \( q \) et \( i \), et on le démontre par induction sur \( k = j-i \geq 0 \).
Cas de base : Si \( i = j \) alors \( \beta_q^{i,i} = \beta_q(K^i) \).
D'autre part, \( \#(L_q \cap Q^{i,i}) \) =
Induction : Vrai pour \( \beta_q^{i,j} \). Deux possibilités pour \( \beta_q^{i,j+1} \) :
\( \beta_q^{i,j+1} = \beta_q^{i,j} \) ou \( \beta_q^{i,j+1} = \beta_q^{i,j} -1 \)
Si \( \sigma^{j+1} \) est un \(q\)-simplexe positif :
Si \( \sigma^{j+1} \) est un \( (q+1) \)-simplexe négatif :
Ce qui reste :
Il suffit une élimination gaussienne en \( \mathcal{O}(n^3) \)
Notation : \(D\) matrice de bord, toutes dimension confondues
\( D = (d_{ij}) \) telle que \( \partial(\sigma_j) = \Sigma_i \left( d_{ij} \cdot \sigma_i \right) \)
for j = 1...n
if Cj ≠ 0
i ← max(k; dkj = 1)
// élimination gaussienne avec le pivot dij
for k = 1...n
Rk ← Rk + dkj Ri
for k = 1...n
Ck ← Ck + dik Cj
Calculer les paires de persistance \( (i, j) \)
Quelques applications :
Comment reconnaître les contours ?
Si l'ensemble de points représente assez bien la forme, on devrait la retrouver
Algorithme :
Alpha complexe : filtration sur un ensemble de points \( P \subset R^2 \)
Quelle est la sortie de l'algorithme pour ces données ?
Question : comment attraper un objet à l'aide d'une main robotique et de la gravité ?
Observation : il y a plusieurs façons de l'attraper ; certaines sont meilleurs qu'autres
Filtration : espace de translations invalides + un rideau qui descend
\( (x,y) \in D_1 \) ⇒ il y a une façon d'attraper l'objet et la quantité d’énergie nécessaire pour s'échapper est \( y - x \)
En pratique :
Problème : visualiser la formation de doigts dans un écoulement d'eau salée
Données :
Étapes :
Détails de l'étape 3 (segmentation) :

Question : comment distinguer les trous d'un objet ?
Érosions + dilatations = filtration
De plus, le couplage de l'algorithme de l'homologie persistante permet de définir les deux centres de chaque trou
Stabilité : la distance entre les paires de deux objets \( X \) et \( Y \) est bornée par \[ d_H(X, Y) + d_H(X^c, Y^c) \]
En français : si on perturbe la frontière de l'objet, l'épaisseur et la largeur de chaque trou reste à peu près la même
Quelques ressources :