suivant: Exercice 4 - Tri
 monter: Un autre exemple
 précédent: Exercice 2 - Plus
     Table des matières 
  
Nous allons écrire et démontrer la validité de l'algorithme du tri par
insertion. Nous rappelons que 
 est trié si
. Etant donné le
programme suivant :    
Prouver que si on passe en paramètre à 
 un tableau 
 dont les
  
 premiers éléments sont triés, alors à la fin de son exécution,
  les 
 premiers éléments dont triés. Etant donné le programme suivant :
Démontrer la terminaison et la validité de 
.
Voici le corrigé de la première question : L'algorithme se termine
bien car les valeurs prises par 
 forment une séquence de nombres
entiers strictement décroissante. Si l'on ne sort pas de la boucle
avec 
, on aura forcément 
 après la dernière
itération. Prenons comme invariant de boucle la conjonction des
conditions suivantes :
- La tranche 
 est triée
 
- La tranche 
 est triée
 
- 
 
Prouvons cette propriété par récurrence :
- A la première itération, on a 
. Comme 
 correspond à la tranche 
 donc par
        hypothèse cette tranche est triée. La tranche 
 est réduite au seul élément 
, elle est donc
        nécessairement triée. Comme 
, la troisième
        condition est trivialement vérifiée.
 
- Supposons qu'au début d'une itération arbitraire, les trois
        propriétés soient vérifiées. Soient 
 la valeur de
        
 et 
 le tableau 
 à la fin de cette
        itération. Montrons alors que 
        
- La tranche 
 est triée
 
- La tranche 
 est triée
 
- 
 
        
 
                   
        D'une part, on a 
 et 
. Par ailleurs,
        
, 
 et 
. Tous les autres éléments de 
 et de 
        coïncident. Montrons les trois propriétés :
        
- Par hypothèse de récurrence, la tranche 
        est triée, donc la tranche 
 que l'on
        obtient en ne comptabilisant pas le dernier élément est aussi
        triée. Comme les éléments de 
 et 
 d'indices
        différents de 
 et 
 sont les mêmes et que 
, alors 
        est triée. 
 
- Par hypothèse de réccurrence 
 est triée,
        en ne considérant pas le premier élément, on a
        
, comme les éléments de cette tranche
        coïncident avec 
, alors
        
 est triée. Par
        ailleurs, on a 
 et
        
, comme 
, alors 
. Si 
, alors par hypothèse de récurrence, on a
        
, donc 
. Dans ce cas, on a 
 avec
        
 triée. Donc
        
 est triée. Si 
, alors la tranche 
 est réduite aux deux éléments
        
, elle est donc
        triée. 
 
- Quelle que soit la valeur de 
, on a nécessairement
        
, il faut donc montrer que
        
. Or
        
 et 
. Par hypothèse de récurrence, 
 est triée, donc on a 
, d'où
        
.
        
 
 
Après la denière itération, si 
, alors la première tranche ne
contient aucun élément et la deuxième condition de l'invariant de
boucle permet de conclure que toute la tranche 
 est
triée. Si par contre, on sort de la boucle parce que 
, alors comme, d'après l'invariant de boucle, 
 et 
 sont triées, alors 
 est triée.
 
 
 
  
 suivant: Exercice 4 - Tri
 monter: Un autre exemple
 précédent: Exercice 2 - Plus
     Table des matières 
klaus
2010-08-05