Cours dAlgorithmique - PowerPoint PPT Presentation

1 / 42
About This Presentation
Title:

Cours dAlgorithmique

Description:

R cursivit et induction sur la structure. Divide and conquer, algorithmes gloutons ... A ce moment, nous connaissons la pr -condition ' I ' ... – PowerPoint PPT presentation

Number of Views:149
Avg rating:3.0/5.0
Slides: 43
Provided by: Esil9
Category:

less

Transcript and Presenter's Notes

Title: Cours dAlgorithmique


1
Cours dAlgorithmique
  • Logique de Hoare (fin)
  • Les boucles et
  • les invariants.

2
Les grandes lignes du cours
  • Trier et chercher, recherche textuelle
  • Listes et arbres
  • Le back-track
  • Arbres équilibrés
  • Récursivité et induction sur la structure
  • Divide and conquer, algorithmes gloutons
  • Minimax, alpha-beta
  • Dérécursion
  • Divers problèmes particuliers
  • Logique de Hoare
  • Programmation dynamique
  • Complexité et calculabilité

3
Logique de Hoare---------------------------------
--------------------------------
W H I L E e t l e s I N V A R
I A N T S D E B O U C L E
4
Logique de Hoare---------------------------------
--------------------------------
  • Lexemple qui nous sert à illustrer la notion
    dinvariant
  • PRE V , D e N
  • POST Q , R e N
  • telles V Q D R et R lt D .
  • Cest la spécification de la division euclidienne
    !

I
I
5
Logique de Hoare---------------------------------
--------------------------------
Exemple V 17 , D 5
Y a-t-il quelque-chose de commun entre les
différentes itérations ?
Q lt- 0 R lt- V while R gt D Q lt- Q
1 R lt- R - D
V 17 , D 5 , Q 0
OUI V Q D R
V 17 , D 5 , Q 0 , R 17
V 17 , D 5 , Q 0 , R 17
V 17 , D 5 , Q 1 , R 12
V 17 , D 5 , Q 1 , R 17
V 17 , D 5 , Q 2 , R 12
etc etc ! ! !
V 17 , D 5 , Q 1 , R 12
V 17 , D 5 , Q 2 , R 7
6
Logique de Hoare---------------------------------
--------------------------------
Exemple V 17 , D 5
Y a-t-il quelque-chose de commun entre les
différentes itérations ?
Q lt- 0 R lt- V while R gt D Q lt- Q
1 R lt- R - D
V 17 , D 5 , Q 0
OUI V Q D R
V 17 , D 5 , Q 0 , R 17
C'est fini ! ! !
V 17 , D 5 , Q 2 , R 7
A la fin V Q D R et R lt D
V 17 , D 5 , Q 3 , R 7
V 17 , D 5 , Q 3 , R 2
7
Logique de Hoare---------------------------------
--------------------------------
  • Les valeurs de V , D , Q , R peuvent changer.
  • Mais la relation V Q D R reste toujours
    vérifiée.
  • Cest ce quon appelle un  invariant  !
  • Un invariant est un prédicat qui
  • est vrai à chaque début de boucle,
  • et à chaque fin de boucle,
  • cest-à-dire début de la boucle suivante.
  • (Les tests ne font pas daffectation !)

8
Logique de Hoare---------------------------------
--------------------------------
  • Pour écrire un corps de boucle, il faut connaître
    linvariant de la boucle !
  • Votre code sera exécuté par le  i  tour de
    boucle, quel que soit la valeur de  i .
  • Pour savoir ce que vous devez faire au  i 
    tour de boucle, vous devez vous souvenir de ce
    que vous avez fait pendant les  i 1  premiers
    tours.
  • Ceci revient à connaître  linvariant  !

e
e
9
Logique de Hoare---------------------------------
--------------------------------
  • Quel est linvariant ?
  • Avant le  i  tour de boucle, nous avons fait
    les tours de boucle de  1  à  i 1 .
  • Nous avons donc sommé dans  s  les valeurs de
     1  à  i 1 .
  • Invariant s S j

s lt- 0 i lt- 1 while ( i lt n ) do s lt-
s i i lt- i 1
e
i 1
j 1
10
Logique de Hoare---------------------------------
--------------------------------
  • Règle pour le programme while C do g
  • Nous dirons que  I  est linvariant !
  • La condition I , C g I vérifie que
     I  est bien invariant ! ! !
  • La post-condition I , ù C est évidente !
  • Il suffit alors que I soit vrai au début !

