Introduction
Cette th`ese a pour domaine l’analyse d’algorithmes et la g´en´eration al´eatoire.
Pour analyser la performance des algorithmes on consid`ere souvent la complexit´e
dans le pire des cas, ce qui permet de garantir des bornes sur le temps d’ex´ecution
ou sur l’espace m´emoire consomm´e.
Il existe cependant de nombreuses situations o`u un algorithme se comporte bien
mieux en pratique que son pire des cas ne l’indique : il suffit pour cela que les
cas les pires soient suffisamment rares . Pour quantifier math´ematiquement
ce type de propri´et´es, on analyse les performance d’un algorithme en moyenne ou
g´en´eriquement.
L’exemple le plus c´el`ebre de ce genre de comportements est probablement l’al-
gorithme du tri rapide — QuickSort [Hoa62] —, dont la complexit´e dans le pire des
cas est quadratique, alors que sa complexit´e en moyenne est en O(nlog n). De fait,
cet algorithme ou ses variantes sont utilis´ees dans les biblioth`eques standards de
nombreux langages de programmation.
Pour faire de l’analyse en moyenne d’algorithme il faut commencer par d´efinir
ce qu’est une entr´ee al´eatoire, c’est-`a-dire d´efinir des distributions de probabilit´es
sur les entr´ees disponibles. La fa¸con la plus imm´ediate de le faire, et c’est celle qui
sera majoritairement adopt´ee dans cette th`ese, consiste `a consid´erer la distribution
uniforme o`u tous les objets de mˆeme taille ont une mˆeme probabilit´e d’ˆetre
engendr´es.
Utiliser la distribution uniforme sur les entr´ees de taille nreporte le probl`eme
sur comment compter le nombre total de ces entr´ees, puisque la probabilit´e d’un
objet de taille nest l’inverse du nombre d’objets de cette taille. Nous aurons donc
deux fa¸cons d’aborder les questions qui se posent : les probabilit´es discr`etes et la
combinatoire. Nous utiliserons les deux dans tout le manuscrit.
Notons que nous serons plus particuli`erement int´eress´es par des r´esultats asymp-
totiques, comme montrer que la probabilit´e qu’une certaine propri´et´e soit satisfaite
tend vers 0 ou 1, et qu’on s’appuiera donc d’avantage sur les techniques de combi-
natoire analytique [FS09], qui fournissent les r´esultats pour faire de l’asymptotique,
que sur d’autres champs de la combinatoire.
La th´eorie des automates et des langages rationnels existent depuis le tout d´ebut
de l’informatique th´eorique. C’est un des domaines fondamentaux qui fait partie du
socle commun de tous les informaticiens. Un mot est une suite de symboles et un
langage est un ensemble de mots. Les suites de symboles interviennent naturel-
lement en informatique — tout est cod´e par une suite de 0 et de 1 —, et donc
les langages ´egalement : si on consid`ere l’ensemble des repr´esentations binaires des
nombres premiers on obtient un langage, sur lequel on peut se poser des questions
de nature informatique, comme par exemple d’´ecrire un programme pour d´ecider si
une s´equence de 0 et de 1 donn´ee est dans ce langage de taille infini.