162 lines
4.8 KiB
Plaintext
162 lines
4.8 KiB
Plaintext
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é
|