Introduire les notions de calculabilité et de décidabilité
- Fiche de cours
- Quiz et exercices
- Vidéos et podcasts
- Comprendre que tous les problèmes ne sont pas résolubles par un algorithme ou par un programme informatique.
- Comprendre que le fait de connaitre la décidabilité ou l'indécidabilité d’un problème est important.
- Comprendre que la calculabilité ne dépend pas du langage de programmation utilisé.
- Tout problème n’a pas forcément une méthode systématique de résolution. On parle de problème indécidable.
- A contrario, les problèmes qui ont au moins une méthode systématique de résolution sont dits décidables.
- Le problème de l’arrêt est indécidable : il n’existe pas de méthode systématique pour démontrer qu’un programme s’arrête ou non.
- Les notions de calculabilité et de décidabilité sont équivalentes.
- Savoir écrire et utiliser un algorithme.
- Établir un raisonnement par l’absurde.
Bien avant l’existence des ordinateurs, les mathématiciens et les logiciens se sont intéressés aux méthodes de résolution des problèmes. LA question était la suivante : « Chaque problème a-t-il une méthode de résolution ? Tout problème peut-il être résolu par une méthode systématique, par un algorithme ? ».
La réponse est NON.
Ici, la notion de problème est à préciser.
Un problème est caractérisé par les trois propriétés suivantes.
- Le problème est une question
générique qui s’applique à
un ensemble d’éléments.
Exemple
« Déterminer si un nombre entier positif est pair ou impair » est un problème qui s’applique sur l’ensemble des entiers positifs. - Chaque instance du problème a une
réponse.
Exemple
Si on considère le problème précédent, chaque entier positif a une réponse : on peut dire s’il est pair ou impair. - Le problème n’est pas défini
par un algorithme ou par un programme.
Exemple
Le problème précédent ne dépend pas directement d’un algorithme, mais de la définition de ce qu’est un nombre pair.
Le problème « Déterminer si un nombre entier positif est pair ou impair » est décidable car, si on considère un nombre entier positif quelconque, il suffit d’observer son chiffre des unités pour déterminer s’il est pair ou impair. Si ce chiffre est égal à 0, 2, 4, 6 ou 8, le nombre est pair, il est impair sinon.
Généralement, les démonstrations de décidabilité ou d’indécidabilité sont complexes à établir et sont hors programme.
Un problème célèbre est celui du pavage du plan par des polygones. Paver le plan avec des polygones signifie recouvrir le plan avec ces polygones sans qu’ils ne se chevauchent et sans qu’il y ait d’espace entre eux.
Le problème se pose de la manière suivante : « Déterminer si une collection de polygones peut paver le plan ou non. »
Ce problème est indécidable. Il n’existe pas d’algorithme, pas de méthode systématique qui détermine si une collection de polygones peut paver le plan ou non. Cette indécidabilité a été démontrée dans les années 1960.
- Savoir qu’il est inutile de chercher un algorithme de résolution du problème.
- Orienter l’étude du problème vers des sous-problèmes qui pourraient, quant à eux, être décidables.
Si on réduit le problème du pavage à des carrés, qui sont des polygones particuliers (même de dimensions différentes), le sous-problème ainsi obtenu est décidable.
Dans les années 1930, des mathématiciens ont formalisé les notions de problème et de méthode de calcul. Leur interrogation était la suivante : « Peut-on tout calculer ? Peut-on réduire tout calcul à une succession finie d’opérations arithmétiques élémentaires ? » Ainsi est née la notion de fonction calculable.
Tout d’abord, une fonction est une relation entre un ensemble de départ et un ensemble d’arrivée, qui à chaque élément de l’ensemble de départ associe un unique élément de l’ensemble d’arrivée.
Autrement dit, une fonction f est calculable s’il existe un algorithme qui permet de déterminer f(x) pour toutes valeurs de x.
Entre 1932 et 1936, Alonzo Church, un mathématicien américain, a identifié une classe de fonctions arithmétiques qui semblent correspondre aux fonctions calculables. Cette conjecture s’appelle la « Thèse de Church ».
Parallèlement à cela, en 1936, Alan Turing, un mathématicien britannique, a défini un modèle abstrait de machine mécanique qui permet d’effectuer des calculs. Il s’agit de la première modélisation de ce que seront les ordinateurs.
Un an après, Alan Turing a montré qu’il y avait une équivalence entre l’ensemble des fonctions programmables sur ses machines et l’ensemble des fonctions calculables. Toute fonction programmable est ainsi calculable et inversement. C’est pourquoi cette machine a été appelée machine universelle puisqu’elle pouvait faire fonctionner tous les algorithmes. Cette machine est maintenant nommée machine de Turing.
En effet, si P est un problème, son instance P(a) pour la valeur a est vraie ou fausse.
Ainsi tout problème est une fonction à valeurs dans l’ensemble {vrai, faux} :
P : a → P(a) {vrai, faux}
Réciproquement, si la fonction P est calculable, il existe un algorithme qui en calcule chaque image. Donc pour chaque valeur a, un algorithme permet de savoir si P(a) est vraie ou fausse. Le problème P est décidable.
Maintenant, une question reste : « Toutes les fonctions sont-elles calculables ? » La réponse fut tranchée dans les années 1930. Toutes les fonctions ne sont pas calculables.
Le problème de l’arrêt en est un exemple.
Le problème est ici de déterminer s’il existe une méthode systématique pour prouver qu’un algorithme se termine ou non.
On suppose que ce problème est décidable. On montre ensuite qu’il y a une incohérence.
Démonstration par
l’absurde On suppose qu’il existe une fonction arrêt(A) qui à tout algorithme A associe Vrai si l’algorithme A se termine et Faux sinon. Pour tout entier naturel n, on définit un algorithme Turing(n) de la manière suivante.
On étudie le cas où
k
est le nombre de caractères de
l’algorithme Turing(n).
Ainsi la supposition initiale est fausse. Donc le problème de l’arrêt est indécidable. |
Des quiz et exercices pour mieux assimiler sa leçon
La plateforme de soutien scolaire en ligne myMaxicours propose des quiz et exercices en accompagnement de chaque fiche de cours. Les exercices permettent de vérifier si la leçon est bien comprise ou s’il reste encore des notions à revoir.
Des exercices variés pour ne pas s’ennuyer
Les exercices se déclinent sous toutes leurs formes sur myMaxicours ! Selon la matière et la classe étudiées, retrouvez des dictées, des mots à relier ou encore des phrases à compléter, mais aussi des textes à trous et bien d’autres formats !
Dans les classes de primaire, l’accent est mis sur des exercices illustrés très ludiques pour motiver les plus jeunes.
Des quiz pour une évaluation en direct
Les quiz et exercices permettent d’avoir un retour immédiat sur la bonne compréhension du cours. Une fois toutes les réponses communiquées, le résultat s’affiche à l’écran et permet à l’élève de se situer immédiatement.
myMaxicours offre des solutions efficaces de révision grâce aux fiches de cours et aux exercices associés. L’élève se rassure pour le prochain examen en testant ses connaissances au préalable.
Des vidéos et des podcasts pour apprendre différemment
Certains élèves ont une mémoire visuelle quand d’autres ont plutôt une mémoire auditive. myMaxicours s’adapte à tous les enfants et adolescents pour leur proposer un apprentissage serein et efficace.
Découvrez de nombreuses vidéos et podcasts en complément des fiches de cours et des exercices pour une année scolaire au top !
Des podcasts pour les révisions
La plateforme de soutien scolaire en ligne myMaxicours propose des podcasts de révision pour toutes les classes à examen : troisième, première et terminale.
Les ados peuvent écouter les différents cours afin de mieux les mémoriser en préparation de leurs examens. Des fiches de cours de différentes matières sont disponibles en podcasts ainsi qu’une préparation au grand oral avec de nombreux conseils pratiques.
Des vidéos de cours pour comprendre en image
Des vidéos de cours illustrent les notions principales à retenir et complètent les fiches de cours. De quoi réviser sa prochaine évaluation ou son prochain examen en toute confiance !