You are on page 1of 10
‘computer Sdence sno move about computers than astronomy Is about telescopes (EWC OMe) Chapitre 1 : Techniques de conception d’algorithmes Lorsqu’un calcul s’arréte en un temps fini et que le résultat final fournit la réponse au probléme on dit alors que ce calcul est un algorithme. 1 Terminaison d’algorithmes. Turing a prouvé, en 1936, que la terminaison est un probléme indécidable. En d'autres termes, il ne peut pas exister de mécanismelalgorithme capable de toujours prouver la terminaison d’un programme. On ne pourrait done jamais créer une méthode universelle qui prend un quelconque programme en entrée et donne en sortie « se termine » ou « ne se termine pas » en un temps fini. ‘Autrement dit, dans certains cas il est possible de déterminer que le programme se termine ou qu’il ne se terminera pas, mais il est impossible de le faire pour tous les programmes. Heureusement, depuis, on a trouvé différentes techniques qui permettent de prouver la terminaison d’un grand nombre de programmes. ‘Théoréme : « Indécidabilité du probléme de ’arrét (Alan Turing, 1936) » Un’existe pas de programme permettant de dire si un algorithme termine toujours ou non. Analysons un exemple qu’il est impossible de traiter, c’est-i-dire une fonction dont on ne sait pas déterminer si elle va se terminer pour toutes ses entrées possibles. Cet exemple provient de 1a suite de Collatz (ou Syracuse). Pour construire une suite de Collatz, il faut partir d’un nombre entier strictement positif. Ensuite, s'il est pair il faut le diviser par 2, par contre, dans le cas d'un nombre impair, il faut le multiplier par 3 et ajouter 1. Cette opération est répétée et produit une suite d'entiers positifs dont chacun dépend de son prédécesseur. La conjoneture de Collatz déclare que la suite de Collatz de ‘n’importe quel entier strictement positif, atteint 1. Soit algorithme de Syracuse ci-dessous. Fonetion Syr(n :entiers) :entiers Varr = 1 Début Tantque 1> | faire est pair alors + Div2 sinon r=3*r+1; finSi Syr =r; finTantque FinFone r ‘Computer Science iso mare about computers than astronomy about telescopes, (EW. 04kstea En 1949, Alan Turing, publie une premiére preuve de terminaison basée sur une notion dordre, appelée les ordinaux. Il publie cette preuve dans article « Checking a Large Routine », Robert W. Floyd formalise l'idée de Turing, Il décrit la méthode traditionnelle pour prouver la terminaison un Programme. Cette méthode se décompose en deux parties : 1. Rechercher un argument de terminaison : Le but de cette étape est de rechercher un argument de terminaison sous la forme d’une fonction qui lie chaque état du programme a une valeur dans une structure mathématique. Cette structure mathématique est appelée wn ordre bien fondé, 2. ‘Tester l'argument de terminaison : Si le résultat de la fonction trouvée diminue A chaque transition de programme, l’argument de terminaison sera valide et le programme se terminera Formellement, soit F la fonction trouvée et le programme a une transition de I’état s1 alors il faut que F(s1) > F(52). La fonction F est appelée fonction de rang. 1.1 Ordres Bien Fondés Une relation d'ordre large est une relation réflexive, antisymétrique et transitive. Soit E un ensemble et R une relation de E vers E ‘* Rest réflexive ssi pour tout x dans E on a R(x,x) Rest réflexive ssi pour tout x dans E on a :not R(X,x) R est transitive ssi pour tout x,y,z dans E , dés que R(x) et R(y,2), on a aussi R(x,z) Rest antisymétrique ssi pour tout x,y dans E , ds que R(x,y) et R(y,x), on a aussi x=y On note en général les relations d'ordre large < et les relations d'ordre strict < Une relation d'ordre est totale si tous les éléments sont deux a deux comparables. Sinon elle est artielle. rae Un ensemble ordonné (E,<) est bien fondé ssi tout sous ensemble non vide de E admet un plus petit élément. Cela signifie en particulier que E a au moins un plus petit élément. Si de plus, E est un bon ordre (total), il en a exactement un. ‘On peut ordonner les éléments de N par «<». Il y a un élément 0 qui est plus petit que tout le monde. 1.2. Fonetion de rang Prouver la terminaison consiste A exhiber une fonction de rang (parfois nommée variant de boucle). Une fonction de rang a valeur dans (R,<) pour une boucle est une fonction entire qui dépend des variables de la boucle et qui décrott strictement & chaque passage dans la boucle. : Pour valider une fonction de rang, on vérifie pour chaque passage dans la boucle les conditions suivantes : ie 1. Elle est a valeur dans (R,<) a l’entrée du corps de la boucle juste aprés la condition d'arrét ; 2, Elle est a valeur dans (R,<) juste avant l’instruction fin du corps de la boucle ; 3. Elle décroft strictement entre ces deux points. ae roomy sen tle Excercice : Proposer et valider une fonetion de rang pour l’algorithme Produit. tiers) :entiers Var x Début Tantque x> 0 faire ptb; 15 finTantque Produit =p 5 FinFone 2 Correction des algorithmes ‘Nous nous sommes demandés jusqu’a présent si un algorithme termine. Pour le moment, ce que nous ne savons pas faire, c'est montrer qu'un algorithme fait effectivement ce que l’on {ui demande, Un algorithme prend en entrée un certain nombre de données et retourne de nouvelles données, [étude de la correction partielle d’un algorithme ou d’un programme — on dit aussi la preuve du programme ~ creat étude de Pexpression des sorties (sous forme des prédicats) en fonction des entrées (sous forme des prédicats) afin de vérifier que si les entrées sont conformes, les sorties ont bien les valeurs attendues Pour réaliser une étude de correction, on exprime & chaque étape de I’algorithme les valeurs des variables, cest-A-dire qu’on décrit symboliquement I’état mémoire L'étude de la correction partielle d’un algorithme, c’est faire la preuve que I’algorithme effectue bien ce qu’on attend de lui, Si on a également montré la terminaison, on dit que l'algorithme est totalement correct : correction totale = correction partielle + terminaison. La correction partielle fournit un sysidme de preuves permettant a démonstration des propritiés. Exemple 2. resi=1; While i 0} res:=1 {n=NAn> OAres = 1}. Coes ¥ Onobserve que WoAN=0=>W: assertion est prouvée si N = 0. Sinon, la premigre itération établit, WY) = n=N-1An>0Ares=N. De maniére analogue, aprés k itér ns on obtient le prédicat Wy = n=N-kAn>OAres =N-(N=1)---(N-Kk41) Autrement dit, le prédicat suivant est vrai avant et apres chaque itération : x n2O0Ares= [Ji ientl ‘On dit que J est un invariant de la boucle. Enfin, la garde garantit que n < 1 lorsque la boucle termine, d’od on obtient la postcondition res = M! Computer Sciences no more about computers than astronomy is about telescopes. (6. W.oiistea Interprétation des assertions {} c {‘¥} ¢ commande (€ Com) ‘©, prédicats avec variables dans Loe et variables «logiques» (auxiliaires) Lassertion {®} c {} exprime la propriété de correction partielle : Pour tout état 6 et toute valuation & des variables logiques, si (0,8) vérifie © et si l"exécution de c A partir de Pétat o aboutit dans I’ état 0, alors (o’,&) vérifie YW. Attention : L’assertion {} c {7} ne garantit pas Ia terminaison de c! Par exemple, I’assertion {true} while true do skip od {false} est vraie. Il existe aussi l’interprétation de correction totale qui rajoute la condition de terminaison de c a celle de la correction partielle. 2.1 Le langage d’assertions Les pré- et postconditions sont exprimées en un langage de logique de premidre ordre : au-dela des expressions booléennes BExp ce langage inclut des variables logiques, des fonctions et prédicats auxiliaires et des quantificateurs. Plus formellement, on suppose donnés : ~ un ensemble Var, disjoint de Loe, de variables (logiques) i, j, M,N, — un ensemble J de symboles de fonctions f, g, ... — un ensemble P de symboles de prédicats p, q, ... Les symboles de J et P sont dotés de leur arité (nombre d’arguments). On définit d’abord I’ensemble AExpy des expressions arithmétiques étendues av F (n€Z) |X (€ Loe) | avo +avy, | avo —av, | avy avy | 7 (€ Var) | f(avi,...,avn) (f € J avec arité n) Computer Science na more about computers han astvonony ai ‘Nous ferons appel a des notations logiques simples et us les, dont voici un récapitulatit True est la propriété vraie False est la propriété fausse =P signifie «non» p pq signifie p «et» q pVq p signifie p «ou» q P= 4 signific p cimplique» g, c’est-d-dire que si p est vraie alors q aussi. Notez, que si p est fausse, alors est vraie quelque soit q. + V.p_signifie «pour tout» x, p est vrai. En général x apparait dans p. + 3.p signifie «il existe au moins un» x tel que p est vraic. Cate iste respect ordre standard de présédene, du symbole Je plus fort (~....) faible. symbole le plus L’ensemble Assn d’assertions est ensuite défini comme ® true | false | avp = avy | avo Savy |p | bo VS, | Hy AD, | Ho = Pi | Bi.Do | VIMo | plary,...,a%y) (p EP avec arité n) Une occurrence d°une variable i € Var est lige dans une assertion @ si elle est dans te scope d’un quantificateur Vi ou 3i. Sinon, elle est libre. La substitution ®[v — av], ot v € Var ULoe, remplace toutes les occurrences libres de v dans ® par l'expression av. On suppose que les variables libres dans av n’ont pas occurrences liées dans ® (sinon : renommage de variables liées). Exemple 2.2: (i.i# res =N) A (Aj.jeres=M) A Vr.(3#.f #r=N)A (Aj. *r=M) > rs res est une assertion avec les variables libres M et N. Intuitivement, elle exprime que res est le plus grand diviseur commun de M et de N. Computer Sciences no more about computers than astronomy is about telescopes. (EW. tra) Aprés ces préliminaires, on définit formellement la sémantique des triplets. Définition 2.1: Soient ®,\¥ € Assn et c € Com. 1, Le triplet {} c {W} est vérifié par état o et la valuation E, noté (6,8) F {®} ¢ {'}, si pour tout état o” (6,8) E® et (c,o) +o’ impliquentque (0/6) EY 2. Le triplet est valide, noté = {b} c {WY}, s'il est vérifié par tous o et E. Attention : La sémantique des assertions et des triplets dépend des interprétations des symboles «auxiliaires» dans J et P. Pour I’exemple 4.1 du factoriel, on suppose ainsi que I’expression N! dénote le factoriel de N. 2. Régles de déduction 2.1 Rappel Un arbre de déduction dans un systéme de déduction est une combinaison finie de régles de Ia forme : ‘od chaque régle appliquée est une instance d’une régle. J est la racine de I’arbre, les jugements n’ayant pas de prémisses sont les feuilles. Un arbre de déduction complet est un arbre dans laquelle toutes les feuilles sont des instances d’axiomes. un jugement J est prouvable si il existe un arbre de déduction complet avec J a la racine, On parle alors arbre de preuve pour J. computer Sciences no more about computers than astronomy about ee (6 Dike 2.2 Les ragles de Hoare Une régle de Hoare est une régle de déduction, c’est-d-dire une fraction de Ia forme : ‘Triplets. Ti Triplety iplet Les prémisses et la conséquence sont des triplets de Hoare. Une tell fraction se lit de la maniére suivante : "Si les triplets prémisses sont vrais, alors le triplet conclusion auss Dans ce présent cours n’étudiera que la correction partielle des triplets. Définition (correction partielle) Le triplet de Hoare suivant {0}C(‘?) est vrai si pour tout Gat initial venient O, si Pexécution de C se termine, alors V est vrai aprés ’exécution de C. On dit que le programme C est pariellement correct par rapport & © et La correction topate s'écrit avee des {..}- let de Hoare suivant {}C{¥} est vrai si pour tout état initial venttant ©. C se termine et est vraie aprésI'exéeation de C. On dit que le programme C est partiellement correct par rapport & ® et La correction totale s*écrit avec des <...> (parfois avec des [..]) . ‘Théoréme (Correction des régles de Hoare), Etant donné un triplet de Hoare donné'T, s'il existe un arbre de déduction de Hoare complet ayant T a sa racine, alors le triplet est vrai. [Nous allons définir et ilustrer ce qu’est un arbre de déduction de Hoare dans la suite en détaillant chaque régle. Affectation Soit le triplet, manifestement vai, (2-y20) x !=2-y (+20). Larégle de déduction de affectation doit permetire de prouver ce triplet donc la regle de laffectation doit pouvoir s’appliquer comme suit : ——— f-y2 0x: {x 2 0} On voit que x20 est vai aprés Pexécution du programme seulement sis meme propriété est vraie pour ‘zyau lien de x. La régle de affectation exprime ceci de la maniére suivante : morn {olx:= av} v {>} compute Since ino mere about computers than astronomy is about telescopes (e-w-0ma oi la notation &[x: = av] signifie « @ dans laquelle x a été remplacé par av ». Si on lit cette régle de la maniére suivante elle devient claire ; Pour que ® soit vraie pour x aprés le programme x :arv , i! fallait qu'elle soit vraie pour av avant le programme. Séquence Pour la séquence d’ instructions, la régle est relativement simple & construire MAL) OIG wiaaw Conséquence Les propriétés que I’on peut prouver directement a partir des régles vues jusqu’ici sont d'une forme trés contrainte, or il faut pouvoir déduire de ces propriétés celles qui nous intéressent. Ceci se fait par simple déduction logique & partir des propriétés prouvées par les régles précédentes. Pour cela on ajoute la régle suivante (notez que les deux implications ne sont pas dans le méme sens) : foro) CIM > Conse Cw a ou 4) GIG) WG (IWS?) ee Conseq® — pew Conseq@.) Exemple : Prouvez le triplet ci-dessous. (e>=0} a: -x fatb>=0} Conditionnelle On ajoute ensuite la régle de la conditionnelle, qui exprime bien que la post-condition doit étre vérifige dans les deux branches du if chacune sous la condition que le résultat du test est conforme a la branche, En particulier si une des branches est impossible, alors la prémisse correspondante est trivialement Juste (régle CONSEQ). {0 /\B}_ Ci (¥} {ARB} GC. (?) [HTB then, else, wy MA computer Scenc sno more about computers than astronomy I about telescopes {Wott} Exemple : Prouvez le triplet ci-dessous. {True} if x = P) 2. p est vrai aprés chaque itération 3. (P/\=B =>) PAB CES ywhiew thence PAT Exercices Function PGCD(a,b:entiers, var Rest: Var: x,y entiers Début

You might also like