\section{Activités de recherche} \begin{refsection} J'ai commencé mes travaux de recherche en 2009 au sein de l'Institut de Mathématiques et d'Informatique de Moldavie sous la direction de Yurii \textsc{Rogozhin}, et j'ai continué en 2012 par entreprendre une thèse sous la direction de Serghei \textsc{Verlan} au Laboratoire d'Algorithmique, Complexité et Logique de l'Université Paris Est Créteil. J'ai également eu de nombreuses collaborations internationales, notamment avec Rudolf~\textsc{Freund}, Artiom~\textsc{Alhazov} et Ion~\textsc{Petre}. Afin de collaborer avec Ion \textsc{Petre}, j'ai effectué de multiples visites au laboratoire Combio à l'université Åbo Akademi à Turku, Finlande. Les sujets de recherche que j'ai abordés jusqu'à maintenant se situent dans les domaines du calcul inspiré par la biologie et des langages formels. Lors de mon doctorat, j'ai travaillé également sur des problèmes non reliés directement au sujet de ma thèse. Dans la suite de cette section, je résume ma thèse, puis les résultats obtenus en dehors de son cadre. \subsection{Travaux de thèse} Ma thèse porte sur la puissance d'expression et l'universalité de modèles de calcul inspirés par la biologie. Les travaux présentés se structurent en quatre parties. Dans la première il s'agit de la puissance d'expression des systèmes d'insertion/effacement ({\em insertion-deletion systems}), un modèle de réécriture de chaînes de symboles formels par les opérations d'insertion et d'effacement. La deuxième partie du manuscrit se focalise sur l'universalité des réseaux de processeurs évolutionnaires ({\em networks of evolutionary processors}), qui est une formalisation d'un ensemble des unités de traitement de chaînes de caractères reliés en réseau. La troisième partie considère les machines à registres universelles à deux et à trois registres, ainsi qu'une généralisation de ce modèle. La dernière partie porte sur l'universalité des réseaux de Petri avec des arcs inhibiteurs. Nous rappelons que l'universalité est la propriété d'une classe de modèles de calcul d'avoir un objet, dit universel, qui peut répliquer les résultats de n'importe quel autre objet de cette classe, la simulation pouvant éventuellement se faire à un codage près. D'autre part, la complétude computationnelle est la propriété d'une classe de contenir, pour tout langage récursivement énumérable, un objet qui l'engendre. \subsubsection{Systèmes d'insertion/effacement} Les opérations d'insertion et d'effacement sont connues depuis longtemps dans la théorie des langages formels, surtout la variante sans contexte qui généralise les opérations de concaténation et quotient, deux opérations fondamentales~\cite{Haussler82,KariPhD}. L'inspiration qui a motivé l'introduction de ces opérations vient de la linguistique, car elles semblent modéliser assez précisément les procédés de construction des phrases dans une langue vivante~\cite{Marcus69,PaunKluwer97}. Il a été montré récemment que l'insertion et l'effacement possèdent une inspiration biologique et qu'ils formalisent l'hybridation erronée des brins d'ADN ({\em mismatched DNA annealing})~\cite{PRSbook}. De plus, il a été découvert que même l'édition de l'ARN ({\em RNA editing}) réalisé par certains protozoaires consiste généralement en des ajouts et des suppressions dans des brins d'ARN. De manière intuitive, une règle d'insertion rajoute une sous-chaîne à une chaîne de caractères dans un contexte donné. Une règle d'effacement agit de la façon duale : elle supprime une sous-chaîne d'une chaîne de caractères, dans un contexte donné. Un système d'insertion/effacement ({\em insertion-deletion system}) possède un ensemble fini de règles d'insertion et d'effacement ; il engendre un langage en appliquant ces règles séquentiellement à un ensemble fini de mots dits axiomes. La complexité d'un système d'insertion/effacement est décrite par le 6-uplet $(n,m,m'; p,q,q')$ dit taille, où les premiers trois composant représentent la longueur maximale de la sous-chaîne insérée et la taille maximale des contextes à gauche et à droite, alors que les trois derniers composants décrivent les mêmes paramètres pour les règles d'effacement. Dans le cadre de ma thèse nous nous sommes intéressés tout d'abord à des systèmes d'insertion/sup\-pres\-sion de taille $(1,m,0; 1,q,0)$, c'est-à-dire aux systèmes dans lesquels toutes les règles n'ont pas de contexte à droite et insèrent ou suppriment un caractère. Nous avons montré que ces systèmes engendrent tous les langages rationnels, et même certains langages algébriques. D'un autre côté, nous avons prouvé que pour tout système de taille $(1,m,0;1,q,0)$ avec $m\geq 2$ ou $n\geq 2$ il existe un système de taille $(1,2,0; 1,1,0)$ et un autre de taille $(1,1,0; 1,2,0)$ qui le simulent. Nous nous sommes aussi intéressés aussi aux systèmes de taille $(1,1,0;1,1,0)$ qui, malgré leur simplicité apparente, peuvent eux aussi engendrer des langages non algébriques. Afin de mieux analyser le comportement dynamique de ces systèmes, nous avons introduit un outil de représentation graphique de leurs dérivations. Nous avons ensuite considéré les systèmes d'insertion/effacement avec trois mécanismes de contrôle : contrôle par graphe ({\em graph control}), contrôle semi-conditionnel ({\em semi-conditional control}) et contextes aléatoires ({\em random context control}). Nous avons prouvé que les systèmes équipés de ces mécanismes étaient Turing complets avec de très petites règles. Notamment, nous avons prouvé que le contrôle semi-conditionnel augmentait la puissance d'expression des systèmes d'insertion/effacement de taille $(1,0,0;1,0,0)$, c'est-à-dire des systèmes avec des règles sans contexte, est les rend Turing complets. \subsubsection{Réseaux de processeurs évolutionnaires} Les réseaux de processeurs évolutionnaires ({\em networks of evolutionary processors}) sont un modèle de calcul inspiré par l'activité des organites d'une cellule biologique ou par la collaboration des cellules d'un tissu~\cite{CMVMS2001,CVS97}. Un processeur évolutionnaire peut effectuer en parallèle des opérations élémentaires (insertion, effacement, substitution d'un symbole) sur toutes les chaînes de caractères qu'il contient. Les processeurs sont connectés en réseau et échangent les chaînes de caractères qu'ils produisent. Ils disposent de filtres à l'entrée et à la sortie, ce qui leur permet de ne pas prendre en compte certaines chaînes. La complétude computationnelle des réseaux de processeurs évolutionnaires a été montrée dès leur introduction~\cite{CMVMS2001,CVS97}. Des variations au modèle ont été proposées plus tard et prouvées Turing complètes elles aussi~\cite{AMVR2006,CMVMS2003}. Nous nous sommes intéressés plutôt à l'universalité et à la minimisation du nombre de règles d'insertion, d'effacement et de substitution dans les réseaux universels. Nous avons ainsi construit des réseaux universels à 4, 5 et 7 règles seulement, avec des fonctions de codage différentes. \subsubsection{Machines à registres} Les machines à registres sont un modèle de calcul classique, dérivé directement de la machine de Turing~\cite{Minsky1961,Wang:1957}. Une telle machine possède un nombre fini de registres, qui peuvent contenir des entiers non négatifs. Le programme d'une machine à registres est une liste étiquetée d'instructions élémentaires : l'incrément d'un registre, le décrément d'un registre et le teste si un registre est vide. Les machines à registres sont ainsi un modèle très proche de l'organisation des ordinateurs digitaux habituels. Il a été montré que les machines à registres sont Turing complets, et qu'en plus n'importe quelle fonction calculable sur les entiers non négatifs peut être calculée par une machine à deux registres si les entrées de la fonction sont déjà encodées, ou à trois registres si la machine doit faire l'encodage par elle-même~\cite{minsky67}. Cela implique l'existence de machines à deux registres et à trois registres universelles. Néanmoins, aucun programme d'une telle machine n'a été présenté dans la littérature, or une telle construction concrète permet d'estimer la taille de structures universelles dérivées et de les optimiser ensuite. Dans ma thèse nous avons donc appliqué la procédure décrite dans~\cite{minsky67} pour construire des machines à deux et à trois registres universelles en simulant les machines universelles présentées en~\cite{Korec}. Nous nous sommes aussi intéressés à la façon dont les machines à registres sont simulées par d'autres modèles de calcul tels que systèmes de réécriture de multiensembles, réseaux de Petri, ou réseaux de processeurs évolutionnaires. Nous avons remarqué que tous ces modèles peuvent simuler plusieurs instructions d'une machine à registres en un seul pas. Autrement dit, ces instructions sont souvent trop élémentaires. Dans le but de définir un modèle proche aux machines à registres, mais qui utiliserait des instructions plus expressives, nous avons proposé les machines à registres généralisées ({\em generalised register machines}). Une telle machine peut effectuer plusieurs incréments, décréments, ou tests si un registre est à zéro en une seule transition. Les machines à registres habituelles peuvent être vues comme des machines à registres généralisées qui n'exécutent qu'une seule opération par transition. Dans une telle machine il est possible de réduire le nombre d'états en utilisant des transitions plus complexes. Dans ma thèse nous avons appliqué cette réduction pour construire des machines à registres universelles à 7 états seulement, cela en simulant les constructions présentées dans~\cite{Korec}. \subsubsection{Systèmes de réécriture de multiensembles et réseaux de Petri} La dernière partie de ma thèse porte sur l'universalité des systèmes de réécriture de multiensembles avec des inhibiteurs et aussi des réseaux de Petri avec des arcs inhibiteurs --- deux modèles qui sont fondamentalement similaires. En effet, un état (marquage) d'un réseau de Petri est décrit comme une fonction qui associe à chaque place le nombre de jetons qu'elle contient ; or le marquage est un multiensemble sur l'alphabet des symboles qui désignent les places. Les transitions de réseaux de Petri correspondent ainsi aux règles de réécriture de multiensembles. Il a été montré que savoir si un marquage peut être atteint par un réseau de Petri donné est décidable~\cite{Mayr:1981}. La même affirmation est donc valable dans le cas des systèmes de réécriture de multiensembles simples. Plusieurs variations ont été proposées afin d'étendre le pouvoir d'expression de ces modèles, dont l'idée des inhibiteurs. Dans les réseaux de Petri, un arc inhibiteur entre une place et une transition empêche celle-ci de se déclencher si la place n'est pas vide. De la même manière, on peut munir une règle de réécriture de multiensembles avec un ensemble de symboles qui ne doivent pas être présents pour que la règle soit applicable. Il a été prouvé que les réseaux de Petri avec des arcs inhibiteurs et les systèmes de réécriture de multiensembles avec des inhibiteurs sont Turing complets~\cite{BMVPR2002,Reinhardt08}, car ils peuvent simuler assez directement les machines à registres. Dans ma thèse nous avons construit plusieurs réseaux de Petri avec des arcs inhibiteurs universels. Nous avons défini la taille d'un réseau comme étant le 4-uplet $(p,t,i,d)$ où $p$ est le nombre de places, $t$ est le nombre de transitions, $i$ est le nombre d'arcs inhibiteur et $d$ et le nombre maximal d'arcs incidents à une transitions (le degré maximal). Nous nous sommes proposé de construire des réseaux de Petri universels tout en minimisant chacun de ces paramètres. Nous avons notamment décrit des réseaux universels avec quatre et cinq places uniquement et d'autres avec deux et trois arcs inhibiteurs (les chiffres varient selon l'encodage des entrées et des sorties). Il est remarquable que deux est le nombre minimal d'arcs inhibiteurs nécessaires pour atteindre la complétude computationnelle : les réseaux de Petri avec un seul arc inhibiteur ne sont pas Turing complets~\cite{Reinhardt08}. Même si les résultats d'universalité présentés dans la dernière partie de ma thèse apparaissent sous la forme de réseaux de Petri, la correspondance directe avec les systèmes de réécriture de multiensembles permet de formuler immédiatement les mêmes résultats pour ceux-ci. \begin{itemize} \item systèmes à membranes, \item systèmes à réactions, \item grammaires de tableaux. \end{itemize} Les sujets de recherche que j'ai abordé sont le travaux de thèse travaux hors thèse programmation \printbibliography \end{refsection}