INFO-0027-1 2009–2010 (2`eme session) — Examen ´ecrit
Universit´e de Li`ege
Question 1 (30 points).Complexit´e algorithmique
A. Indiquez s’il est possible de r´esoudre les probl`emes suivants en temps lin´eaire dans le pire des cas (c-`a-d. en
temps O(N) pour tout probl`eme dont la repr´esentation a une taille N). Pour chaque tˆache, choisir une des deux
r´eponses suivantes : oui, ou non.
1. Enum´erer, de la plus petite `a la plus grande, les clefs stock´ees dans un arbre de recherche binaire.
2. Dans un graphe non-oriene, trouver tous les noeuds accessibles `a partir d’un noeud source donn´e.
3. Dans un graphe oriene, d´eterminer s’il existe un cycle.
4. Dans un graphe pond´er´e non-oriene, d´eterminer l’arbre couvrant minimal (“minimum spanning tree”).
5. Dans un graphe pond´er´e oriene `a pond´erations positives (dans R+), trouver le chemin le plus court entre
un noeud source et un noeud cible donn´es.
6. Dans un graphe pond´er´e orient´e `a pond´erations r´eelles (dans R), trouver le chemin le plus court entre un
noeud source et un noeud cible donn´es.
7. Rechercher dans une chaˆıne sla pr´esence d’une sous-chaˆıne s0, la taille Ndu probl`eme ´etant d´efinie comme
la somme des longueurs de set s0.
8. Encoder (compresser) une chaˆıne sen une chaˆıne tpar l’algorithme de compression LZW, la taille Ndu
probl`eme ´etant la longueur de la chaˆıne d’entr´ee s.
9. D´ecoder (d´ecompresser) une chaˆıne ten une chaˆıne spar l’algorithme de d´ecompression LZW, la taille N
du probl`eme ´etant la longueur de la chaˆıne d’entr´ee t.
B. Pour chacune des tˆaches num´erot´ees dans la premi`ere liste ci-dessous, indiquer le temps asymptotique
d’ex´ecution qui lui correspond le mieux, parmi ceux de la seconde liste.
Liste de tˆaches :
1. Rechercher la plus grande clef dans un arbre de recherche binaire (“binary search tree”) `a Nclefs.
2. Retirer la plus grande clef dans un arbre de recherche binaire (“binary search tree”) `a Nclefs.
3. Rechercher la plus grande clef dans un arbre rouge-noir (“red-black tree”) `a Nclefs.
4. Retirer la plus grande clef dans un arbre rouge-noir (“red-black tree”) `a Nclefs.
5. D´eterminer s’il existe un chemin d’un noeud source `a un noeud cible donn´es, dans un graphe orient´e
contenant Nnoeuds sans restriction suppl´ementaire sur le nombre d’arcs.
6. D´eterminer si deux noeuds appartiennent `a la mˆeme composante connexe forte (“strong connected compo-
nent”), dans un graphe orient´e contenant Nnoeuds sans restriction suppl´ementaire sur le nombre d’arcs.
Pour chaque tˆache, choisir la meilleure parmi les dix r´eponses possibles :
O(1), strict ou amorti ;
O(log N), strict ou amorti ;
O(N), strict ou amorti ;
O(Nlog N) strict ou amorti.
O(N2) strict ou amorti.
1
Question 2 (20 points).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
B. Construisez l’automate fini non-d´eterministe (NFA) reconnaissant le language d´ecrit par l’expression r´eguli`ere
(ab*(c|d*)*)*e”. Utilisez la m´ethode syst´ematique vue au cours pour construire votre automate, que vous
repr´esenterez sous forme d’un diagramme.
C. Construisez un automate fini non-d´eterministe (NFA), comme au point B., pour reconnaˆıtre la sous-chaˆıne
abacabac”, comme au point A. Expliquez comment localiser cette sous-chaˆıne en utilisant votre NFA.
Question 7 (20 points).Compression sans perte
A. Soit l’alphabet Σ = {a,b,c,d,e,f,g,h}. Une analyse de la fr´equence d’apparition des diff´erents symboles
de Σ dans un texte donn´e a fourni le r´esultat suivant :
caract`ere fr´equence
a 1
b 1
c 2
d 3
e 5
f 8
g 13
h 21
Construisez un code de Huffman optimal sur base de ce tableau de fr´equences. Votre r´eponse doit comporter les
´el´ements suivants :
1. le trie de Huffman que vous aurez construit ;
2. le code binaire que vous aurez d´eduit de ce trie.
B. Dans cette sous-question il faut appliquer l’algorithme de compression Lempel-Ziv-Welch (LZW) tel que vu
au cours pour compresser des chaˆınes de caract`eres d´efinies sur un alphabet d’entr´ee Σin ={a,b,c}.
1. Compresser la chaˆıne “ababababa” selon la m´ethode L-Z-W.
2. Compresser la chaˆıne “abcbabcba” selon la m´ethode L-Z-W.
Attention : pour que le r´esultat de la compression soit bien d´efini et non ambig¨u, les symboles de code de sortie
seront obligatoirement pris dans l’alphabet des lettres majuscules Σcode ={A, B, C, D, E, F, G, H, I, J, K, L}.
Ces symboles de codes seront assign´es dans l’ordre naturel aussi bien lors de l’initialisation et de la construction
incr´ementale de la table de codage L-Z-W. Cette derni`ere sera donc initialis´ee au d´emarrage de l’algorithme de
(d´e)compression de la fa¸con suivante :
symbole de code sous-chaˆıne correspondante
Aa
Bb
Cc
Dprochaine assignation
E
F
G
H
I
J
K
L
Pour chacune des deux chaˆınes `a compresser, montrez l’´etat de la table de codage LZW `a la fin de la compression.
Bon travail !
3
1 / 3 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !