Teaching Methods & Materials">
Complexité Update
Complexité Update
Complexité Update
Calculabilité et Complexité
Un problème est dit de décision si la réponse aux instances du problème est soit
oui soit non.
15. Montrer qu'une machine de Turing peut simuler une machine RAM
La machine de Turing simule alors la machine à mémoire RAM de la façon
suivante :
Parcourir le ruban représentant la mémoire jusqu‟à trouver l‟adresse
correspondant au
contenu du compteur de programme (PC);
Lire et décoder l‟instruction se trouvant à cette adresse;
Le cas échéant trouver les opérandes de cette instruction;
Exécuter l‟instruction, ce qui implique éventuellement la modification de la
mémoire et/ou des registres;
Incrémenter le compte de programme (sauf si l‟instruction est une instruction
de
branchement) et passer au cycle suivant.
16. Enoncer la thèse de Turing-Church
≪ Tout traitement réalisable mécaniquement pour etre accompli par une
machine de Turing ≫
17. Une variété d’extensions peuvent être apporter aux machines de Turing
sans changer la classe
des langages qu’elles décident. Citer 3 extensions
18. Montrer qu’une machine déterministe peut simuler toutes les exécutions
d’une machine non déterministe.
La solution est de considérer toutes les exécutions en parallèle mais en
considérant des préfixes
de longueur croissante. D‟abord, tous les préfixes de longueur 1, puis 2, puis 3,
...
19. Expliquez comment on peut faire calculer une fonction de N dans N par
une machine de
Turing
20. Prouvez qu’il existe des fonctions de N dans N qui ne sont pas
calculables par une machine de Turing.
Ou encore
Exercice 1
Concevoir une machine de Turing qui accepte le langage {anbn | n ≥ 0}
Une machine M qui accepte le langage X est la suivante :
L‟ensemble des états Q = {0, 1, 2, 3, 4}
L‟alphabet d‟entrée est £= {a, b}
L‟alphabet de bande est T= {a,b,A,B,#}
L‟état initial est q0=0
Le seul état final est l‟état 4
L‟ensemble des transitions est décrit par la figure ou le tableau
Exercice 2
Concevoir une machine de Turing qui accepte le langage {anbncn| n ≥ 0}
Exercice 3
Concevoir une machine de Turing qui calcule n-> 3n.
Déduire une machine de Turing qui calcule n-> 3n+3.
Exercice 4
Écrire une machine de Turing qui effectue le complément d'un nombre binaire.
Entrée : un nombre écrit en binaire (entouré de #). Exemple : #01101001#
Sortie : le complément binaire du nombre : Exemple : #10010110#
On supposera que le nombre contient au moins un digit. Au début, la tête de
lecture est positionnée sur
le premier # et doit se trouver, à la fin, sur le # qui précède le résultat.
Solution
Exercice 5
Écrire une machine de Turing qui ajoute 1 à un nombre binaire écrit avec les bits
de poids faibles à
gauche.
Entrée : un nombre écrit en binaire. Exemple : #11101101# = 183
Sortie : le nombre plus 1. Exemple : #00011101# = 184
On supposera que le nombre contient au moins un digit. Au début, la tête de
lecture est positionnée sur
le premier # et doit se trouver, à la fin, sur le # qui précède le résultat.
Solution
Exercice 6
Écrire une machine de Turing qui compte le nombre de 1 dans un chiffre
binaire:
Entrée : un nombre écrit en binaire. Exemple : #11101101#.
Sortie : le nombre de 1. Exemple : #110#
Mêmes consignes que dans les exercices précédents. On supposera que la partie
non visible du ruban est
initialisée avec des #.
Solution
Exercice 7
Comment montrer qu'un problème appartient à la classe P?
Exercice 8
Expliquer le problème SAT.
Exercice 9
Le problème des tâches est formulé comme suit : “Etant donné un ensemble de
tâches, trouver un sous ensemble de tâches de cardinalité maximale qui ne
s'intersectent pas”.
Proposer un algorithme glouton pour la résolution de ce problème.
Algorithme glouton :
● Trier les tâches dans l'ordre croissant des dates de fin.
● Tant qu'il existe des tâches :
– Ajouter la tâches T qui a la plus petite date de fin.
– Supprimer les tâches qui intersectent T.
Exercice 10
On dispose de pièces en nombre illimité de
valeurs 10, 5, 2 et 1, et on souhaite rendre une somme S avec un nombre
minimum de pièces. Proposer un algorithme glouton pour la résolution de ce
problème de rendu de monnaie.
Algorithme :
● On trie les tas de pièces par ordre croissant de valeur.
● Pour chaque valeur (dans cette ordre), on prend le
nombre maximum de pièces possibles.
● Non, pour S = 8 :
● L'algorithme glouton :
– 1 pièce de 6,
– 2 pièces de 2.
● La solution optimale :
– 2 pièces de 4.
Exercice 11
Pour l'un des problèmes suivants:
Le définir
Donner une idée de la preuve de sa NP-Complétude
Donner une approche de résolution ou un algorithme
Donner des applications
Knapsack problem; Art gallery problem; Vertex cover; Job shop scheduling;
Steiner tree problem; Set
packing problem; Exact cover problem; Max-cut problem; Travelling salesman.