• Aucun résultat trouvé

Analyser le complexit´e de cet algorithme

N/A
N/A
Protected

Academic year: 2022

Partager "Analyser le complexit´e de cet algorithme"

Copied!
2
0
0

Texte intégral

(1)

BCPST Complexit´es d’algorithmes 2013-2014 Le but de ce TP est de travailler sur la complexit´e d’algorithmes souvent d´ej`a ´etudi´es.

Exercice 1 :

Cet exercice se fera uniquement sans ordinateur.

Dans cet exercice, L d´esigne une liste tri´ee de nombres et a un nombre.

(1) a. ´Ecrire un algorithme na¨ıf qui prend en arguments L et a et renvoie le plus petit indice i tel que L[i] =a.

b. Analyser le complexit´e de cet algorithme.

(2) a. ´Ecrire un algorithme plus rapide.

b. Analyser la complexit´e de celui-ci.

Exercice 2 :

Un probl`eme classique en informatique consiste `a rechercher, non pas une seule valeur, mais une s´equence de valeurs dans un tableau. Cela revient `a chercher une occurrence d’un tableau dans un autre ou, pour les chaˆınes de caract`eres, une occurrence d’un mot dans un texte.

On souhaite ´ecrire une fonction recherche mot qui, ´etant donn´es deux tableaux m et t, d´etermine la position de la premi`ere occurrence de m dans t, si elle existe, et renvoie non sinon. Ainsi, pour lest tableauxm= [1,2,3] ett= [2,1,4,1,2,6,1,2,3,7], recherche mot renvoie 6 :

[2, 1, 3, 1, 2, 6, 1, 2, 3, 7].

(1) ´Ecrire (sur papier) un algorithme r´epondant `a ce probl`eme.

(2) Montrer la terminaison et la validit´e de cet algorithme.

(3) Analyser la complexit´e de cet algorithme.

(4) Impl´ementer cet algorithme en Python.

(5) ´Evaluer le temps d’ex´ecution de cet algorithme avec diff´erentes listes. Est-ce coh´erent avec la complexit´e th´eorique ?

Exercice 3 :

On se donne l’algorithme suivant : def e t a p e b u l l e ( L ) :

e c h a n g e e f f e c t u e = F a l s e f o r i in r a n g e ( l e n ( L)−1 ) :

i f L [ i ] > L [ i + 1 ] : tmp = L [ i +1]

L [ i +1] = L [ i ] L [ i ] = tmp

e c h a n g e e f f e c t u e = True return e c h a n g e e f f e c t u e

(1) Tester la fonction echange effectue sur la liste L= [5,1,4,2,8].

(2) Quel est le but de celui-ci ?

(3) D´eterminer la complexit´e de cet algorithme.

(4) Tester cette fonction sur la liste L jusqu’`a ce qu’elle renvoie False.

(2)

BCPST Retour sur les manipulations de liste, Page 2 sur 2 2013-2014 (5) En d´eduire la fonction tri bullequi prend en argument une liste L et la tri.

(6) D´eterminer la complexit´e de cet algorithme.

(7) Pourquoi l’appelle-t’ontri `a bulle? (8) Programmer et tester cette fonction.

Exercice 4 :

Dans cette question, on cherche `a ´ecrire l’algorithme de tri par insertion que l’on a d´ej`a vu en TP. On se donne la description de l’algorithme par Wikipedia :

Dans l’algorithme, on parcourt le tableau `a trier du d´ebut `a la fin. Au moment o`u on consid`ere le i-`eme ´el´ement, les ´el´ements qui le pr´ec`edent sont d´ej`a tri´es. Pour faire l’analogie avec l’exemple du jeu de cartes, lorsqu’on est `a la i-`eme ´etape du parcours, le i-`eme ´el´ement est la carte saisie, les ´el´ements pr´ec´edents sont la main tri´ee et les

´

el´ements suivants correspondent aux cartes encore m´elang´ees sur la table.

L’objectif d’une ´etape est d’ins´erer le i-`eme ´el´ement `a sa place parmi ceux qui pr´ec`edent.

Il faut pour cela trouver o`u l’´el´ement doit ˆetre ins´er´e en le comparant aux autres, puis d´ecaler les ´el´ements afin de pouvoir effectuer l’insertion. En pratique, ces deux actions sont fr´equemment effectu´ees en une passe, qui consiste `a faire remonterl’´el´ement au fur et `a mesure jusqu’`a rencontrer un ´el´ement plus petit.

Exemple pour la liste [9,6,1,4,8] :

Etape´ Liste au d´epart Liste `a l’arriv´e.

Etape 1´ 9 6 1 4 8 6,9,1,4,8 Etape 2´ 6,9,1,4,8 1,6,9,4,8 Etape 3´ 1,6,9,4,8 1,4,6,9,8 Etape 4´ 1,4,6,9,8 1,4,6,8,9 (1) ´Ecrire l’algorithme en Python.

(2) ´Etudier la complexit´e de cet algorithme.

(3) Programmer et tester cette fonction.

Exercice 5 :

En utilisant une des fonctions pr´ec´edentes, proposer une m´ethode qui ´etant donn´e une liste de nombres, renvoie la m´ediane de l’ensemble des nombres d’une liste. On pourra aussi indiquer les quartiles. On programmera cette fonction en Python.

Références

Documents relatifs

b) Combien de multiplications de nombres de moins de m chiffres sont n´ ecessaires au calcul de x.y ? En d´ eduire un algorithme de multiplication des entiers, et ´ evaluer

Le 9 janvier 2008, on avait post´ e une petite note dont le paragraphe 2 fournissait des ´ el´ ements en lien avec un article sublime d’Euler intitul´ e “D´ ecouverte d’une

K d´esignant le corps des r´eels ou celui des complexes, on note M n,p (K) le K-espace vectoriel des matrices `a coefficients dans K ayant n lignes et p colonnes.. On lui donne le

a Rappeler l’´ enonc´ e du th´ eor` eme de Lagrange pour les sous-groupes cycliques.. b Montrer l’´ equivalence des assertions suivantes

Comme en outre n est premier avec m, n divise t (lemme de Gauss)... a On a admis le th´ eor` eme des

Universit´ e Paris 7-Denis Diderot Alg` ebre et G´ eom´ etrieL. Maˆıtrise de math´ ematiques et informatique Ann´

On souhaite ´ ecrire une fonction recherche mot qui, ´ etant donn´ es deux tableaux m et t, d´ etermine la position de la premi` ere occurrence de m dans t, si elle existe, et

On souhaite ´ ecrire une fonction recherche mot qui, ´ etant donn´ es deux tableaux m et t, d´ etermine la position de la premi` ere occurrence de m dans t, si elle existe, et