đŸ€– Automates PondĂ©rĂ©s Commutatifs 🚇

PostĂ© le 08-01-2025 par Aliaume Lopez – lecture en 9 minutes (≈ 2220 mots)

Une fois n’est pas coutume, je vais parler de la thĂ©orie des automates. Plus prĂ©cisĂ©ment, je vais montrer 4 preuves complĂštement diffĂ©rentes d’un mĂȘme rĂ©sultat sur les automates pondĂ©rĂ©s. Ce billet a le double usage de servir de rĂ©fĂ©rence pour ce rĂ©sultat qui est connu, mais n’est pas facilement citable, mais aussi de sortir ces preuves de notes et d’échanges oraux pour ne plus y penser par la suite.

Dans la mesure du possible, je vais rendre ces rĂ©sultats « auto-contenus », Avant de rentrer dans les dĂ©tails et l’historique de la notion d’automate pondĂ©rĂ©, on peut dĂ©jĂ  dire que c’est un modĂšle de calcul qui sert Ă  reprĂ©senter des fonctions de type \(\Sigma^* \to \mathbb{F}\) oĂč \(\Sigma\) est un alphabet fini et \(\mathbb{F}\) un (semi-)anneau. Pour simplifier la prĂ©sentation des preuves, je vais me restreindre au cas oĂč \(\mathbb{F} = \mathbb{C}\), et je laisse le soin au lecteur de gĂ©nĂ©raliser les rĂ©sultats Ă  d’autres anneaux.

La question qui nous intĂ©resse ici est de savoir si une telle fonction \(f \colon \Sigma^* \to \mathbb{C}\) est commutative, c’est-Ă -dire, si pour tout mot \(u \in \Sigma^*\), pour toute permutation \(\sigma\) des lettres de \(u\), on a \(f(u) = f(\sigma(u))\).

Exemple. Un exemple typique de fonction commutative est la fonction qui compte le nombre de lettres \(a\) dans un mot \(u\). En effet, si on permute les lettres de \(u\), le nombre de \(a\) ne change pas.

Non-Exemple. Un exemple typique de fonction non-commutative est la fonction qui compte le nombre de fois oĂč le sous-mot \(ab\) apparaĂźt dans un mot \(u\). En effet, \(f(ab) = 1\), mais \(f(ba) = 0\).

Dans ce billet, nous allons donc donner plusieurs algorithmes pour décider si une fonction \(f\) calculée par un automate pondéré est commutative ou non.

Automates pondérés

Avant de parler du rĂ©sultat en question, je vais commencer par dĂ©finir ce qu’est un automate pondĂ©rĂ©. Et comme toutes les preuves que je vais donner n’utilisent pas le mĂȘme modĂšle de calcul, je vais prĂ©senter les trois dĂ©finitions utiles pour ce billet. Les fonctions calculĂ©es par les automates pondĂ©rĂ©s Ă©taient dĂ©jĂ  connues dans les annĂ©es 70 et les travaux de SchĂŒtzenberger (1962). Depuis, un certain nombre d’ouvrages de rĂ©fĂ©rence ont Ă©tĂ© Ă©crits Ă  leur sujet (Berstel and Reutenauer 1988, 2010; Sakarovitch 2009; Droste, Kuich, and Vogler 2009).

Les trois définitions présentées ci-aprÚs sont équivalentes, et les transformations entre ces trois modÚles sont faisables algorithmiquement.

DĂ©finition 1: Un automate pondĂ©ré  un automate avec des pondĂ©rations

Un automate pondĂ©rĂ© est un automate fini qui a des pondĂ©rations sur les arcs. Formellement, un automate pondĂ©rĂ© est un quintuplet \((Q, \Sigma, \delta, I, F)\) oĂč

  • \(Q\) est un ensemble fini d’états,
  • \(\Sigma\) est un alphabet fini,
  • \(\delta \colon Q \times \Sigma \times Q \to \mathbb{C}\) est une relation de transition pondĂ©rĂ©e,
  • \(I \subseteq Q\) est un ensemble d’états initiaux,
  • \(F \colon Q \to \mathbb{C}\) est une fonction finale.

