• Aucun résultat trouvé

Complexit´e des algorithmes it´eratifs Notations asymptotiques

N/A
N/A
Protected

Academic year: 2022

Partager "Complexit´e des algorithmes it´eratifs Notations asymptotiques"

Copied!
3
0
0

Texte intégral

(1)

LPSIL Ann´ee 2008-2009 TD Algorithmique - Feuille 2

Complexit´ e des algorithmes it´ eratifs

Notations asymptotiques

1. Caract´eriser les fonctions suivantes en terme de notation θ:

• f(n) = 4n3+n

• f(n) = n(n+1)2

• f(n) =n∗log2(n)

2. Parmi les fonctions suivantes, quelles sont celles qui ont le mˆeme ordre de grandeur ?

• f1(n) = 4n3+n

• f2(n) =n2+log2(n)

• f3(n) =n2∗log3(n) + 6n3

• f4(n) = n(n22+1)

3. En utilisant la d´efinition deθ montrer que f(n) +g(n) =θ(max(f(n), g(n))) 4. En utilisant la d´efinition deθ montrer que 3n2+ 4n+ 6 =θ(n2)

Complexit´ e

5. Exprimer en fonction den le nombre de fois o`u s’affiche “Bonjour” dans les deux morceaux de code suivants :

// Code 1

for (int i=0;i<n;i++) for (int j=0;j<n;j++)

System.out.println(‘‘Bonjour’’);

// Code 2

for (int i=0;i<n;i++) for (int j=0;j<i;j++)

System.out.println(‘‘Bonjour’’);

Ces deux codes ont ils la mˆeme complexit´e ?

6. Calculer la complexit´e de la m´ethode “public boolean palindrome(String c)”.

7. Caract´eriser la complexit´e de la m´ethode “public static int recherche(int[] tab, int x, int o)”

de la classe “TableauEntier” en utilisant les notations Ω,θetO.

1

(2)

8. On s’int´eresse `a la m´ethode de tri appel´ee “tri `a bulle”. Compl´eter les assertions A1, A2 et A3 et expliquer comment fonctionne ce tri. Calculez la complexit´e dans le pire et le meilleur des cas de la m´ethode “tri bulle”. Donner des exemples de tableau pour lesquels ces complexit´es sont atteintes.

/** ANTECEDENT : tab est un tableau d’entiers

* CONSEQUENT : tab est tri´e par ordre croissant */

public static void triBulle(int[] tab) { boolean fini = false;

int j = tab.length -1;

while (!fini) { fini=true;

for (int i=0; i<j; i++) { if (tab[i]>tab[i+1]) {

int tmp = tab[i];

tab[i] = tab[i+1];

tab[i+1] = tmp;

fini = false;

} }

// A1 : caract´eriser tab[j]

// A2 : quelle est la partie du tableau qui est tri´ee ?

// A3 : comparer les ´el´ements de 0 `a j-1 par rapport aux ´el´ements de j `a tab.length-1 j--;

} }

9. Calculer la complexit´e de la m´ethode “public static int mystere(int x)”.

10. Calculer la complexit´e dans le pire des cas de la m´ethode “rechercheVite” du cours (compter le nombre de passages dans la boucle while).

11. Pour crypter des messages on peut utiliser un algorithme qui consiste `a ajouter `a chaque caract`ere du message les caract`eres d’une clef. Par exemple, si le message est “bonjour”, la clef est “gag” on obtient “ ´E∆ ˜O ˜N∆ ¨U `U”.

b o n j o u r + a g a g g a g

= ´E∆ ˜O ˜N∆ ¨U `U Comparer les m´ethodes “code” et “decode” de la classe “Crypto” en annexe.

Ces m´ethodes ont-elles la mˆeme complexit´e ?

2

(3)

Annexe

CLASSE CRYPTO ---

/** cryptage selon l’algorithme de Vig´en`ere 16`eme sci`ecle*/

public class Crypto {

private String cle; // la clef du cryptage // constructeur

public Crypto(String s) { cle= s;

}

// encodage

public String code(String s) {

char[] result = new char[s.length()];// tableau contenant les caract`eres int i = 0;

while (i<s.length())

for (int j=0; j < cle.length()&& i < s.length(); j++) {

// on fait la somme modulo 255 car le code ASCII est sur 8 bits (de 0 `a 255) result[i] = (char)((s.charAt(i) + cle.charAt(j))%255) ;

i++;

}

return new String(result);

}

// d´ecodage

public String decode(String s) {

char[] result = new char[s.length()]; // tableau contenant les caract`eres int i = 0;

int j = 0;

int l = cle.length();

while (i<s.length()){

// on fait la somme modulo 255 car le code ASCII est sur 8 bits (de 0 `a 255) result[i] = (char)((s.charAt(i) - cle.charAt(j))%255) ;

i++;

j = (j+1) % l;

}

return new String(result);

} }

3

Références

Documents relatifs

Le mˆ eme signal num´ erique attaque les canaux de modulation externes de deux synth´ etiseurs radiofr´ equences ´ emettant des porteuses de fr´ equence diff´ erentes : est-on

Compl´eter le programme pour d´eterminer le nombre de caract`eres de chacun des mots contenus dans ce texte. D`es que la longueur d’un mot est connue, affichez en

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

Syntaxe de l’adressage indirect par registre.- Comme nous l’avons d´ej` a vu, pour d´esigner une valeur constante on ´ecrit cette valeur (en hexad´ecimal), pour une valeur se

Syntaxe de l’adressage indirect par registre en langage symbolique.- Comme nous l’avons d´ej` a vu, en langage symbolique, pour d´esigner une constante on ´ecrit celle-ci

[r]

Une triangulation d’un polygˆone du plan est un dessin comme ceux de la figure 7, constitu´e d’un certain nombre de sommets et d’arˆetes (´eventuellement courb´ees) reliant