I , C g I
I while C do g I , ù C
11
Logique de Hoare---------------------------------
--------------------------------
  • Dans la pratique, nous avons une post-condition Q
    et le code while C do g
  • Quel prédicat  I  faut-il choisir comme
    invariant ?
  • Cest lutilisateur qui doit faire une
    proposition !
  • Nouvelle syntaxe while C do g inv I

??? , C g ???
??? while C do g Q
12
Logique de Hoare---------------------------------
--------------------------------
  • Règle pour le programme while C do g inv I
  • Nous devons prouver que I , ù C gt Q !
  • Nous calculons la pré-condition  F  de F g
    I !
  • Nous prouvons que I , C gt F !
  • A ce moment, nous connaissons la pré-condition
     I  !

F g I
I , ù C gt Q
I , C gt F
I while C do g inv I Q
13
Logique de Hoare---------------------------------
--------------------------------
  • Règle pour le programme while C do g inv I
  • Attention, il y a deux obligations de preuve !
  • Elles sont semi-automatisables.
  • Un prouveur peut ne pas trouver la preuve !
  • Un prouveur ne saura jamais dire si elle nexiste
    pas ! ! !

F g I
I , ù C gt Q
I , C gt F
I while C do g inv I Q
14
Logique de Hoare---------------------------------
--------------------------------
  • U N
  • P R E M I E R
  • E X E M P L E

15
Logique de Hoare---------------------------------
--------------------------------
  • POST

R lt- V Q lt- 0 while ( R gt D ) do Q
lt- Q 1 R lt- R D inv I
Q V D Q R , 0 lt R lt D
16
Logique de Hoare---------------------------------
--------------------------------
  • POST

R lt- V Q lt- 0 while ( R gt D ) do Q
lt- Q 1 R lt- R D inv I
Sans problème I , ù C gt Q
V D Q R , 0 lt R
Q V D Q R , 0 lt R lt D V
D Q R , 0 lt R et R lt D
17
Logique de Hoare---------------------------------
--------------------------------
  • POST

R lt- V Q lt- 0 while ( R gt D ) do Q
lt- Q 1 R lt- R D inv I
Après simplification !
F V D Q R , D lt R
V D Q R D , 0 lt R D
Sans problème I , ù C gt Q
V D Q R , 0 lt R
V D Q R , 0 lt R
Q V D Q R , 0 lt R lt D V
D Q R , 0 lt R et R lt D
18
Logique de Hoare---------------------------------
--------------------------------
F g I
I , ù C gt Q
I , C gt F
I while C do g inv I Q
V D Q R , 0 lt R et R gt D
!!!!!! gt V D Q R , D lt R
19
Logique de Hoare---------------------------------
--------------------------------
  • PRE

V D 0 V , 0 lt V V gt 0
  • POST

R lt- V Q lt- 0 while ( R gt D ) do Q
lt- Q 1 R lt- R D inv I
V D 0 R , 0 lt R
I V D Q R , 0 lt R
F V D Q R , D lt R
Sans problème I , C gt F
V D Q R D , 0 lt R D
Sans problème I , ù C gt Q
V D Q R , 0 lt R
V D Q R , 0 lt R
Q V D Q R , 0 lt R lt D V
D Q R , 0 lt R et R lt D
20
Logique de Hoare---------------------------------
--------------------------------
  • U N
  • D E U X I E M E
  • E X E M P L E

21
Logique de Hoare---------------------------------
--------------------------------
x lt- a y lt- b while ( y ltgt 0 ) do m
lt- y y lt- x y x lt- m
inv I
  • POST

Q x pgcd( a , b )
22
Logique de Hoare---------------------------------
--------------------------------
x lt- a y lt- b while ( y ltgt 0 ) do m
lt- y y lt- x y x lt- m
inv I
  • POST

Sans problème I , ù C gt Q
pgcd( x , y ) pgcd( a , b )
Q x pgcd( a , b ) pgcd( x , 0 )
pgcd( a , b ) pgcd( x , y ) pgcd( a ,
b ) , y 0
23
Logique de Hoare---------------------------------
--------------------------------
x lt- a y lt- b while ( y ltgt 0 ) do m
lt- y y lt- x y x lt- m
inv I
  • POST

