Année universitaire 2014/2015
Site : Luminy St-Charles St-Jérôme Cht-Gombert Aix-Montperrin Aubagne-SATIS
Sujet de : 1er semestre 2ème semestre Session 2 Durée de l’épreuve : 2h
Examen de : L2 Nom du diplôme : Licence d’Informatique
Code du module : SIN3U1 Libellé du module : Algorithmique
Calculatrices autorisées : NON Documents autorisés : OUI, polys et notes de Cours/TD/TP
Dans tout ce qui suit vous utiliserez les notations O(f(n)) et Θ(f(n)) pour décrire le comportement asymp-
totique d’un algorithme (sa complexité).
Arbres binaires d’intervalles.
Un arbre binaire d’intervalles est un arbre binaire dont les noeuds contiennent des intervalles (et non pas de
simples valeurs numériques). Etant donné un noeud p, on note inf (p)et sup(p)les bornes de l’intervalle du
noeud p, et f ilsg(p)et f ilsd(p)respectivement le fils gauche et le fils droit du noeud p. Les noeuds sont
organisés dans l’arbre de façon similaire à un arbre binaire de recherche classique : les intervalles figurant
dans le fils gauche du noeud pont des bornes inf qui sont plus petites ou égales à inf (p), et les intervalles
figurant dans son fils droit ont des bornes inf qui sont strictement plus grandes que inf (p). Les bornes sup
des intervalles n’interviennent donc pas dans la structure de l’arbre.
Le problème qui nous intéresse est de déterminer, pour une valeur xdonnée, s’il existe des intervalles dans
l’arbre qui contiennent x, c’est-à-dire s’il existe un noeud ptel que inf (p)xsup(p). Pour traiter ce
problème de manière efficace il est utile d’ajouter dans chaque noeud pla valeur maximale des bornes sup des
intervalles figurant dans l’arbre enraciné en p, notée max(p).
Question 1. Construisez l’arbre binaire de recherche correspondant aux insertions des intervalles (19, 22),
(27, 31), (33, 34), (10, 12), (25, 28), (3, 11), (14, 16), et (12, 17) dans cet ordre, partant d’un arbre vide.
Indiquez au-dessus de chaque noeud pla valeur max(p).
Soit pun noeud d’un arbre donné, et xune valeur qui n’appartient pas à l’intervalle [inf (p), sup(p)].
Question 2. Si x > max(f ilsg(p)) est-il utile de chercher xdans le fils gauche de p? Justifiez votre réponse.
Question 3. Supposons maintenant que xmax(f ilsg(p)) et qu’il existe un intervalle de l’arbre enraciné
en pqui contient x. Montrez qu’alors il existe un intervalle de f ilsg(p)qui contient x.
Question 4. En utilisant les propriétés introduites dans les questions 2 et 3, décrivez un algorithme qui, étant
donnés un arbre aet une valeur x, détermine si il existe un intervalle de aqui contient x. Cet algorithme ne
devra parcourir qu’une seule branche de l’arbre.
Graphes.
Un graphe orienté pondéré Gest donné par la matrice d’incidence suivante, où les sommets du graphe sont
numérotés de 1 à 7 et où il existe un arc du sommet s1vers le sommet s2si et seulement si la case située à
l’intersection de la ligne s1et de la colonne s2contient un entier, égal au poids de l’arc (s1, s2).
1 2 3 4 5 6 7
1 2 20 8
2 11
3 20 10 5
4 3
5 10 4
6 4
7 4 13
Question 1. Dessinez le graphe G.
Question 2. Calculez, au moyen de l’algorithme de Dijsktra, les distances des plus courts chemins allant du
sommet 1à tous les autres sommets du graphe. Donnez toutes les étapes de l’algorithme.
Question 3. Quel est le plus court chemin permettant d’aller du sommet 1au sommet 2?
Programmation dynamique
On dit qu’une suite d’entiers u0, u1,...,unest à variation bornée par l’entier ksi pour tout indice i[0, n1],
|uiui+1| ≤ k.
Par exemple, la suite
0,2,2,1,4,0,1,6,7,0,6,8,1,9,7,1
a une variation bornée par 8 car le plus grand écart entre 2 termes consécutifs est égal à 8 : entre 1 et 9, ou
entre 7 et -1. La sous-suite 0,2,1,0,1,0,1,1a une variation bornée par 2.
Étant donnés une suite u= (u0, u1,...,un)et un entier k, on souhaite extraire de uune plus longue sous-suite
ui1,...,uihà variation bornée par k, i1< i2<··· < ih.
Question 1 : Dans l’exemple ci-dessus, quelle est la plus longue sous-suite à variation bornée par k, pour
k= 0,k= 1 et k= 2 ?
On définit fk(i)comme étant égal à la longueur maximale d’une sous-suite extraite de u, à variation bornée
par ket se terminant par ui.
Question 2 : Donnez les valeurs de f5(i)calculées sur la suite précédente pour i= 0,...,15.
Question 3 : Pour tout entier i[1, n], exprimez fk(i)en fonction de {fk(j)|0j < i}.
Soit skla longueur maximale d’une sous-suite extraite de uà variation bornée par k.
Question 4 : Exprimez sken fonction de {fk(j)|0jn}.
Question 5 : Écrivez en C le programme qui prend en entrée une suite u= (u0, u1,...,un)stockée dans un
tableau, et un entier ket retourne sk.
1 / 2 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 !