À tout mot d’entrĂ©e \(u \in \Sigma^*\), un tel automate possĂšde un certain nombre de calculs possibles : ce sont les suites d’états \(q_0 \xrightarrow{u_1} q_1 \xrightarrow{u_2} \cdots \xrightarrow{u_n} q_n\) avec \(q_0 \in I\). La valeur d’un tel calcul est le produit des pondĂ©rations des transitions empruntĂ©es avec la valeur de la fonction finale, c’est-Ă -dire \(\delta(q_0, u_1, q_1) \cdot \delta(q_1, u_2, q_2) \cdots \delta(q_{n-1}, u_n, q_n) \cdot F(q_n)\). La fonction associĂ©e Ă  un automate pondĂ©rĂ© est la fonction qui associe Ă  un mot d’entrĂ©e \(u\) la somme des valeurs de tous les calculs possibles pour \(u\).

Exemple. La fonction \(f\) qui associe Ă  \(u\) le nombre de \(a\) dans \(u\) peut se reprĂ©senter comme suit Ă  l’aide d’un automate pondĂ©rĂ©. \(Q = \{q_0, q_1\}\), \(\Sigma = \{a, b\}\), \(\delta(q_0, a, q_0) = 1\), \(\delta(q_0, b, q_0) = 0\), \(\delta(q_0, a, q_1) = 1\), \(\delta(q_0, b, q_1) = 0\), \(\delta(q_1, a, q_1) = 1\), \(\delta(q_1, b, q_1) = 0\), \(I = \{q_0\}\), \(F(q_0) = 0\), \(F(q_1) = 1\).

Définition 2: Une version algÚbre linéaire

On utilisera la notation \(\mathcal{M}_{n}(\mathbb{C})\) pour dĂ©signer l’algĂšbre des matrices carrĂ©es de taille \(n\) Ă  coefficients complexes. Une reprĂ©sentation linĂ©aire d’un automate pondĂ©rĂ© est donnĂ©e par un triplet \((I, \mu, F)\), oĂč morphisme \(\mu \colon (\Sigma^*, \cdot) \to (\mathcal{M}_{n}(\mathbb{C}), \times)\), \(I\) est une matrice de taille \(n \times 1\), \(F\) est une matrice de taille \(1 \times n\).

Muni de cette reprĂ©sentation, on peut dĂ©finir la fonction \(f \colon \Sigma^* \to \mathbb{C}\) associĂ©e Ă  l’automate pondĂ©rĂ© comme \(f(u) = F \mu(u) I\).

Exemple. La fonction \(f\) qui associe Ă  un mot \(u\) le nombre de \(a\) dans \(u\) peut se reprĂ©senter comme suit Ă  l’aide d’une reprĂ©sentation linĂ©aire. On considĂšre \(\mu(a) = \begin{pmatrix} 1 & 0 \\ 0 & 1 \end{pmatrix}\), \(\mu(b) = \begin{pmatrix} 0 & 1 \\ 0 & 0 \end{pmatrix}\), \(I = \begin{pmatrix} 1 \\ 0 \end{pmatrix}\), \(F = \begin{pmatrix} 0 & 1 \end{pmatrix}\).

Définition 3: Une algÚbre différentielle

Lorsque l’on a une fonction \(f \colon \Sigma^* \to \mathbb{C}\), on peut dĂ©finir les opĂ©rateurs de dĂ©rivation Ă  gauche et Ă  droite \(\partial_a^L(f)(u) = f(au)\) et \(\partial_a^R(f)(u) = f(ua)\).

Une fonction \(f\) est finiment différentielle si elle appartient à un espace vectoriel de dimension fini de fonctions allant de \(\Sigma^*\) dans \(\mathbb{C}\), qui est stable par les opérateurs de dérivation à gauche et à droite.

Preuve(s) de la décidabilité de la commutativité

