Partager cette page :

Programme de l'option informatique de l'agrégation de mathématiques

1- Algorithmique fondamentale

Cette partie insiste sur les notions de preuve et de complexité des algorithmes. Elle est relativement indépendante de tout langage de programmation, mais le candidat doit être capable de mettre en oeuvre sur machine les structures de données et les algorithmes étudiés.
  1. Structures de données. Types abstraits : définition des tableaux, listes, piles, files, arbres, graphes (orientés et non orientés), ensembles, dictionnaires, file de priorité. Interface abstraite et implantation (implémentation) concrète.
  2. Schémas algorithmiques classiques : approche gloutonne, diviser pour régner, programmation dynamique. Exemples : algorithme de Dijkstra, tri-fusion, plus longue sous-séquence commune.
  3. Complexité. Analyse des algorithmes : relations de comparaison O, et . Analyse dans le pire cas. Exemple d'analyse en moyenne : recherche d'un élément dans un tableau.
  4. Preuve d'algorithmes : correction, terminaison. Méthodes de base : assertions, pré-post conditions, invariants et variants de boucles, logique de Hoare, induction structurelle.
  5. Algorithmes de tri et de recherche. Méthodes de tri par comparaison (tri-fusion, tri-tas, tri rapide), arbre de décision et borne inférieure du tri par comparaisons. Méthodes de recherche séquentielle et dichotomique. Arbres binaires de recherche. Arbres équilibrés : définition, relation entre la taille et la hauteur, maintien de l'équilibre.
  6. Algorithmes de graphes. Parcours de graphes : algorithmes de parcours en largeur, en profondeur, algorithme de Dijkstra. Arbres couvrants : algorithmes de Prim et de Kruskal. Fermeture transitive.

Références

  • Introduction à l'algorithmique, T. H. Cormen, C. E. Leiserson, R. L. Rivest, Dunod.
  • Algorithms, R. Sedgewick, Addison-Wesley.
  • Éléments d'algorithmique, D. Beauquier, J. Berstel, Ph. Chrétienne, Masson.
  • Types de données et algorithmes, C. Froidevaux, M.-C. Gaudel, M. Soria, McGraw-Hill-InterEditions.

2- Automates et langages

  1. Automates finis. Langages reconnaissables. Lemme d'itération. Existence de langages non reconnaissables. Automates complets. Automates déterministes. Algorithme de déterminisation. Propriétés de clôture des langages reconnaissables.
  2. Expressions rationnelles. Langages rationnels. Théorème de Kleene.
  3. Automate minimal. Résiduel d'un langage par un mot. Algorithme de minimisation.
  4. Utilisation des automates finis : recherche de motifs, analyse lexicale.
  5. Langages algébriques. Lemme d'Ogden. Existence de langages non algébriques. Grammaires algébriques. Propriétés de clôture des langages algébriques.
  6. Automates à pile. Langages reconnaissables par automates à pile.
  7. Utilisation des automates à pile : analyse syntaxique. Grammaires LL(1).

Références

  • Cours et exercices d'informatique, L. Albert, Vuibert.
  • Théorie des langages et des automates, J.-M. Autebert, Masson.
  • Eléments d'algorithmique, D. Beauquier, J. Berstel et Ph. Chrétienne, Masson.
  • Introduction to Automata Theory, Languages and Computation, J. Hopcroft et J. Ullman, Addison-Wesley.
  • Semigroups and combinatorial applications, G. Lallement, Wiley and sons.
  • Combinatorics on Words, Encycopledia of Mathematics, Lothaire, Addison-Wesley.

3- Calculabilité, décidabilité et complexité

  1. Définition des fonctions primitives récursives ; schémas primitifs (minimisation bornée). Définition des fonctions récursives ; fonction d'Ackerman.
  2. Définitions des machines de Turing. Équivalence entre classes de machines (exemples :  nombre de rubans, alphabet). Équivalence avec les fonctions récursives.
  3. Universalité. décidabilité, Indécidabilité. Théorème de l'arrêt. Théorème de Rice. Réduction de Turing. Définitions et caractérisations des ensembles récursifs, récursivement énumérables.
  4. Complexité en temps et en espace : classe P. Machines de Turing non déterministes :  classe NP. Acceptation par certificat. Réduction polynomiale. NP-complétude.  Théorème de Cook.

Références

  • Complexité et décidabilité, J.-M. Autebert, Masson.
  • Logique mathématique 2. Fonctions récursives, théorème de Gödel, théorie des ensembles, théorie des modèles, R. Cori et D. Lascar, Dunod.
  • Complexité et décidabilité, P. Dehornoy, Springer.
  • Mathématiques de l'informatique, P. Dehornoy, Dunod.

4- Logique et démonstration

  1. Calcul propositionnel : syntaxe et sémantique. Tables de vérité, tautologies, formes normales, forme clausale. Théorème de complétude du calcul propositionnel.
  2. Logique du premier ordre : aspects syntaxiques. Langages, termes, formules. Variables libres et variables liées, substitutions, capture de variables.
  3. Réécriture : filtrage syntaxique du premier ordre, définition de l'unification syntaxique. Confluence, confluence locale, formes normales, paires critiques, lemme de Newman, algorithme de complétion de Knuth-Bendix.
  4. Logique du premier ordre : systèmes formels de preuve. Calcul des séquents, déduction naturelle. Algorithme d'unification des termes. Preuves par résolution.
  5. Logique du premier ordre : aspects sémantiques. Interprétation d'une formule dans un modèle. Validité, satisfiabilité. Théories cohérentes, théories complètes. Théories décidables, indécidables. Exemples de théories : égalité, arithmétique de Peano. Théorème de complétude du calcul des prédicats du premier ordre.

Références

  • Logique, réduction, résolution, R. Lallement, Masson.
  • Introduction à la logique : théorie de la démonstration, R. David, K. Nour et C. Raffalli, Dunod.

Mise à jour le 3 septembre 2010