Salut à tous,
Je suis en train d'écrire un petit tuto sur les machine de Turing. Parce que l'info théorique, c'est le bien !
J'aimerai bien avoir quelques retours, pour le moment j'ai un plan et mon intro. Donnez moi votre votre avis !
Ce tutoriel a pour but de vous familiariser avec les machines de Turing et les applications qu'elles ont en informatique. Ce tuto traitant de l'informatique théorique, ne vous attendez pas à programmer ou apprendre à faire quelque chose de concret.
La machine de Turing est avant tout un modèle mathématique, qui permet de démontrer des résultats théoriques sur les programmes. C'est grâce à elle que l'on définit rigoureusement la complexité d'un algorithme par exemple, ou que l'on démontre la terminaison de certains d'entre eux. Si ces mots ne vous disent rien, ne vous inquiétez pas, tout ceci sera vu au moment approprié dans le cours !
Je tiens également à préciser que ce tuto se veut une initiation à l'informatique théorique, il n'a pas pour but de définir exactement toutes les notions qu'il aborde, ni de démontrer toutes les propriétés évoquées. Ce serait trop long et à mon avis trop indigeste comme premier contact avec l'informatique théorique.
Si vous souhaitez approfondir ce qui a été évoqué ici, je vous conseille vivement la lecture du livre Introduction to the theory of Computation de M. Sipser (en anglais).
-
Notion de langage : première approche avec les automates finis
- Alphabet, langage
- Automate fini
- Langage rationnel
- Automates non déterministes
- Jouons un peu : nombreux exemples
- Pour aller plus loin : langages non rationnels
-
Machine de Turing : première approche
- Approche intuitive
- Quelques exemples
- Machines équivalentes
- D'autres exemples
-
P, NP
- Complexité d'un algorithme
- Classe P
- Classe NP
- NP-complétude
- Pour aller plus loin : quelques réductions
-
Décidabilité
- Langage reconnaissable, décidable
- Décidabilité de (N,+)
(Lien de la beta du tutoriel : Les machines de Turing )
Merci !