Étant donnĂ© une fonction \(f \colon \Sigma^* \to \mathbb{C}\) calculĂ©e par un automate pondĂ©rĂ©, on veut savoir si \(f\) est commutative. Dans une majoritĂ© des preuves suivantes, on utilisera le fait que l’égalitĂ© de deux automates pondĂ©rĂ©s est dĂ©cidable (Berstel and Reutenauer 2010, Chapitre 2, Corollaire 3.6).

Preuve 1: Permutations et générateurs

L’idĂ©e est de tester si \(f = f \circ \delta\), pour toute fonction \(\delta\) qui permute les lettres du mot d’entrĂ©e. Le principal problĂšme est qu’il y a une infinitĂ© de telles fonctions. Un second problĂšme est que, si \(f\) est calculĂ©e par un automate pondĂ©rĂ©, il n’est pas immĂ©diat que \(f \circ \delta\) le soit aussi. La solution au problĂšme principal est de se restreindre Ă  deux permutations : on teste si \(f \circ \tau_{1,2} = f\) et si \(f \circ \sigma = f\), oĂč \(\tau_{1,2}\) permute les deux premiĂšres lettres d’un mot et \(\sigma\) Ă©change la premiĂšre et la derniĂšre lettre d’un mot.

Lemme. Si \(f \circ \tau_{1,2} = f \circ \sigma = f\) alors \(f\) est commutative.

Preuve.

On se souvient de ses cours de théorie des groupes de permutation et on se rappelle que tout élément du groupe symétrique de taille \(n\) est généré par la transposition \(\tau_{1,2}\) et le cycle \((1, 2, \ldots, n)\). On peut donc écrire toute permutation \(\gamma\) comme une composition de ces deux permutations. Comme \(f \circ \tau_{1,2} = f\) et \(f \circ \sigma = f\), on déduit immédiatement que pour toute permutation \(\gamma\), \(f \circ \gamma = f\).

Pour résoudre notre second problÚme, on utilise la présentation des automates pondérés sous forme de fonctions finiment différentielles.

Lemme. Si \(f\) est finiment différentielle alors \(f \circ \tau_{1,2}\) et \(f \circ \sigma\) sont finiment différentielles.

Preuve.

Supposons que \(f \in \langle f_1, \ldots, f_n \rangle = \mathbb{V}\) oĂč les \(f_i\) sont des fonctions de \(\Sigma^*\) dans \(\mathbb{C}\), et \(\mathbb{V}\) est stable par les opĂ©rateurs de dĂ©rivation Ă  gauche et Ă  droite.

On construit l’espace \(\mathbb{E}\) des fonctions de \(\Sigma^*\) dans \(\mathbb{C}\) engendrĂ© par les fonctions \(f_i\), \(f_i \circ \tau_{1,2}\), \(f_i \circ \sigma\), leurs dĂ©rivĂ©es Ă  gauche et Ă  droite par une lettre. Il est clair que \(\mathbb{E}\) est finiment gĂ©nĂ©rĂ© et contient \(f \circ \tau_{1,2}\) et \(f \circ \sigma\). Il reste Ă  montrer que \(\mathbb{E}\) est stable par les opĂ©rateurs de dĂ©rivation Ă  gauche et Ă  droite.

Pour cela, il suffit de remarquer que \(\partial_a^L \partial_b^L (f \circ \tau_{1,2}) = \partial_b^L \partial_a^L (f)\) et que \(\partial_a^L (f \circ \sigma) = \partial_a^R (f)\).

On a donc un algorithme pour décider si une fonction \(f\) calculée par un automate pondéré est commutative.

Preuve 2: Minimisation

On calcule une reprĂ©sentation linĂ©aire minimale \((I, \mu, F)\) associĂ©e Ă  la fonction \(f\). On teste si \(\mu(ab) = \mu(ba)\) pour tout \(a, b \in \Sigma\). VĂ©rifions tout d’abord que cette condition est suffisante.

Lemme. Si \(\mu(ab) = \mu(ba)\) pour tout \(a, b \in \Sigma\) alors \(f\) est commutative.