F pgcd( y , x y ) pgcd( a , b )
pgcd( m , xy ) pgcd( a , b )
pgcd( m , y ) pgcd( a , b )
Sans problème I , ù C gt Q
pgcd( x , y ) pgcd( a , b )
pgcd( x , y ) pgcd( a , b )
Q x pgcd( a , b ) pgcd( x , 0 )
pgcd( a , b ) pgcd( x , y ) pgcd( a ,
b ) , y 0
24
Logique de Hoare---------------------------------
--------------------------------
I , C gt F
? ? ?
pgcd( x , y ) pgcd( a , b ) et y ltgt 0
??? gt pgcd( y , x y ) pgcd( a , b )
Maths x gt y et y ltgt 0 gt pgcd( x , y )
pgcd( y , x y )
Nous devons renforcer linvariant pgcd( x ,
y ) pgcd( a , b ) , x gt y
25
Logique de Hoare---------------------------------
--------------------------------
x lt- a y lt- b while ( y ltgt 0 ) do m
lt- y y lt- x y x lt- m
inv I
  • POST

Sans problème I , ù C gt Q
pgcd( x , y ) pgcd( a , b ) , x gt y
Q x pgcd( a , b ) pgcd( x , 0 )
pgcd( a , b ) pgcd( x , y ) pgcd( a ,
b ) , y 0
26
Logique de Hoare---------------------------------
--------------------------------
x lt- a y lt- b while ( y ltgt 0 ) do m
lt- y y lt- x y x lt- m
inv I
  • POST

F pgcd( y , x y ) pgcd( a , b )
. . . , m gt x y
. . . , m gt y
Sans problème I , ù C gt Q
pgcd( x , y ) pgcd( a , b ) , x gt y
pgcd( x , y ) pgcd( a , b ) , x gt y
Q x pgcd( a , b ) pgcd( x , 0 )
pgcd( a , b ) pgcd( x , y ) pgcd( a ,
b ) , y 0
27
Logique de Hoare---------------------------------
--------------------------------
I , C gt F
pgcd( x , y ) pgcd( a , b ) , x gt y et
y ltgt 0 !!!!!! gt pgcd( y , x y ) pgcd(
a , b )
Maths x gt y et y ltgt 0 gt pgcd( x , y )
pgcd( y , x y )
28
Logique de Hoare---------------------------------
--------------------------------
  • PRE

pgcd( a , b ) pgcd( a , b ) , a gt b
a gt b
x lt- a y lt- b while ( y ltgt 0 ) do m
lt- y y lt- x y x lt- m
inv I
  • POST

I pgcd( x , y ) pgcd( a , b ) , x gt y
F pgcd( y , x y ) pgcd( a , b )
Sans problème I , C gt F
. . . , m gt x y
. . . , m gt y
Sans problème I , ù C gt Q
pgcd( x , y ) pgcd( a , b ) , x gt y
pgcd( x , y ) pgcd( a , b ) , x gt y
Q x pgcd( a , b ) pgcd( x , 0 )
pgcd( a , b ) pgcd( x , y ) pgcd( a ,
b ) , y 0
29
Logique de Hoare---------------------------------
--------------------------------
  • U N
  • T R O I S I E M E
  • E X E M P L E

30
Logique de Hoare---------------------------------
--------------------------------
s lt- 0 c lt- 1 while ( c lt n ) do s
lt- s c c lt- c 1 inv I
  • POST

Sans problème I , ù C gt Q
c 1
c lt n 1 , s S i
i 1
n
c 1
Q s S i s S i , c lt n
1 , c gt n
i 1
i 1
31
Logique de Hoare---------------------------------
--------------------------------
s lt- 0 c lt- 1 while ( c lt n ) do s
lt- s c c lt- c 1 inv I
  • POST

Après simplification !
c 1
F c lt n , s S i
i 1
Sans problème I , ù C gt Q
I . . .
c 1
c lt n 1 , s S i
i 1
n
c 1
Q s S i s S i , c lt n
1 , c gt n
i 1
i 1
32
Logique de Hoare---------------------------------
--------------------------------
s lt- 0 c lt- 1 while ( c lt n ) do s
lt- s c c lt- c 1 inv I
  • POST

