• Aucun résultat trouvé

Programmation avanc´ee Examen ´ecrit, 18 aoˆut 2015

N/A
N/A
Protected

Academic year: 2022

Partager "Programmation avanc´ee Examen ´ecrit, 18 aoˆut 2015"

Copied!
3
0
0

Texte intégral

(1)

Programmation avanc´ ee Examen ´ecrit, 18 aoˆ ut 2015

Livres ferm´es. Dur´ee : 3h30.

Remarques

— R´epondez `a chaque question sur une feuille s´epar´ee, sur laquelle figurent votre nom et votre section.

— Soyez bref et concis, mais pr´ecis.

— Sauf mention explicite, toutes les complexit´es sont `a d´ecrire par rapport au temps d’ex´ecution des op´erations concern´ees. Soyez toujours le plus pr´ecis possible dans le choix de votre notation (Ω,O ou Θ).

Question 1 : Vrai ou faux

Pour chacune des affirmations suivantes, d´eterminez si elle est vraie ou fausse et justifiez bri`evement votre choix :

(a) 7log2N estO(N3+N2).

(b) Pour un ensemble de valeurs donn´ees, il existe un unique tas max.

(c) Un arbre binaire complet qui poss`edekfeuilles a une profondeur Θ(log2k).

(d) Il est impossible de construire un arbre binaire de recherche `a partir d’un tableau quel- conque contenant N cl´es en Θ(N) op´erations.

(e) Il est impossible de r´epondre `a l’interface d’une file avec une liste simplement li´ee.

Question 2 : Tri

(a) Adaptez le pseudo-code du tri par fusion pour trier une liste simplement li´ee.

Vous pouvez supposer que votre fonction de tri prend en argument directement un pointeur xvers le premi`ere ´el´ement de la liste `a trier et la taille N de cette liste et que la liste est impl´ement´ee comme vu au cours (avec pour chaque ´el´ement de listexla cl´e `a trier not´eex.key et un pointeur vers l’´el´ement suivant not´e x.next). La fonction devra renvoyer un pointeur vers le premier ´el´ement de la liste tri´ee. La liste de d´epart ne doit pas ˆetre pr´eserv´ee. Pour obtenir tous les points de cette question, votre fonction ne doit pas avoir besoin de cr´eer d’espace m´emoire suppl´ementaire (si ce n’est implicitement pour les appels r´ecursifs) et ne doit pas modifier les valeurs de l’attribut x.key des

´

el´ements de liste.

(b) Analysez la complexit´e de votre algorithme dans le pire et le meilleur cas.

1

(2)

Question 3 : Analyse de complexit´ e

Soit la fonction suivante :

Algo(n) 1 if n= = 1 2 return0 3 else

4 j= 0

5 i= 1

6 whilei < n

7 j=j+ 1

8 i= 2i

9 return2∗ Algo(n2) +Algo(n2) +Algo(n2) + 2j

En supposant que cette fonction prend toujours une puissance de 2 comme argument : (a) Donnez une forme analytique ´equivalente `a cette fonction.

(b) Donnez une borne asymptotique sur sa complexit´e en temps (Suggestion : Exprimez cette complexit´e sous la forme d’une r´ecurrence et r´esolvez la au moyen du Master theorem)

Question 4 : Table de hachage

Soit une famille de tables de hachageT de capacit´es initiales dem = 2p pour un certain entierp, doublant de taille lorsque son facteur de charge atteint 75% et o`u les collisions sont g´er´ees par sondage ouvert avec la fonction

h(k, i) =

k+1

2(i+i2)

mod m

(a) D´ecrivez dans le formalisme de votre choix les fonctions d’insertion et de recherche dans cette table de hachage (en ne prenant pas en compte le redimensionnement de la table).

(b) Illustrez l’´evolution d’une telle table de hachage T ∈ T avec une capacit´e initiale de 4 au fil de l’insertion des cl´es [2,8,6,9,1,3,7].

(c) Comparez les arbres binaires de recherche et les tables de hachage en ´enum´erant leurs avantages et d´efauts respectifs.

2

(3)

Question 5 : R´ esolution de probl` eme

Soient n maisons plac´ees en ligne, chacune contenant des biens pour une certaine va- leur. Un voleur souhaite voler le maximum de valeurs dans ces maisons mais il ne souhaite cependant pas voler dans deux maisons trop proches pour ´eviter qu’une personne vol´ee ne pr´evienne ses voisins. On noterav[i] (i= 1, . . . , n) la valeur des biens `a voler dans la maisoni, d[i] (i= 1, . . . , n−1) la distance entre les maisonsieti+ 1, etdth la distance minimale entre deux maisons qui peuvent ˆetre vol´ees simultan´ement. Les maisonsietj, avec 1≤i < j≤n, ne peuvent pas ˆetre vol´ees simultan´ement siPj−1

l=i d[l]≤dth.

(a) Ecrivez un algorithme efficace bas´e sur laprogrammation dynamiquepour d´eterminer la valeur maximale totale, not´eeM[n], que le voleur peut d´erober sur lesnmaisons ´etant donn´e la valeurdth. Proc´edez en deux ´etapes :

— Donnez une formulation r´ecursive de M[n].

— En d´eduire le pseudo-code d’un algorithme efficace pour calculerM[n].

(b) Analysez la complexit´e de cet algorithme en fonction du nombre de maisons n.

3

Références

Documents relatifs

On souhaite ranger ces objets dans des boˆıtes en utilisant le minimum de boˆıtes possibles, sachant que chaque boˆıte est de taille unitaire : chaque boˆıte peut contenir

Loïc BONIFACIO (Ingénieur ESTACA), Sigrid CLAVIERAS (Ingénieure SUPAERO, Union des transports publics et ferroviaires, Membre du collectif SUPAERO-DECARBO), Maxime EFOUI-HESS

— En suivant l’organisation d´ ecrite ci-dessus, la compilation des sources d’une s´ eance de TP peut se faire avec la commande suivante, en se pla¸ cant ` a la racine de

R´ ealiser en Swing un formulaire comprenant un champ de saisie, un bouton et une plage de texte (pour afficher la r´ eponse ` a la question). Utilisez un (ou plusieurs, si

dans le cas d’un mono-processeur/coeur, c’est le Thread demandeur qui ex´ ecute le code qui est actif. sinon, le temps de r´ ecup´ erer le bool´ een d’un (imaginaire) isActif(),

(c) Ecrivez une fonction getLCA(T, x, y) renvoyant l’ancˆ etre commun le plus proche des deux nœuds x et y dans un arbre binaire de recherche T.. L’ancˆ etre commun le plus proche

— L’algorithme A qui divise le probl` eme en 4 sous-probl` emes de taille n/2, r´ esoud r´ ecursivement chacun des sous-probl` emes, puis combine leurs solutions en utilisant n

— Sinon, s’il reste au moins 4 jours et s’il y a plus de 3 jours de beau temps parmi les 4 premiers jours, prendre un pack de 4 jours.. — Sinon, s’il reste au moins deux jours