Algorithmie

Tags :
  • cours
  • algorithmie
Auteur :
  • François Brucker

Cours d'algorithmie.

L'informatique n'est pas plus la science des ordinateurs que l'astronomie n'est celle des télescopes E. Dijkstra

Il est conseillé pour ce cours d'avoir des bases de programmation en python. Pour apprendre vous pouvez vous reporter au cours coder et développer.

Algorithmes et programmes

Bases théoriques

Écrire des algorithmes pour résoudre des problèmes

Autres modèles

L'écriture d'algorithmes sous la forme de pseudo-code n'est qu'une des nombreuses façon d'en écrire. Nous allons en voir 4 toutes équivalentes les unes avec les autres !

TBD : séparer modèle et MTU qui permet de simuler dans le modèle. C'est le principe d'un ordinateur.

Langages informatiques

TBD : le plus clair car le pseudo code s'écrit presque directement, par exemple en python
TBD pas exécuté directement. Traduit en un autre langage compréhensible par ce qui va l'exécuter.
TBD : compilé en langage machine (montrer des exemples). Souvent actuellement en byte code (module dis en python pour le voir https://docs.python.org/fr/3/library/dis.html ou https://www.fevrierdorian.com/carnet/pages/python-sous-le-capot-chapitre-1-fonctionnement-de-la-vm-cpython.html) qui est lui-même exécuté par une machine virtuelle.

Modèle de Von Neumann

TBD : le langage de la machine
tout est basé sur les opérations booléennes, logiques.

TBD circuit logiques ?

Machines de Turing

TBD : ne garder que la machine à 1 ruban ici.

Cette partie est là pour vous montrer que pseudo-code et machines de Turing sont deux notions équivalentes. On aura également besoin des machines de Turing bien plus tard, lorsque nous rencontrerons les classes de problèmes.

Lambda calcul

TBD : pour les matheux qui veulent s'encanailler à faire de l'informatique

Automates cellulaires

TBD : Jeu de la vie
TBD : https://fr.wikipedia.org/wiki/Automate_cellulaire#Règle_110

Équivalence des différentes approches

TBD : à supprimer de la partie sur les machines de Turing et à mettre ici.
TBD MTU = langage universel

Complexités

Cette partie s'intéresse à la notion de complexités pour un algorithme et un problème.

La notion de complexité est centrale en algorithmie, nous en reparlerons encore plus tard dans le cours.

On s'entraîne : problèmes liés à l'exponentiation

Complexité en moyenne

Problème du tri

On s'entraîne : exercices de complexité et de preuve

Structures linéaires

Complexité amortie

Design d'algorithmes

Problème du "sac à dos"

Classes de Problèmes Algorithmiques

Désordre et hasard

TBD nombre aléatoires