Imaginons un algorithme, une fonction, qui prend deux algorithmes en paramètre et qui renvoie :
  • "vrai" si les deux algorithmes sont "égaux",
  • sinon "faux".
Deux algorithmes sont "égaux" (du moins c'est ce que je signifie par cette expression ici), si les deux algorithmes, dans un contexte identique, renvoient des données identiques.

Exemples:
Ces deux algorithmes sont égaux :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
unsigned int multiplication(unsigned int a,unsigned int b){
  return a*b;
}
unsigned int multiplication2(unsigned int a,unsigned int b){
  unsigned int result=0;
  for(unsigned int i=0;i<a;i++)
    result+=b;
  return result;
}
Ces deux algorithmes ne sont pas égaux :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
double multiplication(double a,double b){
   return a*b;
 }
double multiplication2(double a,double b){
   int result=0;
   for(int i=0;i<a;i++)
     result+=b;
   return result;
 }
Et j'ai une question encore plus compliquée qui viendra après, mais après seulement