Algorithmique ============= Al-Kharezmi, auteur du traité "Kitab al jabr w'al-muqabala", est l'inventeur des manipulations algébriques (algèbre = al jabr). C'est Léonard de Pise, dit Fibonacci, qui emprunta le nom du célèbre mathématicien arabe du 9ème siècle. .. glossary:: algorithme terme désignant une suite d'opérations constituant un schéma de calcul ou de résolution d'un problème. C'est un processus systématique de résolution d'un problème permettant de décrire précisément des étapes. C'est une suite finie d'instructions permettant de donner la réponse à un problème. L'algorithmique est l'étude et la production de règles et de techniques qui sont impliquées dans la définition d'algorithmes. Implémentation d'un algorithme ------------------------------ Adaptation de la méthodologie de calculabilité au calcul effectif sur une machine abstraite ou via un langage formel. Il n’y a pas de parcours à sens unique de l’algorithme vers l’implantation. La quête d’une implantation efficace nous amène souvent à effectuer un retour vers les algorithmes eux-mêmes, et à en modifier des points essentiels. L’aspect théorique de réflexion sur les algorithmes, et l’aspect pratique de l'implémentation sont donc en symbiose. Types d'algorithmes ------------------- .. raw:: latex \begin{algorithm} \caption{My algorithm}\label{euclid} \begin{algorithmic}[1] \Procedure{MyProcedure}{} \State $\textit{stringlen} \gets \text{length of }\textit{string}$ \State $i \gets \textit{patlen}$ \BState \emph{top}: \If {$i > \textit{stringlen}$} \Return false \EndIf \State $j \gets \textit{patlen}$ \BState \emph{loop}: \If {$\textit{string}(i) = \textit{path}(j)$} \State $j \gets j-1$. \State $i \gets i-1$. \State \textbf{goto} \emph{loop}. \State \textbf{close}; \EndIf \State $i \gets i+\max(\textit{delta}_1(\textit{string}(i)),\textit{delta}_2(j))$. \State \textbf{goto} \emph{top}. \EndProcedure \end{algorithmic} \end{algorithm} L'algorithme comme généralisation de la calculabilité ------------------------------------------------------ L'importance croissante de l'informatique comme outil scientifique impose d'élaborer un nouveau mode de description des méthodes de calcul (appelées algorithmes) susceptible de satisfaire à la fois le critère de sécurité (maîtrise du résultat) et la possibilité d'implémenter les calculs sur un ordinateur. Qualité d'un algorithme ----------------------- - correction d'un algorithme - complétude d'un algorithme Sémantique Étude du sens, de la signification d'un langage Définir la sémantique d’un langage formel consiste à lui donner une signification mathématique. Sémantique opérationnelle on définit la sémantique par sa mise en œuvre sur une machine abstraite. Sémantique dénotationnelle on associe à chaque construction syntaxique un objet mathématique Sémantique axiomatique chaque construction est décrite par la manière dont elle transforme des propriétés ou des prédicats. Proposition une proposition est un énoncé qui est soit vrai, soit faux **exemple** : ``2 + 3 = 5``. Proposition vraie. Prédicats Définition : Une proposition dont la valeur de vérité dépend de la valeur d’une ou plusieurs variables **Exemple** : “n est pair” : vrai pour n = 4 mais faux pour n = 9 Axiome une proposition qui est supposée vraie Un ensemble d’axiomes est consistant s’il n’existe pas de proposition dont on peut démontrer qu’elle est à la fois vraie et fausse. Un ensemble d’axiomes est complet si, pour toute proposition, il est possible de démontrer qu’elle est vraie ou fausse. Théorème d’incomplétude de Gödel (1931) : tout ensemble consistant d’axiomes pour l’arithmétique sur les entiers est nécessairement incomplet. **Les concepts de base en algorithmique sont les axiomes** inférence règles d’inférence, règles permettant de combiner des axiomes et des propositions vraies pour établir de nouvelles propositions vraies. Démonstration vérification d’une proposition par une séquence de déductions logiques à partir d’un ensemble d’axiomes. Comment rendre un algorithme lisible ------------------------------------ - Le bon algorithme utilise des identifiants explicites. - Le bon algorithme est structuré. - Le bon algorithme est indenté. Complexité d'un algorithme -------------------------- On peut approximer la complexité des algorithmes. C'est utile pour pouvoir comparer des algorithmes. complexité estimer la complexité d'unalgorithme, c'est-à-dire estimer le nombre de calculs qu'il utilise. analyse de complexité