Algorithme de Sardinas-Patterson

Un article de Wikipédia, l'encyclopédie libre.

En théorie des codes, l'algorithme de Sardinas-Patterson permet de déterminer si une partie d'un monoïde libre est un code en temps polynomial. Il est nommé d'après August Sardinas et George Patterson, qui le publièrent dans un article de 1953[1].

Objectif[modifier | modifier le code]

On considère un monoïde libre . On appelle code à longueur variable ou code une partie de telle que le sous-monoïde engendré est libre. L'algorithme de Sardinas-Patterson prend en entrée un alphabet et une partie finie de et détermine si est un code.

L'objectif est de pouvoir transcrire un mot dans un alphabet en un mot dans l'alphabet en associant à chaque lettre de un nombre variable de lettres de , étant alors l'ensemble des codages des lettres de . On cherche alors à ce que ce code ne soit pas ambiguë. Par exemple, en code Morse, A est codé par .-, E par . et F par ..-.. Mais alors, ..-. peut être interprété comme EAE ou comme F. Le code Morse nécessite ainsi l'usage d'un autre caractère séparant les lettres[2].

Description de l'algorithme[modifier | modifier le code]

Si et sont deux parties de , on pose . On note le mot vide. L'algorithme calcule les éléments de la suite d'ensembles définie par récurrence :

  • et
  • pour .

Si lors du calcul, on obtient un égal à un des précédents, alors est un code. Si l'un des contient , alors n'est pas un code[2].

Terminaison[modifier | modifier le code]

Chacun des est une partie de l'ensemble des facteurs des éléments de . Or est fini, donc l'ensemble des facteurs de ses éléments est fini (dans un monoïde libre, chaque élément ayant un nombre fini de facteurs), donc l'ensemble des parties de cet ensemble est fini. Par conséquent, des termes de la suite se répètent. L'algorithme s'arrête donc nécessairement[2].

Correction[modifier | modifier le code]

La correction de l'algorithme s'énonce comme suit.

Théorème. n'est pas un code si, et seulement si l'un des contient .

Démonstration.

(⇒) Supposons que n'est pas un code. Si , alors . Sinon, on dispose de et égaux avec et deux suites d'éléments de telles que . On peut voir ce mot comme un segment, par exemple :

A0B0-----------------A1--------B1---------B2-----A2-----------------B3---------A3B4

Les lettres en majuscules notent des positions dans le mot, de manière que , et ainsi de suite et de même pour les , avec les crochets notant le facteur délimité par les deux positions. Exécutons l'algorithme sur cet exemple : comme et (avec ) sont dans , alors est dans . Ensuite, comme est dans , on a . Ensuite, puis . On peut ainsi faire augmenter de 1 l'indice de la lettre de gauche à chaque étape, en utilisant le terme de droite de l'union si l'ordre de et change dans les crochets, le terme de gauche sinon. Finalement, on arrive au même point à gauche et à droite : et on obtient le critère voulu. Comme la suite des est définie par récurrence, elle ne peut pas se répéter avant d'inclure .

(⇐) Réciproquement, supposons pour un entier (le cas est immédiat). Par exemple, on a avec et . Alors . De même, on a par exemple , et donc . En développant les obtenus jusqu'à arriver dans , on obtient une égalité donc chaque membre est une concaténation d'éléments de . Par construction, le dernier mot de ces deux suites est différent : l'un est , l'autre en est un suffixe strict. On a donc obtenu un même mot en concaténant deux suites différentes de  : ce dernier n'est donc pas un code[3].

Notes et références[modifier | modifier le code]

  1. (en) Sardinas, August Albert and Patterson, George W, « A necessary and sufficient condition for unique decomposition of coded messages », Proceedings of the Institute of Radio Engineers,‎ , p. 425-425 (lire en ligne)
  2. a b et c (en) Howie, John M. (John Mackintosh), Fundamentals of semigroup theory, Oxford, Clarendon, , 351 p. (ISBN 0-19-851194-9 et 978-0-19-851194-6, OCLC 32969870, lire en ligne)
  3. (en) Bandyopadhyay, G, « A simple proof of the decipherability criterion of Sardinas and Patterson », Information and Control,‎ , p. 331-336 (lire en ligne)