TITRE DESSOUS
TITRE DESSUS
TITRE DESSOUS
TITRE DESSUS
TITRE DESSOUS
TITRE DESSUS
TITRE DESSOUS
TITRE DESSUS
TITRE DESSOUS
TITRE DESSUS
TITRE DESSOUS
TITRE DESSUS
24, rue Salomon de Rothschild - 92288 Suresnes - FRANCE
Tél. : +33 (0)1 57 32 87 00 / Fax : +33 (0)1 57 32 87 87
Web : www.carrenoir.com
CentraleSupelec
XXX_13_0000_Logo
13/06/2013
INFORMATION
FILET TECHNIQUE DE CONSTRUCTION
COUPE
OPTION STRUCTURE GRAPHIQUE BASSE
OPTION STRUCTURE GRAPHIQUE HAUTE
TEINTE À DÉFINIR
Ce fichier est un document d’ecution cé sur
Illustrator version CS3.
Mardi 1er décembre 2015
14h00 – 17h00
Contrôle Final
IS1210 Algorithmes.
Tous documents autorisés. Calculatrice autorisée.
Cet examen comprend 21 pages et son barème est sur 100 points.
Nom : Prénom :
Avant Propos
Il est conseillé de lire l’examen en entier avant de commencer (les exercices sont indépendants les uns
des autres).
Par défaut, vous êtes invités à répondre directement sur le sujet, dans l’espace prévu entre deux ques-
tions. Exceptionnellement, si l’espace manque, utilisez les dernières pages blanches de l’énoncé en re-
portant soigneusement le numéro de la question. Les pages supplémentaires sont numérotées de 1 à 4 :
veuillez, le cas échéant, indiquer soigneusement à l’emplacement initial de la question vers quelle page
le correcteur doit se reporter (par exemple, à la Question 1.1, écrire «voir solution page sup. n˚1»)
Il sera tenu compte du soin de la présentation, et tout particulièrement de la qualité de la description
des algorithmes.
Pseudocode et Python
Vous pouvez exprimer les algorithmes en pseudocode avec les conventions rappelées ci-dessous. Vous
pouvez également utiliser les constructions similaires de Python, à l’exclusion de toute bibliothèque non-
standard.
l’indentation est utilisée pour indiquer la structure de bloc (comme en Python, pas de begin..end
ou autres marqueurs),
les types connus sont les booléens, les nombres entiers, les nombres flottants et les caractères
les expressions admises sont composées de :
and, or, not pour les booléens
+, -, *, /, « et » (décalage à droite et à gauche) pour les entiers
+, -, *, / pour les flottants
les variables admises sont de 3 natures différentes :
scalaires : elles sont d’un type de base connu
vectorielles : ce sont des vecteurs d’éléments qui sont tous du même type connu et indicés sur
un intervalle [0.. n-1]. On utilisera la notation A[p..q] pour désigner le sous-ensemble du
tableau A qui commence à l’indice p et se termine à l’indice q compris.
composées : dans ce cas la variable possède plusieurs propriétés qui sont elles-mêmes d’un
type connu. On utilisera A.length pour se référer à la propriété d’un objet. Exemple :
une variable pde type personne peut posséder une propriété age de type entier que l’on
notera p.age.
une variable nde type noeud peut posséder deux propriétés de type noeud que l’on notera
n.filsGauche et n.filsDroit qui désigneront d’autres noeuds.
la conditionnelle if boolExpr then expr1 else expr2
l’instruction de boucle définie for i ← depart to arrivee (to ou downto si arrivee est infé-
rieure à départ)
l’instruction de boucle définie for e in collection (collection pouvant être toute collection
finie de données : tableau, liste, clés d’un dictionnaire, ensemble)
l’instruction de boucle indéfinie while
l’appel de fonction
les paramètres sont passés par valeur pour les types scalaires, tous les autres sont passés par
référence. Une référence qui ne réfère à aucun objet prend la valeur NIL (équivalent à None en
Python),
les commentaires sont introduits par #c,
les opérateurs booléens and et or sont court-circuitants.
Vous avez le droit d’utiliser les structures de données : tableau (liste en Python), liste chaînée, pile,
file, file de priorité, dictionnaire, ensemble sans les redéfinir et en vous appuyant sur la signature des
opérations données dans le cours.
– 2 –
Complexité
Pour chacun des algorithmes suivants, déterminer sa complexité asymptotique. Pour le quatrième
algorithme, vous devez de plus indiquer ce qu’il produit en sortie. Les données en entrée sont :
nun entier naturel pour A1(),A2() et A3()
nun entier naturel et A[0..m-1] avec 𝑚 𝑛 pour A4()
On rappelle que l’opérateur n%mcalcule le reste de la division de npar m.
Question 1 (2 points)
Algorithme A1 :
function A1(n)
c←0
i←1
while i<n
j←n
while j>0
c←c+1
j←j-10
i←i*2
return c
Question 2 (2 points)
Algorithme A2 :
function A2(n):
if n>2
return 1 + A2(n-3)
return 1
– 3 –
Question 3 (2 points)
Algorithme A3 :
function A3(n)
if n>1
return 1 + A3(n-2)*A3(n-2)
return 0
Question 4 (4 points)
Algorithme A4 :
function A4(A, n)
if n=1
print(A)
else
for i←0to n-1do
A4(A, n-1)
if n%2=1
permuter A[0] et A[n-1]
else
permuter A[i] et A[n-1]
– 4 –
Arbres de Huffman
La chaîne binaire ci-dessous encode le titre d’une chanson en utilisant les codes de Huffman :
0101010001111100100110011010101010001111100100111
Question 1 (6 points)
Étant donné la table ci-dessous des fréquences des lettres, construire l’arbre de Huffman.
lettre : ’-’ ’a’ ’o’ ’l’ ’d’ ’b’ ’ ’ ’i’
fréquence : 4 3 2 2 2 2 1 1
Le symbole désigne un espace.
En cas d’égalité des priorités, les noeuds sont pris dans l’ordre où ils sont fournis dans le tableau. Les
noeuds que vous ajoutez sont insérés après les noeuds de priorité identique. Donnez les étapes de
construction des codes de Huffman.
– 5 –
1 / 25 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 !