next up previous
Next: About this document

Tronc Commun Informatique


Dominique Perrin

X & Université de Marne la Vallée
perrin@univ-mlv.fr


Menu

  1. Amphi 0
  2. 12 petites classes
  3. 12 t.p.
  4. une composition HC
  5. une composition
  6. un projet


Bibliographie

Danièle Beauquier, Jean Berstel, Philippe Chretienne, Elements d'Algorithmique, Masson, 1992.

Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Algorithms, MIT Press, 1990.

Donald E. Knuth, The Art of Computer programming, vol. 1: Fundamental Algorithms, vol. 2: Seminumerical Algorithms, vol. 3: Sorting and Searching, Addison Wesley, 1973.

Jan van Leeuwen,Handbook of Theoretical Computer Science, vols. A et B, Elsevier, 1990.

Robert Sedgewick, Algorithms, Addison Wesley, 1991 (aussi: Algorithms in C).


P.C. 1
Introduction

Objectifs généraux et orientations de l'algorithmique:

Ecriture des algorithmes:


Un exemple : le développement en fraction continue

Un développement en fraction continue d'un nombre réel positif tex2html_wrap_inline137 est une suite tex2html_wrap_inline139 d'entiers naturels telle que:

Quand tex2html_wrap_inline137 est un nombre rationnel m/n, la suite des quotients obtenus en appliquant l'algorithme d'Euclide à (m,n) est un développement en fraction continue de tex2html_wrap_inline137 .

En effet si m=qn+r, on a


On en déduit la procédure suivante, en Pascal, qui affiche les termes successifs du développement :

procedure cont(m,n: integer);
 begin
  if n <> 0 then
   begin
    writeln(m div n);
    cont( n, m mod n)
   end
 end;


Pour le développement d'un nombre réel tex2html_wrap_inline137 , on aura :
procedure cont(alpha : real; n : integer);
 var 
  a,i : integer;
 begin
  for i := 1 to n do begin
   a:=trunc(alpha);
   writeln(a);
   alpha:= 1/(alpha-a)
  end
 end;
Le résultat de l'appel de cont(3.14159,4) est
3
7 
15 
1


Complexité des algorithmes

Donnée de taille n

Evaluation: Calcul à une constante multiplicative près: pas d'unité de temps ou d'espace.


Notation O

Pour deux fonctions réelles positives f,g, on écrit

si f ne croit pas plus vite que g; formellement:

Exemples de classes de complexité:


Autres notations utilisées:

tex2html_wrap_inline167 pour g=O(f)

tex2html_wrap_inline171 pour f=O(g) et g=O(f).

La notation f=O(g) est un abus désigant tex2html_wrap_inline179 mais commode pour écrire


Un exemple : le calcul du pgcd

Le calcul du pgcd de m et n par l'algorithme d'Euclide obéit, en posant m=nq+r, à la règle :

La complexité est logarithmique. En effet, on a, en supposant tex2html_wrap_inline187 les inégalités

ou encore

d'où la conclusion.


Calcul de complexité


Dichotomies

Solution:

Solution:

tabular96

Démonstration : il suffit de vérifier que l'on a

avec a=T(1).


Exemple : tri par fusion

On considère le problème du tri d'un tableau tex2html_wrap_inline207 .
procedure TriFusion(i,j:integer);
 var
  k:integer;
 begin
  if i<j then begin
   if j=i+1 then tri(a[i],a[j])
   else begin 
    k:=(i+j) div 2;
    TriFusion(i,k);
    TriFusion(k+1,j);
    Fusion(i,j);
   end;
  end;
 end;




next up previous
Next: About this document

Dominique Perrin
Thu Jul 4 18:55:49 METDST 1996