Preuve.

Soit \(w = u_1 \cdots u_n\) un mot. Alors \(f(w) = I \mu(w) F = I \mu(u_1) \cdots \mu(u_n) F\). Comme \(\mu(ab) = \mu(ba)\) pour tout \(a,b \in \Sigma\), on dĂ©duit que \(f(w)\) ne dĂ©pend pas de l’ordre des lettres de \(w\).

Pour l’instant, nous n’avions pas utilisĂ© la minimalitĂ© de la reprĂ©sentation linĂ©aire. On va utiliser le fait que pour toute reprĂ©sentation linĂ©aire minimale de dimension \(n\), tout vecteur de \(\mathbb{C}^n\) est accessible et co-accessible ; c’est-Ă -dire que \(\mathbb{C}^n\) est gĂ©nĂ©rĂ© en tant qu’espace vectoriel par les vecteurs de la forme \(I \mu(w)\) oĂč \(w \in \Sigma^*\), et que symĂ©triquement, \(\mathbb{C}^n\) est gĂ©nĂ©rĂ© en tant qu’espace vectoriel par les vecteurs de la forme \(\mu(w) F\) oĂč \(w \in \Sigma^*\).

Lemme. Si \(f\) est commutative alors \(\mu(ab) = \mu(ba)\) pour tout \(a, b \in \Sigma\).

Preuve.

ConsidĂ©rons deux lettres \(a,b \in \Sigma\), et prouvons que \(\mu(ab) = \mu(ba)\). Pour cela, on va considĂ©rer un vecteur propre \(v\) de la matrice \(M = \mu(ab) - \mu(ba)\), et sa valeur propre associĂ©e \(\lambda\), telle que \(M v = \lambda v\). Il nous suffit de prouver que \(\lambda = 0\) pour conclure que \(M = 0\), puis l’égalitĂ© dĂ©sirĂ©e.

Comme \(v \in \mathbb{C}^n\), il existe des mots \(u_i\) et des coefficients \(\alpha_i\) tels que \(v = \sum_i \alpha_i \mu(u_i) F\). De plus, il existe des mots \(w_j\) et des coefficients \(\beta_j\) tels que \({}^t v = \sum_j \beta_j I \mu(w_j)\). Considérons donc

\[\begin{align*} {}^t v M v &= \lambda |v|^2 \\ &= \sum_{i,j} \alpha_i \beta_j I \mu(w_j) (\mu(ab) - \mu(ba)) \mu(u_i) F \\ &= \sum_{i,j} \alpha_i \beta_j (I \mu(w_j ab u_i) F - I \mu(w_j ba u_i) F) \\ &= \sum_{i,j} \alpha_i \beta_j (f(w_j ab u_i) - f(w_j ba u_i)) \\ &= 0 \end{align*}\]

Comme \(v\) est un vecteur propre de \(M\), sa norme n’est pas nulle, et on dĂ©duit que \(\lambda = 0\).

Preuve 3: Uniformisation

Au lieu d’observer des propriĂ©tĂ©s d’une reprĂ©sentation minimale de \(f\), on va construire une version commutative de \(f\) et tester l’égalitĂ© avec \(f\). Plus prĂ©cisĂ©ment, nous allons calculer \(f \circ \text{sort}\) oĂč \(\text{sort}\) est une fonction qui trie les lettres d’un mot. On teste si \(f \circ \text{sort} = f\). J’utilise en boĂźte noire le lemme suivant, pour lequel je n’ai pas de rĂ©fĂ©rence prĂ©cise Ă  citer.

Lemme. Soit \(g\) une fonction réguliÚre et \(f\) calculée par un automate pondéré. Alors \(f \circ g\) est calculée par un automate pondéré.

Il reste à vérifier que si \(f \circ \text{sort} = f\) alors \(f\) est commutative, ce qui est immédiat.

Lemme. Si \(f \circ \text{sort} = f\) alors \(f\) est commutative.

Preuve.

