• Aucun résultat trouvé

quick 1

N/A
N/A
Protected

Academic year: 2022

Partager "quick 1"

Copied!
2
0
0

Texte intégral

(1)

L3-INFO Algorithmique et Modélisation

Quick – 2 mars 2015 – durée 1 h

Sont interdits : les documents, les ordinateurs, les téléphones (incluant smartphone, tablettes,...

tout ce qui contient un dispositif électronique).

Seuls les dictionnaires papier pour les personnes de langue étrangère sont autorisés.

Il sera tenu compte de la qualité de la rédaction et de la clarté de la présentation.

Exercice 1 : Calcul du pic

On dispose d’un tableauT de taillen d’éléments comparables ayant un pic, c’est à dire qu’il existep∈ {1, . . . , n}tel que

T[1]< T[2]<· · ·< T[p]> T[p+ 1]>· · ·> T[n].

1. Proposer un algorithme naïf pour calculer la position du pic et calculer sa complexité.

2. Proposer un algorithme de type diviser pour régner pour calculer la position du pic et calculer sa complexité.

Exercice 2 : Opérations sur les ensembles

On se donne deux tableauxT etUde taillesnetm, on noteN = max{m, n}. On veut produire un tableauV contenant tous les éléments apparaissant dansT mais pas dansU.

1. Proposer un algorithme de coûtO(N2)pour effectuer cette opération.

2. On peut améliorer l’opération précédente en commençant par trier les tableaux, calculer la complexité d’une telle solution ?

3. Peut-on calculer le tableauV en coûtO(N)? Si oui, écrire l’algorithme.

(suite au verso)

(2)

Problème : Élément de rang k

On se donne un tableau T comprenantn éléments distincts. On appelle élément de rangk du tableauT, lekième plus grand élément du tableauT (l’élément de rang1est donc le plus petit élément du tableau tandis que l’élément de rangnest le plus grand élément du tableau).

1. Écrire un algorithme de complexitéO(n)qui calcule les éléments de rang 1et de rang n.

2. Écrire un algorithme naïf permettant de calculer l’élément de rang k, calculer la com- plexité de votre algorithme et, si ce n’est pas le cas, modifier votre algorithme pour obtenir une complexitéO(nlogn)dans le pire cas.

On rappelle l’algorithmequicksortrandomisé :

- Choisir un élément au hasard (uniformément) parmiT[1]. . . T[n]comme pivot

- Partitionner les éléments en plaçant les éléments plus petit que le pivot en début du tableau et les éléments plus grand que le pivot en fin de tableau.

- Appeler récursivementquicksortsur les deux sous-tableaux.

3. En s’inspirant de l’algorithme dequicksort, écrire un algorithme QuickSelect(T,k) qui calcule l’élément de rangk (indication :après avoir partitionné le tableau en deux, il facile de tester si l’élément de rangkest plus petit ou plus grand que le pivot. ) SoitC(n, k)le nombre moyen de comparaisons qu’effectueQuickselectpour trouver l’élé- ment de rangkd’un tableau de taillen

4. Montrer que (il est fortement suggéré de faire des dessins)

C(n, k) = (n−1) + 1 n

k−1

X

i=1

C(n−i, k−i) + 1 n

n

X

i=k+1

C(i, k)

On noteraM(n)et on admettra (question bonus) que

M(n)≤ 2 n

n−1

X

p=n/2

M(p) +O(n).

5. En déduire queM(n) = O(n).

Algorithmique 04/03/2015 2/ 2

Références

Documents relatifs

Tri des éléments du jeu de données par les distances dans l’ordre croissant Sélection des k voisins les plus proches : ce sont les k premiers éléments triés à

Remarque 1 : on écarte les nombres divisibles par 10 (appliquer 2 fois l’opération miroir à un nombre divisible par 10 ne redonne pas le nombre de départ).. Donc aucun des deux

C'est là une condition seulement nécessaire car deux voisins immédiats n'ont évidemment pas toujours le même nombre de chiffres.. Mais, pour k≥5, une autre

[r]

Il est temps de répondre aux questions. Ils forment une famille de rang 1, ce qui signifie qu’ils appartiennent tous à une même droite vectorielle. Je note C un vecteur directeur

Exercice 03 : Ecrire un algorithme qui demande un nombre de départ, et qui calcule sa

En déduire qu’un couplage de poids minimum sur les sommets de degré impair dans T est inférieur ou égal à la moitié du poids de C opt... Préambule : technique pour montrer

, 512, 1024 calculer l’erreur exacte pour chaque méthode et tracer sur un même graphique à double échelle logarithmique (n,