Programme de colles¶
Semaines du 27/01, du 03/02 et du 10/02¶
- Terminaison d'un algorithme, variant.
- Correction d'un algorithme, invariant.
- Complexité d'un algorithme, notation \(\mathcal{O}\). Complexité amortie.
- Types et opérateurs de base en C, boucles et structures de contrôle en C.
- Aspects fonctionnels et impératifs de Ocaml.
- Exemples d'études et d'implémentations d'algorithmes dans ces deux langages (exponentiation rapide, tri, crible, algorithme d'Euclide, \dots)
Semaines du 24/02, du 17/03 et du 24/03¶
-
Tableaux associatifs et hachage
Fonction de hachage, résolution des collisions par chaînage. Applications -
Bases de données
Langage sql requêtes sur une ou plusieurs tables. -
Arbres binaires
Définition, hauteur, taille, relation entre hauteur et taille (preuve). Implémentation en C et en OCaml. Parcours préfixe, infixe, suffixe et en largeur. Arbres binaires de recherche, caractérisation par le parcours infixe (preuve). File de priorité, tas binaire, ajout et de suppression d’un élément dans un tas, tri par tas. -
Stratégie algorithmiques : force brute, retour sur trace, algo glouton
Semaines du 07/04, du 14/04 et du 21/04¶
-
Terminaison de programmes
Relation d'ordre, ordre lexicographique et ordre produit sur un produit cartésien. Ensemble bien ordonnée définition par il n'existe pas de suite strictement décroissante, équivalence avec l'existence d'un élément minimal pour toute partie non vide. Application à la preuve de terminaison d'un programme. Exemples : fonction d'Ackermann , tri par épuisement des inversion. -
Ensembles inductifs
Définition inductive d'un ensemble, exemples. Preuve par induction structurelle. -
Décomposition en sous problèmes
Méthode diviser pour régner, résolution d'équation de complexité de la méthode diviser pour régner. Programmation dynamique : découpe maximale d'une barre, somme maximale d'un chemin dans une pyramide, rendu de monnaie, longueur de la plus longue sous séquence commune.