Ah la preuve d´algorithme. le seul domaine interessant de l´informatique (snif, snif ca sent le troll
).
Prouver qu´un algorithme est juste est souvent pas tres difficile. On s´interesse aux propriétés qui sont vrai dans notre algorithme.
par exemple si on cherche la plus grande valeure d´un tableau d´entier positif. l´algorithme suivant fonctionne:
entier max = 0
indice i = 0
tant que i est inferieur a taille du tableau T - 1
i = i + 1
si max < T[i] alors max = T[i]
tu peux prouver (par récurence) qu´a la fin d´un tour de boucle, max est supérieur ou égal a toute les valeures de T dont les indices sont inférieur a i. Ceci est la post condition de ta boucle.
Il se trouve que la post condition est aussi la précondition mais il y a des jours ou c´est plus compliqué.
Pour prouver l´unicité d´un algorithme, ca je ne sais pas faire. Il faut voir exactement ce qu´il entends par la. Il n´y a pas de probleme pour lesquels il n´y a qu´un seul algorithme.
Pour montrer que c´est le plus rapide. Tu utilises des bornes inférieurs sur les temps de calcul de ton algorithme. Par exemple, dans l´exemple du minimum, tu ne peux pas assurer a 100% que ta valeur est correcte sans avoir considéré chaque element de ton tableau. Si ton tableau est de taille N, tu es obligé de faire au moins N opérations. Ton algorithme a une complexité temporelle qui apartient a O(N). Tu en déduis que ton algorithme est le plus rapide possible (a un facteur constant pres).
Il y a bien sur des cas plus compliqué pour lesquels les preuves sont egalement plus compliqué. Par exemple, on peut montrer qu´un tri basé sur des comparaisons doit faire au minimum N log (N) comparaisons. Ainsi un tri qui fait de l´ordre de N log(N) comparaison est dit optimal.