exemples d'algorithmes
This commit is contained in:
parent
b634a10b77
commit
1470b93a63
|
@ -1,27 +1,40 @@
|
||||||
Aperçu des algorithmes fondamentaux
|
Aperçu des algorithmes fondamentaux
|
||||||
===================================
|
===================================
|
||||||
|
|
||||||
|
Les algorithmes sont partout. Absolument partout aujourd'hui.
|
||||||
|
Il n'est pas un domaine de nos activités qui ne soit liés à tel ou tel algorithme.
|
||||||
|
|
||||||
En mathématiques
|
En mathématiques
|
||||||
-----------------
|
-----------------
|
||||||
|
|
||||||
- l'algèbre
|
- l'algèbre (étude des structures de données)
|
||||||
- l'arithmétique modulaire
|
- l'arithmétique modulaire (théorie des nombres)
|
||||||
- la géométrie (affine, algébrique, topologique...)
|
- la géométrie (affine, algébrique, invariants topologiques...)
|
||||||
|
- les diagrammes (diagrammes de Venn...)
|
||||||
|
- les colorisation d'une carte
|
||||||
|
- comportements stochastiques
|
||||||
|
|
||||||
En informatique
|
En informatique
|
||||||
----------------
|
----------------
|
||||||
|
|
||||||
- les algorithmes sur la manipulation des structures de données
|
- les algorithmes sur la manipulation des structures de données
|
||||||
|
Exemple : les algorithmes de tri, de recherche dans un arbre...
|
||||||
Exemple : les algorithmes de tri, de recherche dans un arbre, un graphe...
|
- les parcours de graphes (chemins le plus court, voyageur de commerce...)
|
||||||
|
- la cryptologie (code gray)
|
||||||
- la cryptologie
|
|
||||||
- les stratégies de jeux
|
- les stratégies de jeux
|
||||||
|
|
||||||
Tirés du monde réel
|
Tirés du monde réel
|
||||||
--------------------
|
--------------------
|
||||||
|
|
||||||
|
- les jeux (casse-tête, dominos, échiquiers...)
|
||||||
|
- énigmes, logique et paradoxes
|
||||||
|
- problèmes de raisonnements. Il n'existe pas beaucoup de méthodes
|
||||||
|
ou de moyens simples pour traiter et résoudre les énoncés de logique de raisonnement.
|
||||||
|
- La "marche de l'ivrogne" : processus de progression discrète (pas à pas)
|
||||||
|
dont l'étape suivante est lié à l'état présent et pas du tout à la mémoire du passé proche.
|
||||||
|
Il revêt seulement un caractère de type probabilité (stochastique) dit markovien.
|
||||||
|
- algorithmes de colonies de fourmis (chemins optimal pour arriver à la nourriture)
|
||||||
|
|
||||||
Le voyageur de commerce
|
Le voyageur de commerce
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
@ -29,10 +42,15 @@ Le problème du voyageur de commerce, consiste en la recherche d’un trajet min
|
||||||
voyageur de visiter n villes. En règle générale on cherche à minimiser le temps de parcours total ou la
|
voyageur de visiter n villes. En règle générale on cherche à minimiser le temps de parcours total ou la
|
||||||
distance totale parcourue.
|
distance totale parcourue.
|
||||||
|
|
||||||
|
Il suffit de construire tous les chemins possibles et de cal-
|
||||||
|
culer leurs longueurs. Avec ``n`` villes il y a ``(n − 1)!/2 chemins``
|
||||||
|
possibles. Avec 36 villes on trouve : 5166573983193072464833325668761600000000,
|
||||||
|
si le nombre de villes augmente, ça devient vite rédibitoire.
|
||||||
|
|
||||||
Résolution par
|
Résolution par
|
||||||
|
|
||||||
- algorithme de parcours de graphes
|
- algorithme de parcours de graphes
|
||||||
|
- algorithme glouton
|
||||||
- algorithmes génétiques
|
- algorithmes génétiques
|
||||||
|
|
||||||
Les algorithmes génétiques s’appuient sur un principe de sélection des individus d’une population qui présen-
|
Les algorithmes génétiques s’appuient sur un principe de sélection des individus d’une population qui présen-
|
||||||
|
@ -43,7 +61,6 @@ maintenant de dé...nir un critère de sélection ainsi que des règles d’évo
|
||||||
|
|
||||||
- approches métaheuristiques (exemples: colonies de fourmis)
|
- approches métaheuristiques (exemples: colonies de fourmis)
|
||||||
|
|
||||||
|
|
||||||
Exemple de résolution
|
Exemple de résolution
|
||||||
|
|
||||||
.. raw:: latex
|
.. raw:: latex
|
||||||
|
|
|
@ -146,3 +146,53 @@ contrôler la machine.
|
||||||
|
|
||||||
.. important:: Apprendre à programmer, c'est-à-dire apprendre à penser de manière structurée,
|
.. important:: Apprendre à programmer, c'est-à-dire apprendre à penser de manière structurée,
|
||||||
pour pouvoir accessoirement ensuite communiquer avec une machine.
|
pour pouvoir accessoirement ensuite communiquer avec une machine.
|
||||||
|
|
||||||
|
Compilateur
|
||||||
|
-----------
|
||||||
|
|
||||||
|
Schématiquement, un compilateur est un programme qui traduit un
|
||||||
|
programme d’un langage source vers un langage cible, en signalant
|
||||||
|
d’éventuelles erreurs
|
||||||
|
|
||||||
|
Quand on parle de compilation, on pense typiquement à la traduction d’un
|
||||||
|
langage de haut niveau (C, Java, Caml, ...) vers le langage machine d’un
|
||||||
|
processeur (Intel Pentium, PowerPC, ...)
|
||||||
|
|
||||||
|
- xml (libre office, word) -> postscript (imprimante)
|
||||||
|
- postcript -> image
|
||||||
|
- syntaxe wiki -> html (Wikipédia...)
|
||||||
|
|
||||||
|
compilation graphique
|
||||||
|
|
||||||
|
passer une description, ça donne un dessin genre ocaml Quilt < mon_dessin.txt
|
||||||
|
passer par une api qui permet de causer avec une interface
|
||||||
|
|
||||||
|
**transpiler** : transformation d'un langage de haut niveau vers un autre
|
||||||
|
langage de haut niveau.
|
||||||
|
|
||||||
|
- cofee script, typescript -> javascript
|
||||||
|
- (babel) javascript -> javascript ES 6
|
||||||
|
- python -> javascript
|
||||||
|
|
||||||
|
Un compilateur traduit un programme P en un programme Q tel que
|
||||||
|
pour toute entrée x , la sortie de `Q(x)` soit la même que celle de `P(x)`
|
||||||
|
|
||||||
|
Un interprète est un programme qui, étant donné un programme `P` et une
|
||||||
|
entrée x , calcule la sortie s de `P(x)`
|
||||||
|
|
||||||
|
Le compilateur fait un travail complexe une seule fois, pour produire un
|
||||||
|
code fonctionnant pour n’importe quelle entrée
|
||||||
|
L’interprète effectue un travail plus simple, mais le refait sur chaque entrée
|
||||||
|
Autre différence : le code compilé est généralement bien plus efficace que
|
||||||
|
le code interprété
|
||||||
|
|
||||||
|
Typiquement, le travail d’un compilateur se compose d’une phase d’analyse
|
||||||
|
|
||||||
|
- reconnaı̂t le programme à traduire et sa signification
|
||||||
|
- signale les erreurs et peut donc échouer (erreurs de syntaxe, de portée, de typage, etc.)
|
||||||
|
|
||||||
|
Puis d’une phase de synthèse
|
||||||
|
|
||||||
|
- production du langage cible
|
||||||
|
- utilise de nombreux langages intermédiaires
|
||||||
|
- n’échoue pas
|
||||||
|
|
Loading…
Reference in New Issue