1 / 165

Cours d’Algorithmique

Cours d’Algorithmique. Logique de Hoare (fin) : Les boucles et les invariants. 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

ezra
Download Presentation

Cours d’Algorithmique

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Cours d’Algorithmique Logique de Hoare (fin) : Les boucles et les invariants. Cours d'algorithmique 10 / Intranet

  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 • NP-complétude • Logique de Hoare • Programmation dynamique • Complexité et calculabilité Cours d'algorithmique 10 / Intranet

  3. Logique de Hoare----------------------------------------------------------------- • Rappel : { PRE } programme { POST } • Ceci signifie que • si les pré-conditions sont vérifiées par les arguments, • alors les post-conditions seront vérifiées par les résultats. Cours d'algorithmique 10 / Intranet

  4. Logique de Hoare----------------------------------------------------------------- • La démarche complète : • Soit la post-condition « Q » ! Soit le programme « g » ! Cours d'algorithmique 10 / Intranet

  5. Logique de Hoare----------------------------------------------------------------- • La démarche complète : • Soit la post-condition « Q » ! Soit le programme « g » ! Q g Cours d'algorithmique 10 / Intranet

  6. Logique de Hoare----------------------------------------------------------------- • La démarche complète : • Soit la post-condition « Q » ! Soit le programme « g » ! • Calculons la plus faible condition F telle que { F } g { Q } ! Q g Cours d'algorithmique 10 / Intranet

  7. Logique de Hoare----------------------------------------------------------------- • La démarche complète : • Soit la post-condition « Q » ! Soit le programme « g » ! • Calculons la plus faible condition F telle que { F } g { Q } ! F Q g Cours d'algorithmique 10 / Intranet

  8. Logique de Hoare----------------------------------------------------------------- • La démarche complète : • Soit la post-condition « Q » ! Soit le programme « g » ! • Calculons la plus faible condition F telle que { F } g { Q } ! • Nous comparons avec le cahier des charges ! ! ! F Q g Cours d'algorithmique 10 / Intranet

  9. Logique de Hoare----------------------------------------------------------------- • La démarche complète : • Soit la post-condition « Q » ! Soit le programme « g » ! • Calculons la plus faible condition F telle que { F } g { Q } ! • Nous comparons avec le cahier des charges ! ! ! F Q = POST g PRE Cahier des charges Cours d'algorithmique 10 / Intranet

  10. Logique de Hoare----------------------------------------------------------------- • La démarche complète : • Soit la post-condition « Q » ! Soit le programme « g » ! • Calculons la plus faible condition F telle que { F } g { Q } ! • Nous comparons avec le cahier des charges ! ! ! • Et nous vérifions que PRE => F !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! F Q = POST g PRE Cahier des charges Cours d'algorithmique 10 / Intranet

  11. Logique de Hoare----------------------------------------------------------------- • Trois règles qui sont toujours vraies : • PRE-STRENGTH : • POST-WEAK : • CONJUNCTION : P => Q { Q } g { R } { P } g { R } Q => R { P } g { Q } { P } g { R } { P } g { Q } { P } g { Q } 2 2 1 1 { P , P } g { Q , Q } 2 2 1 1 Cours d'algorithmique 10 / Intranet

  12. Logique de Hoare----------------------------------------------------------------- • Les programmes : • skip • x <- e • g ; g • if C theng elseg • while C dog 1 2 1 2 Cours d'algorithmique 10 / Intranet

  13. Logique de Hoare----------------------------------------------------------------- • Règle pour le programme skip : e { P } skip { P } Cours d'algorithmique 10 / Intranet

  14. Logique de Hoare----------------------------------------------------------------- • Règle pour le programme g ; g : 1 2 { P } g { Q } { Q } g { R } 1 2 { P } g ; g { R } 1 2 Cours d'algorithmique 10 / Intranet

  15. Logique de Hoare----------------------------------------------------------------- • Règle pour le programme x <- e : e { P[ x <- e ] } x <- e { P } Cours d'algorithmique 10 / Intranet

  16. Logique de Hoare----------------------------------------------------------------- • Règles pour le programme if C then g else g : 1 2 { P , C } g { Q } { P ,ù C } g { Q } 1 2 { P } if C then g else g { Q } 1 2 Cours d'algorithmique 10 / Intranet

  17. Logique de Hoare----------------------------------------------------------------- • Règles pour le programme if C then g else g : 1 2 { P , C } g { Q } { P ,ù C } g { Q } 1 2 { P } if C then g else g { Q } 1 2 { F }g { Q } { F }g { Q } 1 2 1 2 { F , C } ou { F , ù C } if C then g else g { Q } 1 2 1 2 Cours d'algorithmique 10 / Intranet

  18. Logique de Hoare----------------------------------------------------------------- • Toutes ces règles sont complètement automatisables ! Cours d'algorithmique 10 / Intranet

  19. Logique de Hoare----------------------------------------------------------------- • L’exemple qui nous sert à illustrer la notion d’invariant : • PRE : V , D e N • POST: Q , R e N telles V = Q * D + R et R < D . • C’est la spécification de la division euclidienne ! I I Cours d'algorithmique 10 / Intranet

  20. Logique de Hoare----------------------------------------------------------------- Q <- 0 ; R <- V ; while R >= D Q <- Q + 1 ; R <- R - D Cours d'algorithmique 10 / Intranet

  21. Logique de Hoare----------------------------------------------------------------- Exemple : V = 17 , D = 5 Q <- 0 ; R <- V ; while R >= D Q <- Q + 1 ; R <- R - D Cours d'algorithmique 10 / Intranet

  22. Logique de Hoare----------------------------------------------------------------- Exemple : V = 17 , D = 5 Q <- 0 ; R <- V ; while R >= D Q <- Q + 1 ; R <- R - D V = 17 , D = 5 , Q = 0 Cours d'algorithmique 10 / Intranet

  23. Logique de Hoare----------------------------------------------------------------- Exemple : V = 17 , D = 5 Q <- 0 ; R <- V ; while R >= D Q <- Q + 1 ; R <- R - D V = 17 , D = 5 , Q = 0 V = 17 , D = 5 , Q = 0 , R = 17 Cours d'algorithmique 10 / Intranet

  24. Logique de Hoare----------------------------------------------------------------- Exemple : V = 17 , D = 5 Q <- 0 ; R <- V ; while R >= D Q <- Q + 1 ; R <- R - D V = 17 , D = 5 , Q = 0 V = 17 , D = 5 , Q = 0 , R = 17 V = 17 , D = 5 , Q = 0 , R = 17 Cours d'algorithmique 10 / Intranet

  25. Logique de Hoare----------------------------------------------------------------- Exemple : V = 17 , D = 5 Q <- 0 ; R <- V ; while R >= D Q <- Q + 1 ; R <- R - D V = 17 , D = 5 , Q = 0 V = 17 , D = 5 , Q = 0 , R = 17 V = 17 , D = 5 , Q = 0 , R = 17 V = 17 , D = 5 , Q = 1 , R = 17 Cours d'algorithmique 10 / Intranet

  26. Logique de Hoare----------------------------------------------------------------- Exemple : V = 17 , D = 5 Q <- 0 ; R <- V ; while R >= D Q <- Q + 1 ; R <- R - D V = 17 , D = 5 , Q = 0 V = 17 , D = 5 , Q = 0 , R = 17 V = 17 , D = 5 , Q = 0 , R = 17 V = 17 , D = 5 , Q = 1 , R = 17 V = 17 , D = 5 , Q = 1 , R = 12 Cours d'algorithmique 10 / Intranet

  27. Logique de Hoare----------------------------------------------------------------- Exemple : V = 17 , D = 5 Q <- 0 ; R <- V ; while R >= D Q <- Q + 1 ; R <- R - D V = 17 , D = 5 , Q = 0 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 = 1 , R = 12 Cours d'algorithmique 10 / Intranet

  28. Logique de Hoare----------------------------------------------------------------- Exemple : V = 17 , D = 5 Q <- 0 ; R <- V ; while R >= D Q <- Q + 1 ; R <- R - D V = 17 , D = 5 , Q = 0 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 V = 17 , D = 5 , Q = 1 , R = 12 Cours d'algorithmique 10 / Intranet

  29. Logique de Hoare----------------------------------------------------------------- Exemple : V = 17 , D = 5 Q <- 0 ; R <- V ; while R >= D Q <- Q + 1 ; R <- R - D V = 17 , D = 5 , Q = 0 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 V = 17 , D = 5 , Q = 1 , R = 12 V = 17 , D = 5 , Q = 2 , R = 7 Cours d'algorithmique 10 / Intranet

  30. Logique de Hoare----------------------------------------------------------------- Exemple : V = 17 , D = 5 Q <- 0 ; R <- V ; while R >= D Q <- Q + 1 ; R <- R - D V = 17 , D = 5 , Q = 0 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 Cours d'algorithmique 10 / Intranet

  31. Logique de Hoare----------------------------------------------------------------- Exemple : V = 17 , D = 5 Y a-t-il quelque-chose de commun entre les différentes itérations ? Q <- 0 ; R <- V ; while R >= D Q <- Q + 1 ; R <- R - D V = 17 , D = 5 , Q = 0 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 Cours d'algorithmique 10 / Intranet

  32. Logique de Hoare----------------------------------------------------------------- Exemple : V = 17 , D = 5 Y a-t-il quelque-chose de commun entre les différentes itérations ? Q <- 0 ; R <- V ; while R >= D Q <- Q + 1 ; R <- 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 Cours d'algorithmique 10 / Intranet

  33. Logique de Hoare----------------------------------------------------------------- Exemple : V = 17 , D = 5 Y a-t-il quelque-chose de commun entre les différentes itérations ? Q <- 0 ; R <- V ; while R >= D Q <- Q + 1 ; R <- 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 Cours d'algorithmique 10 / Intranet

  34. Logique de Hoare----------------------------------------------------------------- Exemple : V = 17 , D = 5 Y a-t-il quelque-chose de commun entre les différentes itérations ? Q <- 0 ; R <- V ; while R >= D Q <- Q + 1 ; R <- 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 Cours d'algorithmique 10 / Intranet

  35. Logique de Hoare----------------------------------------------------------------- Exemple : V = 17 , D = 5 Y a-t-il quelque-chose de commun entre les différentes itérations ? Q <- 0 ; R <- V ; while R >= D Q <- Q + 1 ; R <- R - D V = 17 , D = 5 , Q = 0 OUI : V = Q * D + R Continuons ! 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 Cours d'algorithmique 10 / Intranet

  36. Logique de Hoare----------------------------------------------------------------- Exemple : V = 17 , D = 5 Y a-t-il quelque-chose de commun entre les différentes itérations ? Q <- 0 ; R <- V ; while R >= D Q <- Q + 1 ; R <- R - D V = 17 , D = 5 , Q = 0 OUI : V = Q * D + R Continuons ! V = 17 , D = 5 , Q = 0 , R = 17 V = 17 , D = 5 , Q = 1 , R = 12 V = 17 , D = 5 , Q = 2 , R = 12 V = 17 , D = 5 , Q = 2 , R = 7 Cours d'algorithmique 10 / Intranet

  37. Logique de Hoare----------------------------------------------------------------- Exemple : V = 17 , D = 5 Y a-t-il quelque-chose de commun entre les différentes itérations ? Q <- 0 ; R <- V ; while R >= D Q <- Q + 1 ; R <- R - D V = 17 , D = 5 , Q = 0 OUI : V = Q * D + R Continuons ! V = 17 , D = 5 , Q = 0 , R = 17 V = 17 , D = 5 , Q = 1 , R = 12 V = 17 , D = 5 , Q = 2 , R = 7 V = 17 , D = 5 , Q = 2 , R = 12 V = 17 , D = 5 , Q = 2 , R = 7 Cours d'algorithmique 10 / Intranet

  38. Logique de Hoare----------------------------------------------------------------- Exemple : V = 17 , D = 5 Y a-t-il quelque-chose de commun entre les différentes itérations ? Q <- 0 ; R <- V ; while R >= D Q <- Q + 1 ; R <- R - D V = 17 , D = 5 , Q = 0 OUI : V = Q * D + R Continuons ! V = 17 , D = 5 , Q = 0 , R = 17 V = 17 , D = 5 , Q = 1 , R = 12 V = 17 , D = 5 , Q = 2 , R = 7 V = 17 , D = 5 , Q = 2 , R = 12 V = 17 , D = 5 , Q = 3 , R = 7 V = 17 , D = 5 , Q = 2 , R = 7 Cours d'algorithmique 10 / Intranet

  39. Logique de Hoare----------------------------------------------------------------- Exemple : V = 17 , D = 5 Y a-t-il quelque-chose de commun entre les différentes itérations ? Q <- 0 ; R <- V ; while R >= D Q <- Q + 1 ; R <- R - D V = 17 , D = 5 , Q = 0 OUI : V = Q * D + R Continuons ! V = 17 , D = 5 , Q = 0 , R = 17 V = 17 , D = 5 , Q = 1 , R = 12 V = 17 , D = 5 , Q = 2 , R = 7 V = 17 , D = 5 , Q = 2 , R = 12 V = 17 , D = 5 , Q = 3 , R = 7 V = 17 , D = 5 , Q = 2 , R = 7 V = 17 , D = 5 , Q = 3 , R = 2 Cours d'algorithmique 10 / Intranet

  40. Logique de Hoare----------------------------------------------------------------- Exemple : V = 17 , D = 5 Y a-t-il quelque-chose de commun entre les différentes itérations ? Q <- 0 ; R <- V ; while R >= D Q <- Q + 1 ; R <- R - D V = 17 , D = 5 , Q = 0 OUI : V = Q * D + R Encore ! ! ! V = 17 , D = 5 , Q = 0 , R = 17 V = 17 , D = 5 , Q = 1 , R = 12 V = 17 , D = 5 , Q = 2 , R = 7 V = 17 , D = 5 , Q = 2 , R = 12 V = 17 , D = 5 , Q = 3 , R = 7 V = 17 , D = 5 , Q = 2 , R = 7 V = 17 , D = 5 , Q = 3 , R = 2 Cours d'algorithmique 10 / Intranet

  41. Logique de Hoare----------------------------------------------------------------- Exemple : V = 17 , D = 5 Y a-t-il quelque-chose de commun entre les différentes itérations ? Q <- 0 ; R <- V ; while R >= D Q <- Q + 1 ; R <- R - D V = 17 , D = 5 , Q = 0 OUI : V = Q * D + R Encore ! ! ! V = 17 , D = 5 , Q = 0 , R = 17 V = 17 , D = 5 , Q = 1 , R = 12 V = 17 , D = 5 , Q = 2 , R = 7 V = 17 , D = 5 , Q = 2 , R = 12 V = 17 , D = 5 , Q = 3 , R = 7 V = 17 , D = 5 , Q = 2 , R = 7 V = 17 , D = 5 , Q = 3 , R = 2 Cours d'algorithmique 10 / Intranet

  42. Logique de Hoare----------------------------------------------------------------- Exemple : V = 17 , D = 5 Y a-t-il quelque-chose de commun entre les différentes itérations ? Q <- 0 ; R <- V ; while R >= D Q <- Q + 1 ; R <- R - D V = 17 , D = 5 , Q = 0 OUI : V = Q * D + R Aussi ! ! ! V = 17 , D = 5 , Q = 0 , R = 17 V = 17 , D = 5 , Q = 1 , R = 12 V = 17 , D = 5 , Q = 2 , R = 7 V = 17 , D = 5 , Q = 2 , R = 12 V = 17 , D = 5 , Q = 3 , R = 7 V = 17 , D = 5 , Q = 2 , R = 7 V = 17 , D = 5 , Q = 3 , R = 2 Cours d'algorithmique 10 / Intranet

  43. Logique de Hoare----------------------------------------------------------------- Exemple : V = 17 , D = 5 Y a-t-il quelque-chose de commun entre les différentes itérations ? Q <- 0 ; R <- V ; while R >= D Q <- Q + 1 ; R <- R - D V = 17 , D = 5 , Q = 0 OUI : V = Q * D + R Continuons ! V = 17 , D = 5 , Q = 0 , R = 17 V = 17 , D = 5 , Q = 1 , R = 12 V = 17 , D = 5 , Q = 2 , R = 7 V = 17 , D = 5 , Q = 2 , R = 12 V = 17 , D = 5 , Q = 3 , R = 7 V = 17 , D = 5 , Q = 2 , R = 7 V = 17 , D = 5 , Q = 3 , R = 2 Cours d'algorithmique 10 / Intranet

  44. Logique de Hoare----------------------------------------------------------------- Exemple : V = 17 , D = 5 Y a-t-il quelque-chose de commun entre les différentes itérations ? Q <- 0 ; R <- V ; while R >= D Q <- Q + 1 ; R <- 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 V = 17 , D = 5 , Q = 3 , R = 7 V = 17 , D = 5 , Q = 3 , R = 2 Cours d'algorithmique 10 / Intranet

  45. Logique de Hoare----------------------------------------------------------------- Exemple : V = 17 , D = 5 Y a-t-il quelque-chose de commun entre les différentes itérations ? Q <- 0 ; R <- V ; while R >= D Q <- Q + 1 ; R <- 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 V = 17 , D = 5 , Q = 3 , R = 7 V = 17 , D = 5 , Q = 3 , R = 2 Cours d'algorithmique 10 / Intranet

  46. Logique de Hoare----------------------------------------------------------------- Exemple : V = 17 , D = 5 Y a-t-il quelque-chose de commun entre les différentes itérations ? Q <- 0 ; R <- V ; while R >= D Q <- Q + 1 ; R <- 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 < D V = 17 , D = 5 , Q = 3 , R = 7 V = 17 , D = 5 , Q = 3 , R = 2 Cours d'algorithmique 10 / Intranet

  47. Logique de Hoare----------------------------------------------------------------- • Les valeurs de V , D , Q , R peuvent changer. • Mais la relation V = Q * D + R reste toujours vérifiée. Cours d'algorithmique 10 / Intranet

  48. Logique de Hoare----------------------------------------------------------------- • Les valeurs de V , D , Q , R peuvent changer. • Mais la relation V = Q * D + R reste toujours vérifiée. • C’est ce qu’on appelle un « invariant » ! Cours d'algorithmique 10 / Intranet

  49. Logique de Hoare----------------------------------------------------------------- • Les valeurs de V , D , Q , R peuvent changer. • Mais la relation V = Q * D + R reste toujours vérifiée. • C’est ce qu’on appelle un « invariant » ! • Un invariant est un prédicat qui : Cours d'algorithmique 10 / Intranet

  50. Logique de Hoare----------------------------------------------------------------- • Les valeurs de V , D , Q , R peuvent changer. • Mais la relation V = Q * D + R reste toujours vérifiée. • C’est ce qu’on appelle un « invariant » ! • Un invariant est un prédicat qui : • est vrai à chaque début de boucle, Cours d'algorithmique 10 / Intranet

More Related