c 1
F c lt n , s S i
Sans problème I , C gt F
i 1
Sans problème I , ù C gt Q
I . . .
c 1
c lt n 1 , s S i
i 1
n
c 1
Q s S i s S i , c lt n
1 , c gt n
i 1
i 1
33
Logique de Hoare---------------------------------
--------------------------------
1 1
  • PRE

1 lt n 1 , 0 S i n gt 0
i 1
s lt- 0 c lt- 1 while ( c lt n ) do s
lt- s c c lt- c 1 inv I
  • POST

c 1
I c lt n 1 , s S i
i 1
c 1
F c lt n , s S i
Sans problème I , C gt F
i 1
Sans problème I , ù C gt Q
I . . .
c 1
c lt n 1 , s S i
i 1
n
c 1
Q s S i s S i , c lt n
1 , c gt n
i 1
i 1
34
Logique de Hoare---------------------------------
--------------------------------
  • Une autre initialisation
  • POST

2 1
  • PRE

2 lt n 1 , 1 S i n gt 1
i 1
s lt- 1 c lt- 2 while ( c lt n ) do .
. .
c 1
I c lt n 1 , s S i
i 1
n
Q s S i
i 1
35
Logique de Hoare---------------------------------
--------------------------------
  • Une mauvaise initialisation
  • POST

2 1
  • PRE

2 lt n 1 , 6 S i n gt 1 , 6 1
FAUX
i 1
s lt- 6 c lt- 2 while ( c lt n ) do .
. .
c 1
I c lt n 1 , s S i
i 1
n
Q s S i
i 1
36
Logique de Hoare---------------------------------
--------------------------------
  • Une mauvaise initialisation
  • POST

2 1
  • PRE

2 lt n 1 , 6 S i n gt 1 , 6 1
n gt 1
1
1
i 1
1
s lt- 6 c lt- 2 while ( c lt n ) do .
. .
c 1
I c lt n 1 , s S i
i 1
Nous corrigeons !
n
Q s S i
i 1
37
Logique de Hoare---------------------------------
--------------------------------
  • Une mauvaise initialisation
  • POST

4
2 1
  • PRE

4
3
2 lt n 1 , 6 S i n gt 1 , 6 1
n gt 3
6
i 1
s lt- 6 c lt- 2 while ( c lt n ) do .
. .
c 1
4
I c lt n 1 , s S i
i 1
Une autre correction !
n
Q s S i
i 1
38
Logique de Hoare---------------------------------
--------------------------------
  • Un mauvais invariant

. . . while ( c lt n ) do s lt- s c
3 c lt- c 1 inv I
  • POST

Sans problème I , ù C gt Q
c 1
c lt n 1 , s S i
i 1
n
c 1
Q s S i s S i , c lt n
1 , c gt n
i 1
i 1
39
Logique de Hoare---------------------------------
--------------------------------
  • Un mauvais invariant

. . . while ( c lt n ) do s lt- s c
3 c lt- c 1 inv I
  • POST

Après simplification !
c 1
F c lt n , s 3 S i
i 1
Sans problème I , ù C gt Q
I . . .
c 1
c lt n 1 , s S i
i 1
n
c 1
Q s S i s S i , c lt n
1 , c gt n
i 1
i 1
40
Logique de Hoare---------------------------------
--------------------------------
I , C gt F
c 1
c lt n 1 , s S i et c lt n
NON gt c lt n 1 , s 3 S i
i 1
//
c 1
i 1
Sinon, nous aurions 3 0 !
41
Logique de Hoare---------------------------------
--------------------------------
  • Un mauvais invariant

. . . while ( c lt n ) do s lt- s c
3 c lt- c 1 inv I
  • POST

Après simplification !
c 1
F c lt n , s S (i 3)
Sans problème I , C gt F
i 1
Sans problème I , ù C gt Q
I . . .
c 1
c lt n 1 , s S (i 3)
i 1
n
c 1
Q s S (i 3) s S (i 3)
, c lt n 1 ,
c gt n
i 1
i 1
42
Logique de Hoare---------------------------------
--------------------------------
  • Attention
  • Tout ceci nempêche pas un programme de boucler !
  • Nous affirmons seulement que
  • si le programme sarrête,
  • alors il rend le résultat indiqué !
Write a Comment
User Comments (0)
About PowerShow.com