Question 2 (20 points).S´election d’algorithmes
Vous avez ´et´e engag´e pour concevoir un syst`eme de pilotage en temps r´eel pour un nouvel engin spatial.
Vous avez besoin d’y inclure une Table de Symbole de taille relativement importante (mais que l’on supposera
toujours born´ee par la m´emoire centrale). Cette table sera utilis´ee en lecture comme en ´ecriture, pour des acc`es
arbitraires. Tout ce que l’on vous a demand´e, c’est d’en “minimiser le temps d’acc`es”, sans plus de pr´ecision.
A. Si vous pouviez poser une courte question suppl´ementaire pour compl´eter ce cahier des charges, quelle
serait-elle ?
B. Pour chaque r´eponse possible `a votre question pos´ee en A., vers quel type de table de symboles vous
orienteriez-vous ?
Question 3 (20 points).Algorithmes de tri
Voici un tableau de caract`eres `a trier par ordre alphab´etique :
UNPETITTABLEAUATRIER
A. Selon l’algorithme de tri rapide de base (“quicksort” simple), montrez le r´esultat de la premi`ere application
du processus de partition.
Consignes : (1) proc´eder directement `a la partition sans faire de permutation al´eatoire initiale ; (2) utiliser le pre-
mier ´el´ement du tableau comme pivot ; (3) utiliser l’ordre alphab´etique croissant pour la fonction de comparaison ;
(4) veillez `a bien identifier le(s) sous-tableau(x) ´eventuel(s) fourni(s) `a ou aux appel(s) r´ecursif(s).
B. Montrez comment proc´ederait l’algorithme de tri par fusion (“mergesort”) r´ecursif pour trier ce tableau.
Pour ce faire, contentez-vous : (1) de construire l’entr´ee du premier double appel r´ecursif, (2) d’en montrer les
deux sous-tableaux qui en seront retourn´es, et (3) d’indiquer comment ces deux sous-tableaux seront ensuite
fusionn´es.
Question 4 (20 points).Tables de symboles
Pour un nouveau projet, vous avez besoin d’une table de symboles efficace et performante. Quel(s) algo-
rithme(s) pourriez-vous choisir et pourquoi (en quelques mots), dans les situations suivantes :
1. Table pr´econstruite au contenu statique, accessible en lecture seule ?
2. Table variable, sans effacement, avec peu d’´ecritures et beaucoup de lectures ?
3. Table variable, sans effacement, avec autant d’´ecritures que de lectures ?
4. Table variable, avec peu d’´ecritures et effacements, et beaucoup de lectures ?
5. Table variable, permettant de nombreux effacements, ´ecritures, et lectures ?
Question 5 (20 points).Graphes
A. Expliquez bri`evement le but de l’algorithme de Kruskal et son principe de fonctionnement.
B. Expliquez bri`evement le but de l’algorithme de Dijkstra et son principe de fonctionnement.
Question 6 (30 points).Recherche en chaˆıne
A. Construisez l’automate fini d´eterministe (DFA) permettant de reconnaˆıtre et localiser la sous-chaˆıne “abacabac”
dans toute chaine d´efinie sur l’alphabet {a,b,c,d}, selon la m´ethode Knuth-Morris-Pratt.
Votre r´eponse sera donn´ee sous la forme d’une table de transition telle que calcul´ee par la m´ethode KMP
(l’´etat 0 en sera l’´etat de d´epart, et l’´etat 8 l’´etat accepteur). Pour vous aider, vous pouvez aussi repr´esenter
votre automate sous forme graphique, mais ce n’est pas requis.
2