Syllabus ACA
Syllabus ACA
******* ********
Paix-Travail-Patrie Peace-Work-Fatherland
******* ********
MINISTERE DE L’ENSEIGNEMENT SUPERIEUR MINISTRY OF HIGHER EDUCATION
******* *******
UNIVERSITE DE MAROUA BP/ P.O Box: 46 Maroua THE UNIVERSITY OF MAROUA
******* Tel /Phone: 222 292710 Fax 222 295012 *******
Rectorat@~univ-maroua.cm
FACULTÉ DES SCIENCES FACULTY OF SCIENCE
******* *******
BP/ P.O Box: 814 Maroua Email : [email protected]
Tel /Phone: 222 29 27 10 http://www.fs.univ-maroua.cm
https://www.facebook.com/fsmaroua https://www.facebook.com/fsmaroua
DEPARTEMENT DE MATHEMATIQUES- DEPARTMENT OF MATHEMATICS
INFORMATIQUE AND COMPUTER SCIENCE
I. Objectifs du cours
Chapitre 1. Introduction
1.1 Qu’est-ce qu’un algorithme ?
1.2. Principes de base de la résolution algorithmique des problèmes
1.2.1 Comprendre le problème
1.2.2 Vérifier les capacités des moyens informatiques
1.2.3 Choisir entre une solution approchée ou exacte
1.2.4 Choisir les structures de données appropriées
1.2.5 Techniques de conception des algorithmes
1.2.6 Méthodes de description des algorithmes
1.2.7 Vérification de la correction d’un algorithme
1.2.8 Analyse des algorithmes
1.2.9 Codage des algorithmes
1.3 Les principaux types de problèmes
1.3.1 Problèmes de tri
1.3.2 Problèmes de recherche
1.3.3 Problèmes de traitement des chaînes
1.3.4 Problèmes sur les graphes
1.3.5 Problèmes combinatoires
1.3.6 Problèmes géométriques
1.3.7 Problèmes numériques
1.4 Les structures de données fondamentales
1.4.1 Les structures de données linéaires
1.4.2 Les graphes
1.4.3 Les arbres
1.4.4 Les ensembles et les dictionnaires
Chapitre 2. Principes de base de l’analyse des algorithmes
2.1 Cadre d’analyse
2.1.1 Mesure de la taille des entrées
2.1.2 Unités de mesure du temps d’exécution
2.1.3 Ordre de croissance
2.1.4 Efficacité au pire, au mieux et en moyenne
2.1.5 Récapitulation du cadre d’analyse
2.2 Notations asymptotiques et classes d’efficacité de base
2.2.1 Introduction informelle
2.2.2 Propriétés utiles concernant les notations asymptotiques
2.2.3 Utilisation des limites pour comparer les ordres de croissance
2.2.4 Classes d’efficacité de base
2.3 Analyse mathématiques des algorithmes non récursifs
2.4 Analyse mathématique des algorithmes récursifs
2.5 Exemple : Nombres de Fibonacci
2.5.1 Formule explicite du nième nombre de Fibonacci
2.5.2 Algorithmes pour calculer les nombres de Fibonacci
2.6 Analyse empirique des algorithmes
Chapitre 3. La force brute
3.1 Le tri par sélection et le tri par échanges
3.1.2 Le tri par sélection
3.1.2 Le tri par échanges
3.2 Recherche séquentielle et reconnaissance des chaînes
3.2.1 Recherche séquentielle
3.2.2 Reconnaissance des chaînes par la force brute
3.3 Problèmes de la paire la plus proche et de la couverture convexe
3.3.1 Le problème de la paire la plus proche
3.3.2 Le problème de la couverture convexe
3.4 Recherche exhaustive
3.4.1 Le problème du voyageur de commerce
3.4.2 Le problème du sac à dos
3.4.3 Le problème d’affectation
Chapitre 4. Diviser-pour-Régner
4.1 Le tri par fusion
4.2 Le tri rapide (Quicksort)
4.3 La recherche dichotomique
4.4 Parcours des arbres binaires et propriétés associées
4.5 Multiplication de grands entiers et multiplication des matrices de Strassen
4.5.1 Multiplication de grands entiers
4.5.2 La multiplication des matrices selon Strassen
4.6 Problèmes de la paire la plus proche et de la couverture convexe
4.6.1 Problème de la paire la plus proche
4.6.2 Le problème de la couverture convexe
Chapitre 5. Diminuer-pour-Régner
5.1 Le tri par insertion
5.2 Recherche en profondeur d’abord et Recherche en largeur d’abord
5.2.1 La recherche en profondeur d’abord
5.2.2 La recherche en largeur d’abord
5.3 Le tri topologique
5.4 Algorithmes de génération des objets combinatoires
5.4.1 Génération des permutations
5.4.2 Génération des sous-ensembles
5.5 Decrease-by-a-Constant-Factor Algorithms
5.5.1 Le problème de la fausse pièce de monnaie
5.6 Algorithmes de diminution de la taille de la variable
5.6.1 Calcul de la médiane et Problème de la sélection
5.6.2 La recherche par interpolation
5.6.3 Recherche et insertion dans un arbre binaire de recherche
Chapitre 6. Transformer-pour-Régner
6.1 Le tri préalable
6.2 Elimination de Gauss
6.2.1 La décomposition LU et autres applications
6.2.2 Calcul de l’inverse d’une matrice
6.2.3 Calcul du déterminant
6.3 Arbres de recherche équilibrés
6.3.1 Les arbres AVL
6.3.2 Les 2-3 arbres
6.4 Heaps and Heapsort
6.4.1 Notion de heap
6.4.2 Le Heapsort
6.5 Règle de Horner et Exponentiation binaire
6.5.1 Règle de Horner
6.5.2 Exponentiation binaire
6.6 Réduction de problème
6.6.1 Calcul du plus petit multiple commun
6.6.2 Dénombrement des chemins dans un graphe
6.6.3 Réduction aux problèmes de graphes
Chapitre 7. Programmation dynamique
7.1 Calcul des coefficients binomiaux
7.2 Algorithmes de Warshall et de Floyd
7.2.1 L’algorithme de Warshall
7.2.2 L’algorithme de Floyd
7.3 Arbres de recherche binaires optimaux
7.4 Problème du sac à dos et fonctions mémoires
7.4.1 Les fonctions mémoire
Chapitre 8. Limites de la puissance des algorithmes
8.1 Arguments de la borne inférieure
8.1.1 Bornes inférieures triviales
8.1.2 Arguments de l’information théorique
8.1.2 Arguments contradictoires
8.1.3 Réduction de problème
8.2 Arbres de décision
8.2.1 Arbres de décision pour des algorithmes de tri
8.2.2 Arbres binaires pour la recherche dans un vecteur trié
8.3 Problèmes P, NP et NP-complets
. 8.3.1 Problèmes P et NP
8.3.2 Problèmes NP complets
Bibliographie
1. Alfred Aho, Jeffrey Ullman : Concepts fondamentaux de l'informatique, Dunod,
1993
2. Thomas Cormen, Charles Leiserson, Ronald Rivest : Introduction to algorithms,
MIT press 1990
3. Kolyang : Analyse et conception des algorithmes, Polycope, Ka'arang, 2002-
2014.
4. Sara Baase, Allen van Gelder: Computer algorithms: introduction to design and
Analysis, Addison Wesley, 2000.