2017-03-21 11:56:53 +01:00
|
|
|
|
Algorithmique
|
|
|
|
|
=============
|
|
|
|
|
|
|
|
|
|
Al-Kharezmi, auteur du traité "Kitab al jabr w'al-muqabala", est l'inventeur
|
2017-03-23 11:23:49 +01:00
|
|
|
|
des manipulations algébriques (algèbre = al jabr), mais l'algèbre existe
|
|
|
|
|
depuis bien plus longtemps (Babylone, puis l'Egypte ancienne).
|
2017-03-21 11:56:53 +01:00
|
|
|
|
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.
|
|
|
|
|
|
2017-03-22 09:13:07 +01:00
|
|
|
|
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
|
|
|
|
|
------------------------------
|
|
|
|
|
|
2017-03-23 11:23:49 +01:00
|
|
|
|
implémentation
|
|
|
|
|
|
|
|
|
|
Adaptation de la méthodologie de calculabilité au calcul effectif
|
|
|
|
|
sur une machine abstraite ou via un langage formel.
|
2017-03-22 09:13:07 +01:00
|
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
2017-03-23 11:23:49 +01:00
|
|
|
|
Un existant émerge de la décomposition structurale d'un
|
|
|
|
|
domaine de base. Le fait essentiel, c'est la genèse des genres de l'existant les
|
|
|
|
|
uns à partir des autres.
|
|
|
|
|
|
|
|
|
|
L'essence d'une forme (un algorithme) se réalise au sein d'une matière qu'elle créée
|
|
|
|
|
(un langage). L'origine d'une matière fait naître les formes (concepts)
|
|
|
|
|
que sa structure dessine.
|
|
|
|
|
|
|
|
|
|
- Notion structurale de non-contradiction
|
|
|
|
|
- Notion extensive de "réalisation dans un champ donné"
|
|
|
|
|
|
|
|
|
|
Deux aspects réciproques : l'essence d'une forme se réalise au sein d'une
|
|
|
|
|
matière qu'elle crée, l'essence d'une matière faisant naître les formes que sa
|
|
|
|
|
structure dessine.
|
|
|
|
|
|
|
|
|
|
Abandonner l'idée trop simpliste de domaines concrets et d'opérations abstraites
|
|
|
|
|
qui posséderaient en eux-mêmes comme une nature de matière et une nature de
|
|
|
|
|
forme ; cette conception tendrait, en effet, à stabiliser les existants
|
|
|
|
|
mathématiques dans certains rôles immuables et ignorerait le fait que les
|
|
|
|
|
existants abstraits qui naissent de la structure d'un domaine plus concret
|
|
|
|
|
peuvent à leur tour servir de domaine de base pour la genèse d'autres existants.
|
|
|
|
|
|
|
|
|
|
|
2017-03-22 09:13:07 +01:00
|
|
|
|
Types d'algorithmes
|
|
|
|
|
-------------------
|
|
|
|
|
|
2017-03-23 11:23:49 +01:00
|
|
|
|
La boucle
|
|
|
|
|
~~~~~~~~~~
|
|
|
|
|
|
|
|
|
|
Différents types de boucles (suites récurrentes, goto, boucle for...)
|
|
|
|
|
|
|
|
|
|
|
2017-03-21 11:56:53 +01:00
|
|
|
|
.. raw:: latex
|
|
|
|
|
|
2017-03-23 11:23:49 +01:00
|
|
|
|
\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}
|
|
|
|
|
|
2017-03-21 11:56:53 +01:00
|
|
|
|
|
2017-03-23 11:23:49 +01:00
|
|
|
|
.. raw:: latex
|
|
|
|
|
|
|
|
|
|
\begin{algorithm}
|
|
|
|
|
\caption{Euclid's algorithm}\label{euclid}
|
|
|
|
|
\begin{algorithmic}[1]
|
|
|
|
|
\Procedure{Euclid}{$a,b$}\Comment{The g.c.d. of a and b}
|
|
|
|
|
\State $r\gets a\bmod b$
|
|
|
|
|
\While{$r\not=0$}\Comment{We have the answer if r is 0}
|
|
|
|
|
\State $a\gets b$
|
|
|
|
|
\State $b\gets r$
|
|
|
|
|
\State $r\gets a\bmod b$
|
|
|
|
|
\EndWhile\label{euclidendwhile}
|
|
|
|
|
\State \textbf{return} $b$\Comment{The gcd is b}
|
|
|
|
|
\EndProcedure
|
|
|
|
|
\end{algorithmic}
|
|
|
|
|
\end{algorithm}
|
2017-03-21 11:56:53 +01:00
|
|
|
|
|
2017-03-22 09:13:07 +01:00
|
|
|
|
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.
|
2017-03-21 11:56:53 +01:00
|
|
|
|
|
2017-03-23 11:23:49 +01:00
|
|
|
|
Lorsque le champ donné (le domaine) ne contient qu'un nombre fini d'individus,
|
|
|
|
|
on peut définir un choix de valeur des variables permettant de vérifier la
|
|
|
|
|
proposition obtenue par la *conjonction* de tous les axiomes du système proposé.
|
|
|
|
|
On dit alors que ce choix *réalise* un système d'axiomes.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Il ne s'agit plus de savoir si la définition entraîne l'existence, mais de
|
|
|
|
|
chercher si la structure d'un système d'axiomes (*règles*) peut donner naissance
|
|
|
|
|
à un champ d'individus qui soutiennent entre eux les relations définies pas les
|
|
|
|
|
axiomes.
|
|
|
|
|
|
|
|
|
|
Concret et abstrait
|
|
|
|
|
--------------------
|
|
|
|
|
|
|
|
|
|
Il est possible qu'un même genre d'existant joue dans un schéma de genèse le
|
|
|
|
|
rôle d'abstrait par rapport à un concret de base, et soit au contraire dans une
|
|
|
|
|
autre genèse le concret de base d'un nouvel abstrait.
|
|
|
|
|
|
|
|
|
|
Une pareille présentation des choses implique un tel renversement par rapport
|
|
|
|
|
aux habitudes de pensée classiques, qu'il faut encore insister sur le sens
|
|
|
|
|
nouveau que reçoivent ici les expressions de "concret" et "d'abstrait".
|
|
|
|
|
|
|
|
|
|
Les systèmes d'axiomes sont souvent conçus comme des structures purement
|
|
|
|
|
formelles, abstraites. Ces structures sont si profondément engagées dans la
|
|
|
|
|
genèse de leurs réalisations, qu'il valait mieux désigner par ces termes les
|
|
|
|
|
structures de base.
|
|
|
|
|
|
|
|
|
|
Un système d'axiome *peut* devenir le concret de base.
|
|
|
|
|
|
|
|
|
|
Ceci permet d'exprimer non seulement l'engagement du concret dans la genèse de
|
|
|
|
|
l'abstrait, mais encore les relations d'imitation qui peuvent exister entre la
|
|
|
|
|
structure de cet abstrait et celle du concret de base.
|
|
|
|
|
|
|
|
|
|
Dans certains cas, la genèse de l'abstrait à partir d'un concret de base
|
|
|
|
|
s'affirme jusqu'à réaliser une imitation de structure entre ces genres
|
|
|
|
|
d'existants qui naissent l'un de l'autre.
|
|
|
|
|
|
2017-03-21 11:56:53 +01:00
|
|
|
|
Comment rendre un algorithme lisible
|
|
|
|
|
------------------------------------
|
|
|
|
|
|
|
|
|
|
- Le bon algorithme utilise des identifiants explicites.
|
|
|
|
|
- Le bon algorithme est structuré.
|
|
|
|
|
- Le bon algorithme est indenté.
|
|
|
|
|
|
|
|
|
|
|
2017-03-22 09:13:07 +01:00
|
|
|
|
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é
|