réflexions sur l'abstraction algorithmique

This commit is contained in:
gwen 2017-03-23 11:23:49 +01:00 committed by Benjamin Bohard
parent ce0578399d
commit 603bbf6bf1
1 changed files with 112 additions and 26 deletions

View File

@ -2,7 +2,8 @@ Algorithmique
=============
Al-Kharezmi, auteur du traité "Kitab al jabr w'al-muqabala", est l'inventeur
des manipulations algébriques (algèbre = al jabr).
des manipulations algébriques (algèbre = al jabr), mais l'algèbre existe
depuis bien plus longtemps (Babylone, puis l'Egypte ancienne).
C'est Léonard de Pise, dit Fibonacci, qui emprunta le nom du célèbre
mathématicien arabe du 9ème siècle.
@ -25,8 +26,10 @@ 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.
implémentation
Adaptation de la méthodologie de calculabilité au calcul effectif
sur une machine abstraite ou via un langage formel.
Il ny a pas de parcours à sens unique de lalgorithme vers limplantation.
La quête dune implantation efficace nous amène souvent à effectuer
@ -34,36 +37,82 @@ un retour vers les algorithmes eux-mêmes, et à en modifier des points
essentiels. Laspect théorique de réflexion sur les algorithmes,
et laspect pratique de l'implémentation sont donc en symbiose.
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.
Types d'algorithmes
-------------------
La boucle
~~~~~~~~~~
Différents types de boucles (suites récurrentes, goto, boucle for...)
.. 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}
\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}
.. 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}
L'algorithme comme généralisation de la calculabilité
------------------------------------------------------
@ -139,6 +188,43 @@ Démonstration
vérification dune proposition par une séquence de déductions logiques
à partir dun ensemble daxiomes.
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.
Comment rendre un algorithme lisible
------------------------------------