Soit \(w_1\) et \(w_2\) deux mots ayant le mĂȘme multiensemble de lettres. Alors, \(\text{sort}(w_1) = \text{sort}(w_2)\), et donc \(f(w_1) = f(\text{sort}(w_1)) = f(\text{sort}(w_2)) = f(w_2)\). Ainsi, \(f\) est commutative.

Preuve 4: Équations algĂ©briques

Étant donnĂ© une fonction \(f\) calculĂ©e par une reprĂ©sentation linĂ©aire de la forme \((I, \mu, F)\), on veut tester si pour tous mots \(x,y,z,t\), on a \(I \mu(xyzt) F = I \mu(xzyt) F\). Par linĂ©aritĂ©, cela revient Ă  dĂ©cider si pour tous mots \(x,y,z,t\), on a \(I (\mu(x)\mu(y)\mu(z)\mu(t) - \mu(x)\mu(z)\mu(y)\mu(t)) F = 0\). Cette Ă©quation est polynomiale en les coefficients de \(\mu(x), \mu(y), \mu(z), \mu(t)\). Notons \(P\) ce polynĂŽme possĂ©dant \(4 \times n^2\) inconnues.

La clĂŽture de Zariski d’un ensemble \(E\) de matrices est le plus petit ensemble contentant \(E\) de matrices \(M\) telles que pour tout polynĂŽme \(P\) en les coefficients de \(M\), si \(P\) s’annule sur \(E\), alors \(P(M) = 0\). Si on considĂšre \(E = \{ \mu(u) \mid u \in \Sigma^* \}\), qui est un semigroupe de matrices finiment engendrĂ© par les matrices \(\mu(a)\) oĂč \(a \in \Sigma\), alors la clĂŽture de Zariski de \(E^4\) doit contenir notre polynĂŽme \(P\).

ThĂ©orĂšme (Hrushovski et al. 2018). On peut calculer la clĂŽture de Zariski d’un semigroupe de matrice finiment gĂ©nĂ©rĂ©. Et dĂ©cider si un polynĂŽme \(P\) est dans cette clĂŽture.

Notre algorithme est alors le suivant : calculer la clĂŽture de Zariski de \(E = \{ \mu(u) \mid u \in \Sigma^* \}\). De ce calcul, on peut dĂ©duire la clĂŽture de Zariski de \(E^4\), et dĂ©cider si \(P\) s’annule sur cette clĂŽture.

Conclusion

Nous avons vu quatre algorithmes pour décider si une fonction \(f\) calculée par un automate pondéré est commutative ou non. Ces algorithmes sont basés sur des techniques trÚs variées et toutes utiles dans certains contextes.

Berstel, Jean, and Christophe Reutenauer. 1988. Rational Series and Their Languages. 2008 electronic. Vol. 12. EATCS Monographs on Theoretical Computer Science 12. Springer.
———. 2010. Noncommutative Rational Series with Applications. Vol. 137. Encyclopedia of Mathematics and Its Applications. Cambridge University Press. https://doi.org/10.1017/CBO9780511760860.
Droste, Manfred, Werner Kuich, and Heiko Vogler. 2009. Handbook of Weighted Automata. Monographs in Theoretical Computer Science. An EATCS Series. Springer Berlin Heidelberg. https://doi.org/10.1007/978-3-642-01492-5.
Hrushovski, Ehud, JoĂ«l Ouaknine, Amaury Pouly, and James Worrell. 2018. “Polynomial Invariants for Affine Programs.” In Proceedings of the 33rd Annual ACM/IEEE Symposium on Logic in Computer Science, 530–39. LICS ’18. New York, NY, USA: Association for Computing Machinery. https://doi.org/10.1145/3209108.3209142.
Sakarovitch, Jacques. 2009. Elements of Automata Theory. Edited by Reuben Thomas. Cambridge University Press. https://doi.org/10.1017/cbo9781139195218.
SchĂŒtzenberger, Marcel P. 1962. “Finite Counting Automata.” Information and Control 5 (2): 91–107. https://doi.org/10.1016/S0019-9958(62)90244-9.