From 1470b93a6390ebdd440639a4b1cb81b6c9d2c3f3 Mon Sep 17 00:00:00 2001 From: gwen Date: Mon, 24 Apr 2017 15:52:43 +0200 Subject: [PATCH] exemples d'algorithmes --- algorithmique/cours/apercu.txt | 37 ++++++++++++++++------- algorithmique/cours/fondement.txt | 50 +++++++++++++++++++++++++++++++ 2 files changed, 77 insertions(+), 10 deletions(-) diff --git a/algorithmique/cours/apercu.txt b/algorithmique/cours/apercu.txt index 02ebdb0..6a3aaec 100644 --- a/algorithmique/cours/apercu.txt +++ b/algorithmique/cours/apercu.txt @@ -1,27 +1,40 @@ 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 ----------------- -- l'algèbre -- l'arithmétique modulaire -- la géométrie (affine, algébrique, topologique...) - +- l'algèbre (étude des structures de données) +- l'arithmétique modulaire (théorie des nombres) +- la géométrie (affine, algébrique, invariants topologiques...) +- les diagrammes (diagrammes de Venn...) +- les colorisation d'une carte +- comportements stochastiques En informatique ---------------- - les algorithmes sur la manipulation des structures de données - -Exemple : les algorithmes de tri, de recherche dans un arbre, un graphe... - -- la cryptologie + Exemple : les algorithmes de tri, de recherche dans un arbre... +- les parcours de graphes (chemins le plus court, voyageur de commerce...) +- la cryptologie (code gray) - les stratégies de jeux 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 ~~~~~~~~~~~~~~~~~~~~~~~~ @@ -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 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 - algorithme de parcours de graphes - +- algorithme glouton - 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- @@ -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) - Exemple de résolution .. raw:: latex diff --git a/algorithmique/cours/fondement.txt b/algorithmique/cours/fondement.txt index 8c53fe3..d55bfb2 100644 --- a/algorithmique/cours/fondement.txt +++ b/algorithmique/cours/fondement.txt @@ -146,3 +146,53 @@ contrôler la machine. .. important:: Apprendre à programmer, c'est-à-dire apprendre à penser de manière structurée, 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